프로세스 생명주기
- 신규
프로세스가 메인메모리에 올라옴 (실행X) - 준비
변수 초기화 등 기초작업 끝낸 후 실행 할 수 있는 상태 - 수행
CPU가 프로세스 수행
스케줄링에 의해 중단되면 준비 상태로
I/O 또는 이벤트가 필요하면 대기 상태로
수행이 완료되면 종료 상태로 - 대기
프로세스 도중에 I/O 또는 이벤트 작업이 필요할 경우 - 종료
최종적으로 프로세스가 종료된 상태
사용하던 메모리 영역 해제
대기 큐 (Waiting Queue)
- Job queue
HDD에 있던 프로그램이 메모리에 올라올 때 메인 메모리가 가득 찼거나
CPU가 다른 작업을 수행 중이라면 메모리에 올라오기 전에
어느 정도 기다려야하는데 HDD의 프로그램들이 잠시 기다리는 곳 - Ready Queue
메모리에 올라온 프로세스들이 실행을 위해 대기하는 곳 - Device Queue
키보드, 마우스 등 입출력 장치들은 각자가 가지고 있는 대기
스케줄링 (Scheduling)
- Job Scheduler
Job queue의 프로그램들을 어떤 순서로 메모리에 올릴 것인지 결정 - CPU Scheduler
Ready Queue의 프로세스들을 어떤 순서로 실행할 것인지 결정
모든 스케줄링 중에 CPU 스케줄링이 가장 중요 - Device Scheduler
Device Queue의 프로세스들을 어떤 순서로 I/O 장치를 이용하게 할 것인지 결정
주-보조 교환 (Swapping)
서버와 같이 여러 사용자가 하나의 메모리를 공유하는 경우에 만약 한 사용자가 자리를 비우면 그 사용자가 돌아올 때 까지 해당 프로세스에 메모리를 할당할 이유가 없다.
그래서 PCB(Process Control Block)의 CPU Time 등을 확인해서 오랫동안 동작이 없는 프로세스는
잠시 HDD로 내려놓고 다른 프로세스를 실행하거나 기존 프로세스에 메모리를 더 할당하는 등 메모리를 더 효율적으로 활용한다.
- Swap Out
메모리에서 HDD로 내리는 작업 - Swap In
HDD에서 다시 메모리로 올리는 작업
문맥 교환 (Context Switching)
- Context Switching
일정 시간이 지나면 기존 프로세스를 준비 상태로 만들로 다른 프로세스를 수행 상태로 만들어서 실행 - Scheduler
Context Switching을 전문적으로 담당하는 스케줄러는 CPU 스케줄러이다.
CPU 스케줄러는 Ready Queue에 대기 중인 프로세스를 어떤 순서로 실행시킬 것인지에 대한 스케줄러이다. - Dispatcher
프로세스가 수행 -> 대기 -> 수행 상태가 되었을 때 작업중이던 정보를 보존했다가 레지스터 등에 다시 할당하는 작업을 수행하는 프로그램
프로세스 메모리
Code 영역
- 실행할 프로그램의 코드가 저장되는 영역.
- CPU는 이 영역에서 명령어를 하나씩 가져와 처리.
Data 영역
- 전역변수와 정적 변수가 저장.
- 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸.
Stack 영역
- 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 공간
- 함수 호출 시 기록하고 수행이 완료되면 사라짐 (Last In First Out)
Heap 영역
- 동적 데이터 영역
- 메모리 주소 값에 의해서만 참조되고 사용되는 영역
- 프로그램 동작 시 크기가 결정됨
커널 프로세스의 메모리
커널 : kernel
운영체제 (OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스이다.
메모리 관리, 프로세스 관리, 하드웨어와 프로세스 사이에서 명령을 즉시 실행할 수 있는 역할을 수행하거나 시스템의
호출이나 보안등의 기능을 수행한다.
Code 영역
- 시스템 콜, 중단 처리 코드
- CPU, 메모리 등 자원 관리를 위한 코드
- 편리한 인터페이스 제공을 위한 코드
Data 영역
- CPU, Memory 등 하드웨어 자원을 관리하기 위한 자료구조 저장
- PCB (Process Controll Block) 자료 구조가 저장
- 현재 수행중인 프로세스의 상태, CPU 사용 정보 등을 유지하기 위한 자료 구조
- 프로세스 제어 블록이란, 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조이다.
- PCB는 각 프로세스에 대한 다양한 정보를 담고 있는 데이터로써 사람으로 따지면 주민등록증과 유사하다.
Stack 영역
각 프로세스의 커널 스택을 저장
프로세스는 함수 호출 시 자신의 복귀 주소를 저장하지만 커널은 커널 내의 주소가 된다.
각각의 프로세스마다 별도의 스택을 두어 관리한다.
출처 및 참고
https://zangzangs.tistory.com/107
https://gusdnd852.tistory.com/82
'Development > CS' 카테고리의 다른 글
Thread, Thread Pool (0) | 2023.07.02 |
---|---|
CPU와 메모리 (0) | 2023.06.11 |