-
Notifications
You must be signed in to change notification settings - Fork 0
OS4
Nam Koong Kwon edited this page Nov 28, 2019
·
1 revision
- 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법을 뜻합니다.
- 기본적으로 CPU는 매 시점 메모리에서 명령을 하나씩 읽어 와서 수행하게 됩니다.
- 이 때, CPU 옆에는 interrupt line이 있어서 CPU가 자신의 작업을 하던 중간에 interrupt line에 신호가 들어오면 하던 일을 멈추고 interrupt와 관련된 일을 처리하게 됩니다.
- 운영체제 커널에는 interrupt가 들어왔을 때 해야 할 일을 미리 다 프로그래밍해서 보관하고 있습니다.
- interrupt가 발생한 경우에 처리해야 할 일의 절차를 의미합니다.
- 운영체제 커널 영역에는 현재 시스템 내에서 수행되는 프로그램들을 관리하기 위한 자료구조인 PCB(Process Control Block)을 두고 있습니다.
- 그 자료구조 중 일부분은 interrupt가 발생했을 때 프로그램의 어느 부분이 수행되던 중이었는지를 저장하기 위한 자료구조로 사용됩니다.
- 이 부분에 저장되는 내용으로는 현재 수행 중이던 메모리 주소와 레지스터 값, 그리고 하드웨어 상태 등이 있습니다. - 이러한 정보가 저장되었다가 interrupt 수행이 끝나면 저장된 값을 CPU 상에 다시 복원해 interrupt 당하기 직전의 명령을 계속 수행할 수 있게 되는 것입니다.
- 예상할 수 없는 시기에 주변 장치에서 발생된 일에 대해서 주변 장치가 처리를 요청하는 경우. 주변 장치에 긴급 상황이나 CPU로 처리를 요구하여야 하는 상황이 발생되었을 때 그 상태를 CPU에 전달하는 통로가 IQR입니다.
-
Maskable interrupt
- 처리할 것인지, 말 것인지를 설정할 수 있는 인터럽트를 뜻합니다.
-
Non-Maskable interrupt
- 처리 여부를 묻지 않고 CPU가 무조건 처리하는 인터럽트를 뜻합니다.
- 예로, 메모리 패리티 에러와 I/O channel check가 있습니다.
-
interrupt controller
- 주변 기기의 인터럽트를 받아들이는 몇 개의 인터럽트 입력 단자가 마련되어 있으며, CPU로 요청하기 위한 인터럽트 단자가 별도로 마련되어 있습니다.
- 주변 장치에서 발생된 인터럽트는 CPU로 바로 전달되지 않고 일단 interrupt Controller에 전달됩니다.
- interrupt Controller는 CPU로 전달하기 전에 인터럽트의 종류를 알아내고 CPU에게 인터럽트 종류를 알려줍니다.
- CPU는 인터럽트의 종류에 따라 인터럽트를 발생시킨 장치를 제어하게 됩니다.
-
통상적으로 interrupt라고 하면 H/W interrupt를 의미합니다.
-
S/W interrupt는 trap이라는 용어로 주로 불립니다.
-
S/W interrupt는 다음과 같은 경우에 발생시킵니다.
- 프로세스가 0으로 나누는 연산 등 불가능한 작업을 시도하는 경우
- 자신의 메모리 영역 바깥을 접근하려는 경우
-
H/W처럼 컨트롤러가 발생시키는 인터럽트가 아니라 프로그램 수행 도중 CPU에 IRQ를 세팅하여 발생시키게 됩니다.
-
S/W interrupt가 발생한다면?
- 현재까지의 수행 지점을 저장
- interrupt 처리루틴으로 가서 interrupt 발생과 관련한 작업을 수행
- 다시 인터럽트 당한 지점으로 돌아와 프로그램을 계속 수행
-
원칙적으로는 interrupt 처리 중에 또 다른 interrupt가 발생하는 것을 허용하지 않습니다.
-
그 이유는 interrupt 처리 중에 다른 interrupt를 처리하게 되면 데이터의 일관성이 유지되지 않는 경우가 발생할 수 있기 때문입니다.
-
하지만 interrupt마다 중요도가 다르기 때문에 상대적으로 낮은 중요도를 가진 interrupt 작업 수행 중에 중요도가 더 높은 interrupt가 발생하는 것을 허락할 필요가 있습니다.
-
그렇게 된다면 현재 처리 중이던 interrupt 코드의 수행 지점을 커널 스택에 저장하고 우선순위가 높은 interrupt를 처리하게 됩니다.
- 일종의 작은 CPU입니다.
- 컴퓨터 전체에 CPU라는 중앙 처리가 있듯이 각 하드웨어 장치마다 존재하면서 이들을 제어합니다.
- IRQ(Interrupt request lines)라고도 합니다.
- 컴퓨터 주변장치마다 고유의 IRQ번호를 가지고 CPU로부터 서비스를 원할 때 각 기기는 신호를 보내고 기다립니다.
IRQ |
Bus Type |
Typically used by |
|---|---|---|
| IRQ0 | none | Non-maskable Interrupt(NMI) |
| IRQ1 | none | Keyboard port |
| IRQ2 | none | Programmable Interrupt Controller(PIC) |
| IRQ3 | 8/16 bit | Communications Port2(COM2:) |
| IRQ4 | 8/16 bit | Communications Port1(COM1:) |
| IRQ5 | 8/16 bit | Sound card; printer port(LPT2:) |
| IRQ6 | 8/16 bit | Floppy disk controller |
| IRQ7 | 8/16 bit | Printer port(LPT1:) |
| IRQ8 | none | System CMOS/real-time clock |
| IRQ9 | 8/16 bit | Redirected from IRQ 02; network interface |
| IRQ10 | 16 bit | Netwrok interface; USB host controller |
| IRQ11 | 16 bit | Video adapter; USB host controller |
| IRQ12 | 16 bit | PS/2 mouse port |
| IRQ13 | none | Numeric data processor(math coprocessor) |
| IRQ14 | 16 bit | Primary IDE interface |
| IRQ15 | 16 bit | Secondary IDE interface |
- highest priority interrupt
- 심각한 오류가 발생했는지 확인하거나 실패로 인해 모든 작업을 중지하는 데에만 사용됩니다.
- 예시로 컴퓨터가 멈췄을 때 Ctrl + Alt + Del를 누르면 NMI가 CPU로 전송됩니다.
- Integrated Drive Electronics
- 하드 디스크 드라이브를 PC에 연결하는데 사용되는 기본 인터페이스
- 객체지향 언어(Object Oriented Language)의 특징은 ?
- 기본형(Primitive type)과 참조형(Reference Type)의 차이점은 ?
- 멀티쓰레드의 장단점 ?
- Java 콜렉션의 대표 인터페이스 ?
- 접근제어지시자의 종류와 특성에 대하여 설명
- Thread를 구현하기 위한 두가지 방법은 ?
- 인터페이스란 ?
- abstact class란 ?
- garbage collection이란 ?
- Vector와 ArrayList
- 오버로딩과 오버라이딩 차이
- 전역변수, 지역번수, 정적변수를 스택과 힙과 관련해서 설명
- String, StringBuffer, StringBuilder 차이 ?
- inner class 란 ? inner class를 쓰는 이유 ?
- Java Reflection이란 ? 사용하는 이유 ?
- 예외처리의 필요성과 목적 ?
- JVM의 구성에 대해 설명
- HashMap과 HashTable
- process와 thread 차이 ?
- muti programming, multi processing, multi threading 차이
- dispachter ?
- inperrupt 설명하기
- scheduling이 뭐지? 종류가 뭐가 있는지 ? 언제 사용 ?
- synchronization는 ??
- aging 기법 ?
- race condition 설명
- semaphore 설명 ? 어떻게 구현 ?
- monitor는 ?
- mutex 설명
- deadlock 설명
- 논리적 메모리와 가상 메모리는 ?
- 시스템콜과 인터럽트 콜의 차이는 ?
- 키(key)의 종류와 개념 설명
- 데이터베이스 정규화 설명, 왜하고 어떻게 하는지, 그리고 역정규화는 무엇인지, 왜하는지 ?
- 데이터 이상이란 ?
- 데이터베이스 트랜잭션에 대하여 설명, ACID에 대해 설명
- 데이터베이스 무결성에 대하여 설명
- NoSQL과 RDBMS가 뭔지 설명
- data independency란 ?
- Trigger의 역할
- Join의 종류에 대해 아는대로 설명
- index? index를 쓰는 이유와 장단점
- OSI 7계층에 대해 설명
- 프로토콜(Protocol)이란 ?
- HTTP 프로토콜이란 ?
- big endian, little endian이란 ?
- TCP와 UDP
- POST 방식과 GET 방식
- 3-way handshaking
- 4-way handshaking
- control flow
- congestion control
- 로드밸런싱(Load balancing)
- 도메인(domain) ?
- 브라우저에 URL을 치면 어떤 일이 발생 ?
- IP Address와 MAC Address
- ARP와 RARP에 대해 설명
- 라우터와 스위치에 대한 차이점
- 웹브라우저가 서버와 통신하는 과정 설명
- 쿠키와 세션
- REST(REpresentational State Transfer)란 ?
- MVC 패턴 설명
- CI란 ?
- DI(Dependency Injection)란 ?
- AOP(Aspect Oriented Programming)란 ?
- Connection pool 이란 ?
- Spring Framework
- Spring 특징
- JSP(Java Server Page)
- JSP에서 페이지 이동 방식<Foward 방식, Redirect방식>
- Servlet
- WEB 서버란 ?
- WAS(Web Application Server)란 ?
- 웹컨테이너란 ?