티스토리 뷰
1. 병행성과 병행 프로세스
- 병행성 ( Concurrency )
- 여러 개의 프로세스 또는 쓰레드가 동시 수행되는 시스템의 특성
- 병행 프로세스
- 동시 수행되는 여러 개의 프로세스 또는 쓰레드
2. 병행 프로세스의 실행 형태
- 1개의 CPU : 인터리빙 형식
- 복수의 프로세스를 번걸아가면서 처리
- 사실 한 시점에는 하나의 프로세스만 처리
- 여러 개의 CPU : 병렬처리 형식
- 하나의 프로세스를 하나의 CPU가 담당하여 처리
3. 병행 프로세스의 실행 형태
- 멀티 프로세스 시스템에서의 메모리 구조에 따라 강결합 시스템과 약결합 시스템으로 구분
- 강결합 시스템 ( 공유 메모리 구조 )
- 여러 CPU가 하나의 메모리를 공유하여 사용
- 약결합 시스템 ( 분산 메모리 구조 )
- 여러 컴퓨터 시스템이 존재
- 하나의 컴퓨터 시스템 속에는 하나의 CPU와 하나의 메모리가 각각 존재
- 컴퓨터 시스템으로 분리되어있기에, 데이터를 주고 받기 위해서는 통신해야 함
4. 프로세스 간의 관계
- 독립 프로세스
- 수행 중인 다른 프로세스에 영향을 주지도 받지도 않음
- 데이터 및 상태를 다른 프로세스와 공유하지 않음
- 프로세스의 실행
- 결정적 : 실행결과는 입력에 의해서만 결정됨
- 재생 가능 : 같은 입력에 대해 항상 동일한 실행결과
- 협력 프로세스
- 수행 중인 다른 프로세스와 영향을 주고받음
- 데이터 및 상태를 다른 프로세스와 공유
- 프로세스의 실행
- 비결정적 : 실행결과는 실행순서에 좌우됨
- 재생 불가능 : 같은 입력에 대해 항상 동일한 실행결과를 보장하지 못함
5. 병행성 문제
- 협력 프로세스인 경우 발생 가능한 문제
- 종류 : 상호배제, 동기화, 통신
6. 상호배제
- 2개 이상의 프로세스가 동시에 임계영역을 수행하지 못하도록 하는 것
- 임계영역이란?
- 2개 이상의 프로세스가 동시에 사용하면 안 되는 공유자원을 액세스하는 프로그램 코드 영역
- 임계영역이란?
7. 동기화
- 2개 이상의 프로세스에 대한 처리 순서를 결정하는 것
- 프로세스 동기화
- 상호배제 : 임계영역에 대한 동기화 문제
8. 통신
- 프로세스들이 데이터를 공유하기 위해 반드시 필요
- 프로세스 간 통신 ( IPC )
- 통신 방법
- 하나의 변수 사용
- 메세지를 서로 주고 받음
9. 세마포어 ( Semaphore )
- 상호배제와 동기화 문제를 해결하기 위한 도구
- Dijkstra가 제안
- 세마포어는 기본적으로 정수형 공용변수
- 저장값 : 사용 가능한 자원의 수 또는 잠김이나 풀림의 상태
- 상황에 맞춰 0이상인 정수로 초기화
- 두 기본연산 P와 V에 의해서만 사용됨
- 기본연산 : 인터럽트되지 않고 하나의 단위로 처리됨
10. 세마포어 기본연산
- 연산 P : 검사, 감소시키려는 시도
void P(semaphore s){
if (s > 0)
s--;
else
현재 프로세스를 대기시킴;
}
- 연산 V : 증가
void V(semaphore s){
if (대기 중인 프로세스 없음)
s++;
else
대기 중인 프로세스 1개 진행;
}
- 세마포어마다 대기 큐 필요
11. 상호배제 해결을 위한 요구사항
- 한 프로세스가 임계영역 수행 중일 경우
- 다른 프로세스는 임계영역에 진입해서는 안 됨
- 임계영역 수행 중이던 프로세스가 임계영역 벗어날 경우
- 누군가 하나는 임계영역을 새로이 수행할 수 있어야 함
- 임계영역 진입 못하고 대기하는 프로세스가 존재하는 경우
- 적절한 시간 내에 임계영역 수행을 시작할 수 있어야 함
12. 상호배제 해결방안
- 상호배제를 위한 임계영역 주변의 코드 영역
- 진입 영역
- 임계 영역에 대한 수행을 해도 되는지 체크
- 연산 P
- 임계 영역
- 해제 영역
- 다른 프로세스가 임계 영역 수행을 시작할 수 있도록 함
- 연산 V
- 진입 영역
- 예시
- 세마포어 mutex 초기값은 1
- 진입영역에서 연산 P(mutex)를 통해 mutex값을 0으로 변환
- 해제영역에서 연산 V(mutex)를 통해 mutex값을 1로 변환
- 대기 큐는 FIFO로 동작 ( 먼저 들어온 것을 먼저 실행 )
13. 동기화 해결
- 프로세스 A가 코드 s1을 수행한 후, 프로세스 B가 코드 s2를 수행하도록 동기화
- 세마포어 sync 초기값은 0
- s1 → 연산V(sync) → 연산P(sync) → s2
728x90
'방송대 > 운영체제' 카테고리의 다른 글
6강. 교착상태 (1) (0) | 2025.03.25 |
---|---|
5강. 병행 프로세스 (2) (0) | 2025.03.19 |
3강. 프로세스 스케줄링 (0) | 2025.03.03 |
2강. 프로세스와 스레드 (0) | 2025.02.18 |
1강. 운영체제 소개 (0) | 2025.02.17 |
댓글