운영체제 기초: 시스템 콜과 리눅스 커널의 소통
|
1 min read
운영체제의 핵심인 커널과 사용자 프로그램 사이의 가교 역할을 하는 시스템 콜의 개념을 배우고, strace를 이용해 리눅스 시스템 콜을 직접 관찰해 봅니다.
1. 운영체제와 커널
운영체제는 하드웨어를 관리하고 사용자에게 편리한 인터페이스를 제공하는 소프트웨어입니다. 그중에서도 자원 할당, 프로세스 관리 등 핵심 기능을 담당하는 부분을 **커널(Kernel)**이라고 부릅니다.
2. 시스템 콜 (System Call)
사용자 모드에서 실행 중인 프로그램이 커널 모드의 기능을 사용하고 싶을 때 보내는 '서비스 요청 신호'입니다.
🔹 대표적인 리눅스 시스템 콜
- 파일 관련: (파일 열기),text
open(읽기),textread(쓰기),textwrite(닫기)textclose - 프로세스 관련: (복제),text
fork(덮어쓰기),textexec(종료),textexit(PID 확인)textgetpid - 기타: (로그 기록)text
syslog
파일 디스크립터(File Descriptor): 리눅스에서
시스템 콜이 성공하면 반환하는 고유한 숫자로, 이후의 모든 파일 작업은 이 숫자를 통해 이루어집니다.textopen
3. 실습: strace로 시스템 콜 추적하기
리눅스에서는
text
strace- 설치: text
sudo apt install strace - 사용법:
- :text
strace ls명령어가 호출하는 모든 시스템 콜 출력textls - : 결과를 파일로 저장text
strace -o output.txt ls - : 호출된 시스템 콜의 통계(횟수, 시간 등) 요약 출력text
strace -c ls - : 특정 시스템 콜만 필터링해서 확인text
strace -e trace=open,read ls