10-1. 프로세스 개요
- 프로세스 : 실행중인 프로그램.
- foreground process : 사용자가 보는 앞에서 실행되는 프로세스
- background process : 사용자가 보지 못하는 뒤에서 실행되는 프로세스
- 유닉스 체계의 운영체제 : 데몬 (daemon)
- 윈도우 운영체제 : 서비스 (service)
- 프로세스 제어 블록 (PCB : Process Control Block)
- 프로세스와 관련된 정보를 저장하는 자료 구조.
- 대표적으로 프로세스ID, 레지스터 값, 프로세스 상태, CPU 스케쥴링 정보, 메모리 관리 정보, 사용한 파일과 입출력 장치 목록 등을 저장. (운영체제마다 조금씩 다름)
- 문맥 교환
- 문맥(context) : 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
- 실행 프로세스 변경시, 기존 프로세스의 문맥을 PCB에 백업, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 문맥교환이라 한다.
- 프로세스의 메모리 영역
- 코드 영역 : 텍스트 영역 (텍스트 메모리), CPU가 실행할 명령어가 담겨있어 읽기 전용 공간.
- 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터, 전역 변수가 저장되는 공간.
- 코드 영역과 데이터 영역을 일러 정적 할당 영역이라고도 함.
- 힙 영역 : 프로그래머가 직접 할당할 수 있는 공간 (Java에서 new 를 통해 인스턴스를 생성하는 공간) 메모리 누수의 위험성 있음.
- 스택 영역 : 데이터를 일시적으로 저장하는 공간, 지역변수, 매개변수 등을 포함.
- 힙 영역과 스택 영역은 크기가 가변적이므로, 동적 할당 영역이라고도 함.
10-2. 프로세스 상태와 계층 구조
- 프로세스 상태
- 생성 상태 (new) : 메모리에 적재되어 PCB를 할당받는 상태.
- 준비 상태 (ready) : 당장이라도 CPU를 할당받아 실행할 수 있는 상태.
- dispatch : 준비 상태인 프로세스가 실행 상태로 전환되는 것.
- 실행 상태 (running) : CPU를 할당받아 실행 중인 상태. 할당된 시간이 끝나면 준비 상태가 되고, 실행 도중 입출력 장치를 사용하여 기다려야 한다면 대기 상태가 된다.
- 대기 상태 (blocked) : 입출력 장치의 작업을 기다리는 상태.
- 종료 상태 (terminated) : 프로세스가 종료된 상태.
- 프로세스 계층 구조
- 프로세스가 실행 도중 시스템 호출을 통해 다른 프로세스를 생성한 경우, 새 프로세스를 생성한 프로세스는 부모 프로세스(parent process), 생성된 프로세스는 자식 프로세스(child process)가 됨.
- PPID (Parent PID)
- PPID (Parent PID)
- 프로세스 계층 구조 : 프로세스의 부모 자식 관계를 알 수 있도록 만든 트리구조의 도표.
- 프로세스가 실행 도중 시스템 호출을 통해 다른 프로세스를 생성한 경우, 새 프로세스를 생성한 프로세스는 부모 프로세스(parent process), 생성된 프로세스는 자식 프로세스(child process)가 됨.
- 프로세스 생성 기법
- 자식 프로세스들은 복제와 옷 갈아입기 과정을 통해 실행.
- fork : 부모 프로세스들은 자신의 복사본을 자식 프로세스로 생성.
- exec : 자식 프로세스는 자신의 메모리 공간을 다른 프로그램으로 교체.
10-3. 스레드
- 스레드(thread) : 프로세스를 구성하는 실행의 흐름 단위.
- 프로세스와 스레드
- 단일 스레드 프로세스 : 프로세스 실행의 흐름 단위가 하나.
- 멀티 스레드 프로세스 : 프로세스 실행의 흐름 단위가 여럿으로, 각 스레드는 실행에 필요한 최소한의 정보 (프로그램카운터를 포함한 레지스터, 스택) 만을 유지한 채 프로세스 자원을 공유하며 실행.
- 멀티프로세스와 멀티스레드
- 멀티 프로세스 : 여러 프로세스를 동시에 실행하는 것.
- 단일 프로세스 멀티스레드 vs 멀티프로세스 단일스레드
- 후자는 메모리에 동일한 내용들이 중복해서 존재하여 낭비.
- 전자는 프로세스 자원을 공유하여 효율적인 작업 가능.
- 멀티 프로세스 : 여러 프로세스를 동시에 실행하는 것.
참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)
'CS지식 > 운영체제' 카테고리의 다른 글
| 운영체제 Ch.6 가상 메모리 (0) | 2023.01.30 |
|---|---|
| 운영체제 Ch.5 교착 (0) | 2023.01.30 |
| 운영체제 Ch.4 동기화 (0) | 2023.01.29 |
| 운영체제 Ch.3 CPU 스케쥴링 (0) | 2023.01.28 |
| 운영체제 Ch.1 운영체제 시작하기 (0) | 2023.01.17 |