운영 체제란?
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

- 컴퓨터 하드웨어 어떻 인터렉션을 해야하는가?
- 사용자 또는 소프트웨어 어떻게 인터렉션을 해야하는가?
운영 체제의 목표
운영 체제의 의미
- 좁은 의미 : 커널
- 운영체제의 핵심 부분으로 메모리에 상주하는 부분
- 넓은 의미
- 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
운영 체제의 분류
1. 동시 작업 가능 여부
- 단일 작억(single tasking)
- 다중 작업(multi tasking)
2. 사용자의 수
컴퓨터 하나에 여러 사용자가 동시에 접근하여 사용할 수 있는가?
- 단일 사용자(single user)
- 다중 사용자(multi user)
3. 처리 방식
- 일괄 처리(batch processing)
- 시분할(time sharing)
- 여러 작업을 수행할 때 일정한 시간 단위로 분할하여 사용
- 실시간(realtime OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS
- ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
운영 체제의 구조
현실에서는 먼저 온 사람에 대해 업무를 먼저 처리해주는게 일반적. 하지만 운영체제에서는 다름
-
CPU는 가장 짧은 업무를 처리하는 곳에 먼저 CPU를 배정하고 다른 곳에 짧게 주었다 뺏었다 하는 방식 (CPU 스케쥴링)
-
한정된 메모리에 동시에 여러 프로그램을 올릴까? (메모리 관리)
- 많은 메모리가 필요한 프로그램에서 많은 메모리를 할당
- 너무 많은 프로그램이 메모리에 할당 되려고 하면 일부 프로그램만 메모리 공간에만 할당하고 나머지는 디스크로
- 메모리에 올라가있는 프로그램이 CPU에서 잘 수행될 수 있도록
- 최근 사용 횟수에 따라 메모리에 올려둘지, 디스크로 할당할 지를 결정
-
디스크에 파일을 어떻게 보관할 것인가? (파일 관리)
- 디스크도 스케쥴링이 필요
- 헤드에 가까운 요청부터 처리
-
각각의 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받을것인가? (입출력 관리)
- 인터럽트에 기반하여 관리
- CPU가 자기 일을 하다 입출력장치가 요청을 하면 CPU에 인터럽트를 걸어 해당 요청을 처리