[혼공컴운] 4주차 - 프로세스와 스레드 (chapter 10)

회색몽구스·2023년 2월 4일
0

chapter 10 프로세스와 스레드

10-1 프로세스 개요

프로세스 직접 확인하기

사용자가 보는 앞에서 실행되는 프로세스 - foreground process (유닉스에서 데몬, 윈도우에서 서비스라고 부름)

사용자가 보지 못하는 뒤편에서 실행되는 프로세스 - background process

프로세스 제어 블록

운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 배분합니다. 이를 위해 운영체제는 프로세스 제어블록 (process control block: PCB)을 이용합니다.

PCB는 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기됩니다. 이런 PCB에는 어떤 정보들이 담길까요?

프로세스 ID (PID: process ID)는 특정 프로세스를 식별하기 위해 부여하는 고유한 번호입니다.

레지스터 값: 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들이 담깁니다.

프로세스 상태

CPU 스케줄링 정보

메모리 관리 정보

사용한 파일과 입출력 장치 목록

문맥 교환

기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 말합니다.

★프로세스의 메모리 영역★

코드 영역: 텍스트 영역이라고도 부릅니다. 기계어로 이루어진 명령어가 저장됩니다. 읽기 전용 공간입니다.

데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간입니다.

코드 영역과 데이터 영역은 크기가 고정된 영역이라는 점에서 정적 할당 영역이라고도 부릅니다. 힙과 스택은 크기가 변할 수 있어 동적 할당 영역이라고도 부릅니다.

힙 영역: 프로그래머가 직접 할당할 수 있는 저장 공간으로 사용한 후 해당 공간을 반환해야 합니다 (메모리 누수).

스택 영역: 데이터를 일시적으로 저장하는 공간으로 함수의 실행이 끝나면 사라지는 매개 변수, 지역 변수 등이 담깁니다.

일반적으로 힙 영역은 메모리의 낮은 주소에서 높은 주소로 할당, 스택 영역은 높은 주소에서 낮은 주소로 할당됩니다.

10-2 프로세스 상태와 계층 구조

프로세스 상태

생성 상태 (new) - 이제 막 메모리에 적재되어 PCB를 할당 받은 상태

준비 상태 (ready) - 자신의 차례를 기다리고 있는 상태

실행 상태 (running) - CPU를 할당받아 실행 중인 상태

대기 상태 (blocked) - 입출력 장치의 작업을 기다리는 상태

종료 상태 (terminated) - 프로세스가 종료된 상태

프로세스 상태 다이어그램 (process state diagram)

프로세스 계층 구조

프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있습니다. 이 때 새 프로세스를 생성한 프로세스를 부모 프로세스, 부모 프로세스에 의해 생성된 프로세스를 자식 프로세스라고 합니다.

프로세스가 프로세스를 낳는 계층적인 구조로서 프로세스들을 관리합니다.

프로세스 생성 기법

복제와 옷 갈아입기를 통해 실행됩니다. 부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성해 내고, 만들어진 복사본은 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체합니다.

10-3 스레드

프로세스와 스레드

하나의 프로세스가 한 번에 여러 일을 동시에 처리할 수 있게 되었습니다. 즉, 프로세스를 구성하는 여러 명령어를 동시에 실행할 수 있게 되었습니다.

프로세스의 스레드들은 실행에 필요한 최소한의 정보 (프로그램 카운터를 포함한 레지스터, 스택)만을 유지한 채 프로세스 자원을 공유하며 실행된다.

멀티프로세스와 멀티스레드

여러 프로세스를 동시에 실행하는 것을 멀티프로세스, 여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드라고 합니다.

여러 프로세스를 병행 실행하는 것보다 멀티스레드가 메모리를 더 효율적으로 사용할 수 있으며 프로세스의 자원을 공유하기 때문에 서로 협력과 통신에 유리하지만, 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있습니다.

profile
끄아아아아 할 수 있다

0개의 댓글