본문 바로가기
CS/OS

[OS] 인터럽트/시스템 콜

by 배준오 2023. 7. 28.
반응형

인터럽트

인터럽트(interrupt)는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말하며, 0으로 숫자를 나누는 산술 연산오류, 프로세스 오류 등으로 발생합니다. 또한 오류뿐만 아니라 키보드, 마우스 등 IO디바이스를 사용할 때의 인터럽트, 우선순위가 높은 프로세스의 발생 등으로 발생

 

 

인터럽트의 발생 과정

인터럽트 발생 -> 인터럽트 벡터 -> 인터럽트핸들러 함수 실행 -> 명령어 실행 -> 인터럽트 종료 -> 순차적 명령어 실행

인터럽트의 종류

[하드웨어 인터럽트]

IO 디바이스 등 하드웨어에서 발생하는 인터럽트 ex) 마우스 버튼 클릭 시,디스크에서 파일 읽기,쓰기 작업 완료

[소프트웨어 인터럽트]

트랩(trap)이라고도 함. 프로세스 오류, 프로세스의 종료, 시작 등을 기반으로 프로세스에서 발생하는 인터럽트입니다.

하드웨어 인터럽트보다 우선순위가 높은 인터럽트

# Node.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');
})

System call, Modebit

[System call]

시스템콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 이를 거쳐서 호출하도록 설계되어있음, 프로세스 관리(생성,삭제 등), 파일관리, 디바이스 관리, 시간 및 날짜 관련 시스템, 프로세스 간 통신 때 이를 통해 커널함수를 호출합니다.

ex) kill() 함수 실행-> 시스템 콜 -> 커널함수 호출

 

[System call의 과정]

만약 유저프로그램이 I/O 요청을 위한 트랩을 발동했다고 하면 다음과 같은 과정이 발생됨

1. 유저 프로그램이 I/O 요청 트랩발동

2. 올바른 I/O 요청인지 확인

3. 유저 모드가 시스템콜을 통해 커널모드로 변환

4. 이후 커널함수를 실행

 

커널

운영체제의 핵심 부분이자 시스템콜을 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 함

유저 모드(modebit = 1)

유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부로 침범하지 못하는 모드

 

커널 모드(modebit = 0)

모든 컴퓨터 자원에 접근할 수 있는 모드

 

modebit(유저모드와 커널 모드를 구분하는 flag 변수)

시스템콜이 작동될 때 modebit을 기반으로 유저 모드와 커널 모드를 구분합니다. modebit은 1 또는 0의 값을 가지는 플래그 변수이며 1은 유저모드,0은 커널모드를 가르킴

 

시스템 콜의 장점

🌝유저 프로그램은 시스템콜을 기반으로 커널과 분리 됨 --> 유저프로그램은 복잡한 파일 시스템과 프로세스 생성 등에 대한 내부동작을 신경쓸 필요가 없음 또한, 운영체제의 관리하에 프로그램이 운영되므로 시스템의 안정성과 보안이 강화됩니다.

 

ex) 공격자가 만든 카메라 앱 프로그램이 그냥 아무런 제약없이 커널에 접근할 수 있다고 가정

카메라에 관련한 메모리 등이 오염될 수있고 그러면 카메라는 내 의도와는 관계없이 켜지게 되어 사생활이 노출 될 수도있습니다. 이러한 것을 방지하기 위해 유저 모드에서 시스템 콜로만 커널 모드에 진입할 수 있게 하나의 통로만을 만든 것입니다.

 

 

반응형

'CS > OS' 카테고리의 다른 글

[OS] 운영체제와 컴퓨터 시스템의 구조  (0) 2023.07.27
[OS] Memory Management  (0) 2023.04.20
[OS] Deadlock  (0) 2023.04.15
[OS] CPU Scheduling  (0) 2023.03.18
[OS] CPU Scheduling (1차정리)  (0) 2023.03.17