Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 순열
- 자료구조
- 동적계획법
- 알고리즘
- C++
- 청년내일채움공제
- 정보처리기사개정
- leetcode
- array
- 막대기자르기
- 회사폐업
- 실업인정인터넷신청
- 생애첫계약
- 후니의쉽게쓴시스코라우팅
- 실업급여
- 후니의쉽게쓴시스코네트워킹
- 프로그래머스
- 코딩테스트
- 사회초년생
- 모여봐요동물의숲
- 전화영어
- 캡쳐링
- 취업사실신고
- 자취준비
- IT기초
- 부분합알고리즘
- 튜터링
- 네트워크
- 정보
- HeadFirstDesignPatterns
Archives
- Today
- Total
따봉도치야 고마워
프로세스(Process)와 쓰레드(Thread)의 차이 본문
각각의 정의는 알고 있었는데 차이점을 물어보니까 대답을 잘못하겠어서 정리하는 글!
*프로세스(Process)
- 컴퓨터에서 연속적으로 실행되고 있는 프로그램의 단위
- 실행될 때 운영체제에서 각각 독립된 메모리 영역을 할당 받음
*쓰레드(Thread)
- 프로세스 내에서 실행되는 작업의 단위
- 각각 Stack만 따로 할당 받고 Code, Heap, Data 영역은 공유함
두 번째 줄의 차이가 큰 것 같다.
특히 멀티프로세스와 멀티쓰레드를 비교할 때 차이가 더 느껴짐
*멀티프로세스
- 하나의 응용프로그램을 여러 개의 프로세스로 구성해 각 프로세스가 하나의 작업을 처리
- 장점 :
- 여러 개 자식 프로세스 중 하나에 문제가 발생해도 그 자식 프로세스만 죽고 다른 영향X
- 단점 :
- *ContextSwitching(문맥교환) 시 무거운 작업이 진행되고 많은 시간이 소모 되어 오버헤드 발생
- 프로세스는 각각 독립된 메모리 영역을 할당받아 ContextSwitching 발생 시 캐쉬 메모리 리셋하고 다시 불러와야함
- 프로세스는 각각 독립된 메모리 영역을 할당받아 서로 자원을 공유할 수 없음 (IPC 통신 필요)
*멀티쓰레드
- 하나의 응용프로그램을 여러 개의 쓰레드로 구성해 각 쓰레드가 하나의 작업을 처리
- 장점 :
- 시스템 자원소모/처리량 감소
- 쓰레드 간 통신이 상대적으로 비용이 적고, 작업량이 적어 ContextSwitching이 빠름
- 스택 외 모든 메모리를 공유하기 때문에 통신의 부담이 적음
- 단점 :
- 주의 깊은 설계가 필요하고 디버깅이 어려움
- 자원 공유의 문제 (동기화)
- 하나의 쓰레드에 문제 발생 시 전체 프로세스 영향 받음
ContextSwitching(문맥 교환) ?
CPU가 다른 프로세스를 사용하기 위해, 현재 프로세스의 상태(문맥)을 보관하고, 새로운 프로세스의 상태를 적재하는 작업
= 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정
* 자원의 효율성을 높이고 처리 비용 및 응답 시간을 단축 시키기 위해 멀티프로세스 < 멀티쓰레드 사용
*결론적으로 두 개 차이점을 물어본다면 메모리 공유 관련해서 이야기를 풀어나가면 되지 않을까? 라고 생각중
'프로그래밍 > 공부' 카테고리의 다른 글
[디자인패턴] 디자인패턴이란? (2) | 2020.03.02 |
---|---|
교착상태(DeadLock)란? (0) | 2020.02.26 |
[자료구조]해시테이블 (HashTable)이란? (0) | 2020.02.25 |
배열과 리스트의 차이 (2) | 2020.02.25 |
[c/c++] 배열 한번에 초기화하는 법 (0) | 2020.02.18 |
Comments