일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #파밍
- #크랙미2번
- java
- #abex
- Easy
- #크랙미
- #리버싱
- #크랙미3번
- #보안뉴스
- #크랙미 10번
- #보안이슈
- java8
- #크랙미 5번
- #심플즈
- 리버싱
- Spring
- #abex크랙미4번
- #abex크랙미
- springframework
- #고클린
- #심플즈 크랙미
- #크랙미4번
- leetcode
- #크랙미 9번
- GraphQL
- Today
- Total
Halo World
프로세스 간 동기화 (공유 자원에 대한 접근 문제) 본문
공유 자료를 병행 접근하면 자료의 불일치를 초래하기 때문에, 자료의 일관성을 유지하려면 협력적인 프로세스들의 바른순서로 수행을 보장하는 매커니즘이 필요하다.
이 때문에 임계 구역을 이용한다.
| 임계영역(Critical Section)
- 하나의 프로세스가 수정 가능한 공유 자원을 액세스하고 있을 때, 그 프로세스에 의해 참조되는 영역
- 하나의 프로세스가 공유 데이터게 접근하면, 다른 프로세스는 그 공유 데이터에 접근할 수 없도록 보장
| 상호 배제(Mutual Exclusion)
- 한 프로세스가 공유 기억장치 혹은 공유 파일을 사용하고 있을 때, 다른 프로세스들이 사용하지 못하도록 배제시키는 제어 기법
| 경쟁 조건(race condition)
- 2개 혹은 그 이상의 프로세스들이 공유메모리에 읽기/쓰기를 하고 그 결과가 어떤 프로세스를 언제 실행하느냐에 따라 결과가 달라질 수 있는 상황
| 임계 구역 상호 배제 기법
1) 뮤텍스(Mutex)
- 일종의 Locking 매커니즘으로 lock을 가지고 있을 때만 공유 데이터에 접근 가능
- 화장실 갈 때 키를 가진 사람만이 갈 수 있고, 일을 다 본 후에 키를 반납하고 그 다음 사람이 이용 가능한 매커니즘
- lock에 대한 소유권이 있다. 즉, 키를 가진 사람만이 반납 가능하다.
2) 세마포어(Semaphore)
- 동시에 리소스에 접근할 수 있는 허용가능한 counter의 개수를 의미한다.
- 어느 병실에 최대 5명까지 수용가능하다면 5명까지 counting을 하고, 그 이후는 밖에서 기다렸다가 한 사람이 나오면 다음 사람이 들어갈 수 있게 되는 매커니즘
- count 수에 따라 1개면 binary semaphore, 여러개이면 counting semaphore라고 하고, binary semaphore는 뮤텍스와 개념적으로 같다.
* 뮤텍스 vs 세마포어
: 뮤텍스는 공유자원에 대한 접근권한 즉, Lock이라는 키를 한 개만 가질 수 있고, 세마포어는 여러 개를 가질 수 있다.
3) 모니터 (Monitor)
- 뮤텍스와 Condition Valuable(Queue라고도 함)를 갖고 있는 매커니즘
- 순차적으로만 사용할 수 있는 공유자원 또는 공유자원 그룹을 할당하는 데 사용되며, 데이터, 프로시저를 포함하는 병행성 고급 구조체
- 모니터 내부 변수는 모니터 내부에서만 접근할 수 있고, 이는 정보의 은폐 기법이라고 한다.
- 모든 자바 객체는 Monitor를 갖고 있다.
[참고]
정보보안기사&산업기사 / 탑스팟 / 조상진
http://slenderankle.tistory.com/197
'개발 지식 > OS' 카테고리의 다른 글
디스크 스케줄링 (0) | 2017.07.26 |
---|---|
교착상태(Deadlock) (0) | 2017.07.12 |
CPU 스케줄링 (0) | 2017.07.10 |
프로세스의 개념과 PCB (0) | 2017.07.09 |
[OS 문제] 2일차 (0) | 2017.07.06 |