운영체제 (OS, Operating System) 정리

2019. 5. 8. 20:19coding

 운영체제는 컴퓨터 하드웨어와 응용프로그램의 중재자 역할을 하는 시스템 소프트웨어로서 프로세서, 메모리 입출력 장치, 통신 장치 등의 시스템 자원을 효율적으로 관리하며 시스템 및 응용 프로그램의 실행을 지원한다.

 

프로세스 개념

 프로세스는 '실행 중인 프로그램', '프로세스 제어블록' 을 가진 프로그램, '운영 체제가 관리하는 실행의 단위', 등으로 정의되며 작업 또는 태스크 라고도 한다.

1. 프로세스의 상태
 프로세스는 생명주기 동안 구분된 프로세스 상태를 갖는다. (생성, 대기, 준비, 실행, 종료)
- 생성 : 프로세스가 생성되었으나 아직 운영체제에 의해 실행 가능하게 되지 못한 상태
- 준비 : 프로세스가 실행을 위해 CPU를 할당 받기를 기다리는 상태 -> Dispatch 시 실행
- 실행 : 프로세스가 CPU를 차지하고 있는 상태 -> Time Runout 시 준비 상태로 돌아감
- 종료 : 프로세스의 실행이 끝나고 CPU 할당이 해제된 상태
- 대기 : 프로세스가 CPU를 할당받아 실행되다가 입/출력 완료 등과 같은 어떤 사건이 발생해 주기를 기다리고 있는 상태

2. 프로세스 제어 블록 (PCB)
 프로세스 제어 블록은 운영체제가 프로세스 관리를 위해 필요한 정보를 저장하는 것으로, 프로세스가 생성될 때 마다 고유의 블록이 생성되고, 프로세스가 완료되면 블록은 제거된다. 블록에는 프로세스 식별번호, 프로세스 상태, 프로그램 카운터, 스케줄링 우선 순위, 레지스터 정보, 주기억 장치 관리 정보 등이 포함된다.

3. 쓰레드
 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위로 쓰레드는 프로세스 생성과는 다르게 운영체제가 부모 프로세스와 공유할 자원을 초기화할 필요가 없으므로 쓰레드의 생성과 종료를 위한 오버헤드가 적다.
- 프로세스에 속한 모든 스레드에서 접근할 수 있는 정보 : 주소 공간, 기타 전역 프로세스 데이터 등
- 각 스레드에서만 접근할 수 있는 정보 : 레지스터, 스택, 마스크, TSD 등

 

병행 프로세스

 병행 프로세스는 두 개 이상의 프로세스가 동시에 처리하는 것을 의미하며, 공유자원에 대한 배타적인 접근이 보장되지 않는다면 오류 발생 시 커다란 문제가 야기될 수 있다. 이러한 오류를 방지하기 위한 해결책으로 임계영역, 상호 배제, 세마포어, 모니터와 같은 방법이 있다.

1. 임계 영역
 
다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 한하여 특정 작업 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 허용된 영역이다.

2. 상호 배제
 
여러 개의 프로세스가 공유 자원을 액세스 할 때 작업을 정당하게 실행하기 위해 한 순간에 하나의 프로세스만 변경할 수 있도록 하는 방법으로, 한 프로세스가 공유 자원을 사용하는 동안, 다른 프로세스가 이미 할당된 자원을 요구한다면 자원을 요구한 프로세스는 해당 자원이 해제될 때까지 기다려야 하는 상황을 의미한다.
- 상호 배제 문제에 대한 해결 방법 : Dekker 알고리즘, Peterson 알고리즘, 인터럽트 비활성화, 테스트 후 설정 명령어, Compare-and-Swap 명령어

3. 세마포어
 
임계 영역에서 프로세스가 작업을 수행하더라도 올바른 결과를 산출할 수 있도록 데이터의 정확성과 일관성을 보장하는 것이다. 보호변수 P(Wait) 와 V(Signal)의 두 가지 연산에 의해서만 액세스 될 수 있도록 통제하는 방법이다.

4. 모니터
 
운영체제에서 지원하는 세마포어와는 다르게 병행 다중 프로그래밍에서 상호 배제를 구현하기 위한 특수한 프로그래밍 기법으로 공유 자원을 정당하게 할당하기 위한 병행성 구조다.

 

교착 상태

 둘 이상의 프로세스가 서로 다른 프로세스가 차지하고 있는 자원을 요구하고 요청한 자원이 영원히 할당되지 않아 결국 해당 프로세스는 무한정으로 기다리는 현상을 의미한다.

1. 교착 상태의 발생 조건
- 상호 배제 : 한번에 하나의 프로세스만이 공유 자원을 사용할 수 있는 상태
- 점유 및 대기 : 프로세스들이 현재의 자원을 점유하면서 다른 자원을 요구하는 상태
- 비선점 : 각 프로세스의 할당된 자원은 사용이 완료될 때 까지 강제로 해제할 수 없는 상태
- 환형 대기 : 서로 다른 프로세스간의 자원 요구가 연속적으로 반복 되는 상태

2. 교착 상태의 해결 방안
- 예방 : 교착상태의 발생 조건을 제거하여 사전에 미리 예방하는 방법
- 회피 : 교착상태의 발생조건을 제거하지 않고, 다만 적절하게 피해 나가는 방법
- 발견 : 교착 상태의 발생을 허용하고, 발생 시 원인을 찾아 해결하는 방법
- 회복 : 교착상태에 빠진 프로세스를 재시작하거나, 원래 상태로 되돌림으로서 교착상태를 해결하는 방법