운영체제 수업을 수강하며 정리한 내용을 작성하려고 합니다.
운영체제가 필요한 이유?

하드웨어는 아주 다양하고, 지금도 계속 발전하고 있다. 그 하드웨어를 어떻게 이용할 것인가?
운영체제란?

- 하드웨어와 사용자 applicaiton 사이에 필요한 모든 것을 수행, 요구에 따라 application에 자원을 할당
- 하드웨어를 효율적으로 사용할 수 있는 abstraction을 제공
- CPU - process
- Memory - address space
- Disk - file
- Network - port
- 자원의 효율적 관리
- 자원의 공유 및 분배를 위한 policy를 결정
- FIFO, LRU 등
- 설계 결정이 필요(컴퓨터 policy ≠ 휴대전화 policy)
💡 abstraction + policy
- 하드웨어 관리
- 사용자에게 하드웨어를 편리하게 사용하게 함
- 사용자/프로그램 간 자원을 효율적으로 분배받도록 관리
- 하드웨어를 사용하기 위한 API를 제공
Abstraction의 예시
Abstraction: Process, address space, socket, …
프로그램 vs 프로세스
- 프로그램
- 컴퓨터를 실행 시키기 위한 일련의 순차적으로 작성된 명령어의 모음
- 컴퓨터 시스템의 disk와 같은 secondary storage에 바이너리 형태로 저장
- 프로세스
- 실행되고 있는 프로그램의 abstraction
- Program counter, stack, data section 등을 포함
Address space
- Process가 차지하는 메모리 공간, 서로의 주소 공간을 침범하지 않게(Protection Domain) 하기 위해 필요
Socket
- 네트워크에서 돌아가는 프로그램 간에 양방향 메시지를 주고 받는 communication endpoint
운영체제의 특징
- OS는 항상 동작 중 ↔ 그 외 응용프로그램은 필요할 때만 동작
- 제어 기능으로서 항상 자원에 대한 감시 활동을 한다(Supervisor mode)
- 하드웨어에 대한 제어 기능(Device driver)
Kernel?
- 운영체제의 핵심 부분으로, 자원할당, 하드웨어 인터페이스, 보안등을 담당