본문 바로가기
운영체제

[OS] 운영체제와 정보기술의 원리 3장(1/2) - 인터럽트

by BeforB 2021. 11. 21.
728x90

 

 

반효경 교수님의 [운영체제와 정보기술의 원리] 3장 컴퓨터 시스템의 동작 원리 중

 

 

이어지는 다음글

 

[OS] 운영체제와 정보기술의 원리 3장(2/2) - 저장장치

이전 글 - 운영체제와 정보기술의 원리 3장(1/2) - 인터럽트 [OS] 운영체제와 정보기술의 원리 3장(1/2) - 인터럽트 반효경 교수님의 [운영체제와 정보기술의 원리] 3장 컴퓨터 시스템의 동작 원리 중

beforb.tistory.com

 

 

 

1. 컴퓨터 시스템의 구조

내부장치 : CPU, 메모리, ...

외부장치 : 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등

 

입력(Input) : 데이터가 외부장치로부터 내부장치로 들어오는 것

출력(Output) : 데이터가 내부장치로부터 외부장치로 나가는 것

 

 

메모리나 입출력장치 등 각 하드웨어 장치에는 컨트롤러가 붙어있다. 컨트롤러는 각 장치를 제어하는 일종의 작은 CPU로 각 장치의 이름을 붙여 '메모리 컨트롤러', '디스크 컨트롤러' 등으로 부른다.

 

 

기본적으로 운영체제는 메모리 낭비를 방지하기 위해 통째로 메모리에 올리지 않고 가장 핵심적인 부분만을 항상 메모리에 올려두며, 이를 커널(kernel)이라고 부른다.

 

 

 

2. CPU 연산과 I/O 연산

컴퓨터에서 연산 == CPU가 일을 한다는 뜻

입출력 장치들의 연산은 입출력 컨트롤러가, 컴퓨터 내의 연산은 메인 CPU가 담당하며 입출력 장치와 메인 CPU는 동시 수행이 가능하다.

ex) 프로그램 B가 메인 CPU를 할당받아 코드를 수행하고 A는 입출력 연산을 수행

 

로컬버퍼

위 사진(3.1)을 보면 각 장치마다 컨트롤러와 함께 로컬버퍼가 존재한다. 로컬버퍼는 각 장치로부터 오고가는 데이터를 임시로 저장하기 위한 작은 메모리이다.

 

입출력장치로부터 데이터를 읽어오는 과정 - ex) 디스크

1) 디스크 컨트롤러가 디스크에서 내용을 읽어 로컬버퍼에 임시 저장

2) 디스크 컨트롤러가 메인 CPU에 인터럽트를 발생시켜 데이터를 읽어오는 작업이 끝났음을 알림

3) 로컬버퍼에 저장된 내용을 메인 CPU가 메모리로 전달

 

 

 

3. 인터럽트(Interrupt)

컨트롤러들이 CPU의 서비스가 필요할 때 통보하는 방법. CPU의 서비스가 필요한 경우 CPU 옆의 인터럽트 라인에 신호를 보내서 인터럽트가 발생했음을 알려준다.

 

인터럽트 라인(Interrupt Line)

CPU는 매 시점 메모리에서 명령을 하나씩 읽어와서 수행함. CPU는 명령 하나를 수행할 때마다 CPU 옆의 인터럽트 라인을 확인하고, 인터럽트 라인에 신호가 들어오면 하던 일을 멈추고 인터럽트 관련된 일을 먼저 처리한다. 

 

인터럽트 벡터(Interrupt Vector)

인터럽트 종류마다 번호를 정해서 번호에 따라 처리해야 할 코드가 위치한 부분(인터럽트 처리루틴)을 가리키고 있는 자료구조.

 

인터럽트 처리루틴 == 인터럽트 핸들러

인터럽트가 발생했을 때 실제 처리해야 할 코드가 정의된 곳

 

 

인터럽트의 구분

인터럽트를 발생시키는 방식은 동일.

 

1) 하드웨어 인터럽트

 인터럽트라고 부름

 컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅

 

2) 소프트웨어 인터럽트

 트랩(trap)이라고 부름

 소프트웨어가 인터럽트 라인을 세팅

 

 소프트웨어 인터럽트의 종류

 - 예외상황(Exception) : 사용자 프로그램이 0으로 나누는 연산 등 비정상적인 작업을 시도하거나 권한 없는 작업을 시도할 경우

 - 시스템 콜(System Call) : 사용자 프로그램이 OS 내부의 코드를 실행하고 싶을 때 OS에 서비스를 요청하는 방법(사용자 프로그램은 커널의 코드를 직접 실행시킬 수 없으므로 OS에게 CPU를 넘겨서 OS가 직접 커널의 코드를 실행시키도록 한 뒤 다시 CPU를 넘겨받아야 함)

 

 

 

4. 인터럽트 핸들링(Interrupt Handling)

: 인터럽트가 발생한 경우 처리해야 할 일의 절차

 

PCB(Process Control Block)

운영체제에서 현재 시스템 내에서 실행되는 프로그램들을 관리하기 위한 자료구조.

각각의 프로그램마다 하나씩 존재하며 프로그램이 실행 중이던 코드의 메모리 주소, 레지스터값, 하드웨어 상태 등 해당 프로그램의 실행 정보를 저장하고 있다.

 

 

인터럽트 처리 루틴

ex. 프로그램 A가 실행되고 있을 경우 인터럽트가 발생할 경우(현재 CPU 제어권을 A가 가지고 있는 상태)

1) A의 현재 실행 상태를 PCB에 저장

2) CPU 제어권이 A로부터 인터럽트 처리 루틴으로 넘어감

3) CPU가 인터럽트 처리

4) 저장된 상태를 PCB로부터 CPU에 복원하여 인터럽트 직전의 위치부터 A의 실행이 이어짐

 

오늘날 컴퓨터에서 OS는 인터럽트가 발생할 때에만 실행되며 인터럽트에 의하지 않고서는 CPU를 점유하지 않는다.

 

 

 

 

 

 

 

 

728x90

댓글