컴퓨터 부품들을 관리하고 프로그램을 작동시키는 프로그램

09-1. 운영체제를 알아야 하는 이유

09-2. 운영체제의 큰 그림

운영체제의 심장, 커널

이중 모드와 시스템 호출

운영체제의 핵심 서비스

<aside> 💡 시스템 호출의 종류

<유닉스, 리눅스 등의 운영체제(POSIX 운영체제)에서 사용하는 대표적인 시스템 호출의 종류>

종류 시스템 호출 설명
프로세스 관리 fork() 새 자식 프로세스 생성
execve() 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어씌움)
exit() 프로세스 종료
waitpid() 자식 프로세스가 종료할 때까지 대기
파일 관리 open() 파일 열기
close() 파일 닫기
read() 파일 읽기
write() 파일 쓰기
stat() 파일 정보 획득
디렉터리 관리 chdir() 작업 디렉터리 변경
mkdir() 디렉터리 생성
rmdir() 비어 있는 디렉터리 삭제
파일 시스템 관리 mount() 파일 시스템 마운트
umount() 파일 시스템 마운트 해제

개발자가 작성하는 프로그래밍 언어들은 내부적으로 위와 같은 시스템 호출을 통해 실행됨

운영체제는 제공하는 서비스가 매우 다양해 시스템 호출의 종류도 다양함

https://github.com/kangtegong/self-learning-cs → system_calls 항목에 리눅스 시스템 호출 종류 확인 가능

</aside>

커널은 운영체제의 핵심 기능을 담당

이중 모드는 CPU가 명령어를 실행하는 모드를 커널 모드와 사용자 모드로 구분하는 방식

시스템 호출은 운영체제의 서비스를 제공받기 위해 커널 모드로 변환하는 방법

대표적인 운영체제 서비스로 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있음