프로세스(Process)
메모리에서 CPU를 할당받아, 프로그램이 실행 되고 있는 상태.
컴퓨터 내에서 실행되고있는 컴퓨터 프로그램의 한 단위.
가상 메모리에 매핑 되어 독립적인 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.
Code 영역:명령어가 기계어로 저장되는 메모리 영역.
Data 영역: 전역 변수와 정적 지역 변수(static)가 포함되어 있는 영역.
Stack 영역: 지역 변수, 함수, return address를 포함하고 있는 영역.
Heap 영역: 프로그램이 실행되는 동안 동적으로 사용할 데이터들이 저장되는 영역.
프로세스에는 수행 중인 작업을 나타내는 실행상태가 있다.
프로세스가 실행되면 상태간의 이동이 일어난다.
프로세스 블럭(PCB: Process Control Block)
프로세스 큐(Queue)
스레드(Thread)
프로세스 내에서 실행되는 흐름의 단위.
프로세스에 할당 된 메모리의 공간과 자원들을 공유하여 사용한다.
따라서 스레드 활용 시, 자원의 효율성 증가의 효과를 볼 수 있지만 멀티스레드의 경우 동기화 문제에 신경을 써야한다.
Code, Data, Heap영역을 공유. Stack영역은 따로 할당을 받는다.
또, 각각의 스레드는 별도의 레지스터와 스택을 갖는다.
일반적으로 한 프로세스는 하나의 스레드를 가지고 있지만, 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.
이를 멀티 스레드(multithread)라고 한다.
싱글 스레디드 프로그램 (단일 스레드):
하나의 프로세스에 하나의 스레드를 할당 한 것.
멀티 스레드:
한 프로세스에 처리해야할 작업이 많을 때, 동시 처리 작업을 위해 생겼다.
자원을 공유하여 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시킬 수 있다.
이 때, 스레드들은 독립적인 작업을 위해 독립적인 스택, 스레드 ID, 프로그램 카운터, 레지스터 집합을 갖는다.
프로세스와 스레드의 차이
미션 1, 2 완료!
객체지향의 사실과 오해 읽기