OS는 시스템 resource를 virtualize 한다.
- processors -> processes,threads
- Memory -> virtual memory address spaces
- storage -> volumes,directories,files
- I/O devices -> files
- networks ->files(sockets,pipes,...)
어떻게 컴퓨터 시스템이 일할까?
기본적으로 컴퓨터 시스템의 구조는 폰 노이만 구조를 따른다.
폰 노이만 구조를 통해 데이터 뿐 아니라 프로그램도 메모리에 저장 할 수 있게 되었다.
- processor라고 불린다.
- 대부분 시스템은 일반적인 processor를 사용한다.
일반적인 문제를 풀기에 유연성을 가진다.- 특별한 목적의 processors도 있을수 있다.
- hardware accelators라고 불린다.
- device 업무에 특화된 processor 장치
GPU(Graphic Processing Unit), 머신러닝에서 쓰는 TPU(Tensor Processing Unit)- 한 시스템에서 여러 프로세서를 사용할 수도 있다.
multiprocessor,multicore
- device controller들은 bus(물리적으로 전선이라고 봐도됨)로 연결되어 있다.
이 bus들은 위 그림처럼 공유하고 있는 메모리를 접근할수 있도록 해준다.- cpu가 controller에게 명령하면(신호를 주면) 신호에 따라 device들이 메모리에서 정보를 읽어오던가 쓰던가 한다.
- bus를 장치들이 동시에 접근할 수는 없고, 한 장치가 bus를 사용하고 놓으면 다른 장치가 bus를 사용하는 식이다.
- controller에는 buffer가 있다. 예를들면, 키보드를 입력했을때, 한글자 한글자 memory로 전송하는게 아니라, buffer에 글자들을 저장했다가 한번에 memory에 저장하는 식이다.
- cpu는 메모리만 읽을 수 있다.
- Device controller들은 interrupt가 발생하면 CPU에게 알려준다.
- cpu에 장치하나당 하나의 interrupt 선이 있다 가정
- CPU는 interrupt를 감지하고 그에따라 처리한다.
interrupt service routine,interrupt handler routine,interrupt handler
- Interrupt vector나 Interrupt Descriptor Table(IDT)는 service routines의 주소를 포함한다.
- interrupt가 발생하면, CPU는 일치하는 interrupt handler를 찾기위해 interrupt number/ID로 IDT를 찾는다.
- CPU는 현재하고 있는 일을 저장하고 interrupt 신호가 무엇인지 찾아보고 가서 처리하고 나와서 하던일을 마저한다.
- interrupt handler: 실제로 어떻게 처리해야할지 소프트웨어로 만들어진것
- IDT내에 있는 주소들은 IDT handler를 가리킨다.
- 위 그림을 보면 CPU가 동작하다가 I/O interrupt가 발생했을때 cpu가 하던일을 잠깐 저장하고 I/O device controller에 신호를 줘서 interrupt를 처리하는 것을 볼 수 있다.
- system은 현재 cpu 상태를 보존한다.
- interrupt가 발생하면 cpu는 자신이 처리하던 명령어의 주소를 cpu 내부에 레지스터나 스택에 저장한다.
- interrupt handler가 끝나면 최근 실행하고 있었던 명령어의 주소로 돌아간다.
- interrupt선으로는 data를 이동시키지는 못하고 신호만 줄 수 있다.
신호를 통해 IDT에 있는 interrupt handler 주소를 찾아서 해당 interrupt handler를 수행한다. 이때, cpu가 연산하게 한다.
만약, Interrupt 선에 동시에 신호가 오면 우선순위에 따라 처리한다.
- Device driver들은 device controller들로 의사소통할 수 있게 OS를 도와준다.
- Device driver들은 device controller(DCs)를 추상화시킨다.
- I/O 작업을 시작 하기위해 device driver는 DC내에 레지스터를 설정한다.
- DC는 레지스터 설정을 기본으로 동작을 수행한다.
- DC는 data를 device에서 해당 device의 buffer로 이동시킨다.
- DC는 I/O transfer가 끝나면 device driver에게 알려준다.
Main memory
- CPU가 바로 접근할 수있는 매체만 저장한다.
- Random access, byte 단위로 접근이 가능
- 휘발성이다, 컴퓨터 끄면 메모리 날라감
Secondary storage
- 비휘발성 저장고이다.
- block addresable(block 주소 단위)