Chapter10. 프로세스와 스레드
학습목표
- 프로세스 제어 블록이란 무엇인지 이해합니다
- 문맥 교환의 정의와 과정을 학습합니다
- 프로세스는 메모리에 어떻게 배치되는지 학습합니다
- 프로세스 상태와 프로세스 계층 구조를 학습합니다
- 스레드의 개념을 이해하고, 멀티프로세스와 멀티스레드의 차이를 이해합니다
프로세스 제어 블록
- 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 할당함.
- 이를 위해 운영체제는 프로세스 제어블록(PCB)를 이용
- 프로세스 제어 블록**(PCB)**은 프로세스와 관련된 정보를 저장하는 자료 구조
- 마치 상품에 달린 태그와 같음
- PCB는 커널 영역에서 생성됨
- 새로운 프로세스를 생성했다 → 운영체제가 PCB를 생성했다
문맥 교환
- 운영체제는 빠르게 프로세스의 실행순서를 관리함
- 프로세스 A에서 B로 바꿀때 A의 실행정보를 백업해야함
- 이러한 중간 정보, 즉 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보를 **‘문맥’**이라 함
- 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 **‘문맥 교환’**이라고 함
- 문맥 교환은 여러 프로세스가 끊임없이 빠르게 번갈아 실행되는 원리임
프로세스의 메모리 영역
- 프로세스가 생성되면 커널 영역에 PCB가 생성됨
- 사용자 영역에는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됨
- 정적 할당 영역 (크기가 고정된 영역)
- 코드 영역: 텍스트 영역이라 불림. 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장 됨
- CPU가 실행할 명령어가 담겨 있기 때문에, 읽기 전용 공간
- 데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
- 대표적으로 전역 변수(프로그램이 실행되는 동안 유지되며, 프로그램 전체에서 접근 가능한 변수)
- 코드 영역: 텍스트 영역이라 불림. 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장 됨
- 동적 할당 영역
- 힙 영역
- 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장 공간
- 메모리 공간을 할당 했다면 언젠간 반납해야 함
- 반납하지 않는다면 메모리 누수 발생
- 스택 영역
- 데이터를 일시적으로 저장하는 공간
- 매개변수, 지역변수
- 데이터를 일시적으로 저장하는 공간
- 힙 영역
프로세스 상태
- 프로세스는 생성, 준비, 실행, 대기, 종료 상태를 거치며 실행됩니다
스레드
- 스레드란 프로세스를 구성하는 실행의 흐름 단위
[비교] 멀티프로세스와 멀티스레드
'코딩공부 > 운영체제' 카테고리의 다른 글
Chapter15. 파일 시스템 (1) | 2024.10.25 |
---|---|
Chapter14. 가상 메모리 (1) | 2024.10.25 |
Chapter13. 교착 상태(데드락) (0) | 2024.10.24 |
Chapter12. 프로세스 동기화 (0) | 2024.10.24 |
Chapter09. 운영체제 시작하기 (0) | 2024.10.24 |