-
운영체제 4강. 병행 프로세스 1방송통신대학교 - 컴퓨터과학과/운영체제 2022. 4. 21. 15:08
병행 프로세스의 개념
병행성
여러 개의 프로세스 또는 쓰레드가 동시에 실행되는 시스템의 특성
병행 프로세스
동시에 실행되는 여러 개의 프로세스 또는 쓰레드
병행 프로세스의 실행 형태
CPU의 개수에 따른 병행 프로세스의 실행 형태
- 하나의 CPU에서 인터리빙 형식으로 실행
- 여러 개의 CPU에서 병렬 처리 형식으로 실행
여러 개의 CPU가 있을 경우
- 메모리 구조에 따른 병행 프로세스의 실행 형태
- 강결합 멀티프로세서 시스템: 공유 메모리 구조
- 약결합 멀티프로세서 시스템: 분산 메모리 구조
병행성 문제
- 병행 프로세스들이 상호작용 하는 경우 발생
- 공유자원 점유 문제
- 동기화 문제
- 통신 문제
- 상황에 따른 구분
- 단일 프로세스 내의 병행성
- 우선순위 그래프 (DAG)
- Fork / Join 구조
- 병행문
- 단일 프로세스 내의 병행성
프로세스 간의 병행성
- 독립적 프로세스
- 비동기 병행 프로세스
동기화와 임계영역
프로세스 동기화
- 2개 이상의 프로세스에 대한 처리순서를 결정하는 것
- 예: 동시에 사용할 수 없는 공유자원, 한 프로세스의 처리 결과에 따라 다른 프로세스의 처리가 영향을 받는 경우
임계영역
- 2개 이상의 프로세스가 동시에 액세스하면 안되는 공유자원을 액세스하는 코드 영역
상호배제
- 2개 이상의 프로세스가 동시에 임계영역에 진입하지 못하도록 하는 것
임계 영역 문제 해결을 위한 요구조건
- 상호배제
- 한 프로세스가 임계영역에서 실행 중일 때 다른 어떤 프로세스도 임계영역에서 실행될 수 없음
- 진행
- 임계영역에서 실행 중인 프로세스가 없고 여러 프로세스가 임계영역에 진입하고자 할 때 그 중에서 적절히 한 프로세스를 결정해야 하며 이 결정을 무한정 미룰 수 없음
- 제한된 대기
- 한 프로세스가 임계영역 진입 요청을 한 후 수락될 때까지 다른 프로세스가 임계영역 진입을 허가 받는 횟수는 제한이 있어야 함
임계 영역 문제 해결을 위한 도구
- Test-and-Set 명령어 (TS 명령어)
- 상호배제의 하드웨어적 해결 방법
- 분리가 불가능한 단일 기계 명령어 (원자적으로 수행)
- 문제점
- 많은 프로세스가 임계영역에 들어가기를 원할 때 기아(프로세스가 필요한 자원할당을 받지 못하고 계속 대기하게 되는 상황)가 발생할 수 있음
- Busy waiting을 함으로써 다른 작업이 사용할 수 있는 CPU 사이클을 낭비
- 세마포어(semaphore) - 더 나은 방법
- Dijkstra 가 제안한 동기화 도구
- 세마포어 s: 사용 가능한 자원의 수 또는 잠김/열림 등의 상태를 나타내는 값을 저장하는 정수형 공용변수
- 세마포어 s는 두 표준단위 연산 P와 V에 의해서만 접근됨
- 동기화 문제 해결
- 프로세스 1이 문장 S1을 실행한 후
- 프로세스 2가 문장 S2를 실행하도록 동기화(block/wakeup 프로토콜)
4강 정리
- 병행 시스템은 여러 개의 프로세스가 동시에 실행되며, 이들이 상호작용함에 따라 공유자원 점유, 동기화, 통신 등의 문제가 발생한다.
- 동기화는 2개 이상의 프로세스에 대한 처리 순서를 결정하는 것을 의미한다.
- 2개 이상의 프로세스가 동시에 액세스하면 안 되는 공유 자원을 액세스하는 코드 영역을 임계영역이라고 한다.
- 2개 이상의 프로세스가 동시에 임계영역에 진입하지 못하도록 하는 것을 상호배제라고 한다.
- P와 V라는 원자연산에 의해서만 접근되는 정수형 공용변수인 세마포어를 이용하여 상호배제 및 동기화를 구현할 수 있다.'방송통신대학교 - 컴퓨터과학과 > 운영체제' 카테고리의 다른 글
운영체제 6강. 교착상태 1 (0) 2022.04.26 운영체제 5강. 병행 프로세스 2 (0) 2022.04.24 운영체제 3강. 스케줄링 알고리즘 (0) 2022.04.20 운영체제 2강. 프로세스 개요 (0) 2022.04.18 운영체제 1강 - 역할, 구성, 유형 (0) 2022.04.15