# Interrupt

41개의 포스트
post-thumbnail

인터럽트, 시스템 콜, 유저모드, 커널모드 들의 프로그래밍과의 관계

1. User mode와 Kernel mode > 영상 및 사진 출처 : 🔗 https://www.youtube.com/watch?v=v30ilCpITnY&list=PLcXyemr8ZeoQOtSUjwaer0VMJSMfa-9G-&index=10 > 🍌 user mode 우리가 개발하는 프로그램은 일반적으로 유저모드에서 실행 🍌 user mode ⇒ Kernel mode 프로그램 실행 중에 인터럽트(interrupt)가 발생하거나 시스템 콜(system call)을 호출하게 되면 커널 모드로 전환 🍌 Kernel mode 방금 전까지 실행 중이던 프로그램의 현재 CPU 상태를 저장함 나중에 마저 실행하기 위해 커널이 인터럽트나 시스템 콜을 직접 처리한다. 즉, CPU에서 커널 코드가 실행됨 처리가 완료되면 중단됐던 프로그램의 직전의 CPU 상태를 복원 🍌 Kernel mode ⇒

2023년 9월 3일
·
0개의 댓글
·

[CS] Interrupt, System call

User mode & Kernel mode User mode - 우리가 개발하는 프로그램은 일반적으로 User mode에서 실행 User mode -> Kernel mode - 프로그램 실행 중에 인터럽트가 발생하거나 시스템 콜을 호출하게 되면 커널 모드로 전환 Kernel mode - 프로그램의 현재 CPU 상태를 저장한다. 커널이 인터럽트나 시스템 콜을 직접 처리 즉, CPU에서 커널 코드가 실행 됌 처리가 완료되면 중단됐던 프로그램의 CPU 상태를 복원 어떤 경우에는 중단됐던 프로그램이 바로 실행되지 않고 나중에 실행될 수 있다. Kernel mode -> User mode 다시 통제권을 프로그램에게 반환 User mode - 프로그램이 이어서 실행 > Kernel - 운영체제의 핵심 시스템의 전반을 관리/감독하는 역할 하드웨어와 관련된 작업을 직접 수행 Why? Kernel mode 시스템을 보호하기 위해 - 프로그램이 하드웨어에 대

2023년 6월 4일
·
0개의 댓글
·
post-thumbnail

인터럽트

인터럽트란? > 장치나 소프트웨어에서 운영체제로 전송되는 신호이다.(하드웨어를 잠깐 멈추는(방해) 신호) 컴퓨터는 기본적으로 혼자 작동할 수 없고, 주변기기와 함께 작동한다. 주변기기와 컴퓨터가 통신 즉, 입/출력을 할 때마다 인터럽트가 발생한다. 인터럽트 발생 시 운영체제는 현재 진행 중인 작업을 일시적으로 중단하고 인터럽트 핸들러를 사용해 인터럽트를 처리한다. 인터럽트는 사용자 입력, 데이터 전송 완료, 오류 조건 등 즉각적인 처리를 필요로 하는 이벤트를 알리기 위해 사용된다. 인터럽트 핸들러는 인터럽트를 처리하고 인터럽트의 유형과 우선순위에 따라 적절한 조치를 취한다. 인터럽트 처리 과정에서 운영 체제는 중요하지 않은 기능을 우선순위가 높은 인터럽트 처리를 무시하거나 지연시킬 수 있다. 이를 위해 중요한 작업이나 이벤트 처리에 우선순위를 부여할 수 있다. 인터럽트의 예시 하드웨어 오류 프린터에서 용지 걸림과 같은 하드웨어 오류가 발생한

2023년 5월 28일
·
0개의 댓글
·
post-thumbnail

[OS] 7. Interrupt란? Interrupt 발생 시 과정??

