티스토리 뷰
프로세스(Process)
정의
- 운영체제에서 실행 중인 프로그램에 대한 인스턴스
- 운영체제로 부터 자원(주소공간, 파일, 메모리)을 할당 받는 작업 단위
- 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태
- 현재의 활동 상태를 나타내는 프로그램카운터(PC) 와 프로세서의 현재 활동(레지스터 내용)을 포함
*Dispatch : 준비 상태에서 실행 상태로 전이되는 과정, 작업 스케줄러가 해당 프로세스를 선택하여 실행되어지는
것으로 이때 실행된 프로세스가 CPU를 점유하게 됨
*Interrupt : 인터럽트 신호를 받게 되면 실행중이던 프로세스는 준비 상태로 전이되고,
우선순위(Priority)가 높은 프로세스를 실행 상태로 전이시킴
쓰레드(Thread)
정의
- 한 프로세스 내에서 동작되는 여러 실행의 흐름
- 프로세스 내의 주소공간이나 자원들을 대부분 공유하면서 실행 됨
- 프로세스에서 실행 제어만 분리한 실행 단위
- 기본적으로 하나의 프로세스가 생성되면 하나의 쓰레드가 같이 생성된다. 이를 메인 쓰레드라고 부른다
- 프로세스는 여러개의 쓰레드를 가질 수 있으며 이를 멀티 쓰레드라고 한다
- 경량 프로세스 라고도 부름
장점
- 시스템의 throughput이 향상된다
- 시스템의 자원소모가 줄어든다
- 프로그램 응답시간이 단축된다
- 프로세스 간 통신 방법에 비해 쓰레드 간 통신 방법이 훨씬 간단하다
단점(주의점)
- 여러 개의 쓰레드를 이용하는 프로그램을 작성하는 경우에는 주의 깊게 설계해야 한다
- 미묘한 시간차나 잘못된 변수를 공유함으로써 오류가 발생할 수 있다
- 쓰레드 간 통신에서 충돌 문제가 발생하지 않도록 동기화 문제를 해결해야 한다
- 프로그램 디버깅이 어렵다
- 단일 프로세스 시스템에서는 효과를 기대하기 어렵다
프로세스와 쓰레드의 차이점
- 프로세스는 완벽히 독립적이기 때문에 메모리 영역(Code,Data,Heap,Stack)을 다른 프로세스와 공유하지 않는다
- 쓰레드는 해당 쓰레드를 위한 스택을 생성할 뿐 그 이외의 Code,Data,Heap영역을 공유한다
* 스택 영역을 독립적으로 할당하는 이유
- 스택은 함수 호출 시 전달되는 인자, 되돌아 갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용 되는 메모리 공간이다
- 스택 영역이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 것이고,이는 독립적인 실행 흐름이 추가되는 것
- 결과적으로 실행 흐름의 추가를 위한 최소 조건이 독립된 스택을 제공하는 것이기 때문이다
* 코드 영역을 공유하는 이유
- 프로세스는 독립적인 구조이기 때문에 다른 프로세스의 Code영역에 있는 함수를 호출할 수 없다
- 쓰레드는 Code영역을 공유하기 때문에 두개 이상의 쓰레드가 자신이 포함된 프로세스의 Code영역에 있는 함수를 호출할 수 있다
* 데이터 영역과 힙 영역을 공유하는 이유
- 전역 변수와 동적 할당된 메모리 공간을 공유할 수 있고, 이를 통해 쓰레드 간 통신을 할 수 있다
- 대신 동시에 메모리에 접근하기 때문에 주의 해야 한다
'Development > 면접질문' 카테고리의 다른 글
Heap영역 & Stack영역 (2) | 2018.01.18 |
---|---|
Index란? (0) | 2017.06.30 |
- Total
- Today
- Yesterday
- 큐
- 스프링 부트 에러
- mysql데이터
- mysql데이터타입
- 해시알고리즘
- 400 badgateway
- mariadb데이터 타입
- mac mariadb
- spring boot org.springframework.beans.factory.BeanDefinitionStoreException
- 알고리즘
- mac mariadb 설치
- 400 error
- 스프링 부트 시작 에러
- org.springframework.beans.factory.BeanDefinitionStoreException
- mariadb설치
- mariadb
- 자료구조
- 데크
- hash algorithm
- mac db설치
- Data Structure
- spring boot 시작 에러
- mariadb 데이터타입
- mysql 세팅
- Stack
- 스택
- springframewor
- mysql 데이터 타입
- hash알고리즘
- HTTP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |