본문 바로가기

컴퓨터과학/운영체제

운영체제 Day2

프로세스 

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

작업관리자에서 프로세스를 확인할 수 있다. 

exe 실행파일을 더블 클릭해서 실행하게 되면 프로세스가 된다. 

프로세스가 되면서 PID를 부여받는다. (Process ID)

 

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

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

 

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

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

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

 

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

 

프로세스 관리자의 역할 

프로세스 생성 및 삭제 

프로세스 실행을 위한 스케줄 결정 

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

 

 

프로세스의 상태 (5가지)

생성 : 처음 작업이 시스템에 주어진 상태 (프로세스를 만들기 위한 준비단계)

준비 : 실행 준비가 되어 CPU 할당을 기다리는 상태 (자원 할당을 기다리는 단계)

실행 : 프로세스가 처리되는 상태 (명령어 처리단계)

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

대기 : 프로세스가 특정 자원을 할당받을때까지 , 입출력 작업이 끝날 때까지 작업이 보류되는 상태

 

디스패치  > 준비에서 실행으로 넘어가는 과정 , CPU를 할당하는 과정 

할당시간 만료 >  할당시간이 만료되거나, 높은 우선순위를 가진 프로세스에게 CPU를 반환하게 된 상태 

이벤트 대기 > CPU를 다썼지만, 입출력 등 느린 작업을 해야할때 CPU를 반납하고 이벤트를 대기

재개 조건 만족 > 이벤트 대기가 끝나고 다시 CPU를 받아서 다시 작업을 재개할 수 있을때 

 

프로세스 제어블록(PCB)

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

프로세스의 정보를 보관

각 프로세스마다 존재 

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

 

제어블록

: 상태, 번호(PID) , 프로그램 카운터(PC) : 다음번에 실행할 명령어의 위치가 어딘지 , 레지스터들, 메모리 관리 정보, 프로세스 우선순위, 회계정보 .....등등

 

프로세스 생성과 종료 

프로세스의 생성작업 

프로세스 이름 (PID) 결정

준비 큐에 삽입

초기 우선순위 부여 

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

 

생성방법 : 시스템 호출 

프로세스 생성 시스템 호출 

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

예 : fork()   -> 커널모드로 들어가서 운영체제가 프로세스를 만들어줌 

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

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

 

시스템 프로세스와 사용자 프로세스 모두 부모 프로세스가 될 수 있다. 

 

생성되는 프로세스의 자원 

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

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

 

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

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

 

프로세스 종료 

마지막 명령이 실행을 마치는 경우 

프로세스 종료 시스템 호출 (exit()) - 강제종료 

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

 

프로세스 종료 시스템 호출 

부모에 의해서만 호출 

자식 프로세스가 할당된 자원의 사용을 초과하거나, 더이상 필요하지 않을때

 

독립적 프로세스 유기적 프로세스
다른 프로세스의 영향을 주거나 받지 않음 다른 프로세스와 영향을 주고받음
다른 프로레스와 상태를 공유하지않음 다른 프로세스와 상태를 공유함
결정적, 재생가능 (다시 실행해서 똑같은 결과) 비결정적, 재생불가능 (매번 다른 결과)
다른 프로세스와 무관하게 중단 및 재시작 가능  다른 프로세스와 공유함

 

쓰레드 

전통적인 프로세스 

처리의 기본 단위 

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

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

 

 

쓰레드 (Thread)

프로세스 내에 여러가지 갈래를 만들어 다중처리를 위해 제안된 개념 

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

하나의 쓰레드 내에서 하나의 실행점만 존재 (프로세스 내에서 실행점이 여러개 존재할 수 있다 - 디스패칭의 단위가 프로세스에서 쓰레드로 바뀜) 

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

 

다중 스레드의 장점 

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

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

스케줄링

스케줄링 단계 

시스템에 들어오는 작업들을 쌓아둠 (자원 상황 파악)

> 상위단계 스케줄링 , 프로세스를 생성해서 준비큐에 전달한다.

시스템의 자원을 효율적으로 이용할 수 있도록 하는 것 

입출력 중심 작업과 연산 중심 작업을 균형있게 선택

> 하위단계 스케줄링 , 준비큐에 기다리는 프로세스에게 CPU 할당 

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

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

수행 주체 : 디스패처 (하위단계 스케줄링을 해주는)

> 중간단계 스케줄링 , 프로세스를 일시 중단 시켰다가 다시 넣어준다 

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

> 종료 

 

스케줄링 기본 목표 

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

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

 

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

대화형 : 빠른 응답시간 / 과다 대기시간 방지 

실시간 : 처리 기한을 맞춤 (즉각 처리)

 

선점 스케줄링 정책 

진행 중인 프로세스에 인터럽트를 걸어 다른 프로세스에 CPU 할당

높은 우선순위 프로세스를 긴급하게 처리하는 경우 

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

문맥 교환에 따른 오버헤드 발생 (CPU를 안뺏겼으면 일어나지 않을 일)

 

문맥? 

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

 

문맥교환? 

CPU의 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업 

 

 

비선점 스케줄링 

작업이 종료될 때까지 CPU를 빼앗을 수 없다. 

모든 프로세스가 공정하게 순서에 따라 실행 가능 > 응답시간 예측 가능 

짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음 

 

'컴퓨터과학 > 운영체제' 카테고리의 다른 글

운영체제 - 교착상태  (0) 2020.04.13
운영체제 Day 3  (0) 2020.04.11
운영체제 Day1  (0) 2020.04.02