티스토리 뷰
용어
물리적
코어 : 물리적으로 존재하는 리소스로 연산을 하는 주체.
스레드 : 물리적인 개념에서 말하는 스레드는 인텔의 Hyperthreading이나 AMD의 SMT를 이용하여 물리적인 개념의 코어를 스레드의 개수만큼 곱해서 OS에게 그만큼의 논리적 코어를 이용할 수 있게 하는 개념.
e.g. 8코어가 존재하고 코어마다 2스레드라면 8코어 16스레드가 되고 OS는 16개의 코어로 인식.
논리적
프로세스 : 한 개 혹은 그 이상의 스레드에 의해 실행되고 있는 프로그램의 인스턴스를 프로세스라 한다.
스레드 : 프로세스 내에서 실질적인 연산을 하는 작업의 단위를 말한다.
컨텍스트 : 프로세스가 CPU에 의해 실행될 수 있는 모든 현재의 정보의 집합을 컨텍스트라 한다. 일종의 메타데이터라 볼 수 있다.
컨텍스트 스위칭 : 인터럽트가 발생하여 다른 프로세스를 실행시켜야 할 때 현재 프로세스의 컨텍스트를 저장하고 저장되어있는 다른 프로세스의 컨텍스트를 불러오는 것을 컨텍스트 스위칭이라 한다.
차이점
CPU와 메모리와 같은 리소스는 프로세스가 직접 접근할 수 없으며 OS에 의해 할당된 리소스만 해당 프로세스에서 접근이 가능하다.
이때 OS는 리소스(특히 메모리)를 추상화해서 관리하고 제공하므로 모든 프로세스는 OS에 의해 주어진 리소스만 접근할 수 있게 된다.
그러므로 프로세스의 리소스는 OS에 의해 관리된다는 점을 알 수 있다.
프로세스 내에서 태스크가 실행되는데 이때 태스크 실행의 주체를 스레드라 한다.
프로세스의 메모리에는 Code, Data, Heap, Stack 영역이 존재하는데 각각의 스레드는 개별의 Stack 공간만 할당되고 나머지 메모리는 공유하게 된다.
스레드의 자원은 OS에 의해 주어진 프로세스의 리소스를 최대로 한정지어지게 된다.
Stack은 함수 호출 시의 파라미터, 리턴값의 주소, 지역 변수 등을 담는 메모리 공간이므로 각 스레드마다 할당되는 것이다.
결론
프로세스끼리는 자원이 공유되지 않지만 스레드는 자원을 공유한다.
프로세스는 OS에 의해 자원이 관리되고 스레드는 프로세스에 의해 자원이 관리된다는 차이점이 있다.
레퍼런스
https://www.youtube.com/watch?v=x-Lp-h_pf9Q
https://www.cgdirector.com/cpu-cores-vs-logical-processors-threads/
'CS' 카테고리의 다른 글
트랜잭션 격리 수준 (0) | 2022.08.25 |
---|---|
배치나 스케줄러와 같은 cron daemon은 내부적으로 어떻게 동작할까? (0) | 2022.08.16 |
블로킹/동기 vs 논블로킹/비동기 (0) | 2022.08.06 |
브라우저에 google.com 요청을 보내면 발생하는 일련의 과정 (A to Z) (0) | 2022.08.06 |
왜 많은 DB의 인덱싱은 hashtable이 아닌 b-tree로 구현되어 있을까? (0) | 2022.08.04 |
- Total
- Today
- Yesterday
- vim
- 배포
- 아키텍처
- RequestParam
- lunarvim
- neovim
- ModelAttribute
- RequestBody
- 레디스
- 루나빔
- IDE
- Dap
- JavaScript
- RequestPart
- 도커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |