Keep going
운영체제 디버깅 본문
디버깅
- 프로그램 에러 제거
- 운영체제 자체 실행기록이나 사용자 프로그램 실행 기록을 로그파일로 남겨서 나중에 분석을 통해서 에러 찾기
- ex) 사용자 프로그램 실행되다가 오류에 의해서 중단되면 사용자 프로그램이 실행되던 메모리 내용을 파일에다가 덮어 쓰게 되는데 core dump file 이라고 한다. 메인 메모리는 core memory라고 부른다.
- core dump를 이용해 디버그가 어디서, 프로그램이 어디서 중단이 됬는지와 중단이 됐을 때 각 변수의 값이 어떻게 됐는지 하는 것을 찾아볼 수 있게 된다.
- 사용자 프로그램 실패 → 오류 발생, 운영체제 실패 → crash
- 실패할 때 crash dump라는 파일 만듬. (운영체제가 실패해서 만들어진) 운영체제가 돌아갈 때 메모리 내용을 갖다 쓴 파일을 crash dump 파일이라고 함.
- 운영체제 실패하면 DISC 자체가 실패할 경우도 생길 수 있음
- Crash dump 파일은 file system에 쓰는 것 아니라 DISC 특정위치에 갖다 쓰게 된다.
- 운영체제가 죽는 것 뿐만 아니라 속도 느려질 때 performance tuning (성능 개선) 해야 한다.
- 오류를 잡는것 뿐만 아니라 성능을 높이는 것도 디버깅에 속함
- 성능 높이려면 얼마나 cpu를 사용하고 메모리를 사용했는가를 알아야 하는데 trace 기능이 제공된다.
- trace listing : 어떤 작업하기 위해 각 함수들이 어떤 순서로 호출하였는가를 기록하는 것
- profiling : 운영체제 각 부분이 얼마나 자원 쓰는지 모니터링 (어떤 운영체제 특정 함수가 cpu를 얼마나 오랫동안 사용했는지 메인 메모리 얼마나 많이 사용했는지 기록)
- unix - top 명령어 (현재 시스템에서 어떤 프로그램이 리소스를 가장 많이 쓰고 있는가 출력하는 프로그램)
- windows - 작업관리자 (시스템 상황 파악)
- solaris - Dtrace 도구 이용 (시스템 성능 측정)
운영체제 생성
- 현재 운영체제를 쓰고 있는데 다른 운영체제를 깔아야 겠다고 할 때 어떻게 하냐?
- ex) 새로운 리눅스 버전 → 소스를 갖고온다. 소스와 같이 제공하는 configuration 파일 실행 (현재 시스템 내 device들이 이런것들이 있고 메인 메모리 얼마고 cpu 몇개있고 지정)
- 소스 컴파일전 configration 하고 소스 컴파일 → 현재 내 시스템에 맞는 운영체제가 만들어진다.
- sysgen : 현재 내 컴퓨터에 맞는 운영체제를 만들어가는 과정
- system generation 과정에서 설정 파일 이용해서 설정 지정해주면 unix c 프록그램 컴파일 해주는 make frame 이런 것들이 configuration file 참조해줘서 현재 시스템에 맞는 운영체제를 생성하게 된다.
System Boot
- 컴퓨터 켜게 되면 ROM 이라고 부르는 저장장치에 저장된 특정한 프로그램이 자동으로 실행되기 시작한다. (하드웨어가 그렇게 지정되 있음)
- 특정한 프로그램이 하는 일
- DISC에 있는 운영체제를 찾아서 그 운영체제를 main memory 에 올리고 cpu를 그 운영체제한테 넘겨주면서 운영체제가 시작되게 만드는 역할
- bootstrap code (bootstrap loader) : ROM 에 저장된 PROGRAM
- ROM이 디스크 (boot sector)에 있는 또 다른 boot program을 load하고 boot sector에 있는 프로그램이 다시 os를 load하는 여러 단계를 거쳐서 운영체제를 load 할 수도 있다.
- 디스크를 여러 partition으로 나눈다면 partition 중 제일 앞 sector를 boot sector라고 하는데 boot sector에 boot program이 들어가 있게 된다.
- 디스크 partition 마다 다른 운영체제 깔려져있다면 여러 개 운영체제 관리하면서 각 운영체제 있는 위치를 파악해서 어떤 운영체제를 로딩을 할것인가 관리해주는 program. (우리는 화면에서 어떤 운영체제 사용할 것인가 결정) ex) linux - grub
- 다중 os 관리하는 boot loader : grub 사용하면 어떤 운영체제를 load 할것인가 선택, 여기에 맞는 운영체제 로딩. 운영ㅊ제ㅔ 커널이 main memory에 load 된 후 제어권이 운영체제에 넘어가게되면 system booting 끝났따. 시스템 동작!
Comments