티스토리 뷰

목차

  1. 프로세스
  2. 스레드
  3. 스케줄링

1. 프로세스

: 프로세스

■ 프로세스(process) : 실행 중인 프로그램

- 프로그램 : 동작을 하지 않는 정적;수동적 개체

- 프로세스 : 동작을 하는 능동적 개체

 

■ 운영체제로부터 자원을 할당받아 동작

- 자원 : CPU, 메모리, 입출력 장치, 파일

- 동작 : CPU가 프로세스의 명령을 실행

 

■ 사용자 및 시스템 프로세스 존재

 

: 프로세스와 운영체제

■ 프로세스 관리자의 역할

- 프로세스를 생성 및 삭제

- 프로세스 실행(CPU 할당)을 위한 스케줄 결정

- 프로세스의 상태를 관리하며 상태 전이를 처리

 

: 프로세스의 상태

■ 5-상태 모델

- 생성 : 처음 작업이 시스템에 주어진 상태

- 준비 : 실행 준비가 되어 CPU 할당을 기다리는 상태

- 실행 : 프로세스가 처리되는 상태

- 대기 : 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태

- 종료 : 모든 처리가 완료되어 사용자에게 반환되는 상태

 

: 프로세스의 상태 변화

- 준비 -> 실행 : 디스패치

- 실행 -> 준비 : 할당 시간 만료

- 실행 -> 대기 : 이벤트 대기 

- 대기 -> 준비 : 재개 조건 만족

 

: 프로세스 제어 블록(PCB)

■ 프로세스 제어 블록(PCB: Process Control Block)

- 프로세스의 관리를 위한 목적

- 프로세스의 정보를 보관

- 각 프로세스마다 존재

- 프로세스가 진행함에 따라 내용 변경

 

: 프로세스의 생성과 종료

■ 프로세스 생성 작업

- 프로세스의 이름(번호, PID) 결정

- 준비 큐에 삽입

- 초기 우선순위 부여

- 프로세스 제어 블록(PCB) 생성 등

 

■ 프로세스 생성 방법 : 시스템 호출

 

■ 프로세스 생성 시스템 호출

- 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성

- ex) fork()

- 호출하는 프로세스 : 부모 프로세스

- 생성되는 프로세스 : 자식 프로세스

 

■ 시스템 프로세스와 사용자 프로세스 모두 부모 프로세스 가능

 

■ 생성되는 프로세스의 자원

- 운영체제로부터 직접 얻는 경우

- 부모 프로세스 자원의 일부를 얻는 경우

 

■ 자식 프로세스의 자원은 부모 프로세스의 자원으로 제한

- 과도한 자식 프로세스 생성에 따른 시스템 과부하 방지

 

■ 프로세스 종료

- 프로세스의 마지막 명령이 실행을 마치는 경우

- 프로세스 종료 시스템 호출(ex. exit())을 통하는 경우

- 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려

 

■ 프로세스 종료 시스템 호출

- 부모에 의해서만 호출

- 자식 프로세스가 할당된 자원의 사용을 초과할 때 혹은 더 이상 필요치 않을 때

 

: 프로세스 간의 관계

  독립적 프로세스 유기적 프로세스
의미 다른 프로세스의 영향을 받지도, 주지도 않음 다른 프로세스와 영향을 주고받음
프로세스 상태 다른 프로세스와 공유 X 다른 프로세스와 공유
실행 결정적, 재생 가능 비결정적, 재생 불가능
다른 프로세스와 무관하게 중단 및 재시작 OK  
데이터 다른 프로세스와 공유 X 다른 프로세스와 공유함

: 프로세스와 스레드

■ 전통적인 프로세스

- 처리의 기본 단위

- 자원 소유의 단위(하나의 주소 공간) 및 디스패칭의 단위(하나의 제어 흐름)

- 단일 프로세스 내에서 동시처리 불가능

 

■ 스레드(Thread)

- 프로세스 내에서의 다중처리를 위해 제안된 개념

- 하나의 프로세스 내에는 하나 이상의 스레드가 존재

- 하나의 스레드 내에서는 하나의 실행점만 존재(디스패칭의 단위)

- 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유

 

: 쓰레드

■ 다중 스레드의 장점

- 멀티 CPU 혹은 멀티코어 시스템에서는 병렬 처리 가능

- 처리 속도 별로 스레드가 나눠진 경우 효율적인 처리 가능


3. 스케줄링

: 스케줄링 단계

시스템에 들어오는 작업들 -> (상위단계 스케줄링) -> 실행 중인 작업들(준비 큐)

실행중인 작업들(준비 큐) <-> (하위 단계 스케줄링) <-> CPU 

실행 중인 작업들(준비 큐) <-> (중간단계 스케줄링) <->일시 중지된 작업들

 

■ 상위단계 스케줄링

- 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달

- 선택 기준 : 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것

- 입출력(I/O) 중심 작업과 연산 중심 작업을 균형 있게 선택

 

■ 하위 단계 스케줄링

- 사용 가능한 CPU를 준비상태의 어느 프로세스에게 배당할지를 결정

- CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨

- 수행 주체 : 디스패처(dispatcher)

 

■ 중간단계 스케줄링

- 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴

- 시스템에 대한 단기적인 부하를 조절

 

: 스케줄링 정책

■ 스케줄링 기본 목표

- 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함

- 균형 : 시스템의 자원들이 충분히 활용될 수 있게 함

* 일괄처리 운영체제 : 처리량의 극대화, 반환시간의 최소화, CPU 활용의 극대화

* 대화형 운영체제 : 빠른 응답 시간, 과다 대기시간 방지

* 실시간 운영체제 : 처리 기한을 맞춤

 

■ 선점(Preemptive) 스케줄링 정책

- 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략

- 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용

- 대화식 시분할 시스템에서 빠른 응답 시간을 유지하는데 유용

- 문맥 교환에 따른 오버헤드 발생

* 문맥 : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태

* 문맥 교환 : CPU의 현재 실행 중인 프로세스의 문맥을 PCB에 저장하고

                 다음 프로세스의 PCB로부터 문맥을 복원하는 작업

 

■ 비선점(Nonpreemptive) 스케줄링 정책

- 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태 유지

- 모든 프로세스가 공정하게 순서에 따라 실행 : 즉, 응답 시간을 예측할 수 있다.

- 짧은 프로세스가 긴 프로세스를 기다릴 가능성이 있음

 

 


정리하기

- 프로세스 : 실행 중인 프로그램을 의미, [CPU, 메모리, 입출력 장치, 파일 등] 실행에 필요한 자원이 할당됨

- 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작

- 프로세스 제어 블록(PCB) : 프로세스를 명시해 주는 다양한 내용을 포함

- 스레드란 하나의 프로그램 내에서의 제어의 단일 순차적 흐름으로 정의되며,

  하나의 쓰레드 내에서는 하나의 실행점만이 존재하며,

  각 스레드는 수행에 필요한 최소한의 정보만으로 구성된다.

- 하나의 프로세스 내에는 하나 이상의 스레드가 존재할 수 있기 때문에

  스레드를 생성하여 프로세스 내에서 다중처리를 할 수 있다.

- 프로세스의 스케줄링을 위해 상위단계, 하위 단계 및 중간단계 스케줄러가 사용

- 스케줄링 기법 중 어떤 프로세스도

   CPU를 빼앗을 수 있다면 선점, 빼앗을 수 없는 경우는 비선점으로 구분

 

 

'방통대 > 운영체제' 카테고리의 다른 글

[운영체제] 교착상태Ⅱ  (0) 2021.05.14
[운영체제] 교착상태Ⅰ  (0) 2021.05.14
[운영체제] 병행 프로세스Ⅰ  (0) 2021.05.13
[운영체제] 스케줄링 알고리즘  (0) 2021.05.13
[운영체제] 운영체제 개요  (0) 2021.05.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함