동기화란?
실행 순서 제어 ; 프로세스를 올바른 순서대로 실행하기
상호 배제 ; 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
동시에 접근해서는 안되는 자원?
공유 자원 ; 전역변수가 될 수도, 파일, 입출력장치, 보조기억장치가 될 수도
예시) 잔액 / 총합 등 특정 프로세스가 완료되지 않았는데
다른 프로세스가 접근하면 값이 어긋난다
임계 구역 ; 동시에 실행하면, 문제가 발생하는 자원에 접근하는 코드 영역
레이스컨디션 ; 동시 다발적으로 임계구역의 코드를 실행하여 문제가 발생하는 경우
-> 저급언어를 실행하는 과정에서 문맥교환이 일어나는 경우 깨질 수 있다
상호배제 동기화 3원칙
- 상호배제 ; 임계구역에 진입했을 때 다른 프로세스가 들어올 수 없다
- 진행 ; 임계구역에 진입한 프로세스가 없을 경우, 임계구역에 진입하고자하는 프로
- 유한대기 ; 임계구역에 진입하고자하는 프로세스는 언젠가 진입해야 한다
동기화 기법
- 뮤텐스 락 ; Mutual Exclusion Lock
- 세마포
- 모니터
뮤텐스 락
- 자물쇠 역할의 프로세스가 공유하는 전역변수 lock
- 임계구역을 잠그는 역할 acquire 함수
- 임계구역을 해제하는 역할 release 함수
- 바쁜 대기 ; 대기중인 프로세스가 acquire 함수를 계속 호출해서 Lock 상태를 확인해야 한다
세마포 ; 여러 자원을 공유하는 형태
- 임계구역 진입할 수 있는 프로세스 갯수 변수 S
- 임계구역에 들어가도 좋은지 기다려야하는지 알려주는 wait 함수
- 임계구역 앞에서 기다리는 프로세스에게 가도 좋다고 신호를 주는 signal 함수
- 대기 중인 프로세스는 그럼 wait함수를 계속 호출하며 바쁜 대기 상태?
- S<0일때, wait함수는 PCB 대기큐에 해당 프로세스를 sleep하여 적재
- S++ 됬을 때, signal 함수가 wake하여 실행
모니터 ;
접근하고자 하는 프로세스를 공유자원 큐에 삽입
삽입된 순서대로 공유 자원을 이용하도록 함 -> 따라서, 공유자원 사용의 상호배제를 구현가능
- 조건 변수 ; 프로세스나 스레드의 실행 순서를 제어
-> wait 연산을 수행하면, wait이 호출한 프로세스가 조건변수에 대한 대기 큐로 삽입
-> 나중에 signal 연산 수행시, 조건변수 대기 큐 프로세스가 실행
'IT 공부 > 운영체제(완)' 카테고리의 다른 글
운영체제 6 가상 메모리 (0) | 2025.03.06 |
---|---|
운영체제 5 교착 상태 (0) | 2025.03.04 |
운영체제 3 CPU 스케줄링 (0) | 2025.02.26 |
운영체제 2 프로세스 (0) | 2025.02.25 |
운영체제 1 (0) | 2025.02.21 |