#148_프로세서 스케줄링의 종류

 - 비선점(Non-preemptive) 스케줄링

  ㆍ이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

  ㆍ프로세스가 CPU를 할당받으면 해당 프로세스가 완료될때까지 CPU를 사용함

  ㆍ모든 프로세스에 대한 요구를 공정하게 처리할 수 있음

  ㆍ프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합함

  ㆍ중요한 작업(짧은 작업)이 중요하지 않은 작업(긴작업)을 기다리는 경우가 발생할 수 있음

  ㆍ종류 : FCFS, SJF, 우선 순위, HRN, 기한부 등의 알고리즘

 - 선점(Preemptive) 스케줄링

  ㆍ하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

  ㆍ우선 순위가 높은 프로세스를 빠르게 처리할 수 있음

  ㆍ주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용됨

  ㆍ종류 : SRT, 선점 우선 순위, ROUND Robbin, 다단계 큐, 다단계 피드백 큐 등의 알고리즘

 

#149_비선점 스케줄링의 종륲

 - FCFS(First-Come-First-Service)

  ㆍ준비상태 큐에 도착한 순서에 따라 차례로 CP를 할당하는 기법

  ㆍ먼저 도착한 것이 먼저 처리되어 공평성은 유지되지만 짧은 작업이 긴 작업을, 중요한 작업이 중요하지 않은 작업을 기다리게 됨

 - SJF(Shortest Job First)

  ㆍ실행 시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법

  ㆍ가장 적은 평균 대기 시간을 제공하는 최적 알고리즘

 - HRN(Hightest Response-ratio Next)

  ㆍ실행시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로, 대기 시간과 서비스(실행) 시간을 이용하는 기법

 - 기한부(Deadline)

  ㆍ프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법

  ㆍ시스템은 프로세스에게 할당할 정확한 시간을 추정해야 하며, 이를 위해서 사용자는 시스템이 요구한 프로세스에 대한 정확한 정보를 제공해야 함

 - 우선순위(Priority)

  ㆍ준비상태 큐에서 기다리는 각 프로세스마다 우선 순위를 부여하며, 그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법

 

#150_에이징(Aging) 기법

 - 시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우, 한번 양보하거나 기다린 시간에 비례하여 일정 시간이 지나면 우선 순위를 한 단계씩 높여 가까운 시간 안에 자원을 할당받도록 하는 기법

 - SJF나 우선 순위 기법에서 발생할 수 있는 무한 연기 상태, 기아 상태를 예방할 수 있음

 

#151_선정 스케줄링의 종류

 - 선점 우선 순위

  ㆍ준비상태 큐의 프로세스들 중에서 우선 순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법

- SRT(Shortest Remaining Time)

  ㆍ비선점 기법은 SJF 알고리즘을 선점 형태로 변경한 기법으로, 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법

 - RR(Round Robin)

  ㆍ시분할 시스템을 위해 고안된 방식으로, FCFS 알고리즘을 선점 형태로 변형한 기법

  ㆍFCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 할당된 시간 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치됨

  ㆍ할당되는 시간이 클 경우 FCFS 기법과 같아지고, 할당되는 시간이 작을 경우 문맥교환 및 오버헤드가 자주 발생됨

 - 다단계 큐(Multi level Queue)

  ㆍ프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법

 - 다단계 피드백 큐(Multi level Feedback Queue)

  ㆍ특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법

 

#152_임계 구역(Critical Section)

 - 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원(영역)

 - 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있음

 

#153_상호 배제(Mutual Exclusion)

 - 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법

 - 여러 프로세스가 동시에 공유 자원을 사용하려 할 때 각 프로세스가 번갈아 가며 공유 자원을 사용하도록 하는 것으로 임계 구역을 유지하는 기법

 

#154_세마포어(Semaphore)

 - 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법

 - E.J. Dijkstra가 제안하였으며, P와 V라는 2개의 연산에 의해서 동기화를 유지시키고, 상호 배제의 원리 보장

 - S는 P와 V 연산으로만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가질 수 있음

 - P 연산 : 자원을 사용하려는 프로세스들의 진입 여부를 자원을 개수(S)를 통해 결정하는 것으로, wait 동작이라고 함

 - V 연산 : 대기 중인 프로세스를 꺠우는 신호(Wake Up)로서, signal 동작이라고 함

 

#155_모니터(Monitor)

 - 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성됨

 - 자료 추상화와 정보 은폐 개념을 기초로 하며 공유 자원을 할당하기 위한 병행성 구조로 이루어져 있음

 - 모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야 함

 - 외부의 프로시저는 직접 액세스할 수 없으며, 모니터의 경계에서 상호배제가 시행됨

 - 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있음

 

#156_교착 상태(Deadlock)

 - 정의

  ㆍ상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상

 - 필요 충분 조건

  ㆍ상호배제 : 한번에 한개의 프로세스 만이 공유 자원을 사용할 수 있어야 함

  ㆍ점유와 대기(Hold & Wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함

  ㆍ비선점(Non-preemptive) : 다른 프로세스에 할당된 자원은 사용이 끝날때까지 강제로 빼앗을 수 없음

  ㆍ환형대기(Circular Wait) : 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야함

 

#157_교착 상태 해결 방법

 - 예방 기법(Prevention) : 교착 상태가 발생되지 않도록 사전에 시스템을 제어하는 방법으로, 교착 상태 발생의 4가지 조건 중에서 상호 배제를 제외한 어느 하나 제거(부정)함으로써 수행됨

  ㆍ점유 및 대기 부정 : 프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 함

  ㆍ비선점 부정 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 함

  ㆍ환형 대기 부정 : 자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 하는 것

 - 회피 기법(Avoidance) : 교착 상태가 발생할 가능성을 배제하지 않고, 교착 상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘(Banker's Algorithm)이 사용됨

  ㆍ은행원 알고리즘 : Dijkstra가 제안한 것으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법으로 각 프로세스에게 자원을 할당하여 교착 상태가 발생하지 않으며 모든 프로세스가 완료될 수 있는 상태를 안전상태 교착 상태가 발생할 수 있는 상태를 불안전 상태라고 함

 - 발견 기법(Detection) : 시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견하는 것

 - 회복 기법(Recovery) : 교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것

 

#158_기억장치 관리 전략

 - 반입(Fetch) 전략 : 보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략

  ㆍ요구 반입 : 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법

  ㆍ예상 반입 : 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법

 - 배치(Placement) 전략 : 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지 결정하는 전략

  ㆍ최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법

  ㆍ최적 적합(Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법

  ㆍ최악 적합(Worst Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

 - 교체(Replacement) 전략 : 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하고 사용할 것인지를 결정하는 전략으로, FIFO, OPT, LRU, NUR, SCR 등이 있음

 

 

 

+ Recent posts