PCBs and Hardware State

Example of how a context switch occurs

유저모드 → 커널모드 전환

  1. 프로그램 카운터를 (하드웨어가) 스택에 저장
  2. (하드웨어가) 인터럽트 벡터 테이블에서 새로운 프로그램 카운터를 가지고 와서 거기로 뛴다.
  3. 레지스터 중 일부를 저장한다. (어셈블리어)
  4. 새로운 스택을 만든다. (어셈블리어)
  5. 서비스 루틴이 본격적으로 돌아간다. (C)
  6. 스케줄러가 돌기 시작, Ready 상태에 있는 애들 중 하나를 뽑고, CPU 할당할 준비
  7. 어셈블리 코드로 돌아가서
  8. 새로운 현재 프로세스를 시작 (어셈블리어)

PCB에서 새로운 프로세스의 레지스터 로드

프로그램 카운터 로드

커널모드 → 유저모드 전환

threads

Can we do better with Threads?

<aside> 💡

이진 탐색을 한다고 생각해보자.