| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- factory
- 일급 객체
- 일급 컬렉션
- Dependency Injection
- OAuth 2.0
- Spring
- Google OAuth
- builder
- synchronized
- java
- Volatile
- spring security
- lombok
- Today
- Total
HJW's IT Blog
OS: Process 본문
Process 란?
프로세스는 OS에서 실행중인 프로그램을 의미한다. 즉, 컴퓨터에서 실행중인 어떤 특정 프로그램이 메모리에 로드되어 실행되고 있는상태를 의미한다.
프로세스는 OS의 프로세스 스케줄러에 의해 CPU 시간을 할당받아 실행된다. 이때, 필요한 자원을 사용하며 고유의 PID를 가지게 된다.
프로세스는 실행상태(execution state) 를 가지게 된다.
Process Creation/Termination
프로세스 생성 이유
- User log on
- User starts a program
- OS 가 서비스를 위해 생성
- 프로그램이 다른 프로세스 생성
프로세스 제거 이유
- 작업 완료
- 에러
- 유효하지 않은 실행
- 자원 부족
Two State Process Model
현제 프로세스의 상태를 두가지로 나눈다 - running, not running
Running 상태는 현재 CPU를 사용중인 상태로 실행중인 프로세스를 뜻한다. 이 상태일때, 다른 프로세스는 CPU를 사용하지 못한다.
Not Running 상태는 실행을 기다리는 상태로 대기중인 프로세스를 뜻한다.
처음 프로세스가 생성되면 not running state 이다

프로세스가 not running 상태일때는 두가지로 나눌 수 있다
- 준비되어 자기 차례를 기다리는중
- 어떤 특정한 일이 일어나길 기다리는중
- Wait for user to type in next key
- Wait for output to appear on the screen
Five State Process Model
이 모델은 프로세스를 5가지 상태로 나눈 모델이다
- New: 프로세스가 생성되어 메모리에 할당되기 전의 상태.
- Ready: Cpu를 살당받을 준비가 된 프로세스의 상태, Queue에 들어감
- Running: CPU를 할당받아 실행중인 상태
- Blocked: 특정한 이벤트가 발생하길 기다리는 상태
- Terminated: 프로세스의 실행이 완료되어 메모리에서 해제된 상태

Process State
프로세스 상태는 다음으로 구성된다
- Code
- 동적, 정적 데이터
- Call Stack
- Register의 내용
- PC의 내용
- SP의 내용
- Program Status Word(PSW) 의 내용
- 사용중인 OS 자원
PCB: Process Control Block
모든 프로세스에 대해 OS는 다음 데이터를 저장해 둔다
- PID
- UID
- Memory space
- PC, SP, general purpose registers
- Process State
- CPU schedule
- I/O states
UNIX Process Model

Created 에서 시작되어 Ready to Run In Memory 또는 Ready to Run Swapped로 가게 된다
- Ready to Run in Memory: Preempted랑 같다. Preempted란 프로세스가 user mode로 리턴 하는중 커널이 다른 프로세스로 돌린것이다
- Ready to Run Swapped: 새로운 프로세스에게 할당해 줄 메모리가 없을시에
스케쥴링이 되었을때, User Running 또는 Kernel Running 으로 간다
특정 이벤트를 기다리고 있을 때, Asleep in Memory 상태가 된다
Process Creation in UNIX
UNIX 에서는 하나의 프로세스가 다른 프로세스를 생성할 수 있다
- 생성된 프로세스는 본 프로세스와 거의 똑같은 형태를 띄게 된다
- Original Process = Parent
- New Process = Child
- Child 가 생성되었을 때, Parent는 실행되거나 Child 가 끝날때 까지 기다릴 수 있다.
- UNIX 에서는 fork()를 통해 child process를 만들게 된다.
'OS' 카테고리의 다른 글
| OS:Cooperating Process (0) | 2023.04.06 |
|---|---|
| CPU Scheduler (0) | 2023.04.03 |
| Frame Pointer, Stack Pointer (0) | 2023.04.02 |
| OS Management + System Call (0) | 2023.04.01 |
| OS 개요 (0) | 2023.03.31 |