본 글은 KOCW 이화여대 반효경 교수님의 운영체제 강의를 듣고 정리한 내용입니다.
http://www.kocw.net/home/m/search/kemView.do?kemId=1226304
- 운영체제의 정의, 목적, 컴퓨터 시스템 내에서의 기능이 무엇인지 알아본다.
- 운영체제의 기능인 CPU 스케줄링, 메모리관리, 디스크스케줄링과 운영체제의 종류에 대해 알아본다
운영체제 기초
🔹 운영체제란?
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
- 협의의(좁은의미의) 운영체제 == 커널
- 운영체제의 핵심부분으로 메모리에 상주하는 부분
- 광의의 (넓은의미의) 운영체제
- 커널 뿐 아니라 각종 주변시스템 유틸리티를 포함하는 개념
🔹 운영체제의 목적
-
편리하게 사용할 수 있는 환경을 제공
- 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는것과 같은 illusion을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
-
컴퓨터 시스템의 한정된 자원을 효율적으로 관리
🔹 운영체제의 분류
▶ 동시작업 가능 여부
- ✔ 단일 작업(Single Tasking)
- 한번에 하나의 작업만 처리
- ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
- ✔ 다중 작업(Multi Tasking)
- 동시에 두 개이상의 작업을 처리
- ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
▶ 사용자의 수
- ✔ 단일 사용자(Single User)
- MS-DOS, MS Windows
- ✔ 다중 사용자(Multi User)
- UNIX, NT server
▶ 처리 방식
- ✔ 일괄 처리(Batch processing)
- 내가 편한대로 하겠다!
- 작업 요청의 일정량 모아서 한꺼번에 처리
- 작업이 완전 종료될때까지 기다려야함
ex) 초기 punch card 처리 시스템
- ✔ 시분할(time sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간단위로 분할하여 사용
- interactive
- 데드라인이 없음
- ✔ 실시간(Realtime OS)
정해진 시간안에 어떠한 일이 반드시 종료됨
이 보장되어야하는 실시간 시스템을 위한 OS
- ex) 원자로/공장 제어, 미사일제어, 반도체 장비, 로보트 제어
- 실시간 시스템의 개념 확장
- Hard realtime system, Soft realtime system
🔹 컴퓨터 시스템의 구조
- 이 메모리에 프로그램 A~Z 까지 있고 가장 하단에 운영체제가 있음
- 핵심적 부분 kernel
- 메모리 관리 : 한정된 메모리를 어떻게 쪼개어 쓰는가
- 매 클락마다 cpu는 메모리 어딘가에 기계어를 읽어 연산을 함
- CPU 스케줄링 : 어떤 프로그램에게 CPU 사용권을 얼마만큼 줄것인가
- 디스크 스케줄링 : 디스크에 들어온 요청을 어떤 순서로 처리하는가
- 먼저 도착한 순은 비효율적, 디스크가 효율적으로 요청을 처리하도록
- 인터럽트, 캐싱 : 빠른 CPU와 느린 I/O장치간의 속도차 극복을 위한 것
- 캐싱 : 중간단계를 두어서, 똑같은 요청이 오면 메모리에 보관하다가 디스크까지 가지않고 메모리에 있는걸 읽어옴
- 인터럽트 : 인터럽트가 들어오면 cpu는 자동적으로 운영체제로 넘어가게 되어있음, 느린장치들에게 일을 시켜두고 cpu 가 계속 이 일들이 끝났는지 확인하는건 비효율적이므로 인터럽트를 통해 cpu에게 일의 종료를 알림
🔹 프로세스의 상태
✔ 프로그램
- CPU에서 기계어를 실행중일때 운영체제는 큐를 만들어서 cpu를 사용하고자 하는 프로그램의 큐를 생성해둠
- 디스크 입출력 큐, 키보드 입력 큐 도 각각 컨트롤러에 의해 실행 후 완료되면 cpu 큐에 넣어주는 식으로 진행
🔹 CPU 스케줄링
✔ FCFS(First-Come First-Served)
- 공평한것같지만 효율적이진 않다
- 기다리는 순서를 줄이려면? P1이 너무 오래동안 CPU를 점유해서 대기시간이 길어짐
✔ SJF (Shortest-Job-First)
- 금번 CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄
- Minimum average waiting time을 보장
- 형평성의 문제 (Starvation) 발생 가능
✔ ⭐Round Robin(RR)
- 각 프로세스는 동일크기의 CPU 할당시간을 가짐
- 할당시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU 큐의 젤 뒤에 줄을 섬 → 번갈아
- n개의 프로세스가 cpu 큐에 있는 경우
- 어떤 프로세스도 (n-1)*할당시간 이상 기다리지 않음
- 대기시간이 프로세스의 CPU 사용시간에 비례
🔹 메모리관리
- 본인만의 가상메모리를 만든 후 실제 물리적인 메모리에는 가상메모리 중 당장 필요한 부분만 올려둠
- 물리적 메모리가 언젠가 다 차면 쫓아낼 부분은 디스크(스왑영역) (==메모리의 연장공간)에 넣어둠
- 디스크(파일시스템)과 용도가 완전 다름
✔ LRU vs LFU
- 과거를 보고 미래에 사용될 가능성이 낮은 페이지가 뭔지 예측해서 그것을 삭제함
- LRU : 가장 오래전에 참조된 페이지를 삭제함
- 다시 사용될 가능성이 낮을거라는 예측을 한 것
- LFU : 참조횟수가 가장 적은 페이지를 삭제함
- 사용횟수가 가장 적은..
🔹 디스크 스케줄링
디스크 접근시간의 구성(Access time)
- 디스크 헤드가 움직이는 시간
- 탐색시간(Seek Time)
- 헤드를 해당트랙으로 움직이는데 걸리는 시간
- 회전지연(Rotational latency)
- 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
- 전송시간(Transfer Time)
- 실제 데이터의 전송시간
⭐ 디스크 스케줄링은 Seek time을 최소화 하는 것이 목표
- seek time = seek distance
✔ FCFS(First-come First-served)
✔ SSTF(Shortest Seek Time First)
- 누가 현재위치에서 가장 seek time이 짧은가
- starvation 문제 : 형평성이 없다
✔ ⭐ SCAN
- 헤드가 디스크의 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리
- 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다
- 누군가가 영원히 배제되는 문제 또한 없다 (차별 ↓), 헤드 이동거리 ↓
- 엘리베이터와 동일
🔹 저장장치 계층구조와 캐싱(caching)
- Resister라는 값을 가지고 연산을 함
- 위로 올라갈수록 빠르고 비쌈, 아래로갈수록 느려지고 저렴한 계층구조
- 하드디스크 : 비휘발성, 메모리 : 휘발성
- primary 부분은 cpu가 직접 접근할수있지만 secondary는 i/o장치라 직접 접근 x
- caching : 시간을 완충 (빠른계층으로 복사해두고 시간을 줄임)
- 누구를 쫓아내고 누구를 보관할것인가
✔ 플래시 메모리
- 플래시 메모리
- 반도체 장치(하드디스크:마그네틱)
- NAND형(storage용도), NOR형
- 플래시 메모리의 특징
- 비휘발성, 전력소모 ↓, 물리적충격에 강함, 크기가 작고 가벼움
- 쓰기 횟수 제약
- 데이터가 시간이 지났을때 변질될 가능성이 있음
- 플래시 메모리의 사용형태
- 휴대폰, PDA 등 임베디드 시스템 구성용
- USB용 메모리 스틱
- 디지털카메라 등의 SD카드, CompactFlash, Smart Media card
- 모바일 장치 뿐 아니라 대용량 시스템에서 SSD란 이름으로 하드디스크를 대체 시도
✔ 운영체제의 종류
- 서버용, pc용, 스마트디바이스용 운영체제
- 공개 소프트웨어 (Open souce)
🔹 몇가지 용어
- Multiprogramming : 여러 프로그램이 메모리에 올라가있음을 강조
- Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조
- 여러작업을 동시에 수행한다는 뜻으로 동일한 의미는
- Multitasking, Multiprocess
- Multiprocessor : 하나의 컴퓨터에 CPU(processor)가 여러개 붙어있음을 의미
🔹 운영체제의 예
- UNIX
- 코드의 대부분을 C언어로 작성
- 서버를 위한 운영체제 -> 여러 사용자 관리를 위해 복잡함
- 프로그램 개발에 용이
- DOS
- 단일 사용자용 운영체제, 메모리관리능력의 한계
- MS Windows
- GUI 기반 운영체제, DOS용 응용프로그램과 호환성제공(불안전성)
🔹 운영체제의 구조