728x90
✏️ 진도: Chapter 12 ~ 13 (프로세스 동기화 / 교착 상태 )
📖 기본 미션: p. 363의 확인 문제 1번 풀고 인증하기
❗️세마포에서는 대기 큐와 준비 큐를 이용해 프로세스를 대기 상태 / 준비 상태로 변경할 수 있다.
📚 선택 미션: Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기
✏️ 상호 배제: 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘. 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어한다.
✏️ 임계 구역: 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생(레이스 컨디션)하는 코드 영역
❗️ "총합++"과 "총합--"를 실행시킬 경우,
고급언어는 실행과정에서 저급언어로 변환되어 실행되기 때문에
각 코드는 다음과 같은 저급 언어로 변환되어 실행된다.
// 총합++
r1 = 총합;
r1 = r1 + 2;
총합 = r1
// 총합--
r2 = 총합;
r2 = r2 - 1;
총합 = r2
이 두 코드를 동시에 실행시킬 경우 문맥 교환(프로세스 간에 실행을 전환하는 것)이 일어날 수 있다.
프로세스 A | 프로세스 B | 총합 | r1 | r2 |
r1 = 총합 | 10 | 10 | ||
r1 = r1 + 1 | 10 | 11 | ||
(문맥 교환) | ||||
r2 = 총합 | 10 | 11 | 10 | |
r2 = r2 - 1 | 10 | 11 | 9 | |
(문맥 교환) | ||||
총합 = r1 | 11 | 11 | 9 | |
(문맥 교환) | ||||
총합 = r2 | 9 | 11 | 9 |
우리가 예상하기로는 10 + 1 - 1 = 10으로 최종값이 10이 될 것 같지만 문맥 교환이 일어나면서 최종값이 9가 되는 문제가 발생한다.
이를 방지하기 위해 상호 배제를 위한 동기화가 필요하다.
반응형
'컴퓨터 & 코딩 > CS' 카테고리의 다른 글
[혼공학습단 10기][혼공컴운] 6주차 미션 (0) | 2023.07.29 |
---|---|
[혼공학습단 10기][혼공컴운] 파일 시스템 (0) | 2023.07.25 |
[혼공학습단 10기][혼공컴운] 가상 메모리 - 페이지 교체와 프레임 할당 (0) | 2023.07.21 |
[혼공학습단 10기][혼공컴운] 가상 메모리 - 연속 메모리 할당 / 페이징을 통한 가상 메모리 관리 (0) | 2023.07.21 |
[혼공학습단 10기][혼공컴운] 교착 상태 (0) | 2023.07.18 |