운영체제 3장 - 프로세스, 프로그램, 프로세스의 상태와 PCB
목차
3.1 프로세스 개념
3.2 프로세스 스케쥴링 (5장에서 상세히)
3.3 프로세스 연산
3.4 프로세스간 통신
3.5 IPC 시스탐 사례 - UNIX의 공유 메모리 함수
3.6 클라이언트-서버 시스템에서의 통신
3.1 프로세스 개념
프로세스와 프로그램
- 프로세스
- 운영체제로부터 자원을 할당받은 작업의 단위
- 운영체제로부터 메모리 공간을 할당받아 컴퓨터에서 실행중인 프로그램
- 실행 상태에 있는 능동적 개체, 연관된 자원 사용
- 메모리, CPU, 프로세스 관리용 자료구조 등
- Stack: 지역변수와 같은 임시 데이터 저장. 함수의 호출과 함께 할당되며, 호출이 완료되면 소멸함
- Heap : 실행시간동안에 동적 할당되는 메모리. 생성자, 인스턴스와 같은 동적으로 할당되는 데이터들을 위해 존재하는 공간
- Data : 전역변수나 각종 데이터를 저장함
.data, .BSS. rodata
로 세분화 됨.data
: 전역변수 또는 static 변수 등 프로그램이 사용하는 데이터를 저장.BSS
: 초기값 없는 전역변수, static 변수가 저장.rodata
: const같은 상수 키워드 선언된 변수나 문자열 상수를 저장
- Text/Code : 프로그래머가 작성한 코드가 기계어 형태로 저장됨
- 프로그램
- 파일을 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program), 줄여서 프로그램이라 부름
- 디스크에 파일로 저장된 수동적 개체
- 프로그램 파일 = 코드(text section) + 초기화 데이터 + 헤더정보 등
- 한개의 프로그램을 여러개의 프로세스로 실행할 수 있음
- text section은 같음. 같은 메모리 공유, 개별적 실행 시퀸스
- data, stack, heap section 은 각각 다름. 프로세스마다 개별적인 메모리 할당됨
프로세스 상태
- 생성, 실행, 대기, 준비, 종료 5가지 상태를 가지며 변화함
- 생성(new) : 프로세스가 생성중
- 실행(running) : 명령어가 실행되는 중
- 대기(waiting) : 어떤 사건(입출력 완료, 신호 수신등) 발생을 기다림
- 준비(ready) : 프로세스가 실행할 준비가 됨 -> CPU 할당을 기다림
- 종료(terminated) : 프로세스의 실행이 종료됨 -> 종료 후 처리를 기다림
- 한 CPU에서는 어떤 순간에 한 프로세스만 실행될 수 있다
프로세스 제어 블록(PCB)
- Process Control Block
- 프로세스에 대한 정보를 포함하는 OS 커널의 자료구조
- 태스크 제어 블록이라고도 함
- 프로세스 Context
- 프로그램의 실행 상태 정보를 저장
- PCB 정보
- Process state, Program Counter(PC), CPU registers, Memory-management 정보, CPU scheduling 정보, I/O status 정보, the list of allocated I/O devices, the list of I/O requests. the list of open files …
- 프로세스 간 CPU Switch ![[Pasted image 20240315172914.png]]
- 프로세스 0의 PCB_0 정보를 저장 후, 프로세스 1의 PCB_1를 가져옴
- 프로세스 0의 차례가 오면 다시 저장후 가져옴
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.