minyule.log
로그인
minyule.log
로그인
혼공컴운 챕터 12. 프로세스 동기화
김민영
·
2023년 2월 11일
팔로우
0
운영체제
0
혼공학습단
목록 보기
10/22
12-1 동기화란
동기화의 의미
여러 프로세스들은 동시에 실행되고 있다.
프로세스 동기화 : 프로세스 간 수행 시기를 맞추는 것. (스레드도 동기화 대상)
실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
상호 배제 : 동시에 접근해서 안 되는 자원에 하나의 프로세스만 접근토록 하기
생산자와 소비자 문제
생산자 : 물건을 계속 생산함
소비자 : 물건을 계속 소비함
동기화를 하지 않으면, 생산자의 작업이 끝나기 전, 소비자가 작업하거나, 반대의 상황이 발생 -> 생산과 소비의 수가 같아도 결과가 0이 아니게 됨.
공유 자원과 임계 구역
공유 자원 : 여러 프로세스가 같이 사용해야하는
자원
전역 변수, 파일, 입출력장치, 보조기억장치 ...
임계 구역 : 동시에 실행하면 문제 생기는 자원에 접근하려는
코드 영역
레이스 컨디션 : 잘못된 실행으로 인해 여러 프로세스가 임계 구역에 접근해서 문제가 발생
데이터의 일관성이 깨짐 ex. 생산 10, 소비 10 -> 결과가 0이 아님
고급 언어로는 1줄 이어도, 저급 언어로 여러 줄임. 저급 언어 여러 줄이 실행되는 중 다른 프로세스로 문맥 교환이 발생할 때 문제.
상호 배제를 위한 동기화
상호 배제 : 한 프로세스가 임계 구역 접근 중, 다른 프로세스는 접근 불가
진행 : 임계 구역에 접근 중인 프로세스가 없으면, 진입하고자하는 프로세스는 진입 가능
유한 대기 : 임계 구역에 접근하려는 프로세스는 언젠가 꼭 접근해야 함. (무한정 대기는 안됨)
12-2 동기화 기법
뮤텍스 락
임계 구역에 접근하고 있는 프로세스가 있으면, 뮤텍스 락으로 임계구역에 자물쇠를 걸어둠
구현
자물쇠 : 프로세스들이 공유하는 전역 변수 lock
임계구역 잠금 : acquire 함수
임계구역 잠금 해제 : release 함수
acquire 함수
프로세스가 임계구역 진입 전에 호출
임계구역이 잠겨있으면, 열릴 때까지 확인
임계구역이 열려있으면, 잠금
release 함수
프로세스가 임계구역에서 작업 끝나고 호출
acquire 함수가 계속 lock 여부를 확인함 :
바쁜 대기
C/C++, Python : 뮤텍스 락을 지원
세마포어 (카운팅 세마포어)
이진 세마포어 : 뮤텍스 락과 비슷
카운팅 세마포어 : 임계구역에 접근하는 프로세스의 개수를 통해 관리
구현
임계구역에 진입 가능한 프로세스 개수 ( 사용가능한 공유자원 개수 ) 전역 변수 S
임계구역 접근 가능 여부. 임계구역 진입 전 : wait 함수
S가 0 이하면, 가능해질 때까지 확인
S가 1 이상이면, S-- & 임계구역 진입
기다리는 프로세스에게 접근 가능하다고 알림. 임계구역 진출 : signal 함수
임계구역 작업 후, S++
바쁜 대기는 CPU 주기를 낭비하므로 좋지 않음
대기 큐
사용
wait 함수에서 S--, 사용할 수 있는 자원이 없으면, 대기 큐에 넣고, 해당 프로세스를 대기 상태로 만듦.
signal 함수에서 S++, 대기 큐에서 프로세스를 빼고, 그 프로세스를 대기 상태에서 준비 상태로 만듦.
모니터
공유자원과 공유자원에 접근하기위한 인터페이스(통로)를 무껑서 관리.
프로세스는 인터페이스를 통해서만 공유자원에 접근 가능
모니터는 인터페이스에 접근하기 위한 큐를 만듦.
모니터에 하나의 프로세스만 접근하도록 하여 상호 배제를 위한 동기화
조건 변수
를 사용해서 프로세스 실행, 중단 제어. 실행 순서 제어를 위한 동기화
큐는 두 종류 존재
모니터에 진입하기 위해 삽입되는 큐 (상호 배제를 위한 큐)
wait가 호출되어 실행이 중단된 프로세스들이 삽입되는 큐 (조건 변수에 대한 큐)
구현
wait 함수 : 실행 중지
signal 함수 : 실행 재개
p.367 1번
김민영
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=
팔로우
이전 포스트
혼공컴운 챕터 11. CPU 스케줄링
다음 포스트
혼공컴운 챕터 13. 교착 상태
0개의 댓글
댓글 작성