운영제체-2

2023. 3. 31. 14:03공부/운영체제

728x90
반응형

process & thread

 

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

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

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

 

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

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

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

 

운영체제가 처리하는 작업

프로세스 생성 및 종료

프로세스 실행 위한 스케줄링 작업 및 상태 관리

 

프로세스 구성

메모리 구조

프로그램 실행에 직접적으로 필요한 코드와 데이터

코드영역 = 프로그램 자체 (프로그램 소스가 있는 영역)

데이터 영역(정적데이터 영역, 스택영역, 힙영역) = 프로그램 실행 시 필요한 데이터(상수,변수 의 값 서브프로그램 호출 값)

 

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

운영체제가 프로세스 관리하기 위해 필요한 정보

 

프로세스 번호(PID) = 프로세스 구분자

프로세스 상태 = 상태

프로그램 카운터(PC) = 현재 시행중인 명령어의 다음 명령어의 위치를 제어 하고 있음

레지스터 = 레지스터 값들을 저장함

메모리 관리 정보 = 가상 메모리의 매핑 정보

프로세스 우선 순위 = 프로세스 우선 순위 정보

회계 정보

 

각 프로세스마다 존재

여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보 활용

 

프로세스 상태

 

생성 준비 실행 종료

 

대기

 

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

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

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

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

종료 : 프로세스가 더 이상 실행 되지 않도록 끝난 상태

 

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

프로세스 생성 방법

사용자가 프로그램을 직접 실행

한프로세스가 다른 프로세스를 생성

프로세스 생성 시스템 호출 이용

부모 프로세스 : 시스템 호출을 하는 프로세스

자식 프로세스 : 시스템 호출을 통해 새로 생성된 프로세스

 

프로세스 생성 시스템 호출

UNIX, Linux 명령어 : fork()

자식 프로세스는 부모 프로세스의 복제본

 

UNIX, Linux 명령어 : exec()

자식 프로세스는 부모 프로세스와는 다른 프로그램 실행

 

Windows : CreateProcess()

자식 프로세스 새로운 프로그램으로 생성

 

프로세스 종료 방법

프로세스가 모든 처리를 완료(정상적 종료)

부모 프로세스에 의해 자식 프로세스가 강제 종료

프로세스 종료 시스템 호출 이용

자식 프로세스 생성 시 얻은 자식 pid 이용

부모 프로세스가 종료되는 경우 운영체제가 자식 프로세스 종료

 

쓰레드(thread)

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

하나의 프로그램을 실행하기 위한 기본적인 단뒤

디스패칭의 단위

cf)자원 소유의 단위 : 프로세스

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

 

전통적인 프로세스 하나의 흐름으로 처리

쓰레드 있는 프로세스 하나 이상의 흐름 처리

쓰레드는 실행에 필요한 최소한의 정보만 가짐

pc를 포함한 레지스터 값

상태정보

스택 영역

나머지 정보는 프로세스에 두고 다른 쓰레드와 공유

 

다중 쓰레드로 구성된 프로세스

멀티 cpu또는 멀티코어 컴퓨터 시스템

다중 쓰레드를 병렬로 처리가능

처리속도 별로 쓰레드가 나눠진 경우

효율적인 처리 가능

 

 

 

 

 

 

728x90

'공부 > 운영체제' 카테고리의 다른 글

교착상태  (0) 2023.05.08
운영체제-5  (0) 2023.04.28
운영체제-4  (0) 2023.04.05
운영체제-3  (0) 2023.04.03
운영체제-1  (0) 2023.03.22