///////
Search
🚌

레츠기릿

1-1.쓰레드란?

프로세스 내에서 실제로 작업을 수행하는 주체
 멀티쓰레드는 한 프로세스내에서 2개 이상의 쓰레드가 일을하는 것 / 일의 방식 = 병렬적으로
동시성 - 여러 개의 스레드가 번갈아가면서 실행되는 성질 → 콘텍스트 스위칭(Context Switching)
병렬성 - 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질
동시성(Single core) vs 병렬성(Multiple core)
각 쓰레드는 각각의 Stack을 보유한다.
쓰레드끼리 프로세스내 Heap, Data, Code 영역을 공유한다.
 pc registers ←- Programcounter registers

쓰레드마다 독립적으로 stack이 존재하는 이유

독립적인 함수 호출을 위해선 독립적인 실행 흐름이 추가되어야 한다. 독립적인 실행 흐름의 추가를 위한 최소 조건이 독립된 스택을 제공하는 것이다.

레지스터(register) 영역

CPU(Central Processing Unit)가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 영역입니다.
메모리 계층의 최상위에 위치하며, 가장 빠른 속도로 접근이 가능합니다.

스택(stack) 영역

메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.
이렇게 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 합니다.
스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다.
이러한 스택은 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됩니다.
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다.

힙(heap) 영역

메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역입니다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.
개발자가 직접 공간을 할당/해제하는 영역

데이터(data) 영역

메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.

코드(code) 영역

메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부릅니다.
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.

멀티쓰레드

하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것

멀티쓰레드 장점

메모리 자원 공유
멀티 쓰레드 방식은 stack을 제외한 메모리를 공유하기 때문에 쓰레드 간의 자원을 공유하는 것이 더 쉽고 빠르고, IPC 통신 같은 복잡한 작업이 필요 없다.
Context Switching 시 작업 부하가 적다.
멀티 스레드 방식은 context switching 시 stack 영역에 대해서만 처리를 하면 되기 때문에 작업 부하가 멀티 프로세스에 비해 적다. 멀티 프로세스 방식은 CPU 레지스터 뿐 아니라, RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화를 해야해서 오버헤드가 더 크다

Process란?

하나의 프로그램내에서 여러개의 실행 흐름을 두기 위한 모델
사용중인 파일, 데이터, 프로세서의 상태, 메모리 영역 주소 공간, 스레드 정보, 전역 데이터가 저장된 메모리 부분 등 수 많은 자원을 포함하는 개념
작업관리자에서 프로세스를 확인할 수 있다.
각각의 프로세스는 메모리 공간에서 독립적으로 존재한다(작업관리자 사진처럼).
프로세스의 안정성을 보장하기 위해서 프로세스는 독립된 메모리 공간을 가져야 한다.

멀티 프로세스

두개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것

멀티 프로세스 장점

높은 안전성
프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않는다
데이터 공유
여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(CPU)가 이를 공유하면 비용적으로 저렴하다.

프로세스 vs 쓰레드

우리가 해야할 답변

질문1. 프로세스를 설명해주세요.
질문1.1 프로세스의 4가지 메모리 영역을 설명해주세요.
질문2. 멀티 프로세스를 설명해주세요.(동시성을 바탕으로)
질문2.1 context, PCB(Process Control Block), contextSwitch 설명해주세요.
질문3. 멀티 쓰레드를 설명해주세요.(독립적인 stack 메모리와 PC(programcounter) register을 언급)
질문3.1 왜 stack 메모리만 독립적으로 필요할까요?
질문4. 멀티 프로세스와 멀티 쓰레드를 비교해서 설명해주세요.
질문4.1 프로세스와 쓰레드를 비교하여 설명해주세여
( 두 가지 방식은 상당히 유사합니다. 어느부분에서 차이가 있는지 생각해봅시다)
질문4.2 멀티프로세스가 멀티쓰레드보다 좋은점
질문4.3 멀티쓰레드가 멀티프로세스보다 좋은점
진혁
시윤
형상
소영
준하
아진