Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Be realist

5. 프로세스 동기화 본문

Operating System

5. 프로세스 동기화

realist 2018. 4. 16. 03:41
여러 프로세스가 병행으로 수행되어 발생하는 문제를 해결하는 것을 프로세스 동기화라 한다. 

다른 프로세스와 공동으로 사용하는 변수, 테이블, 파일 등을 변경하는 부분을 임계 구역(critical section)으로 둔다. 
각 프로세스는 임계구역에 진입하기 전에 허가를 받아야 하고, 이 코드를 진입 구역(entry section)이라 한다. 
허가를 받아 임계구역을 실행한 다음에는 다른 프로세스들이 진입할 수 있도록 한다. 이 코드를 출구 구역(exit section)이라 한다. 
이외의 코드 부분을 잔류 구역(remainder section)이라 한다. 

critical section 문제를 해결하는 메커니즘은 다음 세 가지 요건을 충족해야 한다.

- 상호 배제 (mutual exclusive)
- 진행 (progress) 
- 한계 대기 (bounded waiting) : 임계 영역에 대한 진입 요청 후 무한히 기다리지 않는다. 

1) 임계 영역으로 진입 가능성을 확인하고 진입을 원자적으로 처리한다.
- 경쟁 조건이 발생하지 않도록 하고
- 진입하게 되면 임계 영역을 잠금(lock) —> 락은 동기화의 가장 근본적인 수단이다!!

2) 경쟁 조건이 발생하더라도 안전하게 처리
- lock을 위해 flag 표시를 해야 하는데, 이 flag도 결국은 또 다시 공유하게 되는 변수인 것! 
==> 이를 해결하기 위한 고전적 알고리즘으로 peterson’s solution, dekker’s solution 이 있다. 

세마포어 : 
검사 연산 -> wait(S) == P(S) 락의 획득
증가 연산 -> signal(S) == V(S) 락의 해제 

스레드의 동기화에는 뮤텍스를 사용한다. 
뮤텍스는 ‘주인’의 개념이 있어 lock을 건 쓰레드만 unlock 할 수 있다. 



'Operating System' 카테고리의 다른 글

6. CPU 스케줄링  (0) 2018.04.16
4. 스레드, 멀티스레드 프로그래밍  (0) 2018.04.16
3. 프로세스  (0) 2018.04.16
2. 컴퓨터 시스템 구조  (0) 2018.04.16
1. 운영체제란?  (0) 2018.04.16