1-1.쓰레드란?
프로세스 내에서 실제로 작업을 수행하는 주체
병렬성 - 한 개 이상의 스레드를 포함하는 각 코어들이 동시에 실행되는 성질
동시성(Single core) vs 병렬성(Multiple core)
쓰레드마다 독립적으로 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 시 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 멀티쓰레드가 멀티프로세스보다 좋은점
진혁
시윤
형상
소영
준하
아진