📑 본 글은 <혼공컴운>을 읽고 정리한 글입니다.
1. 운영체제를 알아야 하는 이유
1-1. 운영체제란
시스템 자원
- 프로그램이 실행되기 위해 필요한 요소들
- CPU, 메모리, 보조기억장치, 입출력장치 등
운영체제
- 실행할 프로그램에 필요한 자원을 할당, 올바르게 실행되도록 돕는 프로그램. like 정부
- 부팅될 때 메모리 내 커널 영역에 적재됨
메모리의 구분
- 커널 영역(kernel space)
- 사용자 영역(user space)
1-2. 운영체제를 알아야 하는 이유
운영체제가 하드웨어를 조작하고 관리하는 기능을 제공함
운체를 통해서 하드웨어와 프로그램을 더 깊이 이해하고 문제 해결
의 실마리를 찾을 수 있다.
2. 운영체제의 큰 그림
2-1. 운영체제의 심장, 커널
커널
- 운영체제의 핵심 서비스를 담당
- 보통 운체라고 하면 커널을 지칭함
- 미포함 내역) 사용자 인터페이스
2-2. 이중 모드와 시스템 호출
운체는 응용 프로그램이 하드웨어 자원에 직접 접근하지 못하게 한다.
오직 나를 통해서만 자원에 접근할 수 있다.
나에게 요청하면 내가 대신 운체 코드(커널 코드) 돌려드림.
이중 모드 : CPU가 명령어를 실행하는 모드를 구분함
- 사용자 모드
- 플래그 레지스터 > 슈퍼바이저 플래그 = 0
- 운체 서비스를 제공받을 수 없는 실행 모드
- = 커널 영역의 코드 실행 불가
- 커널 모드
- 플래그 레지스터 > 슈퍼바이저 플래그 = 1
- 운체 서비스 가능
- 운체는 커널 모드로 실행되므로 자원에 접근 가능
시스템 호출(system call)
- 사용자 모드로 실행되는 프로그램이 운체에 보내는 요청
- 커널 모드로 전환하여 운체 서비스 가능
- = 소프트웨어 인터럽트
2-3. 운영체제의 핵심 서비스
프로세스 관리
- 프로세스 : 실행 중인 프로그램
- 다양한 프로세스를 잘 관리하고 실행해주세요
- 프로세스 동기화 / 교착 상태 해결 부탁
자원 접근 및 할당
- CPU 스케줄링
- 어떻게 메모리를 할당하는가 / 메모리 부족하면 어떻게 대처해야하는가
- 인터럽트 서비스 루틴은 커널 영역에 쏙!
파일 시스템 관리
- 보조기억장치 속 데이터를 어떻게 파일과 디렉터리로 관리하는지