SlideShare a Scribd company logo
1 of 6
Download to read offline
인터럽트란?
● CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외 상황(이벤트)이 발생하여 처리가 필요할
경우에 CPU에 알려서 처리하는 기술
어느 한순간 CPU가 실행하는 명령을 하나이다.
다른 장치와 어떻게 커뮤니케이션을 할까요?
즉,이벤트 발생하여 처리를 할때를 인터럽트라고 한다.
인터럽트 필요 이유
● 선점형 스케쥴러 구현
○ 프로세스 runnung중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스 실행을
중단시킴.
○ 그러려면, 스케쥴러 코드가 실행이 되서, 현 프로세스 실행을 중단 시켜야 함
● IO Device와의 커뮤니케이션
○ 저장매체에서 데이터 처리 완료시, 프로세스를 깨워야 함 (block state > ready state)
● 예외 상황 핸들링
○ CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생할 경우, CPU가 해당
처리를 할 수 있도록 CPU에 알려줘야 함
인터럽트 처리 예
● CPU가 프로그램을 실행하고 있을때,
○ 입출력 하드웨어 등의 장치 이슈 발생
■ 파일 처리가 끝났다는 것을 운영체제에 알려주기
■ 운영체제는 해당 프로세스를 block state에서 실행 대기(ready) 상태 변경하기
○ 또는 예외 상황이 발생
■ 0으로 나누는 계산이 발생해서, 예외 발생을 운영체제에 알려주기
■ 운영체제가 해당 프로세스 실행 중지/에러 표시
이벤트와 인터럽트
● 인터럽트는 일종의 이벤트로 불림
● 이벤트에 맞게 운영체제가 처리
주요 인터럽트(Interrupt)
1. 계산하는 코드에서 0으로 나누는 코드 실행시 (Divide-by-Zero Interrupt)
2. 타이머 인터럽트
a. 선점형 스케줄러를 위해 필요
3. 입출력(IO) 인터럽트
a. 프린트, 키보드, 마우스, 저장매체 등..
인터럽트 종류
● 내부 인터럽트
○ 주로 프로그램 내부에서 잘못된 명령 또는 잘못된 데이터 사용시 발생
■ 0 으로 나눴을 때
■ 사용자 모드에서 허용되지 않은 명령 또는 공간 접근시
■ 계산 결과가 Overflow/ Underflow
● 외부 인터럽트
○ 주로 하드웨어에서 발생하는 이벤트(프로그램 외부)
■ 전원 이상
■ 기계 문제
■ 키보드 등 IO 관련 이벤트
■ Timer 이벤트
● 내부 인터럽트는 주로 프로그램 내부에서 발생하므로, 소프트웨어 인터럽트라고도 한다.
● 외부 인터럽트는 주로 하드웨어에서 발생하므로, 하드웨어 인터럽트라고도 한다.
처리구조
시스템콜 인터럽트
● 내부적으로 인터럽트 방식으로 처리를 한다.
● 시스템콜 실행을 위해서는 강제로 코드에 인터럽트 명령을 넣어, CPU에게 실행시켜야 한다.
○ eax 레지스터에 시스템 콜 번호를 넣고,
○ ebx 레지스터에는 시스템 콜에 해당하는 인자 값을 넣고,
○ 소프트웨어 인터럽트 명령을 호출하면서 0x80 값을 넘겨줌
인터럽트와 시스템 콜(고급)
● 시스템콜 인터럽트 명령을 호출하면서 0x80값을 넘겨줌
1. CPU는 사용자 모드를 커널 모드로 바꿔줌
2. IDT에서 0x80에 해당하는 주소(함수)를 찾아서 실행한다.
3. system_call() 함수에서 eax로부터 시스템 콜 번호를 찾아서, 해당번호에 맞는 시스템콜 함수로 이동
4. 해당 시스템콜 함수 실행 후, 다시 커널 모드에서 사용자 모드로 변경하고, 다시 해당 프로세스 다음코드 진행
사용자/커널 모드와 프로세스, 인터럽트
프로세스A 가 실행을 하다가 System call 을 호출한다, CPU는 커널모드로 바꾼다.
커널모드에서 system call에 해당하는 함수를 실행한다.
그 후 다시 사용자 모드로 돌아와 프로세스A 를 실행한다.
Timer interrupt 에 따라, 프로세서 스케쥴러가 프로세스를 바꾸어(커널모드) 프로세스B 를 실행한다.
인터럽트와 IDT
● 인터럽트는 미리 정의되어 각각 번호와 실행코드를 가리키는 주소가 기록되어 있음
○ 어디에? IDT에 기록
○ 언제? 컴퓨터 부팅시 운영체제가 기록
○ 어떤코드? 운영체제 내부 코드
● 예를들어,
○ 항상 인터럽트 발생시, IDT를 확인
○ 시스템콜 인터럽트 명령을 0x80 번호가 미리 정의
○ 인터럽트 0x80 에 해당하는 운영체제 코드는 system_call()이라는 함수
○ 즉, IDT에는 0x80 -> system_call() 와 같은 정보가 기록되어 있음
인터럽트와 프로세스
1. 프로 실행 중 인터럽트 발생
2. 현 프로세스 실행 중단 ( 커널모드로 변경 후, idt 에서 해당하는 번호의 함수를 찾음)
3. 인터럽트 처리 함수 실행 (운영체제)
4. 현 프로세스 재실행
인터럽트와 스케쥴러
수시로 타이머 인터럽트 발생 ,운영체제가 타이머 인터럽트 발생 횟수를 기억해서 5번 타이머 인터럽트 발생하면, 현재 프로세스를
다른 프로세스로 바꿔준다.

