일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- github
- Career Starter Camp
- 개발부트캠프
- Repository
- 야곰아카데미
- Swift
- iOS부트캠프
- 아이폰
- YagomAcademy
- 운영체제
- OS스터디
- 야곰아카데미커리어스타터캠프
- 반효경교수님강의
- 최강6기
- IOS
- Today
- Total
어리바리 iOS 개발자
[운영체제] 01. 운영체제 개요 본문
운영체제에 대한 깔끔하고 자세한 설명으로 유명한 이화여대 반효경 교수님의 강의를 듣고 정리한 내용입니다.
2017년도 1학기 강의이며, 보다 더 깊이있는 공부를 원하시면 2014년도 강의를 추천드립니다.
1. 운영체제란 무엇인가
운영체제는 컴퓨터 사용자와 하드웨어 사이의 중개자 역할을 해주고, 컴퓨터 하드웨어를 효율적으로 관리하며 성능을 높이는 소프트웨어다.
- 좁은 의미의 운영체제 (== 커널)
- 운영체제의 핵심 부분으로 메모리에 상주하는 부분
- 컴퓨터 전원을 켠 이후부터 항상 메모리에 상주함
- 넓은 의미의 운영체제
- 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
- 파일 복사 기능 (프로그램) 등
2. 운영체제의 목적
운영체제의 목적은 1) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하고, 2) 자원을 효율적으로 관리하는 것이다.
1) 동시 사용자와 프로그램들이 각각 독자적인 컴퓨터에서 수행되는 것 같은 환상을 제공하고, 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해준다.
2) CPU, 메모리, I/O 장치 등을 효율적으로 관리하여 사용자 및 운영체제 자신을 보호한다.
효율성: 주어진 자원으로 최대한의 성능을 내도록 한다.
형평성: 특정 사용자나 프로그램의 지나친 불이익이 발생하지 않도록 한다.
3. 운영체제의 기능
3-1. CPU 스케줄링
1. FCFS (First-Come FIrst-Served)
먼저 온 프로세스가 먼저 실행된다. (선입선출)
반응형보다는 일괄처리하는 배치형 시스템에 적합하다.
- Process 1 -> 2 -> 3 순으로 프로세스가 CPU를 요청하면 시간을 아래 그림과 같이 쓴다.
- 만약, Process 3 -> 2 -> 1 순으로 CPU를 요청할 때, 아래 그림과 같이 쓴다.
Process 3는 버스트 타임이 짧지만, CPU를 늦게 요청했기 때문에 총 걸리는 시간이 길다.
즉, FCFS는 프로세스가 bust time에 따라 turnaround time이 나빠진다.
2. SJF (Shortest Job First)_ 버스트 타임(걸리는 시간)이 짧은 프로세스부터 CPU를 할당한다.
burst time이 적은 순서부터 스케줄링되기 때문에 waiting time을 최소화하는데는 최적이지만, burst time이 긴 프로세스는 오랜시간 기다려야한다.
3. 라운드 로빈 스케줄링(Round-Robin)_ 스케줄러가 돌아가며 한 번에 한 프로세스에 동일한 시간 할당량동안 CPU를 할당해서 실행을 제한한다.
즉, 시간 할당량을 모든 프로세스에 주고, 할당된 시간 안에서 완료되지 못한 프로세스는 큐의 맨 뒤에 배치되도록 해서 CPU를 독점하지 않고 모든 프로세스가 공평하게 이용될 수 있게 해준다. 하지만 평균 대기 시간이 길어진다.
n개의 프로세스가 CPU 큐에 있는 경우, 어떤 프로세스도 (n - 1)* 할당시간 이상 기다리지 않고, 대기시간에 프로세스의 CPU 사용시간에 비례한다.
여기서 (n - 1)* 이 부분에 대해 추가 설명이 필요한데, 혹시 아신다면 댓글로 부탁드립니다 🥲
3-2. 메모리 관리
LRU: 페이지 1 - 가장 먼저 참조한 페이지 삭제
LFU: 페이지 4 - 참조횟수가 가장 적은 페이지 삭제
3-3. 디스크 스케줄링
디스크 접근 시간의 구성
- 탐색시간: 헤드를 해당 트랙으로 움직이는데 걸리는 시간
- 회전지연: 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
- 전송시간: 실제 데이터의 전송 시간
- FCFS (First-Come First-Served): 요청 순서대로 스케줄링
- SSTF (Shortest Seek Time First): 가장 가까운 순서로 이동, starvation 문제 생길 수 있음
- SCAN: 순서와 상관없이 끝에서 끝으로 이동하면서 처리
3-4. 인터럽트, 캐싱
Primary는 직접 접근이 가능하고, 휘발성이다. 화살표 방향대로 위로 올라갈수록 비싸고 빠르다.
4. 운영체제의 분류
동시 작업 가능 여부
- 단일 작업(single tasking): 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음 (ex. MS-DOS)
- 다중 작업(multi tasking) ⇒ 현대에는 거의 모두 다중 작업
사용자의 수
- 단일 사용자 (ex. MS-DOS, MS Windows)
- 다중 사용자 (ex. UNIX, NT server)
처리 방식
- 일괄 처리 (batch processing) - 현대 운영체제에서 찾아보기 어려움
- 작업 요청의 일정량을 모아서 한꺼번에 처리한다.
- 작업이 완전 종료될 때까지 기다려야한다.
- 시분할 (time sharing) - 현대 운영체제
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용한다.
- 일괄 처리 시스템에 비해 짧은 응답시간을 가진다. ex) 유닉스
- Interactive한 방식 - 컴퓨터 키보드를 두드렸을 때 바로 화면에 보이는 방식이다.
- 실시간 (Realtime OS)
- 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS (ex. 원자로/공장 제어, 미사일 제어)
- 시분할 방식은 사용하는 유저의 수에 따라 0.01초, 0.1초 등 달라질 수 있다.
- 요즘은 모바일 소프트웨어에서도 내비게이션, 블랙박스 등 실시간을 필요로 하는 소프트웨어가 많이 생기고 있어, Realtime OS가 아닌 곳에서 어떻게 지원할지에 대한 논의가 많다.
- 실시간 시스템의 개념 확장
- Hard realtime system 경성 실시간 시스템
- Soft realtime system 연성 실시간 시스템
- 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS (ex. 원자로/공장 제어, 미사일 제어)
5. 추가 용어
종류 | 설명 |
Multitasking | 여러 작업이 동시 실행 (CPU를 아주 빠르게 한번씩 할당) |
Multiprogramming | 여러 프로그램이 메모리에 동시에 올라가야함 (메모리가 강조된 개념) |
Time sharing | CPU의 시간을 분할하고 빠르게 할당해서 씀 (CPU의 의미를 강조) |
Multiprocess | 여러 프로그램이 동시에 실행 |
Multiprocessor | 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어있음을 의미 (하드웨어적으로 다름) |
Burst time | 걸리는 시간 |
Turnaround Time | 총 걸리는 시간 |