OS 프로세스
학습 개요
- 프로그램을 실행시키면 운영체제로부터 프로그램이 동작하는 데 필요한 자원을 할당받아 동작을 시작한다.
이처럼 실행 상태에 들어간 프로그램을 프로세스라고 한다.
프로세스의 동작은 CPU가 그 프로세스의 명령들을 실행하는 것이다.
이때 CPU도 기억장치나 입출력장치와 마찬가지로 프로세스가 동작하는 데 필요한 자원이다.
운영체제는 실행할 준비가 된 프로세스들이 적절히 CPU를 배정받아 효율적으로 작업을 처리할 수 있도록 관리해야 한다.
운영체제의 핵심적인 구성 요소 중 하나인 프로세스에 대한 기본적인 이해와 함께 쓰레드의 개념을 학습하고, 스케줄링의 정책에 대하여 살펴보자.
- 프로그램을 실행시키면 운영체제로부터 프로그램이 동작하는 데 필요한 자원을 할당받아 동작을 시작한다.
학습 목표
- 프로세스의 개념을 설명할 수 있다.
- 프로세스와 쓰레드의 관계를 설명할 수 있다.
- 스케줄링의 필요성과 정책을 설명할 수 있다.
요약
- 프로세스는 실행 중인 프로그램을 의미하며, CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원이 할당된다.
- 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작한다.
- 프로세스 제어 블록(PCB)은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
- 쓰레드란 하나의 프로그램 내에서 제어의 단일 순차적 흐름으로 정의되며, 하나의 쓰레드 내에서는 하나의 실행점만이 존재하며, 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성된다.
- 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어 쓰레드를 생성하여 프로세스 내에서 다중처리를 할 수 있다.
- 프로세스의 스케줄링을 위해 상위단계, 하위단계 및 중간단계 스케줄러가 사용된다.
- 스케줄링 기법 중 어떤 프로세스도 CPU를 빼앗길 수 없는 경우를 비선점이라 하며, 그렇지 않으면 선점이라고 한다.
프로세스 개요
프로세스
- 프로세스는 실행 중인 프로그램을 의미
- 프로그램 : 동작을 하지 않는 정적이며 수정적인 개체.
- 프로세스 : 동작을 하는 능동적인 개체.
- 프로세스에는 실행을 위해 필요한 컴퓨터의 자원이 할당됨.
- CPU, 주기억장치, 파일, 입출력 장치 등.
- 프로세스의 동작은 CPU가 그 프로세스의 명령들을 실행하는 것.
- 운영체제는 프로세스들을 생성시키고 종료시키기 위한 다양한 작업과 프로세스들을 실행시키기 위한 스케쥴링 작업을 처리.
프로세스의 상태 변화
- 프로세스의 5-상태
- 생성 : 처름 프로세스 생성 상태
- 준비 : CPU 할당을 기자리는 상태
- 실행 : 프로세스가 처리되는 상태
- 대기 : 특정 자원의 할당이나 입출력 작업의 종료 때까지 보류되는 상태
- 종료 : 모든 처리가 완료된 상태
- 프로세스의 상태 전이
- 생성 -> 준비 : 프로세스 생성이 완료된 경우.
- 준비 -> 실행 : 스케쥴러에 의해 선택된 경우, (Dispatch)
- 실행 -> 준비 : 할당시간 만료 또는 보다 높은 우선순위의 프로세스가 오는 경우.
- 실행 -> 대기 : 페이지 교환, 입출력 등의 작업이 필요한 경우.
- 대기 -> 준비 : 페이지 교환, 입풀력 등의 작업이 완료된 경우.
- 실행 -> 종료 : 프로세스를 성공적으로 긑마친 경우.
프로세스 제어 블록
- 프로세스 제어 플록 (PCB)
- 프로세스 관리를 위해 해당 프로세스의 정보를 보관.
- 프로세스 진행에 따라 정보의 변경도 발생.
- 프로세스 제어 블록 내 주요 정보
- 프로세스 상태 : 프로세스의 현재 상태.
- 프로세스 번호 (PID) : 프로세스의 구분 기준.
- 프로그램 카운터 : 프로세스 수행을 위한 다음 명령의 주소.
- 레지스터 : 실행상태에서 다른 상태로 전이되는 경우 CPU의 레지스터 정보를 이곳에 저장.
- 메모리 : 프로세스 저장 주소, 가상주소와 실주소의 사상 정보, 메모리 경계 정보 등.
프로세스 생성과 종료
- 부모 프로세스와 자식 프로세스
- 부모 프로세스 : 프로세스 생성 시스템 호출을 이용하여 다른 프로세스를 생성한 프로세스.
- 자식 프로세스 : 부모 프로세스가 생성한 새로운 프로세스.
- 프로세스 생성
- 프로세스의 이름(PID)이 지정되고 프로세스 제어블록이 만들어지며, 준비 큐에 삽입.
- 부모 프로세스와 자식 프로세스 사이의 상호작용을 위해 자원을 공유할 수 있음.
- 프로세스의 종료
- 처리할 작업을 마치면 실행 결과를 부모 프로세스에 되돌려 주며 종료.
- 연속적 종료 : 부모 프로세스가 종료되면 그 자식 프로세스들도 모두 종료.
프로세스 간의 관계
- 독립적 프로세스
- 실행 중인 다른 프로세스의 영향을 받지도 않고 주지도 않는 프로세스.
- 프로세스의 상태는 다른 프로세스와 공유되지 않음.
- 프로세스의 실행은 결정적 : 실행 결과는 입력에 의해서만 결정됨.
- 프로세스의 실행은 재생 가능 : 실행 결과는 같은 입력에 대해 항상 동일함.
- 타 프로세스와 무관하게 중단되거나 재시작될 수 있음
- 유기적 프로세스
- 실행 중인 다른 프로세스와 영향을 주고 받으며 동작하는 프로세스
- 프로세스의 상태는 다른 프로세스와 공유됨.
- 프로세스의 실행은 비결정적 : 실행 결과는 실행 순서에 좌우됨.
- 프로세스의 실행은 재생 불가능 : 실행결과는 같은 입력에 대해 항상 동일하지는 않음.
쓰레드
- 전통적인 프로세스
- 처리의 기본 단위.
- 자원 소유의 단위 + 디스패칭의 단위.
- 단일 프로세스 내에서는 동시 처리 불가능.
- 스레드
- 프로세스 내에서의 다중처리를 위해 제안된 개념.
- 프로세스는 자원 소유의 단위로, 쓰레드는 디스패칭의 단위로 구분.
- 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재.
- 하나의 쓰레드 내에서는 하나의 실행점만 존재
- 쓰레드는 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유함.
- 다중 쓰레드
- 멀티 CPU 혹은 멀티 코어 시스템에서는 병렬 처리 가능.
- 처리 속도 별로 쓰레드가 나워진 경우 효율적인 처리 가능.
스케쥴링
스케쥴링의 단계
- 상위단계 스케쥴링
- 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달하는 역할.
- 선택 기준 : 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것.
- 입출력 중심 작업과 연산 중심 작업을 균형있게 선택
- 하위단계 스케쥴링
- 사용 가능한 CPU를 준비상태의 어느 프로세스에 배당할지를 결정.
- 이 결정을 통하여 CPU를 배당 받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨.
- 수행 주체 : Dispatcher
- 중간단계 스케쥴링
- 프로세스를 일시적으로 메모리에서 제거하여 중지 시키거나 다시 활성화 시켜서 시스템에 대한 단기적인 부하를 조절.
스케쥴링 정책
- 스케쥴링의 기본 목표
- 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함.
- 균형 : 시스템의 자원들이 충분히 활용될 수 있게 함.
- 일괄처리 운영체제의 스케쥴링 목표
- 처리량의 극대화.
- 반환시간의 최소화.
- CPU 활용의 극대화.
- 대화형 운영체제의 스케쥴링 목표
- 빠른 응답 시간.
- 과대한 대기 방지.
- 실시간 운영체제의 스케쥴링 목표
- 처리 기한을 맞춤.
- 선점 스케쥴링(Preemptive) 정책
- 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케쥴링 전략.
- 높은 우선순위의 프로세스를 긴급하게 처리하는 경우 유용.
- 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용.
- 문맥 교환에 따른 오버헤드 발생.
- 문맥(Context) :
CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태. - 문맥 교환 (Context Switching)
- CPU가 현재 샐행하고 있는 프로세스의 문맥을 PCB에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업.
- 운영체제는 문맥 교환이 매우 빠르게 실행되도록 만들어져야 함.
- 문맥(Context) :
- 비선점 스케쥴링(Nonpreemptive) 정책
- 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨.
- 모든 프로세스가 공정하게 순서에 따라 실행되도록 관리됨(응답 시간 예측 가능)
- 짧은 프로세스가 긴 프로세스를 기다리게 되는 경우가 발생할 수 있음.
728x90
반응형