티스토리 뷰
728x90
반응형
리눅스에서 프로세스 컨텍스트 스위칭(Process Context Switching)은 운영 체제가 한 프로세스의 실행을 중단하고 다른 프로세스를 실행하기 위해 현재 프로세스의 상태(컨텍스트)를 저장하고, 새로운 프로세스의 컨텍스트를 복원하는 과정입니다. 이 과정을 통해 CPU는 여러 프로세스를 동시에 실행하는 것처럼 보이게 할 수 있으며, 이를 통해 멀티태스킹을 실현합니다.
컨텍스트 스위칭의 주요 구성요소
- 레지스터 상태: CPU 레지스터에 저장된 값들, 예를 들어, 프로그램 카운터(PC), 스택 포인터(SP), 일반 목적 레지스터, 조건 코드 등이 포함됩니다.
- 프로세스 제어 블록(PCB): 운영 체제가 각 프로세스에 대해 유지하는 정보로, 프로세스 상태, 프로세스 번호(PID), 프로그램 카운터, 레지스터 값, 메모리 관리 정보, 계정 정보 등을 포함합니다.
- 시스템 콜과 인터럽트: 시스템 콜이나 인터럽트가 발생할 때, 운영 체제는 현재 실행 중인 프로세스를 중단하고, 시스템 콜이나 인터럽트 처리 루틴을 실행하기 전에 컨텍스트 스위칭을 수행합니다.
컨텍스트 스위칭 과정
- 현재 프로세스 상태 저장: 현재 실행 중인 프로세스의 레지스터 상태와 관련 정보를 그 프로세스의 PCB에 저장합니다.
- 스케줄러 활성화: CPU 스케줄러가 다음에 실행할 프로세스를 결정합니다. 이 결정은 운영 체제의 스케줄링 알고리즘에 따라 달라집니다.
- 다음 프로세스 상태 복원: 스케줄러에 의해 선택된 다음 프로세스의 PCB에서 레지스터 상태와 실행에 필요한 정보를 CPU 레지스터와 시스템에 복원합니다.
컨텍스트 스위칭의 비용
컨텍스트 스위칭은 필수적인 과정이지만, 비용이 발생합니다. 이 비용은 CPU 시간을 소모하며, 프로세스가 실행을 재개하기까지의 지연 시간을 포함합니다. 이러한 오버헤드 때문에, 운영 체제는 컨텍스트 스위칭의 수를 최소화하려고 노력하며, 효율적인 스케줄링 알고리즘을 사용하여 시스템의 전반적인 성능을 최적화하려고 합니다.
반응형
'Linux' 카테고리의 다른 글
Memory subsystem 이란 (0) | 2024.02.20 |
---|---|
linux에서 task와 process의 차이 (0) | 2024.02.19 |
fork()와 exec()의 차이 (0) | 2024.02.19 |
Linux virtual memory (0) | 2024.02.19 |
Android secure boot (0) | 2024.02.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday