운영체제 계층 구조를 갖는 이유
계층간 독립성 확보
사용자
- OS나 HW에 대해 몰라도 응용프로그램으로 컴퓨터 활용
응용프로그램
- 컴퓨터 HW의 종류나 구조, 제어 방법을 몰라도 개발 가능
- 운영체제에게 요청하여 해결
- 컴퓨터 HW 변경시 응용프로그램 재작성할 필요 없음
운영체제
- 응용프로그램과 하드웨어 사이의 인터페이스
- HW 장치와 관련된 모든 작업은 디바이스 드라이버에게 요청
운영체제 필요성
응용프로그램이나 사용자가 직접 HW를 제어해야 함
- 하드웨어에 대한 지식, 충돌,관리,보안의 문제 발생함
충돌 사례
- 동시에 2개 이상의 프로그램을 실행하고자 할 떄
- 응용프로그램 실행으로 메모리가 필요할 떄
- 동시에 프린터에 출력을 하려 할 떄
- 데이터를 파일에 기록할 때
자원에 대한 충돌을 해결하고 성능 최적화, 사용자의 시스템 사용의 효율화
주요 기능
프로세스/스레드 관리
- 실행, 일시 중지, 종료, 스케줄링, 컨텍스트 스위칭, 동기화
메모리 관리
파일 시스템 관리
입출력 장치 관리
사용자 인터페이스, 네트워킹
보호 및 보안
운영체제의 구성
커널(Kernel)
- OS의 핵심 기능을 실행하는 코드와 데이터
- 부팅 후 메모리에 상주, 좁은 의미의 OS
- 커널 코드는 함수들의 집합으로 구성
- app은 커널 기능을 이용하기 위해 시스템 호출 사용한다
- 사용자가 컴퓨터를 편리하게 사용할 수 있도록 제공
장치 구동기(device driver)
- 장치를 제어하고 입출력
- 각 장치 제작자에 의해 작성되고 배포됨
운영체제 커널 인터페이스
시스템 호출(sytem call)
- 커널과 app 사이의 인터페이스, 시스템 호출 라이브러리를 통해 다양한 시스템 호풀 함수 제공
- app이 커널 코드를 실행하기 위해
인터럽트(interrupt)
- 커널과 HW 장치 사이의 인터페이스
- 장치들이 입출력 완료/타이머 완료 등을 CPU에게 알리는 하드웨어적 방법
- CPU는 하던 일을 중지하고,ISR 실행 후 재개
- 장치들의 비동기적 이벤트 처리