운영체제
- (시스템) 자원 : 프로그램 실행에 마땅히 필요한 요소들
- 운영체제operating system
- 프로그램에 필요한 자원 할당. 프로그램이 잘 실행되게 돕는 프로그램. 자원 관리
- 커널 영역kernel space에 적재.
- 실행할 프로그램 메모리에 적재, 종료 프로그램 메모리에서 삭제
💡 사용자 영역user space
사용자가 이용하는 응용 프로그램이 적재되는 영역
💡 응용 프로그램application software
사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
커널
kernel. 운영체제의 핵심 서비스를 담당하는 부분
💡 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스가 있는데, 대표적으로 사용자 인터페이스UI; User Interface는 윈도우의 바탕화면처럼 사용자가 컴퓨터와 상호작용할 수 있는 통로이다.
🐥 그래픽 유저 인터페이스GUI : 그래픽을 기반으로 컴퓨터와 상호작용
🐥 커맨드 라인 인터페이스CLI : 명령어를 기반으로 컴퓨터와 상호작용
이중모드
dual mode. CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분.
운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원 보호
- 사용자 모드user mode : 운영체제 서비스를 제공받을 수 없는 실행 모드. 자원에 접근 불가능
- 커널 모드kernel mode : 운영체제 서비스를 제공받을 수 있는 실행 모드. CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯해 모든 명령어 실행 가능
시스템 호출
system call. 운영체제에 서비스를 제공받기 위한 요청. 소프트웨어적 인터럽트
시스템 호출 종류
- 프로세스 관리
- fork() : 새 자식 프로세스 생성
- execve() : 프로세스 실행(새 프로그램 내용으로 메모리 공간 덮어씌움)
- exit() : 프로세스 종료
- waitpid() : 자식 프로세스 종료까지 대기
- 파일 관리
- open() : 파일 열기
- close() : 파일 닫기
- read() : 파일 읽기
- write() : 파일 쓰기
- stat() : 파일 정보 획득
- 디렉토리 관리
- chdir() : 작업 디렉토리 변경
- mkdir() : 디렉토리 생성
- rmdir() : 비어있는 디렉토리 삭제
- 파일 시스템 관리
- mount() : 파일 시스템 마운트
- umount() : 파일 시스템 마운트 해제
...
운영체제 핵심 서비스
- 프로세스 관리
- 프로세스process : 실행 중인 프로그램
- 하나의 CPU는 하나의 프로그램만 실행할 수 있기에 CPU는 프로세스들을 조금씩 번갈아가며 실행
- 여러 프로세스가 실행되는 환경에서는 프로세스 동기화가 필수적. 더 이상 실행되지 못하는 상황인 교착상태 해결해야함
- 자원 접근 및 할당
- CPU
- CPU 스케줄링 : 어떤 프로세스부터 CPU이용, 얼마나 오래 이용할지 결정
- 메모리
- 새 프로세스가 적재될 때 어느 주소에 적재할지 결정
- 입출력 장치
- 인터럽트 서비스 루틴이 커널 영역에 존재
- 파일 시스템 관리 : 파일과 디렉토리로 관리