목차
운영 체제 기능: 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
1. cpu 스케줄링
개념
운영 체제는 프로세스들에게 CPU 등의 자원 배정을 적절히 함으로써 시스템의 성능을 개선할 수 있는데, 이를 cpu 스케쥴링이라고 한다.
1. cpu 큐에 프로세스가 p1,p2,p3를 들어온 순서대로 스케쥴링 하는 경우
p1가 24초를 사용하여 cpu를 사용하고,
p2가 뒤를 이어 3초(24-27)
p3가 뒤를 이어 3초(27-30)을 사용한다.
average waiting = 17
2. 짧은 프로세스 순서대로 스케쥴링 하는 경우(SJF Short-Job-First)
p1 = 6, p2 = 0, p3 = 3
average waiting = 3
문제점: starvation(무한정 기다리는 현상) 발생가능
발생이유: 프로그램들이 계속 생성되기 때문에, 긴 것은 영원히 cpu를 못쓰게 되는 문제가 발생한다.
3. Round Robin 방식
starvation 문제를 해결하고 프로그램 프로세스들에게 효율적이면서, 공정하게 자원을 사용할 기회를 부여하기 위한 방법으로서, 각 프로세스에 일정 시간을 할당하고, 할당된 시간이 지나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU뒤에 줄을 다시 선다.
예를 들어서, 화장실 변기에 앉을 수 있는 시간을 각 5분으로 정해놓는다고 하자. 그러면 큰일을 보는데에 1분이 걸리는 친구, 5분이 걸리는 친구, 20분이 걸리는 친구. 14분이 걸리는 친구가 있다면 어떻게 될까?
1분 걸리는 친구 -> 5분 걸리는 친구의 변기 사용을 지나 20분 걸리는 친구는 5분동안 큰일을 보다가, 끊고 나와서 14분 걸리는 친구 뒤에선다. 14분 친구는 마찬가지로 5분동안 큰일을 보다가, 끊고 나와서 다시 15분 친구(20-5) 뒤에 선다. 이런식으로 동작하는 방식이 RoundRobin 방식이다.
Q) 어떤 프로세스도 (n-1) * 할당시간 이상 기다리지 않는다.
-> 예를들어 20,10,3 내가 3번째 프로세스라고 가정해보자. 내가 기다릴 최대의 시간은 20이 사용할 할당시간, 10이 사용할 할당시간이다. 즉 앞의 것들의 개수 2 * 할당시간이 된다.
2. 메모리 관리
프로그램을 실행시키면 독자적인 메모리 주소가 메겨지고, 이것이 바로 물리적인 메모리에 올라가는 것이 아니고, 일단 본인만의 메모리 공간이 만들어집니다. 이것이 가상 메모리 입니다. 이 가상 메모리 중 당장 필요한 부분만 물리적인 메모리에 넣어두게 됩니다. 메모리가 가득 차, 이후 필요했던 부분이 더이상 필요하지 않게 되면 디스크의 스왑영역으로 이동시킵니다.
Q) 다 올리면 되지 왜 가상메모리를 두고 필요한 부분만 올리나요?
-> 메모리의 용량엔 한계가 있기 때문에, 필요하지 않은 부분까지 모두 올려버리면 낭비이기 때문입니다.
Q) 컴퓨터가 꺼진다면 어떻게 될까요?
-> 디스크는 살아있지만, 메모리는 휘발성이라 사라집니다. 디스크(스왑영역)은 살아있습니다. 하지만 의미가 없는 영역이 되는 것입니다.
Q) 메모리가 가득 차,필요하지 않은 부분은 디스크의 스왑부분 넣어둔다고 했는데, 이는 어떤 과정을 통해 동작할까요?
LRU 방법
- 가장 오래 전에 참조된 페이지를 삭제합니다.
- 위의 예시에선 페이지 1이 가장 오래 전에 참조되었으므로 삭제합니다.
한계: 페이지 1은 전체에 걸쳐 가장 많이 사용된 것인데, 오래되었다는 이유만으로 삭제된다.
LFU 방법
- 참조 횟수가 가장 적은 페이지를 삭제합니다.
- 위의 예시에선 페이지 4가 가장 적게 사용되었으므로 삭제합니다.
한계: 페이지 4가 신흥강자로서 떠오르는 중일 수도 있는데, 그러한 가능성들을 모두 배제해버립니다.
3. 디스크 스케줄링
1. 디스크 개념 사진
2. 디스크 스케줄링의 동작 방식
2-1. SSTF(Shortest Seek Time First) 방식
현재를 기준으로 최단거리인 것을 찾아가는 방식
한계: starvation 문제
2-2. SCAN 방식
한계: 동일한 트랙이나 실린더 요청이 연속적으로 발생하면 헤드가 더 이상 나아가지 못하고 제자리에 머물게 되어 바깥쪽 트랙이 아사 현상을 겪는 문제가 발생.
scan 방식의 문제를 해결하기 위해 c-scan 등의 방식도 있다.
강의: http://www.kocw.net/home/search/kemView.do?kemId=1226304&ar=relateCourse
'CS > 운영체제' 카테고리의 다른 글
[운영체제] process Synchronization 문제 (0) | 2022.07.17 |
---|---|
[운영체제] Process Synchronization 1 (0) | 2022.07.16 |
[운영체제] CPU 스케줄링 (0) | 2022.06.13 |
[운영체제] 프로세스 관리 (0) | 2022.06.07 |
[운영체제] 컴퓨터 시스템 구조 (0) | 2022.06.02 |