본문 바로가기
방송통신대학교/3학년 1학기

[운영체제] 4강. 병행 프로세스 I

by 바른 호랑이 2025. 3. 19.
728x90
반응형

방송통신대학교 운영체제 강의 정리 자료입니다.

 

1. 병행 프로세스의 개요

병행성(concurrency)

: 여러 개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성

 

병행 프로세스

: 동시 수행되는 여러 개의 프로세스 또는 쓰레드

 

병행 프로세스의 실행 형태

- 1개의 CPU

: 인터리빙 형식으로 실행됨. 만약 실행 중인 프로세스가 3개인데 CPU가 1개라면 라운드 로빈 형식 처럼 1개씩 번갈아가면서 실행됨.

- 여러개의 CPU

: 병렬처리 형식으로 실행됨. 

- 멀티 프로세서 시스템에서의 메모리 구조에 따라 강결합 시스템(공유 메모리 구조)으로 실행할 수도 약결합 시스템(분산 메모리 구조)으로 실행할 수도 있음.

프로세스 간의 관계

- 독립 프로세스

: 수행 중인 다른 프로세스에 영향을 주지도 받지도 않고 데이터 및 상태를 다른 프로세스와 공유하지 않음. 프로세스의 실행은 결정적(실행결과는 입력에 의해서만 결정됨.)이며, 재생 가능함.(같은 입력에 대해 항상 동일한 실행결과를 도출함.)

 

- 협력 프로세스

: 수행 중인 다른 프로세스와 영향을 주고 받으며, 데이터 및 상태를 다른 프로세스와 공유함. 프로세스의 실행은 비결정적(실행결과는 실행순서에 좌우됨.)이며 재생 불가능함.(같은 입력에 대해 항상 동일한 결과를 보장하지 못함.)

 

2. 병행성 문제

협력 프로세스인 경우에 발생 가능한 문제로 아래와 같은 문제가 발생할 수 있음.

- 상호배제

: 2개 이상의 프로세스가 동시에 임계영역(2개 이상의 프로세스가 동시에 사용하면 안되는 공유자원을 액세스하는 프로그램 코드 영역)을 수행하지 못하도록 하는 것

- 동기화

: 2개 이상의 프로세스에 대한 처리순서를 결정하는 것으로 정확하게는 프로세스 동기화를 의미하며, 상호배제도 넓은 의미에서는 동기화의 문제라고 볼 수 있음.

 

- 통신

: 프로세스들이 데이터를 공유하기 위해서는 반드시 필요한 것으로 프로세스 간 통신(IPC)를 지칭함. 통신 방법으로는 하나의 변수를 사용할 수도 있고 메시지를 서로 주고받는 것을 통해서 처리할 수도 있음.

 

3. 세마포어(semaphore)

: 상호배제와 동기화 문제를 해결하기 위한 도구로 Dijkstra가 제안함. 기본적으로 세마포어는 정수형 공용변수로 사용 가능한 자원의 수 또는 잠김이나 풀림의 상태를 기록한 저장값을 가지며, 상황에 맞춰 0이상인 정수로 초기화함.두 기본연산(인터럽트되지 않고 하나의 단위로 처리됨.) P(검사, 감소)와 V(증가)에 의해서만 사용되며, 세마포어마다 대기 큐가 필요함.

상호배제를 위한 일반적인 요구사항

- 다른 프로세스는 임계영역에 진입해서는 안되고, 한 프로세스가 임계영역을 수행중이어야함.

- 임계영역 수행 중이던 프로세스가 임계영역을 벗어나면 누군가 하나는 임계영역을 새로이 수행할 수 있어야함.

- 임계영역에 진입 하지 못하고 대기하는 프로세스가 있다면 적절한 시간 내에 임계영역 수행을 시작할 수 있어야함.

 

상호배제를 위한 임계영역 주변의 코드 영역 및 세마포어를 이용한 방법

동기화 해결

: 프로세스 A가 코드 S1 수행한 후 프로세스 B가 코드 S2를 수행하도록 동기화하려고 하는 상황을 가정.세마포어 sync 초깃값이 0이라고 가정하면, 프로세스 A의 S1이 실행되고 완료될때까지 세마포어의 값이 0이기에 프로세스 B의 S2는 대기하게됨.

728x90
반응형

댓글