티스토리 뷰
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
- java 파일 입출력
- android
- 유전 알고리즘
- 파일입출력
- 자바 입출력
- 안드로이드
- Java Decompiler
- 서버
- LISTVIEW
- Notification
- 5582
- 카운터
- 알고리즘
- jad
- 포켓몬 Go
- c언어
- vim
- 유전
- 포켓몬 고
- counter
- 아두이노
- Res
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- 인텐트
- java
- php
- Service
- vim 설치
- java url
- 파일 입출력
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |