[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 사이클과 인터럽트

2023. 4. 23. 23:23·CS

 

명령어 사이클

프로그램 속 명령어들은 일정한 주기가 반복되며 실행

이 주기를 명령어 사이클이라고 함

 

인출 사이클 : 가장 먼저 CPU로 갖고 와야 한다

실행 사이클 : 갖고 왔으면 실행해야 한다

일반적으로 CPU는 인출-실행-인출-실행-....... 과정이 반복됨

 

그런데 CPU로 명령어를 가지고 와도 바로 실행이 불가능한 경우도 있다 (추가적으로 메모리에 접근해야 하는 방식도 있다)

명령어 사이클

 

 

 

여기서 인터럽트라는 개념이 생김

인터럽트는 정해진 흐름대로 실행되는 것을 끊어버리는 것임 ..

 

인터럽트(interrupt) : 방해하다, 중단시키다

'CPU가 꼭 주목해야 할 때', 'CPU가 얼른 처리해야 할 다른 작업이 생겼을 때' 발생

 

동기 인터럽트 (예외) : CPU가 예기치 못한 상황을 접했을 때 발생 

  •  종류 : 폴트 , 트랩 , 중단 , 소프트웨어 인터럽트 

비동기 인터럽트 (하드웨어 인터럽트) : 주로 입출력장치에 의해 발생

  • 알림과 같은 역할 (세탁기 완료 알림, 전자렌지 조리 알림)

비동기 인터럽트

 

 

 

 

 

 

하드웨어 인터럽트

알림과 같은 인터럽트

입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트 사용

입출령장치는 CPU에 비해 느리다

인터럽트가 없다면 CPU는 프린트 완료 여부를 확인하기 위해 주기적으로 확인해야 한다 

입터럽트가 있다면 입출력 작업 동안 CPU는 다른 일을 할 수 있다

 

 

하드웨어 인터럽트의 처리 순서

하드웨어 인터럽트의 처리 순서

 

다만 모든 인터럽트를 인터럽트 플래그로 막을 수 있는건 아니다

 

 

CPU가 인터럽트를 받아들이기로 했다면 인터럽트 서비스 루틴 실행

 

인터럽트 서비스 루틴이란,

인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기 위한 프로그램

인터럽트 서비스 루틴 또한 프로그램이기에 메모리에 저장되어 있음

 

인터럽트가 발생했을 때 루틴

 

 

인터럽트 벡터 : 각각의 인터럽트를 구분하기 위한 정보

(인터럽트 벡터 모아둔게 인터럽트 벡터 테이블) 

 

'CPU가 인터럽트를 처리한다' == '인터럽트 서비스 루틴을 실행하고 원래 수행하던 작업으로 다시 되돌아온다'

( + 그리고 인터럽트의 시작 주소는 인터럽트 벡터를 통해 알 수 있다)

 

 

 

 

'CS' 카테고리의 다른 글

[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 병렬 처리 기법  (0) 2023.05.07
[혼자 공부하는 컴퓨터구조 + 운영체제] - 빠른 CPU를 위한 설계 기법  (0) 2023.05.07
[혼자 공부하는 컴퓨터구조 + 운영체제] - 레지스터  (0) 2023.04.23
[혼자 공부하는 컴퓨터구조 + 운영체제] - ALU와 제어 장치  (0) 2023.04.16
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어의 구조  (0) 2023.04.16
'CS' 카테고리의 다른 글
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 병렬 처리 기법
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - 빠른 CPU를 위한 설계 기법
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - 레지스터
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - ALU와 제어 장치
yoozung
yoozung
  • yoozung
    yoozung의 개발블로그
    yoozung
  • 전체
    오늘
    어제
    • 분류 전체보기
      • TIL
      • 알고리즘
      • CS
      • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 이전블로그(이사중)
  • 공지사항

  • 인기 글

  • 태그

    보호소에서 중성화한 동물
    알고리즘누적합
    imos
    이모스
    환경설정
    DBeaver
    MySQL
    leetcode175
    백준23295
    leetcode176
    테이블내보내기
    디비버
    데이터내보내기
    jdk설정
    알고리즘이모스
    오블완
    누적합
    springdi
    프로그래머스
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
yoozung
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 사이클과 인터럽트
상단으로

티스토리툴바