본문 바로가기

OS/OS

인터럽트

반응형
SMALL

https://ggodong.tistory.com/256

 

운영체제의 자원 관리 기능을 간단히 알아보자.

운영체제는 하드웨어 자체를 관리하는 일과 실제 수행시킬 프로그램을 관리시켜주는 친구로서 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어입니다. 그렇다면 운영체제의 자원 관리 기능

ggodong.tistory.com

해당 글을 미리 읽고 오면 좋아요.😘


CPU는 굉장히 수동적인 친구입니다. 왜냐면 시키는 대로만 일하는 친구거든요.

 

입출력 장치에 입력이 들어왔다고 칩시다. 그 데이터들을 잠시 놔두는 곳이 로컬 버퍼(local buffer)라고 하는 친구입니다.

 

그런데, CPU가 이 입출력 데이터가 로컬 버퍼에 다 모였는지, 매번 확인하는 게 아니고, 다 모이면 버퍼와 CPU 사이에 있는 컨트롤러가 인터럽트라는 걸 발생시켜 알려줍니다.

 

즉, 인터럽트란 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법을 말합니다.

 

CPU의 경우 인터럽트 신호를 읽는 인터럽트 라인이 있어서 그 라인을 통해 신호가 들어오면 하던 일을 멈추고 관련 일을 할 수 있습니다.

 

이제 좀 더 자세히 알아보도록 합시다.

 


인터럽트의 기능

운영체제 커널에는 인터럽트가 들어왔을 때 해야 할 일이 프로그래밍 되어 코드가 저장돼있습니다. 이 코드를 정의 한 곳이 인터럽트 처리 루틴이라 합니다.

 

인터럽트 처리 후 돌아갈 위치의 경우 OS가 별도로 가지고 있습니다.

 

다시 한 번 짚고 갈게요.

 

로컬버퍼 데이터 쌓임 => 디스크 컨트롤러 인터럽트 발생 => 로컬버퍼 내용 메모리에 전달 => CPU 하던 일 중단 => 정의된 코드 수행

 

정의된 코드를 찾을 때 OS는 이를 쉽게 찾기 위해 인터럽트 벡터를 가지고 있습니다. 인터럽트 종류마다 번호를 정해, 이를 저장해놓은 자료구조를 인터럽트 벡터라 합니다.

 

인터럽트는 HW / SW 인터럽트 2가지가 존재합니다. 뭐 둘 다 인터럽트 라인에 신호를 보내 인터럽트를 수행하는 건 같습니다만 다른 점이 있기에 나뉘어 놨겠죠 ?

 

  • HW 인터럽트
    • 컨트롤러와 같은 HW 장치가 인터럽트 라인을 세팅
  • SW 인터럽트
    • 트랩이라고도 불리는 SW 인터럽트는 대표적인 예 2가지가 있습니다.
      • 예외상황 : 0으로 나누기 / 메모리 영역 밖의 접근 시도와 같은 비정상적인 작업에 대한 인터럽트
      • 시스템 콜 : CPU의 제어권을 프로그램을 가져오는 것을 말합니다. 커널 코드를 프로그램이 호출하는거죠.
    • 프로그램이 인터럽트 라인에 신호를 보내어 제어권을 가져가는 것이긴 하지만, 넓은 의미로 인터럽트의 범주에 포함합니다.

인터럽트 핸들링

인터럽트가 발생한 경우 처리해야 할 일의 절차를 인터럽트 핸들링이라 합니다.

 

A를 실행 중 인터럽트 발생 => A 상태 저장을 하는 절차를 진행하는데, CPU의 임시 저장공간인 레지스터는 새로운 명령을 실행하면 기존의 값을 모두 지우기 때문입니다.

 

OS는 프로그램을 관리하기 위해 PCB(Process Control Block)라는 자료구조를 둡니다. PCB는 메모리 주소, 레지스터 값, HW 상태들이 있습니다. 이를 저장하고 불러와서 실행이 이어지는 겁니다.

 

오늘날의 컴퓨터에서는 운영체제가 인터럽트가 발생할 때에만 이를 중재하기 위해서 실행됩니다. 그렇지 않으면 실행된 프로그램이 CPU에 온전하게 점유하는 거죠.


이상 인터럽트였습니다. ^_^

반응형
LIST