학사 나부랭이

Operating System - Multi-Programming - Process Concurrency 본문

Dot-Gabi/Operating System

Operating System - Multi-Programming - Process Concurrency

태양왕 해킹 (14세) 2021. 3. 30. 22:16

프로세스 병행성은 병렬성과 헷갈릴 수 있는데 이 참에 차이를 확실히 두죠.

병렬성

 Multi-Processing(다중 처리 시스템)인데 여러 프로세스가 각각 다른 CPU에서 수행을 할 수 있는 거예요. 아래를 보면 스펀지밥의 손이 여러 개고 각각 프로세스 하나씩 맡고 있죠?

병행성

 CPU가 한 번에 하나의 프로세스만 실행하는데 대신 시간을 나눠서 여러 프로세스를 빠르게 전환해가며 실행해요. 그래서 마치 여러 프로세스를 한 번에 하는 것처럼 보이죠. 여기서는 스펀지밥의 오른손은 하나지만 소스도 뿌리고 뒤집개도 집는 프로세스를 빠르게 전환해서 마치 소스를 뿌리는 일과 뒤집개를 집고 있는 일이 동시에 일어나는 것처럼 보이죠?

병행성의 경우 프로세스 간 context switching(문맥 교환)도 일어나는데 이건 뒤집개가 공중에 돌면서 상태가 저장되었다가 다시 잡죠? 뭐 대충 그런 거예요. 자세히는 링크를 참조해주세요.

여기서 얼마나 빨리 프로세스 사이를 왔다 갔다 할 거냐는 OS의 정책, 다른 프로세스의 활동, 인터럽트를 처리하는 방법 등에 따라 달라져요. 이런 병행성은 프로세스 간의 상호작용이 일어나서 아래와 같은 애로사항을 가지고 있어요.

 

1. 프로세스 p1이 전역 변수의 내용을 변경하고 p2가 그 변수를 이용한다면 p1과 p2의 순서에 따라 결과가 달라져요. - Race condition

2. p1이 할당받은 자원을 사용하기 전에 일시 정지되면 p2는 그 자원을 사용할 수 없어요. 즉, p1과 p2의 순서에 따라 자원을 사용할 수 없는 상황이 생기는데 이게 악화되면 교착 상태에 빠져요.

3. 어떤 오류가 특정 실행 순서에서만 나올 때 그 순서가 복잡하게 얽혀있으면 그 오류를 고치기가 어려워요.

 

인식 정도 관계 다른 프로세스에게 미치는 영향 잠재적인 제어 문제
서로 인식하지 못 함 경쟁 1. 한 프로세스의 수행결과에 영향을 받지 않아요.
2. 다른 프로세스가 CPU를 오래 잡고있으면 대기 시간이나 수행시간에 영향을 받을 수 있어요.
1. 상호 배제
2. 재사용 가능한 자원에 대한 교착 상태
3. 기아
자원공유 등으로 간접 인식 공유를 통한 협력 1. 한 프로세스의 수행결과에 영향을 받지 않아요.
2. 다른 프로세스가 CPU나 공유하는 자원을 오래 잡고있으면 대기 시간이나 수행시간에 영향을 받을 수 있어요.
1. 상호 배제
2. 재사용 가능한 자원에 대한 교착 상태
3. 기아
4. 데이터 일관성
IPC 등으로 직접 인식 통신을 통한 협력 1. 한 프로세스의 수행결과에 영향을 받지 않아요.
2. 다른 프로세스가 자원을 오래 잡고있으면 대기 시간이나 수행시간에 영향을 받을 수 있어요.
1. 소모성 자원에 대한 교착 상태
2. 기아
Comments