
프로세스 : 프로그램을 메모리 상에서 실행중인 작업
스레드 : 프로세스 안에서 실행되는 여러 흐름단위
컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미
프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이며 파일 그 자체를 가리키는 말.
이 프로그램 파일을 실행하는 순간 메모리에 올라가며 동적인 상태가 되는데 이 상태의 프로그램을 프로세스라고 한다.
전역 변수, 정적 변수, 배열 등지역 변수, 매개 변수, 리턴 값 정적 영역 : 코드 영역, 데이터 영역 / 선언 시 크기가 결정됨
동적 영역 : 스택 영역, 힙 영역 / 프로세스가 실행되는 동안 가변적인 크기를 가짐
프로그램 실행시 운영체제는 프로그램을 메모리에 가져와 코드영역에 넣고 프로세스 제어 블록 (PCB)을 생성, 메모리에 스택 영역과 힙 영역을 확보 후 프로세스 실행.
PCB : 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조

파이프, 파일, 소켓 등프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위, 프로세스의 특정한 수행 경로
프로세스의 낭비 요소를 제거하고 프로세스 작업의 유연성을 얻기 위해 멀티 스레드 형식 사용.
.png)
코어 -> 하드웨어, 물리적 구성 단위
스레드 -> 소프트웨어, 논리적 작업 처리 단위
1대의 컴퓨터에 여러 개의 CPU 장착
하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것.
CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다.
동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던
다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말한다.
프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 프로세스 사이에서 공유하는 메모리가 없어
Context Switching가 발생하면 캐쉬에 있는 모든 데이터를 모두 리셋하고 다시 캐쉬 정보를
불러와야 한다.하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것.
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌
많은 OS들이 멀티 스레딩을 기본으로 하고 있다.
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
https://kyun2da.dev/CS/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C/
https://gyoogle.dev/blog/computer-science/operating-system/Process%20vs%20Thread.html
https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://brunch.co.kr/@babosamo/100