minyule.log
로그인
minyule.log
로그인
PCB와 Context Swiching
김민영
·
2023년 1월 27일
팔로우
0
운영체제
0
CS 스터디
목록 보기
20/32
Process Management
프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것.
CPU가 프로세스를 구분하기 위해서 프로세스 특징 필요 : Process Metadata
Process ID : PID 프로세스 고유 식별 번호
Process State : 프로세스 상태
Process Priority : 스케줄링 정보
CPU Resgisters : 프로세스의 레지스터 상태를 저장하는 공간 등
Owner : 계정 정보
기억장치 관리 정보
입출력 정보
프로그램 카운터
PCB : Process Controll Block
프로세스 메타데이터를 저장하는 곳. 하나의 PCB에는 하나의 프로세스 정보가 담김.
프로그램 실행 - 프로세스 생성 - 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 - 프로세스의 메타 데이터들이 PCB에 저장
구조
Process State : 프로세스 상태 Create, Ready, Running, Block, Terminated
Process Counter : 다음 실행할 명령어의 주솟값
CPU Registers : accumulator, index register, stack pointers, general purpose registers
필요 이유
CPU에서 프로세스 상태에 따라 교체 작업이 이루어지는데, 앞으로 다시 수행할 Block 상태 프로세스 상태값을 PCB에 저장
관리 방식
Linked List 방식
PCB List Head에 PCB들이 생성될 때마다 붙음. 주소값으로 연결이 이루어진 연결 리스트 형식. 삽입 삭제 용ㅇ.
프로세스 생성 시 해당 PCB 생성, 프로젝트 완료 시 제거
수행 중인 프로세스 변경 시, CPU 레지스터 정보가 변경되는 것 : Context Switching
Context Switching
정의
CPU가 현재 실행하고 있는 Task(Process, Thread) 상태를 저장하고, 다음 진행할 Task의 상태 및 Register 값들에 대한 정보(Context)를 읽어 새로운 Task 의 Context 정보로 교체하는 과정
CPU가 이전의 프로세스 상태를 PCB에 보관하고, 다른 프로세스의 정보를 PCB에서 읽어서 레지스터에 적재하는 과정
다중 프로그래밍 시스템에서 CPU가 할당되는 프로세스를 변경하기 위해 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고 제어권을 인터럽트 서비스 루틴(ISR)에 넘기는 작업
Context : CPU가 다루는 Task(Process/Thread)에 대한 정보. Register에 저장되고 PCB에서 관리됨
과정
Task 대부분의 정보는 Register에 저장되고, PCB(Process Control Block)으로 관리가 되고 있음
현재 실행 중인 Task의 PCB 정보를 저장하게 됨(Process Stack, Process Queue)
다음 실행할 Task의 PCB 정보를 읽어 Register에 적재, CPU가 이전에 진행했던 과정을 연속적으로 수행
Cost
Cache 초기화
Memory Mapping 초기화
메모리 접근을 위해 Kernel 항상 실행
Context Switching 과 Interrupt
CPU는 하나의 프로세스 정보만 기억
문맥 교환이 많이 일어난다 == 인터럽트가 많이 발생한다.
Process, Thread
Process가 Thread보다 Context Switching 비용 많이 발생
Thread는 Stack영역을 제외한 모든 메모리를 공유하므로 Stack영역만 변경하면 되므로
참조
https://m.blog.naver.com/adamdoha/222019884898
김민영
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=
팔로우
이전 포스트
CPU 스케줄링
다음 포스트
Swapping
0개의 댓글
댓글 작성