1. 운영체재 개요
2. 컴퓨터 시스템의 구조
3. 프로세스 관리
4. CPU 스케줄링
5. 병행 제어
6. 데드락
7. 메모리 관리
8. 가상 메모리
9. 파일 시스템
10. 입출력 시스템
11. 디스크 관리
컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
원칙적으로 컴퓨터에는 CPU가 하나이지만, 여러 프로그램을 동시에 실행하려면 CPU가 동작을 빠르게 번갈아가며 할당해서 메모리들을 분배해야한다.
컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 한 부분이다.
좁은 의미 : 커널 (운영 체제의 핵심 부분으로 메모리에 상주하는 부분)
넓은 의미 : 커널 뿐만 아니라, 주변 시스템 유틸리티를 포함한 개념
한번에 하나의 작업만 처리 (MS-DOS 프롬프트 상에서는 하나의 명령이 끝나기 전까지 다른 명령을 처리할 수 없음)
동시에 두 개 이상의 작업 처리 (UNIX, MS Widow 등에서 하나의 명령이 끝나기 전에 다른 명령을 실행할 수 있음)
MS-DOS, MS-Windows
UNIX, LINUX
작업을 모아서 한꺼번에 처리
작업이 완전 종료될 때까지 기다려야함
여러 작업이 수행할 때, 컴퓨터 처리 능력을 시간 단위로 분할하여 사용
일괄 처리에 비해 짧은 응답 시간을 가짐
interactive 한 방식
정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
확장된 개념으로는 hard realtime system, soft realtime system이 있다.
Multi Tasking : 여러 작업이 동시에 작업되는 것
Multi Programming : Multi Tasking과 같지만, 여러 프로그램이 메모리에 올라가 있음을 강조
Time Sharing : 시분할 CPU의 시간을 분할하여 나누어 쓰는 것을 강조
Multi Process : 프로세스 = 실행 중인 프로그램
Multi Processor : 다중 처리기 CPU가 여러 개 임을 의미함
코드의 대부분이 C언어로 작성
높은 이식성
최소한의 커널 구조
복잡한 시스템에 맞게 확장 용이
소스 코드 공개
프로그램 개발에 용이
다양한 버전 : System V, FreeBSD, SunOS, Solaris, Linux
MS 사에서 1981년에 IBM-PC를 위해 개발
단일 사용자용 운영체제, 메모리 관리 능력의 한계
MS 사의 다중 작업용 GUI 기반 운영 체제
Plug and play, 네트워크 강화
Dos용 응용 프로그램과 호환성 제공
불안정성
풍부한 지원 소프트웨어
CPU 스케줄링
너무 빨라서 어떻게 관리할 것인가
Disk 스케줄링
어떻게 움직임을 최소화 하면서 관리할 것인가
입출력 관리는
인터럽트 기반으로 관리한다.