Cute Running Puppy

cs/[OS] 혼자 공부하는 컴퓨터 구조 + 운영체제

[혼공 학습단 11기] 5주차 미션

R.silver 2024. 2. 5. 14:20
반응형

기본 미션

 

p.363 확인 문제 1번 

 

1. 뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요.

 

① 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.

② 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다. 

③ 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다. 

④ 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다. 

 

정답

 

④ 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다. 

 

해설

 

① 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.

- 뮤텍스 락은 자물쇠를 이용하여 임계 구역에 진입하는 방식으로 상호 배제를 위한 동기화를 이룸

- 잠그고 -> 사용하고 -> 풀고 

 

② 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다. 

- 세마포: 공유 자원이 여러 개 있는 일반적인 상황에 활용 가능 

- 사용 가능한 공유 자원의 개수를 나타내는 전역 변수 s 사용 

 

③ 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다. 

- 사용 가능 자원 개수를 0으로 두고

- 먼저 실행 할 프로세스 뒤에 signal 함수, 다음에 실행될 프로세스 앞에 wait 함수 작성

- wait으로 대기를 걸기에 먼저 실행될 수 없다 

 

세마포를 이용하면 반드시 바쁜 대기를 해야 합니다. 

 

[세마포를 통한 빠른 대기 문제 해결 방법]

바쁜 대기 시 cpu 주기가 낭비된다 

-> wait() 함수에서 사용할 수 있는 자원이 없을 경우, 해당 프로세스 상태를 대기로 전환

-> 해당 프로세스의 PCB를 세마포어 대기 큐에 넣음 

-> 한 프로세스 작업이 끝나고 signal()이 호출되면 

-> 대기중인 프로세스를 대기 큐에서 제거하고 프로세스 상태를 준비 큐로 바꾼 뒤 준비큐로 옮김 

# 빠른 대기 문제 해결 

def wait():
	s -= 1 # 확인 전 감소 
    if (s < 0): # 사용할 수 있는 자원이 없음 
    	add this process to Queue # PCB를 대기 큐에 삽입 
        sleep(); # 대기 상태 
        
def signal():
	s += 1 
	if (s <= 0): # 먼저 감소시키고, 증가시켜서 0이 될 수 있음 (프로세스 3개, s: 2 생각해보기) 
    	remove a process p from Queue # 대기큐에서 프로세스 제거 
        wakeup(p) # 대기 -> 준비

선택 미션

 

Ch12(12-1) 임계 구역, 상호 배제 개념을 정리하기 

 

공유 자원과 임계 구역

 

공유 자원: 전역 변수, 파일. io 장치, 보조기억장치 등 공유되는 자원 

임계 구역: 동시에 실행하면 문제가 발생하는 코드에 접근하는 코드 영역

레이스 컨디션: 임계구역 코드를 동시 다발적으로 실행하여 문제가 발생하는 경우 (데이터 일관성 문제 발생)

 

두 개 이상의 프로세스가 임계 구역에 진입하려면 대기가 필요 

 

임계 구역 문제 해결 원칙 

1. 상호 배제: 한 프로세스가 임계 구역에 들어갔다면 다른 프로세스는 임계구역에 들어갈 수 없다 

2. 진행: 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입할 수 있다 

3. 유한 대기: 임계 구역에 진입하고 싶다면 언젠가는 임계 구역에 들어갈 수 있다 (무한정 대기 X)

 

임계 구역 문제 해결 방법 

1. 뮤텍스 락 

- 락을 걸고, 임계 구역에 진입하고, 락을 해제 

2. 세마포어

- 임계 구역이 여러 개 일 때 사용 가능 

- 대기/진입 확인 후, 임계 구역에 진입하고, 사용 후 신호 보내기 

3. 모니터

- 조건 변수를 활용하여 동기화 

- 공유 자원과 접근 인터페이스를 묶어 관리 

반응형