0. 목차 Interrupt란? Interrupt handler란? Interrupt Service Routine란? Interrupt 발생 시, 1. Interrupt란? > kernel과 H/W 장치 사이의 interface를 의미한다. 장치들의 입출력 완료, 타이머 완료등을 CPU에게 알리는 H/W적 방법 2. Interrupt handler란? > Interrupt handler는 Interrupt Service Routine(ISR)을 호출하고, 인터럽트에 대한 처리를 위해 필요한 모든 작업을 처리하는 루틴입니다. 3. Interrupt Service Routine란? > 하드웨어 인터럽트 (또는 소프트웨어 인터럽트)가 발생할 때 실행되는 루틴으로, 인터럽트가 발생한 원인을 처리하고 시스템의 일시적인 작업을 처리하는 역할을 합니다. 4. Interrupt 발생 시,

2023년 4월 25일
·
0개의 댓글
·
post-thumbnail

[OS] 6. Device Controller, Device driver란?

0. 목차 Computer System 구조 Device driver란? Device Controller란? 1. Computer System 구조 보시는 바와 같이 Computer System은 크게 Application Program, Os, H/W로 구성되는 것을 확인할 수 있을 겁니다. Q. 왜 여기서 Device Controller와 Device driver에 대해 설명하려는데 Computer System 구조에 대해 살펴보는가? **=> 그 이유는 Device driver와 Device Controller가 정확히 어디에 위치해 있는지를 파악하고서 역할을 알아야 더 이해하기 쉽다고 생각하기 때문입니다. 2. Device

2023년 4월 25일
·
0개의 댓글
·
post-thumbnail

[OS] 4. System call?

1. Kernel이 제공하는 2개의 Interface 커널이란? 커널은 2개의 Interface를 제공한다. a. System call b. Interrupt 이번에는 System call에 대해 알아보려고 한다. 2. System call? >응용프로그램에서 kernel 기능을 사용할 수 있는 유일한 방법 Kernel과 응용프로그램 사이의 인터페이스라고도 볼 수 있다. 3. System call 함수 System call 라이브러리를 통해 다양한 System call 함수를 제공 받는다. ex) open(), close(), read(), fork(), exit(), wait()등의 System call 함수.. 4. Duel Mode 우리는 System call에 대해 알게 되면서 Duel

2023년 4월 22일
·
0개의 댓글
·

3. [OS] kernel(커널)?

0. 목차 운영체제 구성 kernel(커널)? 커널의 기능 1. 운영체제 구성 먼저 운영체제의 구성에 대해 살펴보려고 합니다. > 운영체제 = 커널 + 툴 + 디바이스 드라이버 이번 시간에는 이 중 kernel(커널)에 대해 알아보려고 합니다. 2. Kernel(커널)? > 운영체제의 핵심 부분으로 좁은 의미의 운영체제를 의미한다. Interface의 kernel 사용자가 컴퓨터만의 언어와 규칙으로 H/W와 통신할 수 있도록 도와주는 역할을 한다. System call을 통해 응용프로그램과 kernel의 통신을, Interrupt를 통해 H/W와 kernel의 통신을 할 수 있도록 한다. 즉 사용자는 kernel을 통해 H/W와 통신을 할 수 있다고 볼 수 있다. 3. 커널의 기능 System call, Interrupt와 같은 Interface를 제공. CPU, Memo

2023년 4월 22일
·
0개의 댓글
·
post-thumbnail

OS / 인터럽트

인터럽트 인터럽트는 CPU에게 “띵동”하는 것이다. 인터럽트는 외부 인터럽트와 내부 인터럽트가 있다. 내부 인터럽트인 입출력 인터럽트를 중점으로 보자. 인터럽트마다 고유한 번호인 IRQ가 있다. CPU는 인터럽트를 만나게 되면 인터럽트의 IRQ를 통해 정해진 인터럽트 서비스 루틴인 ISR을 수행하게 된다. 이때 이전에 수행하던 작업을 저장하게 된다. (PC, PCB) ISR이 끝나고 나면 원래 작업을 다시 수행하게 된다. 인터럽트 예시, System Call System Call HW는 OS에 의해 보호된다. 따라서 고급 (User Layer) 에서 HW와 I/O를 하기 위해서는 OS, kernel의 도움을 받아야 한다. 이로 인해 user mode / kerner mode로 구분이 된다. kernel은 System Call이라는 interface를 user

