반응형
목차
운영체제 디버깅
디버깅 : 하드웨어와 소프트웨어에서의 오류를 발견하고 수정하는 행위
디버깅을 하기 전에 병목현상이나 시스템의 효율적인 수행을 방해하는 요소를 찾을 수 있어야하는데
만약 수행을 하다가 프로세스가 실패를 하게 된다면 시스템 상의 장애가 발생하게 되는데,
프로세스의 경우
- 오류 정보를 로그 파일에 기록하고
- 프로세스가 사용하던 메모리를 캡쳐한 코어 덤프(예전에는 메모리를 코어라고 불렀다)를 취하고 분석을 위하여 파일로 저장한다.
- 프로그램과 코어덤프는 디버거에 의해 검사되며 사용자가 분석할 수 있게 한다.
커널의 경우
- 오류 정보를 로그파일에 기록하고
- 크래시 덤프(커널은 크래시라고 한다)에 저장한다.
프로세스나 커널 등의 장애 분석도 중요하지만 지속적인 성능 관찰 및 조정도 필요하다. 성능 조정은 병목 현상을 제거 함으로서 성능을 향상시키려고 하는 것인데 따라서 이러한 시스템 동작을 측정하고 표시할 수 있는 방법을 가지고 있어야한다. 프로세스 별 혹은 시스템별로의 관찰을 제공하느냐에 따라로 특징이 나뉜다.
접근 방식으로는 카운터와 추적 두가지가 존재한다.
카운터
커널에서 유지 관리하는 특정 통계의 현재 값에 대한 데이터를 수집한다.
시스템 콜 횟수, 네트워크 장치, 디스크에 수행되어있는 작업 수 등을 볼수있다. (예; 작업관리자 등)
Linux 도구의 예시
프로세스별
- ps __ 하나의 프로세스 또는 선택된 프로세스에 대한 정보를 보고
- top __ 현재프로세스에 대한 실시간 보고
시스템 전체
- vmstat __ 메모리 사용량 통계 보고
- netstat __ 네트워크 인터페이스에 대한 통계 보고
- iostat __ 디스크의 I/O 사용량 보고
추적
시스템 콜과 관련된 단계의 특정 이벤트에 대한 데이터를 수집한다.
Linux 도구의 예시
프로세스별
- strace __ 프로세스에 의해 호출된 시스템 콜을 추적
- gdb __ 소스레벨 디버거
시스템 전체
- perf __ 리눅스 성능 도구 모음
- topdump __ 네트워크 패킷을 수집한다.
Linux에서 동적 커널 추적을 위한 툴킷인 BCC (BPF Compiler Collection) 는 시스템의 모든 부분을 디버깅 할수 있으면서도 시스템의 안정성을 해치지 않고 할 수 있다.
'CS > Operating System' 카테고리의 다른 글
프로세스 :: 다중 프로그래밍과 스케줄링 (1) | 2022.08.14 |
---|---|
프로세스 :: 메모리 배치 및 프로세스 제어 블록(PCB) (0) | 2022.08.05 |
운영체제 구조 :: 운영체제의 생성과 부팅 (0) | 2022.08.03 |
운영체제 구조 :: 기술 구조 (2) | 2022.08.02 |
운영체제 구조 :: ABI란? 안정적인 ABI (0) | 2022.07.30 |