일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BOJ
- Memozation
- DynamicProgramming
- 게임서버
- 문제풀이
- Java
- UnmanagedRanguage
- dp
- ManagedRanguage
- 동적계획법
- RALL
- 백준
- 알고리즘
- C/C++
- Today
- Total
devStory
[ 운영체제 ] 프로세스와 스레드 본문
프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위.
스레드는 할당 받은 작업을 이용하는실행하는 단위.
1. 프로세스 (Process)
: 실행중에 있는 프로그램
: 기본적으로 하나의 스레드(메인 스레드)를 가짐.
: 자신만의 고유 공간과 자원 할당 받음 (메모리가 할당되고, 할당 된 메모리 공간으로 바이너리 코드가 올라가는 순간부터 프로세스라고 불림)
- 메모리 공간과 자원 소비가 상대적으로 큼
2. 스레드 (Tread)
: 프로세스 내부의 작업의 흐름, 단위. (실제 작업을 수행)
: 각 프로세스 마다 적어도 한개 이상 존재.
: 여러개 있는것이 멀티스레드.
: 멀티 스레드에서 스택영역을 제외한 나머지 영역과 자원을 공유함.
- 메모리 공간과 자원 소비가 상대적으로 작음
- Context Switching 속도가 상대적으로 빠름 (Stack 영역만 스위칭 하면 되니까)
- but, 자원 공유로 인한 동기화 문제 발생, 디버깅이 어려움.
+ 프로세스 상태 변화
Context Switching?
- Context : 프로세스 제어를 위해 PCB에 저장되는 정보.
- Context Switching : 스케쥴러가 CPU를 다른 프로세스에 할당 할 때, 현재 프로세스의 문맥을 PCB에 저장하고 새로운 context의 PCB로 교체 하는 것.
PCB(Process Control Block)?
- 프로세스 실행에 필요한 제어 정보( 프로세스 상태, 프로세스 카운터 값, CPU 레지스터 값, CPU 스케쥴링 정보 등 )
를 저장하기 위한 공간.
- Running 중이던 프로세스가 Ready 혹은 Waiting 상태로 바뀌었을 때, 다시 Running 상태로 왔을 때를 위해 작업중이던 정보들을 저장하는 버퍼? 같은 것.
'운영체제' 카테고리의 다른 글
[운영체제] 프로세스 동기화 (Synchronization) (0) | 2018.10.16 |
---|---|
[운영체제] 스케줄링 알고리즘 ( Scheduling Algorithm) (0) | 2018.10.13 |