Study/기술 및 용어 정리

프로세스 관련 용어 정리

토기발 2022. 7. 19. 09:49

기본적인 이론을 알아야 할 것 같아서 공부하던 도중, 개발 관련 모르는 용어들이 보여 공부하며 정리했다.

 


프로세스와 스레드

프로세스는 실행 중에 있는 프로그램을 의미하며, 작업(Job) 또는 태스크(Task)라고도 한다.
프로그램이 메모리에 적재(Load)되는 순간 프로세스가 된다.

 

스레드 프로세스 내부에서 프로세스의 자원을 공유하거나 공유하지 않고 실행되는 작업의 단위이다.

 

 

프로세스 제어 블록(Process Control Block)

운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳이며, 프로세스의 상태 정보를 저장하는 자료구조
프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB도 함께 제거된다.

프로세스 상태 관리와 문맥 교환(Context switch)을 위해서 필요하다.

운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스

 

 프로세스는 CPU를 점유하여 작업을 처리하다가도 상태가 전이되면 진행하던 작업 내용들을 모두 정리하고 CPU를 반환해야 하는데, 이때 진행하던 작업들을 모두 저장하지 않으면 다음에 자신의 순서가 왔을 때 어떠한 작업을 해야하는지 알 수 없는 사태가 발생한다.

따라서 프로세스는 CPU가 처리하던 작업의 내용들을 자신의 PCB에 저장하고, 다음에 다시 CPU를 점유하여 작업을 수행해야 할 때 PCB로부터 해당 정보들을 CPU에 넘겨와서 계속해서 하던 작업을 진행할 수 있게 된다.

PCB

포인터 : 프로세스의 현재 위치를 저장

프로세스 상태 : 생성/ 준비 / 실행 / 대기 / 종료 상태를 저장

프로세스 번호 : 프로세스 식별자 (PID)저장

프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소를 가리킴 

레지스터 : 누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보를 저장

메모리 제한 :  운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보

열린 파일 목록 : 프로세스를 위해 열린 파일 목록 

 

 

 

문맥 교환 

문맥(context)은 프로세스의 상태 정보를 의미한다.

문맥 교환(context switch)은 프로세스의 상태 정보를 교환하는 작업이다.

하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해 이전의 프로세스의 상태를 PCB에 보관하고 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정

 

문맥 교환은 멀티태스킹을 가능하게 한다.

멀티태스킹 : OS를 통해 CPU가 작업하는데 필요한 자원(시간)을 프로세스 또는 스레드간에 나누는 행위

 여러 프로세스가 동시에 실행되고 관리 되는 것처럼 보이지만, 사실 CPU는 한번에 한가지 명령어밖에 처리하지 못한다. 즉, 동시가 아닌 재빠르게 프로세스들을 번갈아가며 실행하고, 관리하는 것.

 

 

CPU Scheduler

레디 큐에 존재하는 프로세스들을 특정한 우선순위를 기반으로 CPU를 할당하는 작업을 의미한다.

목적 : 공정한 스케줄링, 처리량의 극대화, 응답시간 최소화 / 균형있는 자원사용, 실행의 무한 연기 배제, 변환시간 예측 가능

 

 

출처:

https://yoongrammer.tistory.com/53?category=961743 

https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37

https://m.blog.naver.com/scw0531/221417295183