목차
운영체제란?
컴퓨터 하드웨어와 각종 소프트웨어(포토샵, 크롬, 메모장... 등)를 연결하는 "소프트웨어(운영체제)"
컴퓨터 시스템의 자원(CPU, Memory 등)을 효율적으로 관리하는데에 목적이 있다.
컴퓨터에 전원을 켜면 부팅이 일어난다.
부팅은 다시말해 운영체제가 메모리에 올라가서 실행된다는 것이다.
운영체제는 컴퓨터의 전원이 꺼질때까지 메모리에서 실행되는 프로그램이다.
좁은의미의 운영체제 (= 커널) : 운영체제의 핵심 부분으로 메모리에 상주하는 부분
넓은의미의 운영체제 : 커널 뿐 아니라 각종 주변 시스템 유틸리티(ex. 파일복사, 삭제...등)를 포함한 개념
운영체제의 분류
동시 작업 가능 여부
- 단일 작업(single tasking) : 한번에 하나의 작업만 처리. (ex. dos)
- 다중 작업(multi tasking ) : 동시에 두개 이상 작업 처리 (ex. unix, windows)
사용자의 수
- 단일 사용자(single user) (ex. dos, windows)
- 다중 사용자(multi user) (ex. unix, nt server)
처리방식
일괄 처리(batch processing)
- 일정량의 작업을 모아 한번에 처리한다.
- 작업이 완전 종교될 때까지 기다려야한다.
시분할(time sharing)
- 여러 작업을 수행할 때, 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용함
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가진다.
실시간(Realtime OS)
- 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야한다.
(ex. 원자로, 미사일, 반도체 장비 등..)
컴퓨터 시스템의 구조
컴퓨터 내부 : CPU, 메모리
컴퓨터 외부(입출력 디바이스) : 하드디스크, 키보드, 마우스, 프린터, 모니터
운영체제의 기능
어떤 프로그램에게 CPU사용권을 줄까? CPU 스케줄링
한정된 메모리를 어떻게 쪼개어 쓰지? 메모리 관리
디스크에 들어온 요청을 순서대로 처리할까? 디스크 스케줄링
빠른 CPU와 느린 I/O 장치간 속도차를 어떻게 극복하지? 인터럽트, 캐싱
프로세스의 상태
CPU는 1개밖에 없기때문에 여러 프로그램들이 시간을 쪼개어 CPU를 사용해야한다.
CPU를 사용하기위해 프로그램들을 줄세워 놓은 대기열이 CPU큐이다.
프로그램 A는 CPU큐에 있다가 CPU를 만나게되고, 하드디스크의 내용을 가져오는 작업을 하려한다
하지만 하드디스크의 작업속도는 CPU에 비해 너무 느리기에 바로 디스크 입출력 큐로 프로그램을 보내게된다.
프로그램 A가 하드디스크 내용을 가져올 동안 CPU는 CPU큐의 다음 프로그램들을 차례대로 처리해준다.
CPU 스케줄링
여러 프로그램들이 CPU를 사용하기위해 CPU큐에서 기다리고 있는 상황이다
어떤 프로그램에게 CPU사용권을 주어야할까??
First-Come First-Served
큐에 들어온 순서대로 처리한다
단점 : 1번째 프로세스가 긴 시간동안 이용하게되면, 뒤에있는 2~3번째 프로세스의 대기시간도 길어지고, 평균 대기시간도 길어진다.
Shortest-Job-First
CPU사용시간이 가장 짧은 프로세스부터 실행한다
장점 : 평균 대기시간이 줄어들었다.
단점 : CPU를 길게 사용해야하는 프로그램은, 앞선 짧은 프로그램에 비해 기다리는 시간이 오래 걸리게된다.
또한 CPU큐에 다른 프로그램들이 계속 들어온다면 결국 또 순위에서 밀리게된다.
= 무한정으로 기다려도 처리되지 않을 수 있다!
Round Robin ⭐
⭐현재 가장 많이 사용되는 방식이다.
짧게 정의한 CPU사용시간만큼 사용한다
사용시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고, CPU 큐의 제일 뒤로 밀린다.
(* CPU를 빼앗는 인터럽트는 하드웨어의 지원을 받아야한다.)
장점 : 어떤 프로세스도 (n-1)*CPU사용시간 이상 기다리지 않는다.
메모리 관리
컴퓨터를 부팅하면, 하드디스크에는 실행파일이 저장되어있고 메모리에는 운영체제만 있는 상황이 된다.
하드디스크의 실행파일을 실행하면 가상메모리에 프로세스를 올리고
프로그램 현재 실행에 필요한 부분만 메모리에 올리게된다.
시간이 흘러 메모리에 공간이 없어지는데, 어떻게 관리하면될까?
(페이지 : 프로세스를 작은 크기로 나눈 것)
디스크 스케줄링
탐색하고자하는 위치가 디스크 큐에 들어온다. 하드디스크는 원판을 탐색하여 정보를 가져올 수 있다.
디스크 큐에 1, 100, 2, 99...가 들어왔다면 차례대로 처리하는 것보다 1, 2, ...99, 100 이렇게 순서를 바꾸어 처리하는 것이 효율이 더 좋다.
First-Come First-Served
큐의 순서대로 처리
단점 : 헤드의 탐색이 비효율적이다.
Shortest Seek Time First
현재 위치에서 가장 가까운 위치를 탐색한다
장점 : FCFS보다는 탐색에 효율성이 좋다
단점 : 디스크큐의 상황은 계속 변화하기때문에 현재 위치에서 가까운 거리에 있는 위치만 계속 추가된다면,
현재 위치에서 먼 거리에 있는 위치는 계속 탐색하지 못할 수 있다. (기아현상)
SCAN
헤드는 디스크큐의 위치를 신경쓰지 않고 그저 디스크의 양 끝을 탐색한다.
헤드가 디스크큐의 위치에 도달하면 요청을 처리한다.
참고 http://www.kocw.net/home/search/kemView.do?kemId=1226304
'Computer Science' 카테고리의 다른 글
Factory Method Pattern | 팩토리 메서드 패턴 (0) | 2022.07.29 |
---|---|
Singleton pattern | 싱글톤패턴 (3) | 2022.07.29 |
프로세스? 스레드? (0) | 2022.02.17 |
동적계획법 DP 구현방법 ( + [백준] 11050 이항계수 문제풀이) (0) | 2022.02.13 |
DFS, BFS 구현방법 ( + [백준] 2606 바이러스 문제풀이) (0) | 2022.02.12 |