2023년 4월 15일
·
0개의 댓글
·
post-thumbnail

OS #3 Interrupt & System Call

실행 중인 두 프로세스의 경우, CPU를 어떻게 점유하게 되는 것인지 의문이 들 수 있다. 두 프로세스를 번갈아가면서 CPU를 점유하도록 하는데, 주체는 OS고 이를 CPU 스케줄링을 통해 관리하게 된다. 이는 OS도 CPU를 점유해야 스케줄링을 수행하는 것을 의미하고 프로세스 자체적으로 OS에게 CPU를 양보하진 않는다. OS에서 위 상황을 기반으로, 입출력 장치들의 입력 사항들이 실시간으로 화면에 출력되며 관리되어야 하는데, 이를 인터럽트 라는 메커니즘을 통해 관리한다. 즉, 주변 장치와 입출력 장치는 CPU나 메모리와 달리 인터럽트를 통해 관리된다. ✅ 인터럽트 > : 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고 발생한 상황에 대해 우선 처리가 필요함을 CPU에게 알리는 것 현재 수행 중인 작업보다 더 중요한 작업(입출력, 우선 순위 연산)이 발생하면 해당 작업을 먼저 처리한다. > 사용하는 이유는 ?

2023년 3월 6일
·
0개의 댓글
·
post-thumbnail

Linux Interrupt

