- 프로그램: 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 변환되어 컴퓨터에서 실행할 수 있는 명령 절차가 집합된 파일
- 실행 파일: 저장 장치에 저장되어 있지만 메모리에는 올라가지 않아 실행되지 않는 정적인 상태
- 운영 체제에서 실행중인 프로그램
- 실행 파일이 메모리에 적재되어 시스템 자원을 할당 받아 실행되는 작업 단위
- 프로세스마다 독립적으로 운영 체제로부터 시스템 자원 할당
- 프로세스가 운영되기 위해 필요한 주소 공간, 프로세스가 CPU를 점유하는 시간, 프로세스가 실행될 때 필요한 메모리 공간 등
- 각 프로세스는 별도의 주소 공간에서 실행, 원칙적으로 한 프로세스는 다른 프로세스의 자원에 접근 불가
- 프로세스 5가지 상태: 생성, 준비, 실행, 대기, 종료
- 2개 이상의 프로세스가 함께 실행되는 것
- 하나의 CPU 코어에서 여러 프로세스를 짧은 시간 동안 번갈아가면서 실행하는 것
- CPU 싱글 코어는 한번에 하나의 프로세스만 연산할 수 있기 때문에 CPU의 작업 시간을 여러 프로세스들이 조금씩 나누어 번갈아가며 실행
- 시분할 시스템: 어떻게 프로세스를 번갈아가면서 실행할지 CPU 작업 시간을 나누는 방식
- 여러 개의 CPU 코어에서 각각 프로세스를 병렬적으로 실행하는 것
- 프로세스 안에서의 실행•동작 단위
- 프로세스 내에서 독립적으로 특정 동작이나 기능 수행
- 기본적으로 프로세스는 최소 1개의 스레드(메인 스레드)를 가진다.
- 여러 개의 스레드 실행 가능
- 하나의 프로세스 내에서 여러 개의 스레드를 실행하여 여러 작업을 수행하는 것
- 프로세스 내에서 여러 작업을 병렬로 처리
- 각 스레드는 독립적인 기능을 수행 (독립적으로 함수 호출)
- 스레드 별로 함수 실행을 위한 메모리가 필요하므로 스레드마다 Stack 영역만 따로 할당
- 코드, 데이터, 힙 영역은 다른 스레드와 공유하여 사용
- 한 스레드가 프로세스 자원을 변경하면 같은 자원을 공유하는 다른 스레드도 영향
- CPU가 직접적으로 접근할 수 있는 컴퓨터 내부의 기억장치
- Code, Data, Heap, Stack 4개 영역으로 이루어져 있습니다.
- 실행한 프로그램의 소스 코드 저장
- 프로그램의 전역 변수와 정적Static 변수 저장
- 직접 메모리 공간을 할당(malloc)하거나 해제(free)하는 영역
- 함수 호출 시 생성되는 지역 변수와 매개 변수 저장