프로세스를 먼저 알고가자.
[CS Interview] - Process, 프로세스란?
협력적 프로세스는 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스다.
협력적 프로세스는 논리 주소 공간(코드 및 데이터)을 직접 공유하거나 공유 메모리 또는 메시지 전달을 통해서만 데이터를 공유할 수 있다.
즉, 쉽게 말하자면 협력적인 순차적 프로세스 또는 스레드로 구성된 시스템에서는 서로 비동기적으로 수행하면서 데이터를 공유할 가능성이 있다.
그렇게 된다면 부정확한 상태에 도달한다.
예를 들면 2 개의 프로세스가 동시에 변수 x을 조작하도록 허용한다는 그런 경우가 생기는 것이다.
실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황(race condition)이라고 하는데
이런 경쟁 상황으로부터 보호하기 위해, 한 순간에 한 프로세스만이 변수를 조작할 수 있도록 보장해야 한다.
운영체제의 여러 부분에서 자원을 조작하기 때문에 이런 경우가 빈번하게 발생하는데
다중 스레드 응용에서는 자원을 공유할 가능성이 높은 스레드가 서로 다른 처리 코어에서 병렬로 실행되기 때문에 더욱 우리는 경쟁 상황에 대해 대처를 해야한다.
다시, 프로세스 동기화(process synchronization)와 조정(coordination)에 힘을 써야 한다.
임계구역에 대해서 배워보자
• Each process has critical section segment of code
1. Process may be changing common variables, updating table, writing file, etc
2. When one process in critical section, no other may be in its critical section
• Critical section problem is to design protocol to solve this
• Each process must ask permission to enter critical section in entry section, may follow critical section with exit section, then remainder section
1. Mutual Exclusion - If process Pi is executing in its critical section, then no other processes can be executing in their critical sections
2. Progress - If no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the processes that will enter the critical section next cannot be postponed indefinitely
3. Bounded Waiting - A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted
a. Assume that each process executes at a nonzero speed
b. No assumption concerning relative speed of the n processes
임계구역(Critical Section)은 프로세스의 코드 부분을 포함하는 한 부분이고
그 안에서는 적어도 하나 이상의 다른 프로세스와 공유하는 데이터에 접근하고 갱신할 수 있다.
**한 프로세스가 자신의 임계구역에서 수행하는 동안에는 다른 프로세스들은 그 임계구역에 들어갈 수 없다.
다시 말해서 동시에 두 프로세스는 임계구역 안에서 실행할 수 없다.
그래서 임계구역 문제라는 것이 나왔는데
프로세스들이 데이터를 협력적으로 공유하기 위하여 자신들의 활동을 동기화할 때 사용할 수 있는 프로토콜을 설계하는 것이 목표다.
각 프로세스는 자신의 임계구역으로 진입하려면 진입 허가를 요청해야 한다.
이러한 요청을 구현하는 코드 부분을 진입 구역(entry section) 임계구역 뒤에는 퇴출 구역(exit section)이 따라올 수 있다.
++나머지 부분들은 나머지 구역(remainder section)이라고 부른다.
여기까지가 임계구역에 대한 짤막한 설명이고
아래는 우리가 임계구역을 해결하기 위해 충족시켜야하는 조건들이다.
더 자세한 내용은 아래 글에 있다.
[컴퓨터(Computer Science)/운영체제(Operation System)] - 프로세스에서의 동기화 (Process Synchronization) [운영체제]
임계구역 문제에 대한 해결안은 3가지 요구를 만족해야하는데
1. 상호 배제
프로세스 P(i)가 자기의 임계구역에서 실행된다면, 다른 프로세스들은 그들 자신의 임계구역에서 실행될 수 없다.
한 번에 하나의 임계구역 수행.
2. 진행
자기의 임계구역에서 실행되는 프로세스가 없고 그들 자신의 임계구역으로 진입하려고 하는 프로세스들이 있다면, 나머지 구역에서 실행 중이지 않은 프로세스들만 다음에 누가 그 임계구역으로 진입할 수 있는지를 결정하는 데 참여할 수 있으며, 이 선택은 무한정 연기될 수 없다.
유한한 시간 내에 해당 임계구역에 진입
3. 한정된 대기
프로세스가 자기의 임계구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 그들 자신의 임계구역에 진입하도록 허용되는 횟수에 한계가 있어야 한다.
유한한 시간 동안만 대기
'컴퓨터(Computer Science) > 운영체제(Operation System)' 카테고리의 다른 글
프로세스에서의 동기화 (Process Synchronization) [운영체제] (0) | 2020.05.28 |
---|---|
동기화, 모니터 : Synchronization, Monitor [운영체제] (0) | 2020.05.28 |
Dining philosopher problem,식사하는 철학자 문제 [운영체제] (0) | 2020.05.27 |
Deadlock, 교착상태란? [운영체제] (0) | 2020.05.27 |
Readers and Writers Problem, 동기화 [운영체제] (0) | 2020.05.21 |