일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자바 #java
- 프로그래머스
- 코딩테스트
- java #자바 #동빈나
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 백준 #알고리즘 #파이썬 #코딩테스트
- 재귀
- DFS
- css #웹 #생활코딩
- 다익스트라
- 파이썬 #백준 #알고리즘 #코딩테스트
- BFS
- java #자바 #나동빈
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- react #리액트 #동빈나
- java #자바 #생활코딩
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 백트랙킹
- 다이나믹프로그래밍
- dp
- 알고리즘
- Dijkstra
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 백준
- 백준 #파이썬 #알고리즘 #코딩테스트
- PYTHON
- css #생활코딩 #웹
- java #자바
- 파이썬
- 투포인터
Archives
- Today
- Total
커리까지
[운영체제] 12. Process Synchronization 1 본문
728x90
SMALL
Initial Attemptes to Solve Problem
두 개의 프로세스가 있다고 가정 P0, P1
프로세스들의 일반적인 구조
do{
entry section
critical section
exit section
remainder section
}while(1);
프로세스들은 수행의 동기화(synchronize)를 위해 몇몇 변수들 공유할 수 있다. -> synchronization variable
어떤 데이터 간에 접근
공유 데이터 접근 코드 이전에 entry를 넣어서 lock를 건다.
프로그램적 해결법의 충족 조건
Mutual Exclusion(상호 배제)
- 프로세스 pi가 critical section 부분을 수행중이면 다른 모든 프로세스들은 그들의 critical section에 들어가면 안된다.
Progrewss
- 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해주어야 한다.
Bounded Waiting(유한 대기)
- 프로세스가 critical section에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 critical section에 들어가는 횟수에 한계가 있어야 한다.
가정
- 모든 프로세스의 수행 속도는 0보다 크다.
- 프로세스들 간의 상대적인 수행 속도는 가정하지 않는다.
Algorithm 1
- Synchronization variable
- int turn
- initially turn = 0; => Pi can enter its critical section if (turn == i)
- 0이면 0번째 차례, 1이면 1번째 차례
- Process P0
do{
while(turn != 0); /* My turn? */
critical section
turn = 1; /* Now it's your turn */
remainder section
} while(1);
- 단일이 아니라서 cpu를 뺐는과정중에 문제가 발생할 수 있음
- Satisfies mutual exclusion, but not progress
- 과잉 양보 : 반드시 한번씩 교대로 들어가야만 함(swap-turn)
- 그가 turn을 내값으로 바꿔줘야만 내가 들어갈 수 있음
- 특정 프로세스가 더 빈번히 critical section을 들어가야 한다면?
728x90
LIST
'KOCW' 카테고리의 다른 글
[kocw] 01. 자료구조소개1 (0) | 2021.09.23 |
---|---|
[운영체제] 11. CPU Scheduling 2 / Process Synchronization 1 (0) | 2021.07.09 |
[운영체제] 10. CPU Scheduling 1 (0) | 2021.06.23 |
[운영체제] 9. Process Management 2 (0) | 2021.06.18 |
[운영체제] 8. Process Management 1 (0) | 2021.06.16 |
Comments