Interrupt(인터럽트) 프로세스가 CPU를 사용하여 실행하고 있을 때 하드웨어 장치에서 비동기적으로 신호( I/O 같은 )가 발생하여 처리가 필요한 경우에 커널에게 처리를 요청하는 것이다. Interrupt (인터럽트) 처리 과정 인터럽트 발생 전 CPU는 명령을 가져와서 실행을 한다. 연산 처리 및 데이터 접근 등등의 일을 하며 하나의 명령 실행이 끝났다면 PC(Program Counter)를 증가시킨다. (보통 4바이트) 인터럽트 발생 단일 인터럽트 발생 시 디스크가 인터럽트를 발생시킨 경우 우선 Interrupt Request Bit에 한 비트 설정을 한다. 이 비트가 설정되면 더 이상 CPU는 작업을 돌지 않고 PC에 인터럽트 핸들러의 새로운 주소를 저장한다. 다시 진행을 하게 되면 인터럽트 핸들러의 주소가 fetch 되고 인터럽트 핸들러 루틴이 실행된다. 이때 `Interrupt Request

2023년 2월 10일
·
0개의 댓글
·
post-thumbnail

인터럽트와 I/O

해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다. 인터럽트 결국 하드웨어가 운영체제에게 전달하기 위해서는 반드시 인터럽트를 통해야 한다. 반대로 운영체제가 하드웨어에게 전달하기 위해서는 두가지 방법이 있다. memory mapped > str 24, $300 메모리에 바로 할당 디바이스 안의 레지스터와 버퍼의 내용이 메모리의 특정한 위치에 들어있고 운영체제는 해당 주소에 어떤 값을 넣음으로써 컨트롤러에 명령을 내릴 수 있다. I/O-direct > out 24, $300 24번 디바이스에 300이라는 값을 쓰는것과 같다. 컨트롤러를 동작시키는 명령어이

2023년 1월 12일
·
0개의 댓글
·
post-thumbnail

[OS] 2) System Structure & Program Execution

자료 출처 : KOCW 운영체제 - 반효경 교수님 0. 간략하게 알아보는 컴퓨터 구조 저장장치 계층 구조 위로 갈 수록 접근, 처리 속도가 빠르다. 위로 갈 수록 휘발성이며, 단위 크기당 값이 비싸 보통 용량이 더 작다. cpu에 register가 막 여러개 들어있다. 하드웨어마다 다르지만 register는 32bit, 64bit 크기를 갖는다. 여기에 데이터나 instr 등등이 임시로 저장되고, cpu는 얘들을 가지고 논다. cache는 접근, 처리 효율을 높이기 위해 사용하는 것 정도로만 알아두자 재사용을 위한 것이다. main memory접근에 10

2022년 9월 25일
·
0개의 댓글
·

운영체제와 I/O Interrupt

운영체제란? I/O와 Interrupt 운영체제 탄생 배경 초기의 컴퓨터는 계산기였기 때문에 특별한 규칙이 필요 없었다. 그러나 메모리, CPU 등의 성능이 향상되고, 여러 작업을 동시에 할 수 있는 컴퓨팅 환경이 조성되면서 사용 규칙이 필요해졌다. 규칙이 없으면 기계가 망가질 수도 있기 때문이다. 이 때문에 등장한 것이 운영체제이다. 이렇게 등장한 운영체제는 성능 뿐만 아니라 자원 관리(Resource Management)라는 중요한 역할도 한다. 우선순위를 정해주고 자원과 CPU를 할당하는 등 많은 일을 한다. 요약하자면 운영체제는 사용자에게 인터페이스를 제공하고 응용 프로그램에게 컴퓨터 자원을 골고루 배분한다. 또한 적당한 시점에 응용 프로그램으로부터 자원을 회수하고, 악의적인 응용 프로그램으로부터 컴퓨터를 보호하기도 한다. 즉, 운영체제는 각각의 응용프로그램이 활동할 수 있는 환경을 제공하고, 응용 프로그램이 필요로 하는 컴퓨터 자원을 나누어주며, 응용

2022년 8월 27일
·
0개의 댓글
·

[OS] Context Switching

Context Switching이란? 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 context switching이라고 한다. CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적재하는 과정. 보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 발생한다. 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서 context switching이 필요하게 됐다. 빠르게 Task를 바꾸면서 실행하기에 사람들한테는 실시간 처리가 되는 것처럼 보인다. PCB란? 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓을 수 있는 저장 장소. 한 PCB 안에는 한 프로세스의 정보가 담겨 있다. CPU에서는 프로세스의 상태에 따라 교체작업이 이루어지는데, 이때, 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장값

2022년 7월 31일
·
0개의 댓글
·

프로세스

프로세스(Process) 1) 프로세스의 개념 프로그램이 주기억 장치에 적재되어 CPU에 의해 실행 과정에 있을 때 프로세스라고 부른다. 목적 또는 결과에 따라 발생되는 사건(프로시저)들의 과정이다. CPU가 할당되는 실체이며 PCB*가 정의하는 실체이다. *PCB(Process Control Block) : 프로세스들의 정보를 기록한 테이블 2) 프로세스 상태 (1) 프로세스 주요 상태 준비(Ready) 상태 기억 장치에 존재하는 프로세스를 선택하여 CPU의 할당을 기다리는 시점 프로세스의 대기 상태가 종료되어 다시 CPU의 할당을 기다리는 시점 실행(Run) 상태 : 대기 상태의 프로세스가 CPU를 할당받아 작업이 진행되는 상태 대기(Block) 상태 : 프로세스의 특정 작업을 진행하기 위해 입출력 작업 등을 기다리는 상태 종료(Exit) 상태 : 프로세스 실행이 완료되어 종료된 상태 (2) 상태

2022년 7월 1일
·
0개의 댓글
·
post-thumbnail

✨Persistence: I/O Devices

OS는 virtualize storage interface를 user process에게 제공해야 하는데 그 interface가 file이다. I/O devices에서는 다양한 device를 어떻게 handle하는지 아는 것이 main이다. 다양한 device에게 standard interface, standard protocol을 제공해야하고 이것을 다른 말로 canonical interface, canonical protocol이라고 한다. The Requirements of I/O CPU나 memory에 저장된 data는 power failure가 발생하면 data를 maintain할 수 없기 때문에 persistence를 유지하기 위해서는 permanent storage에 data를 저장해야 한다. I/O가 없으면 컴퓨터는 쓸모가 없다. I/O가 없으면 OS가 print, show, store등을 할 수 없기 때문이다. 뇌는 있는데 손, 발, 입 이런게 아무것도 없는거

2022년 6월 12일
·
0개의 댓글
·
post-thumbnail

✨Concurrency (1)

Concurrency: An Introduction process는 자신이 CPU와 memory를 소유하고 있다는 illusion을 가지고 있었고 single point of execution을 가졌다. thread는 single running process에 대한 새로운 abstraction이다. thread는 multiple execution flow를 가진다. multi-threaded program은 하나 이상의 point of execution을 가지며 여러 개의 PC를 가지고 있다. 하지만 address space는 공유한다. Context Switch Between Threads 각 thread는 자신만의 PC와 register set을 가지고 있다. 각 thread의 상태를 나타내기 위해 하나 이상의 thread control block(TCB)가 필요하다. running하고 있는 두 thread 사이의 switch를 할 때에는 한 t

2022년 6월 11일
·
0개의 댓글
·
post-thumbnail

PintOS Project 02 - User program

01 주차에는 kernel에서 필요한 기능을 모두 만들었다면 02주차부터는 user program을 실행시키기 위한 작업을 준비한다. command line을 읽어와서 file name과 argument를 추출하여 순서대로 stack에 push하는 argument passing부터 user의 system call을 처리하기 위한 기능들을 구현하는 것이 이번 주차의 목표이다. 아무래도 user 영역에서 kernel 영역으로 전환되는 과정이 잘 이해가지 않아 syscall 보다 오히려 훨씬 애먹었던 기억이 있다. syscall 함수들 자체는 크게 이해 안가는 부분들이 없었다. 물론 아직 구체적으로 공부하지 않은 virtual memory나 file system과 연관된 함수들을 100% 이해를 하진 못했지만 어느정도 system call이 어떤식으로 처리되는지에 대한 감은 잡은 것 같다. 본론으로 들어가기 전에 interrupt가 발생했을 때, kernel stack에 어떤것들이 쌓

2022년 6월 9일
·
0개의 댓글
·
post-thumbnail

✨ARM Interrupts (2)

Pending Status Interrupt Inputs and Pending Behavior interrupt가 assert되었을 때 interrupt는 pending될 수 있다. interrupt-set-pending-register(SETPEND)가 pending status를 담고 있다. interrupt source가 interrupt를 de-assert하더라도 pended interrupt status는 interrupt handler가 실행되도록 한다. _assert는 raise정도의 의미를 가진듯? interrut request signal이 사라져도 pending status가 유지돼서 interrupt handler가 실행된다.. 그런 의미인듯._ processor가 pen

2022년 6월 7일
·
0개의 댓글
·
post-thumbnail

✨ARM Interrupts (1)

Interrupt Handling Basics Polling / Interrupt polling과 interrupt는 동작하는 방식이 다르다. polling은 어떤 event가 발생하진 않았는지 CPU가 주기적으로 확인을 한다. 하지만 interrupt는 외부에서 어떤 event가 발생하면 외부에서 CPU로 신호를 직접 보내준다. ARMv7-M Interrupt Handling 하나의 non-maskable interrupt(NMI)를 지원한다. 우선순위를 지정할 수 있는 512개의 interrupt/exception(496개의 interrupt, 16개의 exception)을 지원한다. interrupt는 mask될 수 있고 implementation option이 지원되는 interrupt의 수를 선택한다. nested vectored interrupt controller(NVIC)는 processor core의 바로 옆에 붙어있는 형태이다. ![](

2022년 6월 7일
·
0개의 댓글
·