Search
🏫

[운영체제] 2. 프로세스와 스레드

Created
2023/04/06 13:21
Tags
CS
Operation System
Last edited time
2023/07/19 10:49
Status
Done
Search
[운영체제] 14. 운영체제 보안
CS
Operation System
2023/06/07 12:24
[운영체제] 14. 운영체제 보안
CS
Operation System
2023/06/07 12:24

1. 프로세스

1.1. 프로세스의 개요

프로세스(process): 실행중인 프로그램
프로그램: 동작을 하지 않는 정적/수동적 개체
프로세스: 동작을 하는 능동적 개체
운영체제로 부터 자원을 할당 받아 동작
자원: CPU, 메모리, 입출력장치, 파일 등
동작: CPU가 프로세스의 명령을 실행

1.2. 프로세스와 운영체제

운영체제(프로세스 관리자)가 처리하는 작업
프로세스 생성 및 종료
프로세스를 실행 시키기 위한 스케줄링 작업
프로세스의 상태 관리

1.3. 프로세스의 구성

메모리 구조
프로그램 실행에 직접적으로 필요한 코드와 데이터
코드 영역
프로그램 자체
데이터 영역
프로그램 실행 시 필요한 데이터
상수나 변수 값
서브프로그램 호출 상태 등
구성
정적 데이터
스택
프로세스 제어 블록 (Process Control Block: PCB)
운영체제가 프로세스를 관리하기 위해 필요한 정보
각 프로세스마다 존재
여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보 활용

1.4. 프로세스 상태 관리

생성
처음 작업이 시스템에 주어진 상태
준비
실행 준비가 되어 CPU 할당을 기다리는 상태
실행
프로세스가 처리되는 상태
대기
프로세스가 I/O 작업이 끝날 때까지 또는 특정 자원을 할당 받을 때 까지 보류되는 상태
종료
프로세스가 더이상 실행되지 않도록 끝난 상태
프로세스 상태 변화

1.5. 부모 프로세스와 자식 프로세스

프로세스 생성 방법
1.
사용자가 프로그램을 직접 실행
2.
한 프로세스가 다른 프로세스를 실행
프로세스 생성 시스템 콜 이용
부모 프로세스
시스템 콜을 하는 프로세스
자식 프로세스
시스템 콜을 통해 새로 생성된 프로세스
프로세스 종료 방법
1.
프로세스가 모든 처리를 완료(정상적 종료)
2.
부모 프로세스에 의해 자식 프로세스가 강제 종료
프로세스 종료 시스템 콜 이용
자식 프로세스 생성시 얻은 자식 PID 이용
3.
부모 프로세스가 종료되는 경우, 운영체제가 자식 프로세스 종료

1.6. 프로세스 생성 시스템 호출

UNIX, Linux
fork()
자식 프로세스는 부모 프로세스의 복제본
자식 프로세스는 PID만 다름
UNIX, Linux
exec()
자식 프로세스는 부모 프로세스와는 다른 프로그램 실행
Windows
CreateProcess()
자식 프로세스는 새로운 프로그램으로 실행

2. 스레드

2.1. 전통적인 프로세스

하나의 프로그램을 실행하기 위한 기본적인 단위
자원소유의 단위
하나의 메모리 구조
디스패칭의 단위
하나의 제어 흐름
프로세스 내 다중 처리 불가능

2.2. 스레드

프로세스 내에서 다중 처리를 위해 제안된 개념
하나의 프로그램을 실행하기 위한 기본적인 단위
디스패칭의 단위
CPU를 할당받아서 명령어를 처리하는 것
스레드별로 디스패칭 받아서 처리 가능
자원 소유의 단위는 여전히 프로세스
하나의 프로세스에는 하나 이상의 스레드 존재
스레드에는 별도의 스택이 존재 (데이터, 힙은 공유)

2.3. 프로세스 비교

전통적인 프로세스
하나의 PC를 가지고 디스패칭
스레드가 있는 프로세스
프로세스 안에 스레드가 PC를 가지고 있음

2.4. 스레드와 프로세스

스레드는 실행에 필요한 최소한의 정보만 가짐
PC를 포함한 레지스터 값
상태 정보
스택 영역
나머지 정보는 프로세스에 두고 다른 스레드와 공유

2.5. 멀티 스레드

멀티 CPU 또는 멀티 코어 컴퓨터 시스템
다중 스레드를 병렬로 처리 가능
처리 속도 별로 스레드가 나눠진 경우
효율적인 처리 가능