공부자료/Study

프로세스

F0X 2022. 5. 25. 20:32
공부할 때 필기한 내용이라 알고 계시는 내용과 다를 수 있습니다.
간단하게 정리한 내용이므로 자세한 설명은 아닙니다.

 

프로세스의 개념

 

 

프로세스(Process)

실행 명령을 받아 메인 메모리로 올라간 프로그램으로 컴퓨터상에서 실행 중인 프로그램을 뜻한다.

프로세스는 운영체제에서 운영되는 시스템 작업의 기본 단위

준비(Ready)

생성된 프로세스가 프로세서인 CPU 사용 시간을 할당받기 위해 기다리고 있는 상태

실행(Running)

CPU에 의해 프로세스가 실행되고 있는 상태

'종료' 프로세스의 모든 작업이 끝나면 종료된다.

'중단/방해' 프로세스의 CPU 할당 시간이 완료되거나 방해가 발생하면 준비 상태로 넘어간다.

입출력 또는 이벤트 기다림' 실행 중인 프로세스가 입출력 명령을 마치면 CPU 사용을 반납하고 입출력 종료 신호가 올 때까지 대기 상태로 넘어간다.

대기(Blocked)

입출력 등과 같이 임의의 자원을 요청한 후 할당받을 때까지 기다리는 상태

 

프로세스 제어 블록

 

프로세스 제어 블록(PCB)

운영체제가 관리하는 자료구조로 프로세스 관리에 필요한 거의 모든 정보가 저장되어 있는 장소이다.

프로세스 ID, 각 프로세스에서 사용하는 레지스터 메모리 값의 백업 값이 저장되어 있는데 모든 프로세스는 별도의 PCB를 가지며 프로세스가 생성될 때 만들어졌다가 프로세스가 실행을 마치면 삭제된다.

 

 

문맥 전환(Context Switching)

다중 프로그래밍 환경에서 실행 상태인 프로세스가 사용하는 레지스터 값을 해당 프로세스의 PCB에 저장하고 새롭게 실행 상태로 넘어온 프로세스 레지스터 값을 CPU에 적재하는 과정

 

프로세스 스케줄링

 

프로세스 스케줄링(Process Scheduling)

다중 프로그래밍 환경에서 현재 실행 중인 프로세스 다음에 어떤 프로세스를 실행하면 좋을지 결정하는 과정

선도착 선처리 기법(FCFS, First-Come First-Served)

먼저 준비 상태로 들어온 프로세스를 먼저 실행시킨다.

최단 작업 우선 기법(SJF, Shortest Job First)

준비 상태에 있는 프로세스 중 CPU 사용 시간이 가장 짧은 것부터 실행시키는 방법

이 방법을 적용하려면 프로세스의 총 실행 시간을 미리 알아야 한다.

순환 순서 기법(Round Robin)

여러 프로세스가 돌아가면서 CPU를 조금씩 차지하는 방법

준비 상태에 있는 모든 프로세스에게 CPU 실행 시간을 골고루 나누어 준다. 사용자와의 인터랙션이 빈번한 개인용 컴퓨터에 적합하다.

 

병행 프로세스

 

병행 프로세스(Concurrent Processes)

2개 이상의 프로세스가 동시에 실행되는 것으로 다른 프로세스와 협력하면서 실행되므로 서로 영향을 주고받기 때문에 수행 과정상 예측할 수 없는 상황이 발생하기도 한다.

 

 

병행 프로세스의 오류를 막기 위해 사용하는 개념

 

동기화(Synchronization)

하나의 자원(데이터)에 2개 이상의 프로세스가 동시에 접근하면 데이터가 불일치 상태에 놓을 수 있다. 데이터의 일관성을 유지하려면 병행 프로세스의 처리 순서를 잘 정해야 한다.

임계 영역(Critical Section)

병행 프로세스 코드 영역 중 자원(데이터)을 읽고 수정하는 등의 작업이 이루어지는 부분을 임계 영역이라 한다. 하나의 프로세스가 임계 영역 내에 존재하면 다른 프로세스들은 임계 영역을 진입하지 못하도록 제거해야 한다.

상호 배제(Mutual Exclusion)

하나의 프로세스 공유 자원을 사용하는 동안 다른 프로세스가 자원을 사용하지 못하게 막는 것

 

교착 상태

 

교착 상태(Deadlock)

2개 이상의 프로세스가 절대 일어나지 않을 이벤트를 기다리고 있는 상태를 뜻한다.

특정 프로세스가 공유 자원을 독점해 사용하고 있을 때 다른 프로세스가 그 자원을 요구하면 교착 상태가 발생한다.

 

 

철학자들의 만찬 문제

5명의 철학자가 식사를 하기 위해 원탁 테이블에 앉아 있는데 옆에 높인 젓가락을 좌우 각 1개씩 모두 2개를 가져야만 식사를 할 수 있다. 그런데 모든 철학자가 동시에 왼쪽에 있는 젓가락을 잡는다면 이들은 모두 식사를 시작할 수 없다. 철학자들의 오른쪽에 위치한 젓가락은 이미 누군가가 가지고(점유하고, 사용하고) 있기 때문이다. 이러한 상황을 교착상태라고 한다.

 

 

교차로에서의 교착 상태

교차로의 모든 차량이 앞으로 나아가질 못하는 상황이 그 예이다. 네 방면의 차량이 교차로에서 서로 뒤엉켜 어느 쪽으로도 움직이지 못하고 멈춰 있는 것이다.

 

교착 상태에 빠지는 조건

 

상호 배제(Mutual Exclusion)

오직 하나의 프로세스만 자원을 사용할 수 있다는 조건이다. 모든 프로세스는 원하는 자원에 대한 배타적인 통제권을 요구한다. 해당 자원은 다른 프로세스에 동시에 사용될 수 없다는 뜻이다.

보유와 대기(Hold and Wait)

자원을 할당받은 상태에서 다른 자원을 기다리는 것이다. 자원을 이미 가지고 있음에도 다른 프로세스가 보유한 자원을 추가로 요구하는 상황이다.

비선점(No Preemption)

한 프로세스가 작업을 끝내기 전까진 다른 프로세스가 해당 자원을 뺏을 수 없다는 것이다. 어떤 프로세스에 할당된 자원을 다른 프로세스가 강제로 선점할 수 없다는 조건이다.

순환 대기(Circular Wait)

각 프로세스가 자원을 가지고 있는 상태에서 다른 프로세스의 자원을 요청하는 것이다. 자원 할당 그래프 같은 사이클을 형성한다.