본문 바로가기
CS/혼공컴구운체

[혼공컴운] 혼공단 5주차: 12~13

by 동백05 2024. 2. 4.

12 프로세스 동기화

12-1 동기화란

동기화

- 정보,통신 분야에서의 동기화란 작업들사이의 수행 시기를 맞추는 것

프로세스 동기화

- 프로세스 사이의 수행 시기를 맞추는 것

1) 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기

2) 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기

 

공유 자원

- 공동의 자원

- 전역변수, 파일, 입출력장치, 보조기억장치 등

임계 구역

- 두 개 이상의 프로세스를 동시에 실행하면 문제가 발생하는 자원

레이스 컨디션

- 잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생한 경우

 

임계 구역 문제 해결 원칙

1) 상호 배제: 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없다

2) 진행: 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다

3) 유한 대기: 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 한다(임계 구역에서 무한정 대기해서는 안 된다)

12-2 동기화 기법

뮤텍스 락

- 동시에 접근해서는 안 되는 자원에 동시에 접근하지 않도록 만드는 도구

- 상호 배제를 위한 동기화 도구

- lock, acquire(), release()

 

세마포

- 공유 자원이 여러 개 있는 상황에서도 적용이 가능한 동기화 도구

- S, wait(), signal()

 

모니터

- 공유 자원을 다루는 인터페이스에 접근하기 위한 큐를 만들고, 모니터 안에 항상 하나의 프로세스만 들어오도록하여 상호 배제를 위한 동기화 제공

- 조건변수: 프로세스나 스레드의 실행 순서를 제어하기 위해 시용하는 특별한 변수

 

[ 기본 미션 ]
1. 뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요.
(1) 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다.
(2) 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다.
(3) 세마포를 이용해 프로세스 실행 순서 제어를위한 동기화도 이룰 수 있습니다.
(4) 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다.

정답) (4)
반드시 바쁜 대기를 할 필요는 없고, 프로세스를 대기 상태로 만든다

13 교착 상태

13-1 교착 상태란

식사하는 철학자 문제

 

교착상태

- 일어나지 않을 사건을 기다리며 진행을 멈춰 버리는 현상

 

자원 할당 그래프

- 어떤 프로세스가 어떤 자원을 사용하고 있고, 또 어떤 프로세스가 어떤 자원ㅇ르 기다리고 있는지를 표현하는 간단한 그래프

- 프로세스는 원으로, 자원의 종류는 사각형으로 표현

- 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현

- 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표로 표시

- 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표 표시

 

교착 상태 발생 조건

1) 상호 배제

- 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때

2) 점유와 대기

- 자원을 할당 받은 상태에서 다른 자원을 할당받기를 기다리는 상태

3) 비선점

- 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있음

- 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했음

4) 원형 대기

- 프로세스들이 원의 형태로 자원을 대기하는 것

13-2 교착 상태 해결 방법

예방

- 교착 상태 발생 필요 조건 네 가지 중 하나를 충족하지 못하게 하는 방법

1) 상호 배제

- 현실에서 사용하기 다소 무리

2) 점유와 대기

- 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분

- 단점: 자원의 활용률 낮아짐, 많은 자원을사용하는 프로세스가 불리

3) 비선점

- 자원을 이용 중인 프로세스로부터 해당 자원을 빼앗을 수 있음

- 선점하여 사용할 수 있는 일부 자원에 대해서는 효과적

- 다소 범용성이 떨어짐

4) 원형 대기

- 모든 자원에 번호를 붙이고, 오름차순으로 자원 할당

- 단점: 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 일은 그리 간단한 작업이 아니거니와 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있음

 

회피

- 교착 상태가 발생하지 않을 정도로만 조심조심 자원을 할당하는 방식

- 안전 상태: 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태

- 불안정 상태: 교착 상태가 발생할 수도 있는 상황

- 안전 순서열: 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서

 

검출 후 회복

- 교착 상태 발생을 인정하고 사후에 조치하는 방식

- 프로세스들이 자원을 요구할 때마다 그때그때 모두 할당하며, 교착 상태 발생 여부를 주기적으로 검사

1) 선점을 통한 회복

- 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식

2) 프로세스 강제 종료를 통한 회복

- 가장 단순하면서 확실한 방식

- 교착 상태에 놓은 프로세스를 모두 종료할 수도 있고, 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료할 수 있음

 

타조 알고리즘

- 교착 상태를 아예 무시

 


이번주부터 토익 학원에 다니기 시작했다. 무슨 숙제가 매일 2-3시간씩 필요하다. 그래서.. 책 읽을 시간이 없어지고 있다. 앞으로 6주차만 남았으니까 힘내자

댓글