-
운영체제 2강. 프로세스 개요방송통신대학교 - 컴퓨터과학과/운영체제 2022. 4. 18. 22:59
1. 프로세스
실행 중인 프로그램
윈도우의 작업 관리자를 열어보면 떠 있는 프로그램들
프로그램을 실행하면 프로세스가 되는데 프로세스가 되면서 PID (프로세스 아이디) 라는 것이 생성된다.
- 프로그램: 동작을 하지 않는 정적, 수동적 개체
- 프로세스: 동작을 하는 능동적 개체
프로세스는 운영체제로부터 자원을 할당 받아서 동작하게 된다.
- 자원: CPU, 메모리, 입출력장치, 파일 등
- 동작: CPU가 프로세스의 명령을 실행
프로세스 관리자의 역할
- 프로세스를 생성 및 삭제
- 프로세스 실행 (CPU 할당)을 위한 스케줄 결정
- 프로세스의 상태를 관리하며 상태 전이를 처리
프로세스의 상태
- 5-상태 모델
- 생성: 처음 작업이 시스템에 주어진 상태 (메모리가 얼마나 필요한지, 요청이 얼마나 필요한지 사전에 미리 파악)
- 준비: 실행 준비가 되어 CPU 할당을 기다리는 상태
- 실행: 프로세스가 처리되는 상태
- 대기: 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
- 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태
프로세스 제어 블록
- 프로세스의 관리를 위한 목적
- 프로세스의 정보를 보관
- 각 프로세스마다 존재
- 프로세스가 진행함에 따라 내용 변경
프로세스 생성 작업
- 프로세스의 이름 (번호, PID) 결정
- 준비 큐에 삽입
- 초기 우선순위 부여
- 프로세스 제어 블록 (PCB) 생성 등
프로세스 생성방법? 시스템 호출
프로세스 생성 시스템 호출
- 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성
- 호출하는 프로세스: 부모 프로세스
- 생성되는 프로세스: 자식 프로세스
시스템 프로세스와 사용자 프로세스 모두 부모 프로세스 가능
생성되는 프로세스의 자원
- 운영체제로 부터 직접 얻는 경우
- 부모 프로세스 자원의 일부를 얻는 경우
자식 프로세스의 자원은 부모 프로세스의 자원으로 제한
- 과도한 자식 프로세스 생성에 따른 시스템 과부하 방지
프로세스 종료
- 프로세스의 마지막 명령이 실행을 마치는 경우
- 프로세스 종료 시스템 호출(예. exit())을 통하는 경우
- 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려 줌
프로세스 종료 시스템 호출
- 부모에 의해서만 호출
- 자식 프로세스가 할당된 자원의 사용을 초과할 때 혹은 더 이상 필요치 않을 때
프로세스 간의 관계
독립적 프로세스 유기적 프로세스 의미 다른 프로세스의 영향을 받지도 않고 주지도 않음 다른 프로세스와 영향을 주고 받음 상태 다른 프로세스와 공유하지 않음 다른 프로세스와 공유함 실행 결정적, 재생 가능 비결정적, 재생 불가능 데이터 다른 프로세스와 공유하지 않음 다른 프로세스와 공유함 2. 쓰레드
전통적인 프로세스
- 처리의 기본 단위
- 자원 소유의 단위(하나의 주소 공간) 및 디스패칭의 단위(하나의 제어흐름)
- 단일 프로세스 내에서 동시처리 불가능! -> 쓰레드 등장
쓰레드 (Thread)
- 프로세스 내에서의 다중처리를 위해 제안된 개념
- 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재
- 하나의 쓰레드 내에서는 하나의 실행점만 존재 (디스패칭의 단위)
- 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유
다중 쓰레드의 장점
- 멀티 CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
- 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능
3. 스케줄링
시스템에 들어오는 작업들을 우선 리스트업하고 상위 단계 스케줄링, 하위 단계 스케줄링, 중간 단계 스케줄링 으로 관리한다.
상위단계 스케줄링
- 시스템에 들어오는 작업들을 선택해서 프로세스를 생성한 후 프로세스 준비 큐에 전달
- 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
- 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택
하위단계 스케줄링
- 사용 가능한 CPU를 준비상태의 어느 프로세스에게 배당할지를 결정
- CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
- 수행 주체: 디스패처
중간단계 스케줄링
- 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화 시킴
- 시스템에 대한 단기적인 부하를 조절
스케줄링 기본 목표
- 공정성: 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
- 균형: 시스템의 자원들이 충분히 활용될 수 있게 함
스케줄링 정책
- 선점 스케줄링 정책
- 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략
- 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
- 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
- 문맥 교환에 따른 오버헤드 발생
- 비선점 스케줄링 정책
- 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨
- 모든 프로세스가 공정하게 순서에 따라 실행됨 -> 응답시간 예측 가능
- 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음
정리
- 프로세스는 실행 중인 프로그램을 의미하며, CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원이 할당된다.
- 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작한다.
- 프로세스 제어 블록(PCB)은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
- 쓰레드란 하나의 프로그램 내에서 제어의 단일 순차적 흐름으로 정의되며, 하나의 쓰레드 내에서는 하나의 실행점만이 존재하며, 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성된다.
- 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어 쓰레드를 생성하여 프로세스 내에서 다중처리를 할 수 있다.
- 프로세스의 스케줄링을 위해 상위단계, 하위단계 및 중간단계 스케줄러가 사용된다.
- 스케줄링 기법 중 어떤 프로세스도 CPU를 빼앗길 수 없는 경우를 비선점이라 하며, 그렇지 않으면 선점이라고 한다.
'방송통신대학교 - 컴퓨터과학과 > 운영체제' 카테고리의 다른 글
운영체제 6강. 교착상태 1 (0) 2022.04.26 운영체제 5강. 병행 프로세스 2 (0) 2022.04.24 운영체제 4강. 병행 프로세스 1 (0) 2022.04.21 운영체제 3강. 스케줄링 알고리즘 (0) 2022.04.20 운영체제 1강 - 역할, 구성, 유형 (0) 2022.04.15