728x90
4.1 병행 프로세스의 개요
4.1.1 병행성과 병행 프로세스
동시수행
- 한 프로세스나 쓰레드가 실행을 시작한 후 종료상태가 되지 않은 상황에서 다른 프로세스나 쓰레드가 실행되는 상황
병행성(concurrency) - 여러 개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성
병행 프로세스 - 동시 수행되는 여러 개의 프로세스 또는 쓰레드
CPU 개수에 따른 병행 프로세스의 실행 형태 - 하나의 CPU : 인터리빙 형식
- 여러 개의 CPU(멀티프로세서 시스템) : 메모리 구조에 따른 실행 형태
- 강결합 시스템 : 하나의 기억장치를 공유하는 여러 CPU를 하나의 운영체제가 제어함
- 약결합 시스템 : 각 시스템이 개별 운영체제로 독립적으로 운영되고 필요시 네트워크로 통신함
4.1.2 프로세스 간의 관계
독립 프로세스
- 수행 중인 다른 프로세스의 영향을 주지도 않고 받지도 않는 프로세스
- 프로세스의 데이터와 상태를 다른 프로세스와 공유하지 않음
- 프로세스의 실행
- 결정적 : 실행결과는 입력에 의해서만 결정됨
- 재생 가능 : 실행결과는 같은 입력에 대해 항상 동일함
- 타 프로세스와 무관하게 중단되거나 재시작될 수 있음
협력 프로세스 - 수행 중인 다른 프로세스와 영향을 주고받으며 동작하는 프로세스
- 프로세스의 데이터와 상태를 다른 프로세스와 공유함
- 프로세스의 실행
- 비결정적 : 실행결과는 실행순서에 좌우됨
- 재생 불가능 : 실행결과는 같은 입력에 대해 항상 동일함을 보장하지 못함
4.2 병행성 문제
4.2.1 상호배제
상호배제(mutual exclusion)
- 2개 이상의 프로세스가 동시에 임계영역을 수행하지 못하도록 하는 것
- 임계영역(critical section) : 2개 이상의 프로세스가 동시에 사용하면 안되는 공유자원을 액세스하는 프로그램 코드 영역
4.2.2 동기화
프로세스 동기화(synchronization)
- 2개 이상의 프로세스에 대한 처리순서를 결정하는 것
상호배제 또한 임계영역에 대한 동기화 문제
4.2.3 통신
프로세스 간 통신(InterProcess Communication : IPC)
- 프로세스들이 데이터를 공유하기 위해 반드시 필요한 것
프로세스 사이의 통신 방법 - 하나의 변수를 사용하는 방법
- 메시지를 서로 주고받는 방법
4.3 세마포어
- 상호배제와 동기화 문제를 해결하기 위한 도구
- 데이크스트라(Dijkstra, 다익스트라)가 제안함
4.3.1 세마포어의 정의
세마포어(semaphore)
- 정수형 공용변수
- 저장값 : 사용 가능한 자원의 수 또는 잠김이나 풀림의 상태
- 초기화 : 0 이상인 정수로 상황에 맞게 초기화함
- 두 기본연산 P와 V에 의해서만 사용됨
- 기본연산 : 인터럽트되지 않고 하나의 단위로 처리됨
- 연산 P : 검사 또는 감소시키려는 시도
- 연산 V : 증가
세마포어 s에 대한 연산 P(s)의 동작
- 세마포어 s가 0보다 크면, 세마포어 s를 1만큼 감소시킴
- 세마포어 s가 0보다 크지 않다면, 현재 프로세스는 연산 P를 완료하지 못한 채 대기상태로 전이
- 이때 세마포어 s의 대기 큐에 현재 프로세스 추가
세마포어 s에 대한 연산 V(s)의 동작
- 이때 세마포어 s의 대기 큐에 현재 프로세스 추가
- 세마포어 s의 대기 큐가 비어 있다면, 세마포어 s를 1만큼 증가시킴
- 세마포어 s의 대기 큐가 비어 있지 않다면, 큐에서 한 프로세스를 빼서 준비상태로 전이
- 이때 큐는 FIFO(First In First Out)로 동작하는 것으로 가정함
4.3.2 상호배제 해결
세마포어 mutex
- 초깃값 : 1
진입영역 - 임계영역에 대한 수행을 해도 되는지 체크하는 코드를 임계영역의 시작부분에 둠
- 연산 P(mutex)
해제영역
- 다른 프로세스가 임계영역 수행을 시작할 수 있도록 하는 코드를 임계영역의 끝 부분에 둠
- 연산 V(mutex)
4.3.3 동기화 해결
- 프로세스 A가 특정 코드 S_1을 수행한 후에 프로세스 B가 코드 S_2를 수행 하도록 동기화를 하는 경우
- 세미포어 sync
- 초깃값 : 0
- 코드 S_2 앞에 연산 P(sync)
- 코드 S_1 뒤에 연산 V(sync)
참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.
728x90
'전산 > 운영체제' 카테고리의 다른 글
운영체제 - 제 6장 교착상태 1 (0) | 2024.05.21 |
---|---|
운영체제 - 제 5장 병행 프로세스2 (0) | 2024.05.20 |
운영체제 - 제 3장 프로세스 스케줄링 (0) | 2024.05.18 |
운영체제 - 제 2장 프로세스와 쓰레드 (1) | 2024.05.17 |
운영체제 - 제 1장 운영체제 소개 (0) | 2024.05.15 |