Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- SQL Injection
- CODEGATE
- 해킹
- web
- webhacking.kr
- webhackingkr
- 알고리즘
- 상호배제
- sqli
- Writeup
- SQLInjection
- XSS
- WebHacking
- 시스템
- CCE
- 웹해킹
- Python
- Linux
- crosssitescripting
- SQL
- 화이트햇콘테스트
- 시스템프로그래밍
- lordofsqlinjection
- ctf
- 프로세스
- Los
- ubuntu
- rubiya
- 운영체제
- hacking
Archives
- Today
- Total
One_Blog
상호배제 방법 [운영체제 수업] 본문
728x90
날짜 : 2023년 3월 11일
오늘 수업 주제
: 상호배제 방법
오늘 배운 내용 요약
:
Monitor로 해결하는 생산 - 소비의 문제
Produced {
while(1) {
acquire();
while(BUFFER_IS_FULL) {
wait(lock,fullB); // 못들어가면 Entry Queue에 삽입
}
signal(emptyB);
or broadcast(emptyB);
release();
}
}
Consumed {
while(1) {
acquire();
while(BUFFER_IS_FULL) {
wait(lock,emptyB);
}
signal(fullB);
or broadcast(fullB);
release();
}
}
Dekker’s 알고리즘
- 병행 프로그래밍 상호 배제 문제에 대한 최초 해결책
- 2개의 프로세스의 임계 영역 문제를 소프트웨어적으로 해결한 알고리즘
- P0, p1일때, flag[0], flag[1]이라는 bool형 공유 변수를 사용
- flag : 임계 구역에 들어가길 원하는지 나타내는 변수
- turn : 누가 임계 영역에 들어갈 차례인지 나타내는 변수
상호배제
- 동시에 들어가고자 할 때 turn 변수로 하나만 들어가도록 함
진행
- turn이 0이더라도 flag[0]이 false라면 while문에서 임계영역 진입 가능
한정 대기
- 다른 프로세스가 실행되고 있다면, while(turn ==1)에서 기다리고,
- 임계 영역에서 나오면서 flag의 turn을 바꾸고 나오기 때문에
- 한 프로세스가 임계 영역을 계속 가지고 있지 않음
수업 중 질문
<<Turn == 0일때>>
- P1이 임계 영역에 진입 가능한가?
- 다른 프로세스가 있으면 임계영역에 있으면 어떻게 될까?
- P1이 들어가려 할 때, turn == 0이면, P0이 진입하려 할 때 어디서 대기?
'운영체제' 카테고리의 다른 글
교착 상태 (Deadlock) [운영체제 수업] (0) | 2023.05.02 |
---|---|
운영체제 - 시험 대비 정리 (2) | 2023.04.26 |
공유 자원 사용 시 일어나는 일 [운영체제 수업] (0) | 2023.03.28 |
병렬 프로세스 [운영체제 수업] (0) | 2023.03.21 |
스레드 [운영체제 수업] (0) | 2023.03.20 |