Thread

응용프로그램(응용프로그래머)

API/라이브러리, 플랫폼, 쉘, 컴파일러(시스템 프로그래머)

OS(시스템 프로그래머)

HW(하드웨어 개발자)
Thread
Light Wight Process 라고도 한다.
프로세스
    프로세스 간에는 각 프로세스의 데이터 접근이 불가-IPC 사용
스레드
    하나의 프로세스에 여러개의 스레드 생성 가능
    스레드들은 동시에 실행 가능
    프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능(IPC 사용할 필요가 없다.)
스레드 숫자만큼 STACK 메모리 공간이 나누어지기 때문에 SP, PC가 스레드 개수만큼 필요하다.
-> 스택과 힙 사이에 각 스레드의 SP와 PC 정보를 담고있는 메모리가 존재
(HEAP, BSS, DATA, CODE는 모두 영역이 분리되지 않음)
Single-threaded, multithreaded processes   
멀티 프로세싱과 Thread
멀티 태스킹: 1개의 CPU 여러 프로세스
멀티 프로세싱: 1개의 프로세스 여러개의 CPU(병렬 실행)+여러 프로세스 여러 CPU
    1개의 프로세스를 여러개의 Thread로 만들어서 멀티 프로세싱을 수행(멀티 스레드)
    1개의 프로세스를 여러개 실행시켜서 멀티 프로세싱을 수행(멀티 프로세스)

최근 CPU는 멀티 코어를 가지므로, Thread 여러개 만드어, 멀티 코어 활용도를 높임
DIY: Multithreading vs Multiprocessing in Python | by Varun Kumar G | Level  Up Coding
현대 OS Window Linux Mac은 모두 Multiple processes Multiple threads per process를 지원