

ComputerCPU : 매 쿨럭마다 memory 에 담긴 작업을 실행함 - register:memory 보다 빠르면서 작은 작업 공간
- mode bit : CPU 에서 실행되는 것이 OS 인지 사용자 프로그램인지를 구분하는 자료
- interrupt line : CPU 는 항상 memory 에 있는 instruction 을 시행한다. (memory에서 실행해야 하는 주소값을 받아 시행)
이 때 memory 에서 작업을 하던 중 I/O device 의 명령이 들어왔을 때 수행 할 수 있도록 , I/O device 와 접근 가능하게 만드는 line

CPU는
memory에 담긴 프로그램들에게만 할당되며 프로그램은 시간적 제약을 갖는다.
CPU는 반복적으로memory에 담긴 프로그램들에게 할당 되며 각 프로그램들은 실행 될 수 있는 시간적 제약이 존재한다. 이러한 시간적 제약은timer에 의해 규제 되며 보통몇 십 ms정도의 시간동안 실행 될 수 있다.
프로그램 별로 시간 제약이 존재하는 이유는 특정 프로그램이CPU를 독점하여 다른 프로그램이 실행되지 않는 것을 방지하기 위함이다.
만약 메모리에OS,프로그램 A,프로그램 B이 존재한다고 해보자.프로그램 A가 무한 반복문이라 무한하게 반복되는 프로그램이라면프로그램 A만 무한하게 실행하는 것이 아니라,timer에 설정된 시간 이상으로프로그램 A가 실행 될 경우 `interrupt line에 신호를 주게 된다.
interrupt line에 신호가 오면CPU는프로그램 A의 작업을 멈추고CPU를OS에 할당한다. 이후 다음 프로그램인프로그램 B의 작업을 시행하고 다시 이전에 못끝낸 작업인프로그램 A에게 할당되는 시스템이다.
프로그램들은
I/O device에 접근 할 수 없으며 오로지OS만이I/O device에 접근 할 수 있다.이전에 말했듯
I/O device의 속도는CPU에 비하면 너무나도 속도가 느리다.
만약memory에 있는 프로그램들이 순차적으로 실행되던 도중I/O device에 명령을 내렸다고 가정하자.프로그램 A를 실행하는 동안 내가키보드를 입력한 상황이다.그러면 키보드에서 입력된 장치는 키보드의
local buffer안에 신호를 담는다.
신호가 담기는 동안CPU는I/O device의 작업과 무관하게 계속memory에 담긴프로그램의 작업을들 시행하고 있다.이후
local buffer에I/O device의 입력이 들어온다면device controller는interrupt line에 신호를 주게 되며interrupt line이 실행되었기 때문에CPU는OS에게 할당된다.
OS는interrupt line에 신호가 왔기 때문에 그 이유를 살펴보고 , 이것이프로그램 A에서 키보드 입력이 들어왔음을 알기 때문에 키보드 입력에 대한 신호를프로그램 A 메모리에 넣은 상태로 다시프로그램들이 실행된다.

mode bit은 현재 CPU 가 OS 에게 할당되었다면 0 , 사용자 프로그램 에게 할당되었다면 1 을 표시한다.
mode bit 은 보안상의 문제로 0일 때는 모든 접근이 가능하다.
하지만 1일 때는 모든 접근이 불가하며, 제한되어 있는 접근만 할 수 있도록 한다.
그러니 OS에게 CPU 가 넘어갈 때에는 mode bit 이 0 , 프로그램 에게 넘어갈 때에는 mode bit 이 1 로 설정된다.
memory : CPU 의 작업 공간- `CPU` 는 매 순간(쿨럭) `memory` 에서 기계어를 읽어서 작업을 수행하게 된다.
DMA controller(Direct Memory Access)
I/O device에 신호가 들어올 때 마다local buffer -> intterrupt line -> OS -> 신호 copy하게 되면CPU가 일을 하려고 하면 계속interrupt가 걸려서 효율적이지 못하다.
이 때DMA controller를 두게 되면DMA conttroller가 직접local buffer에 있는 데이터를memory에direct로 접근하여 작업을 할당한다.
이후interrupt를 한 번 걸어CPU에게 제가local buffer에 있는 내용을 모두 걸었어요 라는 신호를 보낸다.
Memory controller
CPU가 접근하려는 프로그램과DMA가 접근하려는 프로그램이 겹칠 경우 문제가 발생 할 수 있기 때문에memory controller가 어떤 기기가 먼저memory에 접근 할지를 결정한다.
I/O device 
I/O device : device 로 input 을 보내거나 (키보드), output 을 받는 (모니터 , 프린터기)는 deviceHard Disk 는 보조 기억장치 로 disk 에 정보를 받거나, 보내는 장치 I/O device 는 마치 CPU 역할을 하는 것과 같은 device controller 를 갖게 된다. (device controller 는 하드웨어 ! )device controller에 접근 할 수 있게 만드는 software 가 필요한데 그게 바로 device driver (프린터기를 설치하면 프린터기 프로그램을 설치하는 것과 같음) I/O device 의 내부를 통제하는 것은 CPU 가 아닌 개별의 device controller 가 맡게 된다. (작은 cpu 역할)제어 정보를 위한 register : CPU 에 의해서 얻은 명령을 시행 할 수 있는 registerI/O device 들 또한 자기들만의 데이터를 저장 할 수 있는 작업 공간이 필요하며 이런 작업 공간을 local buffer 라고 한다.Interrupt
Interrupt : 하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트 Trap : 소프트웨어 인터럽트Exception : 프로그램이 오류를 범한 경우System call : 프로그램이 커널 함수를 호출하는 경우OS 는 올바른 I/O 요청인지를 확인하고 수행한다.I/O 완료 시 제어권을 시스템콜 다음 명령으로 옮긴다.현대의 운영체제는 인터럽트에 의해 구동된다.
CPU는 인터럽트가 없다면OS에 접근하지 않고 사용자 프로그램만을 작동한다.
많은 작업들이 시행 될 때 마다인터럽트가 발생하고OS에서 해당 작업을 명령하고 프로그램에서 작업이 실행됨

I/O device에 접근하는 것은OS만을 이용해서 접근 할 수 있는특권 명령이라고 하였다. 그럼 어떻게I/O를 할까 ?
- 사용자 프로그램이 운영체제에게
I/O에 접근하라고 명령을 보낸다 ->system callsystem call이 발생하면interrupt line에 신호를 보내고mode bit : 0,OS에게CPU를 할당한다.OS는device controller에게 명령을 한다.

Interrupt 정리
- 프로그램이
I/O에 접근하려면System call을 보내소프트웨어 인터럽트OS는device driver를 통해device controller에게 명령을 시킴- 명령을 보낸 후
CPU는memory에 있는프로그램들을 열심히 실행함- 명령을 받은
I/O device의 수행이 끝났다면 작업물을local buffer에 담음local buffer에 작업이 찼을 경우device controller가하드웨어 인터럽트를 실행함

인터럽트 관련 용어
다양한 인터럽트 별로 해야 하는 일들이 다르다.
인터럽트 처리 루틴 (Interrupt Service Routine, 인터럽트 핸들러)
- 해당 인터럽트를 처리하는 커널인터럽트 벡터
- 인터럽트 종류 별로 어디에 있는 함수를 실행애햐 하는지, 함수의 주소를 정의해둔 일종의 테이블

CPU는memory에 담긴 작업들만을 수행함memory에는OS와사용자 프로그램이 담아져있으며사용자 프로그램은CPU에 할당될 수 있는 시간의 규제가 존재함 (timer)interrupt line이 존재하며interrupt line에 인터럽트가 들어올 경우CPU는OS에게 할당되며 ,OS는 어떤 이유로interrupt가 발생했는지 확인 후 다시프로그램에게 할당됨프로그램이timer이상CPU를 할당했을 경우interrupt line에 신호를 보냄
4.1CPU가OS에게 할당되며timer에 의한interrupt임을 인지하면 다음프로그램에게 할당됨- 보안상의 이유로
I/O device에는OS만 접근 가능하며프로그램은 제한된 접근만이 가능함 (OS 가 접근하는 명령을 특권명령 이라고 지칭함)프로그램이I/O device에 접근하고자 한다면interrupt line에 접근하고자 하는 명령을 담은interrupt를 보냄 ->소프트 웨어 인터럽트 (system call)
6.1OS는 해당interrupt를 보고device driver를 통해device controller에게 명령을 보냄
6.2CPU는I/O device의local buffer에 작업이 완료 될 때 까지프로그램들에게 할당됨
6.3local buffer에 명령 받은 작업이 담기면device controller는interrupt line에 작업이 완료 되었다며interrupt를 보내고OS는 해당interrupt를 해석하여system call을 보낸프로그램의 메모리에 해당 작업 내용을 담은 주소를 담음I/O device에 접근 할 때 마다interupt line에 인터럽트를 보내면CPU가 일을 열심히 하지 못하니DMA (Direct Memory Access)를 통해local buffer에 담긴 내용물을memory내부의프로그램에 직접 담음
7.1DMA는memory controller에 의해 관리됨interrupt별로 루틴이 필요하기 때문에 이를ISR (interrupt service routine)으로 관리하며 루틴 별 함수에 대한 정보를Interrupt vector를 통해 관리함