Computer Science/컴퓨터 구조

[CS] Interrupt & Context Switching

findTheValue 2021. 7. 7. 20:41

우아한 테코톡 코맥님의 Interrupt와 Context Switching을 보고 작성했습니다.

 


@일련의 프로세스 수행중(P0) 

저장 공간 확인 -> 저장 경로 확인 -> 저장 파일 확인 -> 저장 

                  프로세스 중간에 키보드누르면?(interrupt)(P1)


 

-Interrupt란? = 가로막다 => 프로세스가 하던 일을 멈추고 이미 정해진 코드

(운영체제 단에서 이미 구해논 코드)에서 요청에 대한 처리를 수행한다.

(갑자기 발생한 비동기 이벤트)

 

 

-주요개념 

  • 인터럽트 서비스 루틴(Interrupt Service Routine, ISR) 

      (운영체제에 정해진 코드=미리정해졌기 때문에 루틴)

      =인터럽트 핸들러(Interrupt Handler) 

  • 인터럽트 벡터(Interrupt Vector) : 여러 인터럽트들을 테이블을 만들어 저장해둠. 

      =(ISR들이 저장된 테이블)


-Interrupt 과정 

 

Memory에서 위쪽(4,5,6수행)은 OS (interrupt해결), 아래쪽(1,2,3,7)은 원래 프로세스IntellJ(ex-저장과정 수행 프로세스) 

 

 

과정 

  1. 저장 경로 확인 로직 실행(process) 
  2. 키보드 입력 인터럽트 발생(Interrupt) 
  3. 현재 실행중인 프로세스 정보(문맥)을 저장(1번에서 하고있던 걸 저장 = context(=프로세스가 실행중이란 의미)나중에 다시 돌아오기 위해서 저장한다.=> Interrupt작업으로 넘어간다 =  context switching 
  4. 인터럭트 벡터에서 해당 ISR을 찾음(벡터 테이블에서 키보드 입력을 처리하는 서비스루틴(기존에 정해진)을 찾음.) 
  5. 키보드 처리를 위한 ISR 주소로 변경(CPU가 해당 서비스를 해결하기위한 주소를 설정해줌) 
  6. 키보드 인터럽트 처리(Interrupt처리) 
  7. 저장된 저장 경로 확인 로직 주소로 돌아감.(1번 프로세스로 돌아감) =  context switching 

 


 

Context Switching 

: 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥) 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 한 프로세스의 문맥은 그 프로세스의 프로세스 제어 블록(PCB)에 기록 되어 있다. 

 

PCB

 

 Context Switching

 

Interrupt과정이랑 유사함. 

1.프로세스 P0, P1 

2.P0의 정보 저장, CPU에 P1정보 저장 -> 반복 

 

=> 메모리 적재하느라 아무일도 하지 않는 부분

(파란색 부분이 양쪽 다 없는 부분=Overhead라 부름(CPU를 낭비하는 시간) 

(스레드가 많아지면 overhead가 많아져서 시스템에 악영향을끼침.) 

 

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

[Computer Structure] CPU  (0) 2021.09.01
[Computer Structure] 고정소수점 & 부동 소수점  (0) 2021.08.29
[CS] 캐시(CACHE)  (0) 2021.07.09