Process Management
구동중인 프로세스가 여러 개일 때, CPU 스케줄링을 통해 프로세스를 관리하는 것을 말한다.
CPU들은 각 프로세스들에 대해 구분할 수 있어야 관리가 가능하다.
그래서 프로세스들의 특징을 갖고 있는 것이 Process Metadata이다.
Process Metadata가 갖고있는 정보
- 프로세스 고유 ID (PID)
- 프로세스 상태 : 준비, 실행, 대기 상태를 기억.
- 프로세스 우선순위 (스케줄링 정보)
- Program Counter (PC) : 다음에 실행될 명령어의 주소를 기억.
- CPU 레지스터 : 레지스터 상태 저장, CPU 내 범용 레지스터, 데이터 레지스터, 세그먼트 레지스터 등이 갖고 있는 값을 기억.
- Owner (계정정보) : CPU 사용시간의 정보, 각종 스케줄러에 필요한 정보 기억.
- Memory Limit (기억장치 관리 정보) : 프로그램이 적재도리 기억 장치의 상한치, 하한치, 페이지 테입르 등의 정보를 기억.
- 입출력 정보
이러한 정보들이 담긴 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)라는 곳에 저장된다.
Process Control Block
프로세스 메타데이터들을 저장해 놓는 곳이다.
하나의 PCB 안에는 하나의 프로세스 정보가 담겨있다.
프로그램이 실행되어 메모리에 적재됐을 때 프로세스가 생기고, 프로세스 주소 공간에
코드, 데이터, 스택 공간이 생성된 후 해당 프로세스에 메타데이터들이 PCB에 저장된다.
프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이터들이 PCB에 저장
PCB가 필요한 이유
CPU에서는 프로세스의 상태에 따라 교체 작업이 이루어진다.
만약 어떤 프로세스로부터 인터럽트가 발생하여 현재 프로세스가 잠시 대기상태가 되고,
인터럽트가 발생된 프로세스를 실행 상태로 교체한다.
이때 대기 중인 프로세스의 정보를 잃어버리게 되면 프로그램을 처음부터 다시 시작해야 한다.
따라서 대기하다가 다시 실행할 때 대기상태로 바뀌기 직전의 실행 정보를 그대로 저장한다면
다시 실행상태로 돌아왔을 때 아무 일도 없던 거 처럼 다시 실행하게 된다.
PCB의 관리 방식
Linked List 방식으로 관리가 되고, PCB List Head에 PCB들이 생성될 때마다 붙게 된다.
주소값으로 연결이 이루어져 있는 연결 리스트 형태로, 삽입과 삭제가 용이하다.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료 시 제거된다.
이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching라고 한다.
Context Switching
CPU가 현재 실행하고 있는 Task의 상태를 저장하고, 다음 진행할 Task의 상태 및 Register 값들에 대한 정보를 읽어 새로운 Task의 Context 정보로 교체하는 과정을 말한다.
PCB에선 CPU가 이전 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어서 레지스터에 적재하는 과정이라 생각하면 된다.
여기서 Context란 CPU가 다루는 Task에 대한 정보를 말하고, 대부분의 정보는 Register에 저장되고 PCB로 관리된다.
인터럽트가 발생하거나, 실행 중인 CPU 사용 허가 시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우 Context Switching이 발생한다.
즉, Context Switching은 프로세스가 Ready -> Running , Running -> Ready , Running -> Block 처럼 상태가 변경 될때 발생한다.
Context Switching이 필요한 이유와 실행 과정
만약 컴퓨터가 매번 하나의 Task만 처리한다면 다음 Task를 처리하기 위해서
현재 Task가 끝날 때까지 기다려야 하는데, 이렇게 되면 반응속도가 매우 느리고 사용하기 불편하다.
실시간으로 처리되는 거처럼 보이기 위해 Context Switching이 필요하게 됐다.
컴퓨터 멀티태스킹을 통해 빠른 반응속도로 응답이 가능하고
빠르게 Task를 바꾸면서 실행하여 사람이 보기에 실시간처리가 되는 것처럼 보인다.
실행 과정
- Task의 대부분 정보는 Register에 저장되고 PCB로 관리된다.
- 현재 실행하고 있는 Task의 PCB 정보를 저장하게 된다.
- 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있다.
'CS > 운영체제' 카테고리의 다른 글
페이징 (0) | 2024.06.23 |
---|---|
가상 메모리와 주소 공간 (0) | 2024.06.18 |
인터럽트 (0) | 2024.06.17 |
시스템 콜 (0) | 2024.06.16 |
CPU 스케줄링 알고리즘 (2) | 2024.06.16 |