728x90
프로세스와 쓰레드의 차이는 무엇인가.
혹은
프로세스는 무엇이고 쓰레드는 무엇인가.
동아리 면접 때도 물어본 질문인데 이번에 운영체제 공부를 하면서
희미했던 그 차이를 조금은 명확히 머릿속에 그릴 수 있었다.
프로그램?
디스크에 저장되어있는 일련의 명령어들의 집합
이 자체로는 프로세스라 할 수 없다. 그럼 프로세스란 무엇인가?
그러면 프로세스란?
그 '프로그램'이 메모리(DRAM) 에 적재되어 실행 중인 프로그램이 프로세스이다.
말하자면 프로그램은 실행중이지 않은, 동작되고 있지 않은 정적인 개체
프로세스는 실행중이기 때문에 동적인 개체라고 나누어 표현할 수 있다.
스레드란?
프로세스 내의 하나의 실행의 흐름 단위
멀티프로세싱(Processing) 과 멀티스레드(Thread)
멀티스레딩은 하나의 프로세스 -> 여러 스레드. CPU에 여러 쓰레드가 동시에 할당되어 동시에 처리 됨을 말하는 것이다.
기본적으로 Heap / code / global data 를 공유한다.
멀티프로세싱은 하나의 프로그램 -> 여러 프로세스로 쪼개어 각 프로세스가 하나의 작업을 담당하여 나중엔 그 결과들을 합치게 된다.
각각의 독립적인 메모리 영역을 차지한다.
틀린 부분이 있다면 부족한 저에게 깨달음을 주시길 부탁드립니다.
'프로그래밍 > ETC' 카테고리의 다른 글
[UNIX] signal() 함수와 signal handler 를 사용해보자 (0) | 2020.06.04 |
---|---|
[VScode] Putty 말고 VScode 로 ssh 서버 원격 접속하기 (0) | 2020.04.26 |
[VScode] WSL VScode 에서 g++11 디버깅하기 (0) | 2020.04.18 |
[파이썬] 숫자야구 만들기 (0) | 2019.12.25 |
[GitHub] GitHub 주요 개념 / 용어 정리 (0) | 2019.09.08 |