Operating System

[Operating System] 운영체제의 병행성 제어(Concurrency Control)

구루싸 2021. 3. 31. 13:37
반응형
SMALL

이번 학습 주제는 운영체제의 병행성 제어(Concurrency Control)입니다. 다수의 프로세스가 병렬로 처리되고, 이 프로세스들이 동일 자원에 접근하려고 한다면 자원의 무결성이 깨질 우려가 있습니다. 이 때, 운영체제는 상호배제를 통해 자원이 무결성을 보장합니다. 상호배제(Mutual Exclusion Techniques)공유 자원의 독점을 보장하는 코드 영역을 의미하는 임계영역(Critical Section)이라는 개념을 이용하게 되는데, 세마포어(Semaphore)나 모니터(Monitor)와 같은 메커니즘을 사용하고, 진입 구역(Entry section), 출구 구역(Exit section), 나머지 구역(Remainder section)이 있습니다. 여기서 진입 구역은 임계 영역에 진입하기 위해 허용을 요구하는 코드 영역이고, 출구 구역은 임계 영역에서 벗어나기 위한 코드 영역, 나머지 구역은 프로그램의 나머지 코드 영역을 의미합니다.

* Binary Semaphore example *
wait(S); //Entry section --lock()
S.count--;
if (S.count<0) {
	block this process
    place this process in S.queue
}
/*
Critical section
*/
signal(S); //Exit section --unlock()
S.count++;
if (S.count=0) {
	remove a process P from S.queue
    place this process P on ready list
}
/*
Remainder section
*/

위의 갑자기 튀어나온 코드는 이진 세마포어를 간단하게 표현한 것인데, 세마포어는 운영체제가 제공하는 자원으로 세마포어 S는 정수값을 가지는 변수로서 초기화 및 두 개의 연산(P, V or wait, signal)으로만 접근 가능한 특수한 변수입니다. S가 0, 1 값만 갖는 이진 세마포어와 0 또는 정수값도 갖는 계수형(Counting) 세마포어가 있습니다. 모니터(Monitor)는 상호배제 구현을 위해 별도의 프로그램을 작성할 필요가 없고, 공유 자원을 모니터 내부의 지역 변수로 정의하여 상호배제를 구현합니다.

 

교착상태(Dead Lock)

  • 하나 또는 둘 이상의 프로세스가 더 이상 계속할 수 없는 어떤 특정 사건을 기다리고 있는 상태로 특정 사건은 자원의 할당과 해제를 의미함
  • 영구적으로 블록(Block)되어 있는 상태

교착상태

교착 상태의 조건

  1. 상호배제(Mutual Exclusion)
    • 프로세스들이 자원을 배타적으로 점유
    • 다른 프로세스들이 자원 사용 불가
    • 한 번에 한 프로세스만이 자원 사용 가능
  2. 점유와 대기(Hold and Wait)
    • 부분 할당
    • 다른 종류의 자원을 부가적으로 요구하면서 이미 어떤 자원을 점유하고 있음
  3. 비선점(Non-preemption)
    • 자원들은 그들을 점유하고 있는 프로세스로부터 도중에 해제되지 않음
  4. 환형 대기(Circular Wait)
    • 프로세스와 자원들이 원형을 이룸

교착상태의 대응 방법

  1. 예방(Prevention)
    • 교착상태의 발생 조건 4가지 중 어느 한가지를 부정하는 것
  2. 회피(Avoidance)
    • 교착 상태에 빠질 가능성이 있는지 없는지 운영체제가 검사하고, 교착 상태에 빠질 가능성이 없을 경우에만 자원을 할당하는 것
    • 대표적인 알고리즘으로 은행원 알고리즘(Banker's Algorithm)이 있음
  3. 발견(Detection)
    • 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견하는 것
    • 대표적인 알고리즘으로 교착 상태 발견 알고리즘과 자원 할당 그래프가 있습니다
  4. 회복(Recovery)
    • 교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것

이번 학습은 여기까지하고 마치겠습니다. 그럼 이만-_-

 

반응형
LIST