프로세스 vs 쓰레드

프로그램- 피자 레시피, 코드 파일 // 프로세스- 피자, 프로그램이 실행된 것

얘네는 process metadata 이고 PCB에 저장됨

프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 (이게 가상메모리) → 이 프로세스의 메타데이터들이 PCB에 저장

Untitled

크롬, 카톡, slack등 여러가지 프로세스가 동시에 사용됨. 한 프로세스가 실행되기 위해 cpu를 점유하고 있으면 다른 프로세스는 실행 상태에 있을 수가 없음.

Context Switching - 다수의 프로세스를 동시에 실행하기 위해 여러 개의 프로세스를 시분할로, 즉 짧은 텀을 반복하면서 전환해서 실행을 시킨다.

단점 : 프로세스는 각 독립된 메모리 영역을 할당받아 사용되므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재

이런 피곤한 작업을 덜기 위해 나온게 경량화된 프로세스 버젼인 쓰레드.

쓰레드 - 공유되는 자원 (code, data, heap) 이 있음. 각자의 stack 만 있다.
만약 A 쓰레드가 B쓰레드의 스택을 가리키는 포인터가 있다면, 조작가능.

쓰레드 - 공유되는 자원 (code, data, heap) 이 있음. 각자의 stack 만 있다. 만약 A 쓰레드가 B쓰레드의 스택을 가리키는 포인터가 있다면, 조작가능.

멀티 프로세스, 멀티 쓰레드 - 한 어플리케이션에 대한 두가지 다른 동시 처리방식

멀티 프로세스 : 자식 프로세스 fork( ) 시, 부모와 별개의 메모리 영역 확보 ,

멀티 쓰레드 : 프로세스 내에서 분리해서 여러 스레드로 실행단위가 나뉘어지는 것. 한 어플리케이션에 대한 작업의 단위가 나뉘어 지는것.

한마디로 동시성 보장하기 위해 사용