CS

[OS] Context Switching

KJihun 2023. 10. 5. 17:43
728x90

 

 

 

Context Switching

CPU는 한번에 하나의 프로세스만 실행 가능하다.

OS(프로세서 스케줄러)에 의해 CPU가 할당되는 프로세스 변경 될 때를 문맥교환(Context Switching)이라 한다.

 

  1. 프로세스에 CPU 할당을 위해 현재 CPU가 할당된 프로세스의 상태 정보를 PCB에 저장
  2. 새로운 프로세스의 상태 정보를 설정 후 CPU를 할당하여 실행
  • PCB(Process Control Block, 프로세스 제어블록) : 프로세스의 중요한 정보를 저장해 놓는 곳
    • 각 프로세스가 생성될 때 마다 고유의 PCB가 생성, 프로세스가 완료되면 PCB는 제거됨
    • PCB 정보
      • 프로세스의 현재 상태 : 준비, 대기, 실행 등의 프로세스 상태
      • 프로세스 고유 식별자 : 프로세스를 구분할 수 있는 고유의 번호
      • 스케줄링 및 프로세스의 우선순위 : 스케줄링 정보 및 프로세스가 실행 될 우선순위
      • 주기억장치 관리 정보 : 기준 레지스터, 페이지 테이블에 대한 정보
      • PC(processCount): 현재 실행 중인 명령어의 주소를 가리키는 레지스터. 다음에 실행할 명령어의 위치를 나타냄
  • PCB 안에서 PCB 가 확장된다. 
    • 추가적인 정보가 필요할 때, PCB 내부에 더 많은 필드나 데이터 구조를 추가하여 시스템의 요구사항을 충족시킬 수 있다.
    • ex: 네트워크 관련 작업을 수행하는 프로세스의 경우, PCB에 네트워크 연결 정보나 관련된 설정을 저장할 수 있다.

 

 

Context Switching(문맥 전환) 발생 상황

1. 인터럽트 발생: 하드웨어나 소프트웨어에서 이벤트가 발생하여 CPU가 현재 실행 중인 프로세스에서 다른 프로세스로 전환될 필요가 있는 경우.

2. 스케줄러의 판단: 운영체제의 스케줄러가 실행 중인 프로세스를 중지하고 다른 프로세스를 실행시키기로 판단할 때.

스케줄링 알고리즘에 따라서 발생할 수 있음.

3. 시분할 시스템: 각 프로세스에 일정한 시간 할당을 하고, 그 시간이 지나면 다른 프로세스로 전환

4. 동기화 작업: 두 개 이상의 스레드가 공유 데이터에 접근할 때, 동기화 메커니즘이 사용되어야 한다.

이때 락(뮤텍스, 세마포어 등)을 사용하여 한 스레드가 해당 데이터를 사용 중일 때 다른 스레드는 기다려야 합니다.

5. I/O 작업: 입출력 작업은 일반적으로 느린 작업이므로, CPU는 다른 작업을 수행할 수 있도록 I/O 작업이 완료될 때까지 대기한다. 이때 다른 프로세스나 스레드로 전환될 수 있다.

6. 멀티태스킹 환경에서의 사용자 입력: 사용자가 프로그램에 입력을 하면, 이에 대한 응답으로 프로그램이 작업을 처리해야 한다. 이때 사용자 입력을 기다리는 동안 다른 작업을 수행할 수 있도록 컨텍스트 스위칭이 발생할 수 있다.