개발자는 기록이 답이다
운영체제 Ch.2 - 인터럽트(interrupt) 본문
인터럽트
운영체제는 인터럽트에 의해 구동됩니다.
인터럽트(interrupt)는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말하며, 0으로 숫자를 나누는 산술 연산오류, 프로세스 오류 등으로 발생합니다. 또한 오류뿐만 아니라 키보드, 마우스 등 IO 디바이스를 사용할 때의 인터럽트, 우선순위가 높은 프로세스의 발생 등으로 발생합니다
멀티태스킹은 우리가 크롬 브라우저를 실행하고 파일을 다운로드하거나 다양한 작업을 동시에 수행하는 것과 같이 여러 작업을 동시에 처리하는 기능을 의미합니다. 내부적으로, 멀티태스킹을 수행하는 동안 인터럽트가 발생합니다. 각 작업이 실행되는 동안 컴퓨터는 인터럽트를 받아들이고 해당 작업에 대한 명령어를 수행합니다.
인터럽트는 멀티태스킹 환경에서 다양한 이벤트(예: 파일 다운로드 완료, 입력 이벤트, 하드웨어 에러)에 응답하기 위해 발생하는 것으로, 컴퓨터가 여러 작업을 동시에 처리하면서 작업 간 전환 및 관리를 가능하게 합니다.
CPU는 메모리에 있는 명령어(instruction)을 순차적으로 실행하는데 인터럽트가 발생되면 점프해서 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트핸들러 함수(인터럽트 서비스 루틴, ISR이라고도 함) 가 실행되며 특정 명령어를 실행하게 됩니다. 이 후 인터럽트가 종료되면 다시 순차적으로 실행되게 됩니다.
다시 말해서, CPU가 일시적으로 작업을 멈추면, 인터럽트 핸들러 함수(핸들러)가 호출됩니다. 이때, 인터럽트 발생을 식별하고 처리하기 위한 정보는 인터럽트 백터 테이블에 저장됩니다. 인터럽트 핸들러 함수는 해당 인터럽트에 대한 처리 절차를 따라 실행되며, 그 후에 CPU는 다시 순차적으로 작업을 계속합니다. 이 과정을 통해 시스템은 여러 인터럽트에 응답하고 작업을 효율적으로 처리합니다.
인터럽트의 종류
인터럽트는 하드웨어 인터럽트, 소프트웨어 인터럽트 두 가지로 나뉩니다.
하드웨어 인터럽트
IO 디바이스 등 하드웨어에서 발생하는 인터럽트입니다. 예를 들어 마우스를 기반으로 버튼을 클릭할 때, 디스크에서 파일읽기, 쓰기 작업이 완료되었을 때 발동됩니다.
소프트웨어 인터럽트
트랩(trap)이라고도 합니다. 프로세스 오류, 프로세스의 종료, 시작 등을 기반으로 프로세스에서 발생하는 인터럽트입니다. 하드웨어 인터럽트보다 우선순위가 높은 인터럽트입니다.
간단한 실습
// a.js
const express = require('express'); const app = express();
const path = require('path')
const pt = path.join(__dirname, "a.json") const fs = require('fs')
// 네트워크에서 파일을 읽으면서 하드웨어 인터럽트 발생
app.get("/", (req, res) => { const ret = fs.readFileSync(pt) res.json(JSON.parse(ret))
})
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
코드에서 fs.readFileSync(pt)를 사용하여 파일을 동기적으로 읽어오고 있습니다. 파일 시스템은 주로 하드웨어 장치와 상호작용하여 데이터를 읽고 쓰는 동작을 수행합니다. 이때 파일 시스템은 디스크 드라이브와 상호작용하면서 하드웨어 인터럽트가 발생할 수 있습니다. 하드웨어 인터럽트는 하드웨어 장치에서 오는 신호로, 예를 들어 디스크 드라이브에서 데이터를 읽는 동안 데이터가 준비되면 하드웨어 인터럽트가 발생하여 해당 데이터를 CPU에 전달합니다.
$ npm install express # Express 설치
$ node a.js # 프로세스 생성
Server listening on port 3000
$ ps -ef | grep node # 프로세스 목록 검색 (node 명령어 확인)
$ kill -9 [pid] # 프로세스 종료 (소프트웨어 인터럽트 트랩 발생)
코드에서 kill -9 [pid] 명령어를 사용하여 프로세스를 강제로 종료하고 있습니다. 이 명령어는 운영체제에서 소프트웨어 인터럽트 트랩을 발생시키며, 특정 프로세스를 종료하는 명령을 운영체제에 보내는 것입니다. 운영체제는 이 명령을 받으면 해당 프로세스를 종료시키기 위해 소프트웨어 인터럽트 트랩을 처리하게 됩니다.
'CS > 운영체제' 카테고리의 다른 글
운영체제 Ch.4 - 메모리계층(memory hierarchy) (0) | 2023.10.16 |
---|---|
운영체제 Ch.3 - 시스템콜(system call)과 modebit (1) | 2023.10.16 |
운영체제 Ch.1 - 운영체제와 컴퓨터시스템의 구조 (1) | 2023.10.16 |
기술 면접 대비 CS 핵심 요약 - 메모리 관리 전략 (0) | 2023.09.12 |
기술 면접 대비 CS 핵심 요약 - 스케줄링 (0) | 2023.09.11 |