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주차만 남았으니까 힘내자
'CS > 혼공컴구운체' 카테고리의 다른 글
[혼공컴운] 혼공단 6주차: 14~15 (1) | 2024.02.17 |
---|---|
[혼공컴운] 혼공단 4주차: 09~11 (1) | 2024.01.28 |
[혼공컴운] 혼공단 3주차: 06~08 (2) | 2024.01.21 |
[혼공컴운] 혼공단 2주차: 04~05 (0) | 2024.01.14 |
[혼공컴운] 혼공단 1주차: 01 ~ 03 (0) | 2024.01.07 |
댓글