컴퓨터 & 코딩/CS

[혼공학습단 10기][혼공컴운] 5주차 미션

구로그 2023. 7. 23. 17:05
728x90

 


✏️ 진도: Chapter 12 ~ 13 (프로세스 동기화 / 교착 상태 )

1. 프로세스 동기화

2. 교착 상태 


 

 

 

📖 기본 미션: 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가 되는 문제가 발생한다.  

 

이를 방지하기 위해 상호 배제를 위한 동기화가 필요하다. 

 

 

 

[혼공학습단 10기][혼공컴운] 프로세스 동기화

✓ 동기화란 ✏️ 프로세스 동기화: 프로세스들 사이의 수행 시기를 맞추는 것 - 실행 순서 제어를 위한 동기화: 프로세스를 올바른 순서대로 실행하기 위한 동기화 - 상호 배제를 위한 동기화:

hianzhi.tistory.com

 

반응형