본문 바로가기

전체 글

CPU Scheduling - Scheduling Criteria Scheduling Criteria, 스케쥴링 평가 기준 CPU Scheduling Algorithm의 종류에는 여러가지가 있다. 이러한 다양한 Algorithm들의 특성을 나타내는 몇가지 기준들이 있는데 이런 기준들을 Scheduling Criteria이라고 한다. Scheduling Criteria에는 여러가지 있을 수 있지만 대표적으로 아래의 5가지가 있다. 1. CPU Utilization : CPU에 얼마나 많은 부하가 걸리는가? 2. Throughput : 단위 시간당 처리 할 수 있는 Process의 수는 얼마인가? 3. Turnaround Time : 특정 Process가 시작하여 종료하는데 얼마나 걸리는가? 4. Waiting Time : Process가 Ready Queue에서 대기하는.. 더보기
CPU Scheduling - DIspatcher DIspatcher, 디스패처 DIspatcher란 CPU의 제어권을 STS(Short-Term Scheduling)에 의하여 선택된 Process에게 넘겨주는 모듈을 말한다. 이러한 DIspatcher의 기능은 아래의 3가지이다. 1. Context Switching 2. User Mode로 전환 3. 사용자 프로그램의 재시작을 위해 해당주소로 이동 DIspatcher의 경우 STS에 의해서 수행되기 때문에 Process Switching이 일어 날때마다 수행된다. 때문에 고속 수행이 가능해야만 한다. DIspatcher가 한 Process를 멈추고 다른 Process에게 CPU의 제어권을 넘기는 데 걸리는 시간을 DIspatch Latency라고 한다. 더보기
CPU Scheduling - CPU Scheduling CPU Scheduling, CPU 스케쥴링 Multi-Programmed O/S의 경우 한 Process가 Wait상태로 들어가게 되면 현재 Ready하고 있는 다른 Process들 중에서 하나를 골라서 CPU의 제어권을 넘겨주어야 한다. 하지만 많은 Process 들중에서 어떤 Process를 고르는게 좋을까? 그렇다. CPU Scheduling이란 많은 Process들중 어떤 process를 선택할 것 인가를 고르는 방법을 말한다. 만일 CPU가 Idle상태 즉, 대기상태가 되면 CPU Scheduler(정확히는 STS)가 Ready Queue에 존재하는 Process들 중에서 하나를 골라서 수행시킨다. 그러면 어떤 때에 CPU가 Idle상태에 빠지는가?? 대표적으로 아래 4가지 경우가 있다,. 1.. 더보기
Thread - Multi-Thread VS Multi-Process Multi-Thread는 하나의 Process내에 여러개의 Thread 즉, 흐름이 존재한다. Multi-Process는 여러개의 Process가 존재한다. Multi-Thread와 Multi-Process는 둘다 여러개의 흐름이 동시에 존재한다는 점에서는 동일하다. 하지만 Multi-Process에서 각각의 Process는 독립적으로 수행되며 별개의 Memory를 가지고 있지만 Multi-Thread의 경우 각각의 Thread는 Process내의 Memory를 공유한다. 또한 Process간에 전환인 Context Switching보다 Thread간의 전환인 Thread Switching이 비용이 저렴하며 속도도 빠르다. 하지만 Multi-Thread의 단점은 실제 시간으로 동시에 수행되지만 실질적으로.. 더보기
Thread - Thread란? Thread, 스레드 Thread란 특정 Process내에서 실행되는 하나의 흐름을 나타내는 단위이다. 또한 독립된 Program counter를 갖는 단위이며 또한 독립된 Register Set과 Stack을 가지고 있다. 보통은 한 Process당 하나의 Threa를 가지고 있고 여러 Thread를 가지고 있는 경우 Multi-Thread라고 한다. Multi-Thread에서 각각의 Thread는 상호간에 동일한 Address Space에 존재하는 Code,Stack,Resource를 공유하기 때문에 Context Switching보다 비용이 저렴하다. 이러한 Multi-Thread를 제어하는 방법은 크게 두가지로 나눌수 있다. User Thread : User레벨에서 Thread를 제어한다. Sys.. 더보기
Process - InterProcess Communication(IPC)_2 Buffering, 버퍼링, Message 저장 방식 앞선 포스트에서 IPC를 통해서 Process간의 통신이 어떻게 이루어 지는지 얘기했다. 그럼 각각의 연결에서 송신된 Message를 어떻게 저정하는지에 대한 방법에 대해 알아보자. 각각의 링크별로 Message를 저장하기 위한 구현 방법. 이를 Buffering이라고 한다. 이 구현방법은 Queue의 크기를 얼마로 잡느냐에 따라서 아래의 3가지로 나눌수 있다. Zero Capacity : Queue의 크기가 0인 경우, No-Buffering. 즉, Sender는 Receiver가 Message를 전부 받을 때까지 대기 할 수 밖에 없다. 이러한 Process 동기화 방식을 rendezvous이라고 한다. Bounded Capacity : Queue.. 더보기
Process - InterProcess Communication(IPC)_1 InterProcess Communication(IPC), Process간의 통신 IPC는 Process간 통신과 동작의 동기화를 위한 메커니즘이다. 간단히 말하면 Process간 통신 방법이다. IPC는 두개의 간단한 명령으로 가능한데 이 두가지가 send(message)와 receive(message)이다. 이때 message는 그 크기를 두가지로 설정할 수 있는데 이 두개의 차이는 아래와 같다. Fixed Size : O.S의 처리는 간단하지만 사용자 프로그래밍은 복잡해진다. Variable Size : 사용자 프로그래밍은 간단하지만 O.S의 처리는 복잡해진다. 만일 Process P와 Q가 통신을 하고 싶다고 가정하자. 이때 P와 Q는 서로간의 Communication Link(통신을 위한 논리적.. 더보기
Process - Operation on Process O.S는 Process의 생성 및 종료에 필요한 메커니즘을 제공한다. Process가 Parent Process가 생성하는 경우가 있는데 이때 생성된 Process를 Child Process라고 한다. 이때 생성된 Child Process는 O.S나 Parent Process로 부터 자원을 할당 받아야 한다. 이때 Parent Process로 부터 자원을 할당받을때는 Parent의 자원 한도내에서 새로운 Proess가 생성가능하기 때문에 무분별한 Process의 생성을 방지하여 OverHead를 방지한다. UNIX의 경우를 살펴보자. UNIX의 경우에 Process생성에 관한 System Call을 제공하고 있다. fork() : Parent Process가 fork()를 사용하게 되면 새로운 Proce.. 더보기