10. 프로세스와 스레드
10-1. 프로세스 개요
- 우리가 실행 중인 프로그램을 ‘프로세스’라고 함
- 포그라운드 프로세스 : 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- 백그라운드 프로세스 : 보이지 않는 공간에서 실행되는 프로세스
- 유닉스에서는 데몬
- 윈도우에서는 서비스라고 부름
프로세스 제어 블록 (PCB)
- 운영체제는 번갈아 수행되는 프로세스틔 실행순서를 관리
- 프로세스에 CPU 비롯한 자원 분배 필요
⇒ 프로세스 제어 블록 이용
- 프로세스 제어 블록 : 프로세스와 관련된 정보를 저장하는 자료구조
- 상품에 달린 태그와 비슷한 역할
- PCB에 담기는 정보들
- 프로세스ID (PID)
- : 프로세스 식별을 위해 부여하는 고유한 번호
- 레지스터값
- 이전까지 사용한 레지스터의 중간값 모두 복원
- 그래야 그대로 이어 실행할 수 있음
- 프로세스 상태
- CPU 스케줄링 정보
- 메모리 관리 정보
- 프로세스마다 메모리에 저장된 위치가 다르기 때문
- 사용한 파일과 입출력장치 목록
문맥 교환
- 문맥 : 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
- PCB에 기록되는 정보들
- 인터럽트 발생 → 운영체제는 해당 프로세스의 PCB에 문맥을 백업
- → 프로세스의 문맥 복구
⇒ 문맥 교환
- 여러 프로세스가 끊임없이 빠르게 번갈아가며 실행되는 원리
프로세스의 메모리 영역
- 사용자 영역에 프로세스 배치되는 방법은?
- 사용자 영역은 코드, 데이터, 힙, 스택 영역으로 나뉨
- 코드 영역
- 기계어로 이루어진 명령어 저장
- 읽기 전용 공간
- = 텍스트 영역
- 데이터 영역
- 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
- ex) 전역변수
- 코드, 데이터영역은 정적 할당 영역
- 크기가 고정된 영역
- 힙 영역
- 프로그래머가 직접 할당할 수 있는 저장 공간
- 힙 영역에 메모리 공간을 할당했다면
- 언젠가는 공간 반환 필요
- 그렇지 않으면 메모리 낭비 초래
- ⇒ 메모리 누수
- 스택 영역
- 데이터를 일시적으로 저장하는 공간
- 힙, 스택 영역은 동적 할당 영역
- 크기가 변할 수 있음
10-2. 프로세스 상태와 계층 구조
- 운영체제는 동시에 실행되는 수많은 프로세스를 계층적으로 관리
프로세스 상태
- 생성 상태
- 이제 막 메모리에 적재되어 PCB 할당받은 상태
- 생성 상태를 거쳐 실행 준비가 완료된 프로세스는 ‘준비 상태’가 됨
- : 프로세스 생성 중
- 준비 상태
- : CPU 할당받아 실행할 수 있지만, 아직 자신의 차례가 아니라 기다리고 있는 상태
- 실행 상태
- : CPU를 할당받아 실행 중인 상태
- 대기 상태
- : 입출력장치의 작업을 기다리는 상태
- 종료 상태
- : 프로세스가 종료된 상태
프로세스의 계층 구조
- 프로세스는 실행 도중 다른 프로세스 생성 가능
- 생성한 프로세스 : 부모 프로세스
- 생성된 프로세스 : 자식 프로세스
- 많은 운영체제는 프로세스가 프로세스를 낳는 계층적인 구조로써 프로세스 관리
프로세스 생성 기법
- 부모 프로세스 - fork를 통해 자신의 복사본을 자식 프로세스로 생성
- 자식 프로세스 - exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체
- exec 호출 시 코드영역과 데이터 영억의 내용이 실행할 프로그램의 내용으로 바뀜/ 나머지 영역 초기화
- 부모, 자식 프로세스를 실행하며 계층 구조를 이루는 것
- fork와 exec가 반복되는 과정
10-3. 스레드
- 스레드 : 프로세스를 구성하는 실행의 단위
프로세스와 스레드
- 단일 스레드 프로세스 : 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행
- 스레드 개념 도입 → 하나의 프로세스가 한번에 여러 일 동시에 처리 가능해짐 (멀티 스레드 프로세스)
- ⇒ 프로세스를 구성하는 여러 명령어를 동시에 실행 가능해짐
- 스레드 구성요소
- 스레드 ID
- 프로그램 카운터 값을 비롯한 레지스터 값
- 스택
- 프로세스 내에서 각기 다른 구성요소를 갖고 있기에 스레드마다 각기 다른 코드 실행 가능
- 스레드들은 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행
멀티 프로세스와 멀티 스레드
- 멀티 프로세스 : 여러 프로세스 동시 실행
- 멀티 스레드 : 여러 스레드로 프로세스 동시 실행
- 멀티프로세스와 멀티스레드 차이
- 프로세스는 자원 공유 X
- 독립적 실행
- 스레드는 자원 공유
- 서로 협력과 통신에 유리
- 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있음
- 프로세스는 자원 공유 X
반응형
'Data Engineering > 혼공컴운' 카테고리의 다른 글
혼자 공부하는 컴퓨터구조 + 운영체제 12장 정리 (0) | 2025.04.01 |
---|---|
혼자 공부하는 컴퓨터구조 + 운영체제 11장 정리 (0) | 2025.04.01 |
혼자 공부하는 컴퓨터구조 + 운영체제 9장 정리 (0) | 2025.04.01 |
혼자 공부하는 컴퓨터구조 + 운영체제 8장 정리 (0) | 2025.02.05 |
혼자 공부하는 컴퓨터구조 + 운영체제 7장 정리 (0) | 2025.01.20 |