1. 커널 영역과 사용자 영역의 프로세스
- 프로세스란 실행 중인 프로그램
==> 같은 프로그램도 별도의 프로세스가 될 수 있다. - 프로세스 제어 블록 (PCB)
- PID(PPID)
- 레지스터
- 스케줄링 정보
- 메모리 정보
- 사용한 파일 정보
- 입출력장치 정보
- 문맥 교환
- 문맥 (context): 실행을 재개하기 위해 기억해야 할 정보
- 문맥 교환: 여러 프로세스들이 번갈아가며 실행되는 원리
- 커널 영역에서는 PCB
- 사용자 영역
- 코드 영역 (텍스트 영역)
> 실행 가능한 코드, 기계어로 이루어진 명령어
> Read-only - 데이터 영역
> 프로그램이 실행되는 동안 유지할 데이터 (e.g. 전역 변수)
> BSS 영역: 프로그램 실행 동안 유지할 데이터 중 초기값 없는 데이터 - 힙 영역
> 사용자(개발자)가 직접 할당 가능한 공간
> 메모리 영역을 할당 했다면 해제하자 (직접 해제 하기, 자동으로 해제 하기(가비지 컬렉션)
> 낮은 주소에서 높은 주소로 할당 - 스택 영역
> 임시로 저장되는 영역 (e.g. 매개 변수, 지역 변수)
> 높은 주소에서 낮은 주소로 할당 (주소 중복 방지)
- 코드 영역 (텍스트 영역)
2. 프로세스 생성과 상태
- 대표적인 프로세스 상태
- 생성 상태 (new)
- 준비 상태 (ready)
- 실행 상태 (running)
- 대기 상태 (blocked)
- 종료 상태 (terminated)
- 리눅스 프로세스(태스크) 상태 확인
- R: Running: 실행 상태
- S: Sleeping: 대기 상태
- W: Waiting: 준비 상태
- S: Stopped: 종료 상태
- Z: Zombie: 프로세스 종료 후 자원이 반환되었지만 커널 영역에 프로세스가 남아있는 상태
- 프로세스의 계층적 구조
3. 스레드
- 프로세스를 구성하는 실행 흐름의 단위
- 각기 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택
- 멀티프로세스와 멀티스레드
> 프로세스 간에는 기본적으로 자원을 공유하지 않는다. But 스레드 간에는 프로세스의 자원을 공유한다. - 프로세스 간에도 자원 공유가 가능
==> 프로세스간 통신 (IPC; Inter-Process Communication)- 공유 메모리를 통한 통신
- 파이프를 통한 통신
- 네트워크 소켓을 통한 통신
- ...
'다양한 Dev. > cs 지식 정리' 카테고리의 다른 글
동기화와 교착상태 (0) | 2023.12.30 |
---|---|
CPU 스케줄링 (0) | 2023.12.27 |
운영체제 (0) | 2023.12.20 |
보조 기억 장치와 입출력 장치 (1) | 2023.12.17 |
메인 메모리와 캐시 메모리 (0) | 2023.12.13 |