More Related Content

Similar to 1111

실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장Sunggon Song
 
요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지Hyoje Jo
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해중선 곽
 
Let's geek! (1)
Let's geek! (1) Let's geek! (1)
Let's geek! (1) nerdsday
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 42013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 4진우 김
 
Linux reversing study_basic_4
Linux reversing study_basic_4Linux reversing study_basic_4
Linux reversing study_basic_4Jinkyoung Kim
 
샌드박스
샌드박스샌드박스
샌드박스Baekjoon Choi
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning CompilerTae Young Lee
 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowSang Jun Lee
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇Seungyong Lee
 
HP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow SettingHP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow Settingymtech
 
TenforFlow Internals
TenforFlow InternalsTenforFlow Internals
TenforFlow InternalsKiho Hong
 
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
20150306 파이썬기초 IPython을이용한프로그래밍_이태영20150306 파이썬기초 IPython을이용한프로그래밍_이태영
20150306 파이썬기초 IPython을이용한프로그래밍_이태영Tae Young Lee
 
뇌자T etc.windows multi threading programming
뇌자T   etc.windows multi threading programming뇌자T   etc.windows multi threading programming
뇌자T etc.windows multi threading programmingcancan21st
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스Seunghwa Song
 

Similar to 1111 (20)

실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지요람(CreateProcess)에서 무덤(ResumeThread)까지
요람(CreateProcess)에서 무덤(ResumeThread)까지
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해
 
Let's geek! (1)
Let's geek! (1) Let's geek! (1)
Let's geek! (1)
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 42013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 4
 
Linux reversing study_basic_4
Linux reversing study_basic_4Linux reversing study_basic_4
Linux reversing study_basic_4
 
샌드박스
샌드박스샌드박스
샌드박스
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlow
 
Avr lecture3
Avr lecture3Avr lecture3
Avr lecture3
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
HP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow SettingHP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow Setting
 
TenforFlow Internals
TenforFlow InternalsTenforFlow Internals
TenforFlow Internals
 
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
20150306 파이썬기초 IPython을이용한프로그래밍_이태영20150306 파이썬기초 IPython을이용한프로그래밍_이태영
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
 
뇌자T etc.windows multi threading programming
뇌자T   etc.windows multi threading programming뇌자T   etc.windows multi threading programming
뇌자T etc.windows multi threading programming
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
 

More from usdrd90

7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaausdrd90
 
컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어usdrd90
 
TCP/IP 4계층
TCP/IP 4계층TCP/IP 4계층
TCP/IP 4계층usdrd90
 
20181014
2018101420181014
20181014usdrd90
 

More from usdrd90 (7)

10
10 10
10
 
9
99
9
 
7 aaaaaaaaa
7 aaaaaaaaa7 aaaaaaaaa
7 aaaaaaaaa
 
1
11
1
 
컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어컴퓨터 구조 분야의 8가지 아이디어
컴퓨터 구조 분야의 8가지 아이디어
 
TCP/IP 4계층
TCP/IP 4계층TCP/IP 4계층
TCP/IP 4계층
 
20181014
2018101420181014
20181014
 

