CS/OS

[운영체제] 병행성

IT록흐 2021. 10. 12. 10:26
반응형

OS는 한정된 자원을 최대한 사용하기 위해 병렬처리를 한다. 

 

병렬처리를 위한 기법으로 인터리빙(Interleaving)오버래핑(Overlapping)이 있다. 

 

인터리빙멀티프로그래밍을 구현한다. 처리기가 하나여도 여러 개의 프로세스를 번갈아 실행하면서 마치 병렬적으로 처리되고 있는 듯 보이게 한다. 

 

오버래핑멀티프로세싱을 구현한다. 여러 개의 처리기로 동시에 여러 작업을 처리한다. 한 처리기로 프로세스A를 처리하면서 다른 처리기로 프로세스B를 처리하는 것과 같다. 

 

병렬처리를 통해 구현된 성질을 병행성이라고 부른다. 병행성에는 한 가지 문제점이 있다. 각각의 프로세스의 속도를 예측할 수 없다는 것이다. 예측할 수 없는 프로세스들이 동일한 자원을 두고 경쟁하다보니 많은 문제를 야기한다. 

 

1. 전역 자원의 공유를 어렵게 한다. 

 

한 프로세스가 전역자원을 변경했다가 인터럽트되면 다른 프로세스가 접근하여 전역자원을 변경할 수 있다. 이때 인터럽트가 풀리고 프로세스가 복귀했을 때 이미 전역자원은 훼손된 상태이다. 그러므로 변수를 전역변수가 아닌 지역변수로 생성하면 좋다. 지역변수는 프로세스 스택에 저장되어 있으므로 자원이 훼손되지 않는다.  이와 같은 재진입 가능한 함수(reentracnce)로 공유자원을 형성해야한다. 

 

2. 운영체제 자원을 최적으로 할당하기 어렵다.

 

대표적으로 교착상태가 있다. 이는 다음 포스팅에서 자세히 다루겠다.

 

3. 프로그래밍 오류를 찾아내기 어렵다.

 

실행되는 순서에 따라 오류가 나타날 수도 아닐 수도 있다. 이런 간헐적 오류는 디버깅을 어렵게 한다.

 

- 전역 변수 : b = 1, c = 2

- 프로세스A : b = b + c

- 프로세스B : c = b + c

 

1) A → B

b = 3, c = 5

 

2) B → A

b = 4, c = 3

 

이렇듯 프로세스 실행 순서에 따라 결과가 다르게 나오므로 오류도 결과에 따라 발생할 수도 발생하지 않을 수도 있다.

 

 

운영체제가 해야하는 일

 

OS는 이런 문제들을 제어할 수 있어야 한다. 

 

1. 운영체제는 모든 프로세스의 상태와 수행 위치를 추적할 수 있어야 한다. ( PCB ) 

2. 활동 중인 프로세스에 자원을 할당하고 해제할 수 있어야 한다. ( 처리기 시간, 메모리, 파일, IO장치 )

3. 운영체제는 점유된 자원을 보호해야한다. 

4. 프로세스의 기능과 수행결과는 다른 프로세스의 수행속도와는 독립적이어야 한다. ( 다른 프로세스가 빠르게 처리되었다고 결과가 바뀌면 안 된다. )

 

 

병행성과 관련된 주요 용어

 

원자적 연산 ( atomic operation ) : 중단되거나 분할될 수 없는 여러 개의 명령어로 구성된 함수

임계영역 ( critical section ) : 공유 자원을 접근하는 프로세스 내부의 코드 영역

교착상태 ( deadlock ) : 두 개 이상의 프로세스 들이 더 이상 진행할 수 없는 상태

라이브 락 ( live lock ) : 각 프로세스가 열심히 수행하지만 유용한 작업이 아닌 경우

상호배제 ( mutual exclusive ) : 한 프로세스가 임계영역을 차지하면 다른 프로세스는 임계영역 코드를 수행할 수 없음

경쟁상태 ( race condition ) : 두 개 이상의 프로세스가 공유 자원을 동시에 접근하려는 상태

기아 ( starving ) : 특정 프로세스가 수행가능한 상태임에도 스케줄링되지 못한 상태

 

 

 


 

 

참고자료

 

운영체제

컴퓨터 공학 전공자들을 위한 운영체제 내부구조 및 설계원리를 소개하는 책이다.

book.naver.com

 

 

반응형