백엔드 로드맵따라가기/OS 및 일반적인 지식
[OS의 작동방식] 프로세스 관리
Been2
2020. 8. 6. 23:00
728x90
프로세스란?
프로세스란 디스크에 있는 프로그램이 메인 메모리에 올라와 있는 상태, 즉 실행중인 프로그램이다.(e.g. shell, a.out 등)
또한 CPU가 일을 처리할때 사용하는 단위로 task과 동의어이다.
시스템에는 많은 프로세스들이 있지만 프로세스들을 처리할 CPU는 단 하나거나 몇개일 뿐입니다. 프로세스들은 CPU를 공유하기 위해 실행되고 멈추고를 반복합니다. 따라서 프로세스들은 states가 변화하고 context를 가지고 있습니다.
Process context란 프로세스가 정지할때 프로세스의 호나경에 대한 상태입니다. 프로세스가 다시 시작되기 위해서는 반드시 다시 읽어와야 합니다.
프로세스의 상태와 상태 변환
현대에서 사용되는 멀티 태스킹 시스템에서는 프로세스는 다른 프로세스들과 CPU를 공유하기 위해 여러가지 상태를 가집니다.
- new : 프로그램이 메모리에 올라와 프로세스가 생성된 상태
- ready : 작업할 준비를 하고 CPU 할당을 기다리는 상태
- running : CPU 할당을 받아 명령어가 실행되고 있는 상태
- waiting : 어떠한 이벤트를 기다리는 상태(e.g. I/O, signal)
- terminated : 프로세스의 실행이 완료된 상태
PCB(Process Control Block)
모든 프로세스들은 PCB를 가지고 있습니다. PCB란 프로세스에 관한 모든 정보를 가지고 있는 데이터구조입니다.
PCB가 가지고 있는 프로세스의 정보들은 다음과 같습니다.
- Process State : 프로세스의 상태(e.g. running, waiting etc)
- Process ID and the Parent Process ID : 프로세스를 식별하고 관리하기 위한 번호
- CPU registers and PC(Program Counter) : 프로세스가 CPU 할당을 넘겨줄때 당시의 CPU 레지스터의 내용과 다음 처리할 명령어의 주소.
- CPU Scheduling Infomation : 프로세스의 우선순위와 스케쥴링 큐를 위한 포인터
- Memory Management information : 사용중인 메모리의 주소와 할당 받은 메모리의 주소
- Accounting Infomation : 타임 슬라이스를 위한 CPU 할당 시간
- I/O Status information : 할당된 디바이스들과 열은 파일 정보등..
728x90