프로세스
란 실행을 위해 커널에 등록된 작업, 프로그램을 의미합니다.프로그램(Program)
/ 작업(Job)
프로세스(Process)
스레드(Thread)
포인터
: 프로세스 제어 블록을 연결해 준비 상태나 대기 상태의 큐를 구현할 때 사용합니다.프로세스 상태
: 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등으로 프로세스가 현재 어떤 상태에 있는지를 나타냅니다.프로세스 구분자
: 운영체제 내에 있는 여러 프로세스를 구별하기 위한 구분자를 저장합니다.프로그램 카운터
: 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값을 저장합니다.프로세스 우선순위
: 프로세스의 우선순위(중요도)로 CPU 스케줄러가 준비 상태에 있는 프로세스 중 실행 상태로 옮겨야 할 프로세스를 선택할 때 이 프로세스 우선순위를 기준으로 삼습니다.각종 레지스터 정보
: 다음에 실행할 때 사용하기 위해 이전에 실행할 때 사용한 레지스터의 중간값을 보관합니다.메모리 관리 정보
: 프로세스의 메모리 위치 정보, 메모리 보호를 위한 경계 레지스터 값과 한계 레지스터 값 등이 저장됩니다.할당된 자원 정보
: 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보가 저장됩니다.계정 정보
: 계정 번호, CPU 할당 시간, CPU 사용 시간 등에 대한 정보가 저장됩니다.부모 프로세스 구분자와 자식 프로세스 구분자
: PPID(Parent PID), CPID(Child PID)PCB
가 주로 프로세스 수준의 정보를 관리하는 데 사용된다면, TCB
는 스레드 수준의 정보를 관리하는 데 사용됩니다.TCB
는 스레드의 상태, 레지스터 값, 스레드 고유 식별자, 스레드의 스케줄링 정보 등을 포함합니다.좀비 프로세스
는 자식 프로세스가 상태를 알리지 않고 죽거나 먼저 죽는 경우이며, 좀비 프로세스 발생이 누적되면 전반적인 성능 저하를 일으킵니다.wait
함수를 호출하여 이 상태를 회수할 수 있습니다. wait
함수는 자식 프로세스의 종료 상태를 확인하고 해당 상태를 처리합니다.고아 프로세스
는 부모 프로세스가 먼저 죽는 경우이며, 운영체제는 이러한 고아 프로세스를 허용하지 않습니다.init(PID=1)
프로세스가 설정됩니다.init(PID=1)
프로세스는 자식 프로세스가 종료될 때까지 기다린 후 wait 함수를 호출하여 고아 프로세스의 종료 상태를 회수하는 방법으로 고아 프로세스를 방지합니다.데몬 프로세스
란 운영체제에서 부팅시 자동으로 켜져 백그라운드에서 계속 실행되는 프로세스를 의미합니다.프로세스 주소 공간(Process Address Space)
은 컴퓨터가 실행 중인 각 프로세스가 메모리에서 사용하는 공간을 의미합니다.코드 영역
, 데이터 영역
, 힙 영역
, 스택 영역
으로 나뉘어 저장됩니다.코드(Code) 영역
text 영역
이라고도 합니다.데이터(Data) 영역
힙(Heap) 영역
스택(Stack)
영역스택 영역
은 함수의 호출과 관계있는 지역 변수와 매개 변수가 저장되는 영역으로 컴파일 시간에 크기가 결정됩니다.힙 영역
은 런타임에 동적으로 크기가 결정되는 메모리 영역입니다.스택 영역
은 CPU에 의해 효율적으로 관리되고, 메모리 단편화가 적게 일어나기 때문에 접근이 매우 빠릅니다. 또한, 스택에는 상대적으로 짧은 주기로 데이터가 추가 및 제거되므로 캐시 히트 확률이 높아 접근 속도가 빠릅니다.힙 영역
은 동적으로 할당되고 해제되는 데이터의 저장 공간입니다. 힙은 메모리 관리자가 메모리 할당 및 해제를 담당하며, 할당된 메모리의 위치가 동적으로 결정됩니다. 이로 인해 힙 영역에 접근하려면 메모리 관리자를 통해 할당된 메모리의 주소를 찾아가야 하므로 접근 속도가 느립니다.스택 영역
의 동작은 LIFO(Last In First Out) 원칙에 따라 메모리의 함수 호출과 관련된 변수, 함수 호출 정보, 복귀 주소 등을 입출력하는 측면에서 자료구조의 Stack과 연관이 있습니다.힙 영역
의 동작은 프로그램의 실행 중에 사용자에 의해 동적으로 할당되고 해제되는 방식으로 객체를 관리하는 특징이 있습니다. 자료구조의 Heap과는 연관이 없습니다.🙏 본 개념의 정리에 대한 피드백과 질문은 환영입니다!
본 개념의 다른 정리 및 피드백, 인터뷰 주제의 순서는 테크 인터뷰 스터디 Repository에서 확인 가능합니다.
블로그 - 좀비 프로세스와 고아 프로세스
티스토리 - 완전히 정복하는 프로세스 vs 스레드 개념
도서 - 쉽게 배우는 운영체제
도서 - 혼자 공부하는 컴퓨터구조 + 운영체제
유튜브 - [OS] Lecture 3. Process Management (1/2) / 운영체제 강의
유튜브 - [OS] Lecture 4. Tread management / 운영체제 강의
티스토리 - [Chapter 4. 스레드] 스레드, PCB와 TCB, 다중 스레드 모델
티스토리 - [운영체제] 좀비 프로세스, 고아 프로세스
티스토리 - Context Switching에서의 Thread와 Process의 관계 + PCB, TCB
티스토리 - Systemd란?
티스토리 - 좀비 프로세스와 고아 프로세스(Zombie process and Orphan process)
벨로그 - 리눅스 - 데몬Daemon
티스토리 - 프로세스(Process)의 주소공간(Address Space)
티스토리 - 프로세스 주소 공간에 대해 설명해주세요
벨로그 - [운영체제] 프로세스 주소 공간
티스토리 - 27. 프로세스 - IPC 기법(shared memory)
벨로그 - [운영체제] 프로세스 주소공간
티스토리 - [OS] 프로세스 주소 공간
티스토리 - 힙(Heap)과 스택(Stack)의 최대 할당 크기
벨로그 - 메모리 구조를 알아보자
티스토리 - 스레드의 공유자원 관리(동기화)
티스토리 - [OS] 프로세스 간 통신(Inter-Process Communication,IPC)
티스토리 - CS - 메모리 구조(feat.스택 Vs 힙
티스토리 - 스택과 힙 메모리 영역,Stack Heap Memory
티스토리 - #3 python의 메모리 할당과 관리