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