목록Computer Science/운영체제 (10)
취미가 좋다
지금까지 ME를 해결하기 위한 SW 솔루션, HW 솔루션, OS가 지원하는 SW 솔루션을 알아봤다. 이 방법들은 low-level에서의 접근으로 Flexible하지만 복잡하다. 마지막으로 Language-level(high-level)에서 접근해보자. Monitor High-level Mechanism은 프로그래밍 언어로 상호배제(ME)를 수행한다. 그래서 사용이 비교적 쉽다. 여러 High-level Mechanism 중 Monitor만 살펴보자. Monitor 한 번에 한 프로세스만 들어갈 수 있는 Critical data, Critical sections 영역이 있다. C#, C++, F#, VB, java 에서 제공 장점 : 사용이 쉬워서 에러가 발생할 가능성이 낮다. 단점 : 지원하는 언어에서만..
Busy waiting 문제를 해결하기 위해서 OS가 지원하는 Solution을 살펴보자. Spinlock Semaphore Evencount/sequencer Spinlock : 정수 변수로, 초기화, P( ), V( ) 연산으로만 접근 가능하다. P( ), V( )는 atomic 연산을 하도록 OS 가 보장해준다. 즉, 중간에 preemption되지 않는다. - P는 물건을 꺼내고, V는 물건을 넣는 것으로 볼 수 있다. - S는 물건의 개수로 보면 된다. - P는 자물쇠를 잠그고, S는 자물쇠를 푼다고 생각할 수도 있다. P(S) { while (S = 1 이어야 메시지를 가져갈 수 있다. - 정리하면 In >= u + 1 - 메시지가 있으면 가져가고 Out을 증가시킨다. 다음 글에서는 마지막으로 ..
SW 방식, HW 방식으로 Process Mutual Exclusion을 해결해보자. Dekker's Algorithm Peterson's Algorithm Dijkstra's Algorithm TAS (TestAndSet) instruction SW Solutions 1. Dekker's Algorithm 전략 위의 1번 3번 방법을 섞어서 turn과 flag를 모두 사용한다. 둘 다 flag를 들고 while문에 들어가면 turn을 살핀다. 자신의 turn이 아닌 쪽이 flag를 다시 내리고, turn을 가진 프로세스가 CS에 들어가서 수행한다. 프로세스의 수행이 끝나면 turn과 flag를 최신화 하고 기다리던 프로세스가 flag를 들고 CS로 들어간다. 2. Peterson's Algorithm ..
프로세스 동기화 & 상호 배제에 대해서 살펴보자. synchronization (동기화) Critical Section (임계 영역) Mutual Exclusion (상호 배제) Mutual Exclution Methods Mutual Exclution Primitives (turn, flag) Process Synchronization (동기화) 동기화라는 개념이 어떻게 나왔을까? 다중 프로그래밍 시스템이 등장하면서 시작되었다. 다중 프로그래밍 시스템 : 여러 개의 프로세스들이 서로 독립적으로 동시에 동작한다. - 따라서 공유 자원 또는 데이터가 있을 때, 문제가 발생할 수도 있다. 동기화 (Synchronization) : 자원을 공유할 때 생기는 문제를 방지하기 위해 프로세스들이 대화하는 것이다. ..
이전 글에 이어서 스케줄링을 더 알아볼 것이다. 기본 스케줄링 알고리즘 FCFS RR SPN SRTN HRRN MLQ MFQ 기본 스케줄링 알고리즘 (Basic Scheduling algorithms) 1. FCFS (First Come First Service) : 먼저 도착한 프로세스를 먼저 처리한다. - Non-preemptive scheduling - 스케줄링의 기준은 도착 시간이 된다. 어떤 프로세스가 ready queue에 먼저 도착했는지를 본다. 장점 - scheduling이 매우 간단하기 때문에, overhead가 작고 자원을 효율적으로 사용 가능하다. - 일괄처리 시스템 (Batch system)에 적합하다. 단점 - 긴 평균 응답시간 (reponse time)과 convoy effect..
스케줄링에 대해서 알아보자. 스케줄리의 목적 스케줄링 기준 및 단계 스케줄링 정책 스케줄링을 왜 해야할까? 먼저 우리의 시스템은 여러 프로세스를 가지고 있는 다중프로그래밍 환경이다. 다중 프로그래밍 : 여러 개의 프로세스가 시스템 내에 존재하는 환경 자원을 할당할 프로세스를 선택해야 하기 때문에 스케줄링이 필요하다. 자원을 나누어 주는 방법은 2가지가 있다. 1. 시간 분할 (time sharing) 관리 CPU는 한 번에 하나의 프로세스만 들어가서 사용할 수 있는 자원이다. 따라서 프로세서 사용 시간을 프로세스들에게 분배하는 것을 프로세스 스케줄링 (Process Scheduling)이라고 한다. 2. 공간 분할 (space sharing) 관리 반면 메모리 같은 경우는 여러 프로세스가 동시에 사용할 ..