반응형
프로세스 (Process)
- 개념 : 리눅스 등의 멀티 프로세싱 운영체제에서 실행 중인 프로그램에 대한 인스턴스
- 자원 :
- 자신만의 고유 공간과 자원을 할당받아 사용
- 코드, 데이터, 스택, 힙 영역을 고유하게 가짐
스레드 (Thread)
- 개념 : 한 프로세스 내에서 동작되는 여러 실행의 흐름
- 자원 :
- 다른 스레드와 공간과 자원을 공유하여 사용
- 코드, 데이터, 힙 영역을 공유
- 장점
시스템의 throughput이 향상
프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다.
전역 변수를 이용하여 규현
프로그램의 응답 시간이 단축
시스템의 자원 소모가 줄어듬
단점
미묘한 시간 차나 잘못된 변수를 공유함으로써 오류가 발생할 수 있음
프로그램 디버깅이 어려움
단일 프로세서 시스템에서는 효과를 기대하기 어려움
컨텐스트 스위칭 (Context Switching)
- A프로세스가 CPU를 사용 중인 상태에서 B프로세스가 CPU를 사용하기 위해, A프로세스의 상태를 보관하고 B프로세스의 상태를 적재하는 작업
- Ready 상태인 B 프로세스가 존재하고, Running 상태인 A 프로세스가 존재하는데 인터럽트 요청에 의해 서로 상태가 전이되는 상황
- CPU 내의 레지스터들(Register Set)에는 현재 실행중인 프로세스의 관련 데이터들이 들어가는데, B 프로세스가 Ready 상태가 되면 현재 레지스터에 저장된 A 프로세스의 데이터들을 메모리 공간에 저장해두고, B 프로세스의 레지스터 값을 메모리에서 CPU로 적재
- 컨텍스트 스위칭이 일어나는 동안 CPU는 아무런 일을 하지 못하며, 컨텍스트 스위칭은 CPU에 많은 부하를 가져다 줌 (멀티 프로세스 운영체제의 단점)
- 컨텍스트 스위칭의 시간은 레지스터의 수나 메모리의 속도 등에 좌우됨
스레드가 프로세스보다 빠른 이유
context-switching에는 느리고 시간이 걸리는데 동작중인 스레드가 전환될 때, 스레드는 프로세스와 마찬가지로 컨텍스트 스위칭을 수행한다.
그러나 스레드의 컨텍스트 정보는 프로세스보다 작기 때문에 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭보다 빠르다.
Reference
[1] Process vs Thread (https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html)
[2] Context swithing (https://ko.wikipedia.org/wiki/%EB%AC%B8%EB%A7%A5_%EA%B5%90%ED%99%98)
반응형
'Computer Science' 카테고리의 다른 글
JVM 메모리 구조 (JVM Memory structure) (0) | 2017.09.30 |
---|---|
DB 트랜잭션 (Transaction)의 ACID 속성과 분산시스템 BASE 속성 (0) | 2017.09.30 |
OOP(객체 지향 프로그래밍) 5원칙 및 특성 (0) | 2017.09.30 |
Java 자료구조 비교 (0) | 2017.09.30 |
TCP vs UDP (0) | 2017.09.30 |
TCP 3 Way-Handshake & 4 Way-Handshake (0) | 2017.09.30 |
OSI 7 계층 (OSI 7 Layer) (0) | 2017.09.29 |
64비트와 32비트의 차이 (0) | 2017.09.29 |
퀵 정렬, 퀵 소트(Quick Sort) (0) | 2017.09.21 |
계수정렬, 카운팅 소트(Counting Sort) (0) | 2017.09.21 |