1111

  • 1. 인터럽트란? ● CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외 상황(이벤트)이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 어느 한순간 CPU가 실행하는 명령을 하나이다. 다른 장치와 어떻게 커뮤니케이션을 할까요? 즉,이벤트 발생하여 처리를 할때를 인터럽트라고 한다. 인터럽트 필요 이유 ● 선점형 스케쥴러 구현 ○ 프로세스 runnung중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스 실행을 중단시킴. ○ 그러려면, 스케쥴러 코드가 실행이 되서, 현 프로세스 실행을 중단 시켜야 함 ● IO Device와의 커뮤니케이션 ○ 저장매체에서 데이터 처리 완료시, 프로세스를 깨워야 함 (block state > ready state) ● 예외 상황 핸들링 ○ CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생할 경우, CPU가 해당 처리를 할 수 있도록 CPU에 알려줘야 함
  • 2. 인터럽트 처리 예 ● CPU가 프로그램을 실행하고 있을때, ○ 입출력 하드웨어 등의 장치 이슈 발생 ■ 파일 처리가 끝났다는 것을 운영체제에 알려주기 ■ 운영체제는 해당 프로세스를 block state에서 실행 대기(ready) 상태 변경하기 ○ 또는 예외 상황이 발생 ■ 0으로 나누는 계산이 발생해서, 예외 발생을 운영체제에 알려주기 ■ 운영체제가 해당 프로세스 실행 중지/에러 표시 이벤트와 인터럽트 ● 인터럽트는 일종의 이벤트로 불림 ● 이벤트에 맞게 운영체제가 처리
  • 3. 주요 인터럽트(Interrupt) 1. 계산하는 코드에서 0으로 나누는 코드 실행시 (Divide-by-Zero Interrupt) 2. 타이머 인터럽트 a. 선점형 스케줄러를 위해 필요 3. 입출력(IO) 인터럽트 a. 프린트, 키보드, 마우스, 저장매체 등.. 인터럽트 종류 ● 내부 인터럽트 ○ 주로 프로그램 내부에서 잘못된 명령 또는 잘못된 데이터 사용시 발생 ■ 0 으로 나눴을 때 ■ 사용자 모드에서 허용되지 않은 명령 또는 공간 접근시 ■ 계산 결과가 Overflow/ Underflow ● 외부 인터럽트 ○ 주로 하드웨어에서 발생하는 이벤트(프로그램 외부) ■ 전원 이상 ■ 기계 문제 ■ 키보드 등 IO 관련 이벤트 ■ Timer 이벤트 ● 내부 인터럽트는 주로 프로그램 내부에서 발생하므로, 소프트웨어 인터럽트라고도 한다. ● 외부 인터럽트는 주로 하드웨어에서 발생하므로, 하드웨어 인터럽트라고도 한다.
  • 4. 처리구조 시스템콜 인터럽트 ● 내부적으로 인터럽트 방식으로 처리를 한다. ● 시스템콜 실행을 위해서는 강제로 코드에 인터럽트 명령을 넣어, CPU에게 실행시켜야 한다. ○ eax 레지스터에 시스템 콜 번호를 넣고, ○ ebx 레지스터에는 시스템 콜에 해당하는 인자 값을 넣고, ○ 소프트웨어 인터럽트 명령을 호출하면서 0x80 값을 넘겨줌 인터럽트와 시스템 콜(고급) ● 시스템콜 인터럽트 명령을 호출하면서 0x80값을 넘겨줌 1. CPU는 사용자 모드를 커널 모드로 바꿔줌 2. IDT에서 0x80에 해당하는 주소(함수)를 찾아서 실행한다. 3. system_call() 함수에서 eax로부터 시스템 콜 번호를 찾아서, 해당번호에 맞는 시스템콜 함수로 이동 4. 해당 시스템콜 함수 실행 후, 다시 커널 모드에서 사용자 모드로 변경하고, 다시 해당 프로세스 다음코드 진행
  • 5. 사용자/커널 모드와 프로세스, 인터럽트 프로세스A 가 실행을 하다가 System call 을 호출한다, CPU는 커널모드로 바꾼다. 커널모드에서 system call에 해당하는 함수를 실행한다. 그 후 다시 사용자 모드로 돌아와 프로세스A 를 실행한다. Timer interrupt 에 따라, 프로세서 스케쥴러가 프로세스를 바꾸어(커널모드) 프로세스B 를 실행한다. 인터럽트와 IDT ● 인터럽트는 미리 정의되어 각각 번호와 실행코드를 가리키는 주소가 기록되어 있음 ○ 어디에? IDT에 기록 ○ 언제? 컴퓨터 부팅시 운영체제가 기록 ○ 어떤코드? 운영체제 내부 코드 ● 예를들어, ○ 항상 인터럽트 발생시, IDT를 확인 ○ 시스템콜 인터럽트 명령을 0x80 번호가 미리 정의 ○ 인터럽트 0x80 에 해당하는 운영체제 코드는 system_call()이라는 함수 ○ 즉, IDT에는 0x80 -> system_call() 와 같은 정보가 기록되어 있음
  • 6. 인터럽트와 프로세스 1. 프로 실행 중 인터럽트 발생 2. 현 프로세스 실행 중단 ( 커널모드로 변경 후, idt 에서 해당하는 번호의 함수를 찾음) 3. 인터럽트 처리 함수 실행 (운영체제) 4. 현 프로세스 재실행 인터럽트와 스케쥴러 수시로 타이머 인터럽트 발생 ,운영체제가 타이머 인터럽트 발생 횟수를 기억해서 5번 타이머 인터럽트 발생하면, 현재 프로세스를 다른 프로세스로 바꿔준다.