선수 과목 : c프로그래밍, 자료구조의 기본적인 사항은 알고 있어야 한다
교재: (너무 이론에 치중)
운영체제 개요
컴퓨터 시스템의 구조
프로세스 관리
CPU 스케줄링
병행 제어
데드락
메모리 관리
가상 메모리
파일 시스템
입출력 시스템
디스크 관리
컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 (여러 프로그램을 돌려도 하나만 돌아가는 것 같은)
하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
컴퓨터 시스템의 자원을 효율적으로 관리(중요) : 자원 관리자
프로세서, 기억장치, 입출력 장치 등의 효율적 과닐
짧은 시간의 CPU를 번갈아 할당
실행 중인 프로그램들에 메모리 공간을 적절히 분배
ex. 100개의 프로그램을 실행했을 때 1/100씩 메모리를 주는 것이 맞나?
-> 아니다. 자원을 효율적으로 나눠주기 위해서 프로그램마다 필요한 만큼의 양을 주어야 한다
1) 동시작업 가능 여부
단일 작업
: 한번에 하나의 작업만 처리
ex. MS-DOS 프롬프트 상에서는 한 명령(프로그램)의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
-> 설계하기는 쉽지만 사용하기 어려움
다중 작업
: 동시에 두개 이상의 작업 처리
ex. UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
-> 현재 대부분이 다중 작업
2)사용자의 수 : 한 컴퓨터를 여러명이 동시에 접속할 수 있는지 여부
단일 사용자 : MS-DOS
다중 사용자 : UNIX, NT server
(계정을 여러개 만들어서 동시 접속 가능)
cf. 보안, 자원 분배 형평성 고려 필요
3)처리 방식
일괄 처리 (batch processing)
시분할 (time sharing)
- 현대의 컴퓨터 방식
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
-> 시간을 분배해서 돌아가면서 프로그램을 실행시키는 방식
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- interactive한 방식 : 키보드를 입력하면 바로 결과가 나오는 방식
실시간(Realtime OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS (데드라인이 정해져 있는)
ex. 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
-> 파이프라인 시스템을 사용하는데 중간에 하나가 데드라인을 못 지키면 다 지연되니까
- 실시간 시스템의 개념 확장
- Hard realtime system : 데드라인을 못 지켰을 때 치명적인 ex. 미사일, 공장
- Soft realtime system : 그 정도는 아닌
정리
현대 컴퓨터 : 다중작업/ 다중사용자/ 시분할 방식
용어 구분
컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻하는 용어들
-multitasking : 일반적인 용어.
하나의 프로그램이 끝나기 전에 다른 프로그램이 실행되는 것
(CPU에서는 하나만, 분배를 해서 빠르게 바뀌니까)
-multiprogramming : 메모리에 여러 프로그래밍이 동시에 올라가는 것
[메모리 측면을 강조]
1)DOS (Disk Operating System)
MS사에서 1981년 IBM-PC를 위해 개발
개인 컴퓨터용(PC)
단일 사용자용 운영체제, 메모리 관리 능력의 한계
메모리를 640kb만큼만 제공 : 너무 빠른 발전 속도로 인해 너무 부족해짐
단일 작업을 위해
소스코드가 오픈되어 있지 않다
2)MS Windows
MS사의 다중 작업용 GUI 기반 운영체제
Plug and Play, 네트워크 환경 강화
DOS용 응용 프로그램과 호환성 제고
불안정성
풍부한 지원 소프트웨어
3)Handheld device를 위한 OS
PalmOS, PocketPC, TinyOS
자원들을 관리하는 것이 운영체제의 기능
CPU: 사람의 두뇌 역할을 하는 것 (Central Processing Unit / 중앙처리장치)
컴퓨터의 중앙에서 모든 데이터를 처리하도록 각 부품들에게 명령을 내리는 장치
명령을 해석, 연산하고 결과 출력
ex. 먼저 온 것을 먼저 처리
: 만약 가장 먼저 온 것이 오래 걸리면 전체적으로 지연됨
그러므로 짧게 사용할 프로그램에게 CPU를 줬다가 다른 프로그램에 주는 등 다양한 방법으로 CPU를 준다
또는 CPU를 각각 짧은 시간동안 줬다 뺏었다하는 방식으로
메모리 : 한정된 메모리를 분배하는 방식.
메모리에 너무 많은 프로그램을 올려놓으면 프로그램 하나당 너무 적은 메모리를 가지고 있어서 CPU에서 사용을 하기에 부족함. 그러므로 다양한 방법으로 해결
메모리가 꽉 차면 CPU에서 머지않아 사용하지 않을 것들을 디스크로 쫓아낸다
과거를 통해 미래를 예측하는 등의 방법으로
디스크 : 파일을 어떻게 보관, 관리할지
디스크에서 스케줄링이 필요. 먼저 들어온 순서대로 처리를 할 수도 있고 효율을 위해 디스크의 헤드의 이동을 최소화하기 위해 사용하는 다양한 방법
ex. 엘리베이터 - 100층 , 2층, 99층 이 순서로 버튼을 눌렀다고 순서대로 한다면 비효율적. 그러므로 1층부터 100층까지 순서를 정하면 더 효율적으로 할 수 있다 .
I/O device : 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받게 할지
-방법 : interrupt (I/O가 CPU에게 요청을 하는 것)
프로세스 관리 : 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
그외 : 보호 시스템, 네트워킹, 명령어 해석기
운영체제의 수강 태도
본 과목은 OS 사용자 고나점이 아니라 개발자 관점에서
인간의 신체가 노의 통제를 받듯 컴퓨터 하드웨어는 운영체제의 통제를 받는다
본인을 운영체제라고 생각하고 자원을 어떠헥 효율적으로 분배할지를 생각하면 이해하기 좋다