동기화(Synchronization)가 필요한 이유
동시다발적으로 실행되는 프로세스들의 공동의 목적을 올바르게 수행하기 위해
실행 순서와 자원의 일관성을 보장해야 하기 위해 필요함.
프로세스 동기화란?
프로세스 사이의 수행 시기를 맞추는 것을 의미함
- 실행 순서 제어
: 프로세스를 올바른 순서대로 실행하기 - 상호 배제
: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
공유 자원과 임계 구역
공유 자원
전역 변수, 파일, 입출력장치, 보조기억장치 등의 공동의 자원을 말함
임계 구역
동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
동기화 기법
1. 뮤텍스락
상호 배제를 위한 동기화 도구
하나의 전역 변수(lock) 두 개의 함수(acquire, release)로 구현할 수 있음
1.1 acquire 함수
임계 구역에 진입하기 전에 호출하는 함수
잠겨있다면 임계 구역이 열릴 때까지 반복적으로 확인하고 열려있다면 잠그는 함수
1.2 release 함수
임계 구역에서의 작업이 끝나고 호출하는 함수
현재 잠김 임계 구역을 열어주는 함수
좀 변태 같은 함수임...
내가 화장실에 똥누러 갔는데 누가 밖에서 일정 간격으로 나올 때까지
노크한다고 생각해보삼...
똑똑..똑똑..똑똑..똑똑..똑똑......
도시괴담이 따로 없음..
2. 세마포(semaphore)
조금 더 일반화된 방식의 동기화 도구
뮤텍스락은 하나의 공유 자원에 접근하는 프로세스를 상정한 방식인 반면
세마포는 여러 개의 공유 자원에 접근하느 프로세스를 상정한 방식
하나의 전역 변수 S와 두 개의 함수(wait, signal)로 구현할 수 있음
2.1 전역 변수 S
임계 구역에 진입할 수 있는 프로세스의 개수
즉, 사용 가능한 공유 자원의 개수.
2.2 wait 함수
임계 구역에 들어가도 좋은지, 기다려야 할지를 알려주는 함수
2.1 signal 함수
임계 구역 앞에서 기다리는 프로세스에 '이제 가도 좋다'고 신호를 주는 함수
3. 모니터
세마포에 비해 사용자가 사용하기 편리한 동기화 도구로 조건 변수를 사용
'혼공 스터디 > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[ 혼공컴운 ] 6주차 공부 (0) | 2023.08.20 |
---|---|
[ 혼공컴운 ] 4주차 공부 인증 (0) | 2023.07.30 |
[ 혼공컴운 ] 4주차 공부 1: 운영체제 (0) | 2023.07.30 |
[ 혼공컴운 ] 3주차 공부 4: Nested RAID 종류 (0) | 2023.07.28 |
[ 혼공컴운 ] 3주차 공부 3: RAID의 정의와 종류 (0) | 2023.07.23 |