728x90
👇 동기화 해결 방법으로 뮤텍스 락과 세마포에 대한 내용은 다음 링크에서 확인할 수 있다. 👇
기존 동기화 도구의 문제점
- 세마포를 누락한 경우
- wait과 signal 순서를 헷갈린 경우
- wait과 signal을 중복해서 사용한 경우
모니터
- 사용이 간편한 동기화 도구
- 공유 자원에 접근하기 위한 인터페이스
- 인터페이스를 통해서만 접근(상호 배제)
- 실행 순서 제어를 위한 동기화를 위해 조건 변수(condition variable) 사용
조건 변수
여기서 말하는 조건 변수는 현재 프로세스의 상태를 상황에 따라서 바꿀 수 있는 특별한 변수다.
대표적으로 wait(), signal() 연산이 가능한 특별한 변수
예를 들어 변수가 a라면 a.wait(), a.signal()처럼 사용 가능하다.
조건 변수를 활용한 실행 순서 제어
- 아직 실행될 조건이 되지 않았을 때에는 wait을 통해 실행 중단
- 실행될 조건이 충족되었을 때에는 signal을 통해 실행 재개
* 위 사진에서 상호배제를 위한 큐(빨간 박스)와 조건변수가 호출돼서 대기상태에 접어드는 큐(파란 박스)는 별개의 큐다.
모니터를 활용하는 대표적인 프로그래밍 언어: JAVA
synchronized 키워드가 대표적인 예이다.
public void addName(String name) {
synchronized (this) {
lastName = name;
nameCount++;
}
nameList.add(name);
}
'Upstage AI Lab 4기 > 컴퓨터 공학' 카테고리의 다른 글
[운영 체제] 교착 상태 (1) | 2024.07.25 |
---|---|
[운영 체제] 동기화 해결 방법 (1) - 뮤텍스 락과 세마포 (0) | 2024.07.25 |
[운영 체제] 운영 체제(커널 영역과 사용자 영역) (0) | 2024.07.25 |
[컴퓨터 구조] 논리 주소와 물리 주소 (0) | 2024.07.25 |
[컴퓨터 구조] CPU 성능 (1) | 2024.07.24 |