<aside> 💡 NOTE
device controller : I/O device를 통해 읽고 쓰면서 local buffer에 데이터를 저장, interrupt를 통해 cpu에게 할일이 있다는 것을 알려준다. CPU : 4byte짜리 기계어로 정의가 되어, memory의 register중 메모리 주소를 가리키는 program counter의 기계어를 읽어서 cpu가 실행하고 memory가 가리키는 program counter는 다음 위치도 알려준다. 즉, 순차적으로 처리한다. 하지만 함수호출, 점프 등을 통해 순차적이지만은 않다. 즉, 빠른 일꾼이라고 생각하기 interrupt line: program counter를 바로 실행하는 것이 아니라 os로 넘겨서 인터럽트 벡터와 인터럽트 처리 루틴에 따라 사용순서가 넘어간다. mode bit : 운영체제가 가진 mode bit은 0이어서 I/O device 접근 및 다른 사용자 프로그램의 메모리를 확인 하는 등의 역할을 작업 가능하다. 사용자 프로그램이 사용할때 mode bit은 1이기에 남의 프로그램의 메모리, 커널의 메모리 등을 처리하는 것을 막고 자신의 메모리 주소만 보고 처리하게 된다. I/O device처리는 모두 mode bit이 0일때 할수 있으므로, 프로그램에서 I/O device를 접근하려면 시스템 콜을 통해 요청한다. 하지만 바로 접근은 불가하므로 interrupt line을 의도적으로 접근하게 되고 이를 통해 I/O 디바이스로 접근하게 된다.(software interrupt : trap) trap일때 exception, system call이 있는데 잘못된 접근이나 명령을 한경우 exception을 만들어 사용 프로그램을 강제 종료한다. timer : 하나의 프로그램이 CPU 독점을 막음(무한 루프로 cpu를 사용하면 뺏을 방법이 필요하기에 timer를 이용)
Memory : CPU의 작업 공간
I/O device : device controller를 통해 내부를 통제받아 작용한다.(I/O의 CPU라고 할수 있다.)
local buffer : I/O device의 작업 공간
하드디스크 : 불러오기 / 저장하기(I/O)
register : 조금 빠르게 처리하는 공간
Disk의 diskController가 read를 읽으면 인터럽트를 걸어주면 os가 CPU를 이전 동작을 멈추가 재할당해주거나 한다.
mode bit :
타이머
Device Controller
CPU는 메모리와 local buffer모두 접근이 가능한데 이렇게 되면 cpu가 너무 많은 interupt를 받게 된다. 따라서 DNA controller를 통해 직접 메모리에 접근이 가능하도록 만들었다.
device driver, device controller 용어
I/O 의 수행
모든 입출력 명령은 특권 명령이다.
따라서 사용자 프로그램은 어떻게 I/O를 하는가?
trap을 이용해서 인터럽트 벡터의 특정 위치로 이동
제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
즉, interrupt가 거의 모든 CPU의 행위를 만들어나간다.
용어
인터럽트 벡터 ( 어디 있는 코드를 처리를 해야할지 표시한곳을 의미) - 값, 주소 쌍으로 구조
인터럽트 처리 루틴(인터럽트 처리를 어떻게 해놓은지 적어놓은 코드) - 인터럽트 헨들러
</aside>
<aside> ✍️ NOTE
Synchronous I/O
가수가 립싱트하면 가수와 synch를 맞춰야한다.
즉, I/O 요청후 입출력 작업 완료를 확인하고 다음것을 사용하는것
I/O 요청하고 작업이 모두 끝났을때 다음것을 하는것
보통 read는 동기식 작업
단 시간이 오래걸리므로
</aside>
<aside> ✍️ NOTE
</aside>
<aside> ✍️ NOTE
</aside>
<aside> ✍️ NOTE
메모리 접근 I/O와 I/O 접근을별개로 관리(일반적 I/O)
I/O 장치도 메모리 접근과 동일하게 주소값을 통해서 접근하도록 만드는 것(Memory mapped I/O)
메모리가 접근하면 자신만의 주소공간을 만들어 (stack, data, code)로 Virtual memory를 저장하고 이를 실제 물리적 메모리에 저장한다.
Swap area와 물리 메모리를 통해 가상 메모리를 관리한다. (Swap area 도 전원이 종료되면 날라간다. 메모리 추가 공간 용도 느낌)
주소 변환 객체는 테이블에 따라 변경된다.
</aside>
<aside> ✍️ NOTE
Magnetic Disk > Optical Disk > Magnetic Tape - Secondary(Byte 단위로 접근 불가)
</aside>