티스토리 뷰

SoftWare/OS

OS - 6. Process Synchronization (1)

White Whale 2016. 4. 25. 22:33
728x90

1. 임계구역문제

• 진입 구역, 임계 구역, 퇴출 구역, 나머지 구역으로 구성된다.

• 상호 배제 : 하나의 프로세스가 임계 구역으로 들어가면 나머지 프로세스는 못들어 간다.
• 진행 : 동일 프로세스가 계속해서 임계 구역에 있을 수 없다.
• 한정된 대기 : 임계 구역에 접속 요청을 하였으면 중간에 순서를 뺏기는 횟수를 제한해야한다.


2. 피터슨의 해결안

• 코드로 하여 Critical section에 접근할수 있는 프로세스를 정한다.


3. 동기화 하드웨어

• 소프트웨어 기반 API를 이용하여 보호한다.

• test_and_set


• compare_and_swap : value와 expected가 같으면 new_value로 변경한다.

4. Mutex

• 하드웨어 기반 해결책은 사용하기 힘들어 동기화 도구를 사용한다.

• Lock가 unLock으로 크리티컬 섹션을 보호한다.

• while문 검색에 busy waiting이 있다.



5. Semaphore

• S가 1일 경우 mutex와 같다.
• block과 wakeup으로 상태가 있다.

 세마폴은 busy waiting을 제거하기 위해 아래와 같은 형식으로 wait와 signal을 구현한다.

 wait안에 대기 큐에 프로세스를 넣고 프로세스를 멈춘 후, signal때 큐에서 꺼낸 프로세스를 동작시킨다.


6. 교착상태와 기아

• p0와 p1이 각각 S, Q를 가지고 있을 때 p0가 Q를 기다리고 p1이 S를 기다리면 교착상태가 되어 무한 기다림 즉 기아에 빠지게 된다.


7. 우선순위 역전

• 프로세스 우선순위가 H<N<M일때 H가 a를 가지고 대기중이고 M이 실행중인데 M이 a가 필요하면 a가 없어서 대기 상태로 간다. 그러면 N이 실행되고 H 실행되고 M이 실행된다. 단순히 이렇게 동작하면 우선순위를 뺴앗긴다고 해도 동작은 하지만 M이 대기로 빠지고 N이 실행된 후 다시 M, N, M, N....으로 N이 끝날때 까지 M는 실행하지 못한다. 

• 해결방법으로는 M이 a때문에 실행하지 못할 때 a를 가지고 있는 H의 우선순위를 M의 우선순위로 하여 H를 먼저 실행시키고 M, N 순으로 실행시킨다.


8. 유한 버퍼 문제

• 버퍼가 비면 버퍼를 가득 체우고 버퍼가 있으면 전부 소비한다.

9. Readers-Writers 문제

• 쓰기는 누군가 읽기를 하고 있으면 안되고 복수의 읽기는 허용된다.
• 읽기 코드에서 readcount가 크리티컬 섹션이기 때문에 접근막고 증가시킨다. 그리고 만약에 읽기 수가 1이면 쓰기도 막는다. 이후 readcount에 대한 mutex를 해제한다. => 다른읽기 접속 가능
• 읽기가 끝나면 다시 readcount를 감소하기 위해 무텍스로 막고 감소하고 0이면 읽기 허용을 해주기 위해 신호를 준다. 마찬가지로 readcount에 대한 mutex를 해제한다.


10. 우선순위 역전

• 젓가락 수보다 적은 인원이 앉는다.

 한 철학자가 2개의 젓가락을 들었을 때 다른 철학자가 젓가락을 들수있게 한다.

• 홀짝으로 왼쪽 오른쪽 다른 위치의 젓가락을 먼저 든다.

'SoftWare > OS' 카테고리의 다른 글

은행원 알고리즘(Banker's Algorithm) 예시 및 C코드 예제  (3) 2016.05.23
식사하는 철학자 문제(C언어)  (0) 2016.05.07
OS - 5. CPU Scheduling (2)  (0) 2016.04.23
OS - 5. CPU Scheduling (1)  (0) 2016.04.23
OS - 4. Thread  (0) 2016.04.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함