컴퓨터 시스템 구조


<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를 이용)

스크린샷 2024-02-23 오후 4.27.02.png

</aside>

동기식 입출력

<aside> ✍️ NOTE

</aside>

비동기식 입출력

<aside> ✍️ NOTE

</aside>

DMA

<aside> ✍️ NOTE

</aside>

I/O를 수행하는 명령어

<aside> ✍️ NOTE

  1. 메모리 접근 I/O와 I/O 접근을별개로 관리(일반적 I/O)

  2. I/O 장치도 메모리 접근과 동일하게 주소값을 통해서 접근하도록 만드는 것(Memory mapped I/O)

    스크린샷 2024-02-24 오후 1.06.54.png

메모리가 접근하면 자신만의 주소공간을 만들어 (stack, data, code)로 Virtual memory를 저장하고 이를 실제 물리적 메모리에 저장한다.

Swap area와 물리 메모리를 통해 가상 메모리를 관리한다. (Swap area 도 전원이 종료되면 날라간다. 메모리 추가 공간 용도 느낌)

주소 변환 객체는 테이블에 따라 변경된다.

</aside>

저장 장치 계층 구조

<aside> ✍️ NOTE

</aside>