1. 프로세스 : 실행 중인 프로그램
윈도우즈의 작업관리자 : 현재 내 PC에서 동작하는 프로세스의 정보를 알려줌
현재 사용하고 있는 프로세스가 얼만큼의 CPU, 메모리, 디스크, 네트워크을 사용하는지 나타냄
PID (프로세스 아이디) : 프로그램은 고유의 실행하는 동안 고유의 PID를 가짐
프로그램: 동작을 하지 않는 정적, 수동적 개체
프로세스: 동작을 하는 능동적 개체
프로세스는 운영체제로부터 자원(CPU, 메모리, 입출력장치, 파일 등)을 할당받아 동작(CPU가 프로세스의 명령을 실행)
운영체제(프로세스 관리자)가 해야할 일
- 프로세스 생성, 종료, 실행을 위한 스케줄링 작업, 상태관리
프로세스의 구성(2가지)
1. 메모리 구조 :
- 프로그램 실행에 필요한 코드(프로그램 자체)와
- 데이터(프로그램 실행할 때 필요한 데이터-정적 데이터영역, 스택영역, 힙영역으로 구분 됨)
2. 프로세스 제어 블록 (process control block: PCB) : 운영체제가 프로세스를 관리하기 위해 필요한 정보
- 프로세스번호(PID) : 메모리를 구분
- 프로세스 상태 : 동작중인지 대기중인지 상태를 관리함
- 프로그램 카운터(PC) : 현재 실행중인 명령어의 다음 명령어를 가리킴
- 레지스터 : 명령어의 값들을 보관
- 메모리 관리 정보
- 프로세스 우선순위
- 회계 정보
프로세스 상태 (5가지)
- 생성 : 처음 작업이 시스템에 주어진 상태 . (PID 할당, 메모리 할당 및 메모리에 데이터 불러옴)
- 준비 : 실행 준비가 되어 CPU 할당을 기다리는 상태 (준비 큐)
- 실행 : 프로세스가 처리되는 상태. (프로그램의 명령어를 처리함)
- 대기 : 프로세스가 I/O 작업이 끝날 때까지 또는 특정 자원을 할당받을 때까지 보류되는 상태
- 종료 : 프로세스가 더 이상 실행되지 않도록 끝난 상태
프로세스 생성방법 :
- 사용자가 프로그램 직접 실행
- 한 프로세스(부모 프로세스)가 다른 프로세스(자식 프로세스) 생성
프로세스 생성 시스템 호출 : UNIX 와 Windows는 프로세스 생성하는 방법이 다름
- UNIX, Linux: fork() : 자식 프로세스는 부모 프로세스의 복제본, 부모와 달라지는 것은 PID!
- UNIX, Linux: exec() : 자식 프로세스는 부모 프로세스와는 다른 프로그램 생성
- Windows: CreateProcess() : 자식 프로세스는 새로운 프로그램 생성
프로세스 종료방법
- 모든 처리 완료 후 정상적 종료
- 부모 프로세스에 의해 자식 프로세스가 강제 종료(자식 PID를 이용해 종료 시스템 호출 이용)
- 부모 프로세스가 먼저 종료되는 경우 운영체제가 자식 프로세스 종료
2. 쓰레드
전통적인 프로세스:
- 하나의 프로그램을 실행하기 위한 기본적인 단위
- 자원 소유의 단위(하나의 메모리 구조)이며 디스패칭(하나의 제어흐름)의 단위
쓰레드 : 프로세스 내에서 다중처리를 위해 제안된 개념
하나의 프로세스 안에 자원소유의 단위(메모리구조), PCB, 디스패칭(하나 이상의 쓰레드)가 존재함
쓰레드는 생행에 필요한 최소한의 정보만 가짐
- PC를 포함한 각각의 레지스터 값, 상태, 스택을 포함함.
- 나머지 정보는 프로세스(코드영역과 정적 영역)에 두고 다른 쓰레드와 공유
다중 쓰레드로 구성된 프로세스 (효율적임)
- 멀티 CPU 또는 멀티코어 컴퓨터 시스템 -> 다중 쓰레드로 병렬로 처리 가능
- 처리속도 별로 쓰레드가 나눠진 경우 -> 계산용 쓰레드, 입력용 쓰레드, 백업용 쓰레드
'방송대 > 운영체제' 카테고리의 다른 글
3강. 프로세스 스케줄링 (0) | 2023.04.04 |
---|---|
3강. 프로세스 스케줄 (0) | 2023.03.29 |