Synchronization 2

[OS/운영체제] 프로세스 동기화 (Process Synchronization) - (2)

Peterson's Soultion Critical-Section Problem을 소프트웨어 기반의 간단한 구조로 해결하는 Peterson's Solution을 알아보자. 현대의 하드웨어에서는 동작할 확신을 가질 수 없지만, Critical-Section Problem 해결의 알고리즘적 기초를 제공했다는 것에 그 의의가 있다. Peterson's Solution은 Critical Section과 Remainder Section을 실행하는 두 프로세스에 한해 동작한다. 두 프로세스를 P0, P1이라 하자. Peterson's Solution은 두 프로세스들이 다음 데이터를 공유하도록 한다. turn 변수는 Critical Section에 들어갈 프로세스가 현재 누구 차례인지를 나타낸다. 만약 turn이 i..

운영체제 2020.11.10

[OS/운영체제] 프로세스 동기화 (Process Synchronization) - (1)

Producer-Consumer Problem 다음 두 코드를 보자. Producer 코드는 buffer 한 칸에 문자를 쓰고 버퍼의 다음 칸으로 이동하고 counter를 증가시킨다. Consumer 코드는 counter 값이 0이 될 때까지 buffer 한 칸의 문자를 읽고, counter 값을 감소시킨 후 버퍼의 다음 칸으로 이동한다. 이 두 코드는 각자 실행할 경우 잘 동작하지만, 동시에 실행시켰을 때에는 잘 작동하지 않을 수 있다. 각 코드가 공유하는 counter 변수를 조작하는 과정에서 문제가 발생하는데, counter를 조작하는 구문을 다음과 같이 풀어 쓸 수 있다. (이는 low-level에서 해당 구문이 동작하는 순서와 같음) 동시에 실행되는 counter++ 구문과 counter-- 구..

운영체제 2020.11.10