CS공부/운영체제

[운영체제] 컴퓨터 시스템의 구조(2)

혜유우 2024. 4. 22. 19:18
📍인터럽트(Interrupt)

인터럽트 당한 시점의 레지스터와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다

 

Interrupt(하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
Trap(소프트웨어 인터럽트)
-Exception: 프로그램이 오류를 범한 경우
-System call: 프로그램이 커널 함수를 호출하는 경우

Ex.

-프로그램이 실행되다가 디스크에서 파일을 읽어와야 한다면 

I/O작업은 특권명령이기 때문에 프로그램은 운영체제에 system call을 함

운영체제는 disc controller에 파일을 읽으라고 요청 -> 이 작업은 오래 걸리므로 다른 프로그램에게 먼저 cpu 넘김. disc controller가 파일을 다 읽으면 cpu에 interrupt를 걸면서 cpu 제어권이 운영체제에게 넘어감

-scanf

cpu, device controller는 하드웨어, 운영체제, device driver는 소프트웨어

cpu에서 실행하는 건 기계어

 

✓인터럽트 관련 용어

인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음

인터럽트 처리 루틴(=인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수

 

 

시스템콜(System call): 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것

 

Device Controller
I/O device controller

-해당 I/O 장치유형을 관리하는 일종의 작은 CPU

-제어 정보를 위해 control register, status register를 가짐

-local buffer를 가짐(일종의 data register)

-I/O는 실제 device와 local buffer 사이에서 일어남

-Device controller는 I/O가 끝났을 경우 interrup로 CPU에 그 사실을 알림

 

device driver(장치구동기): OS 코드 중 각 장치별 처리 루틴 -> software
펌웨어: device driver에서 수행되는 코드
device controller(장치제어기): 각 장치를 통제하는 일종의 작은 CPU -> hardware

 

 

동기식 입출력과 비동기식 입출력

 

📍동기식 입출력(synchronous I/O)

I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감

구현 방법 1
-I/O가 끝날 때까지 CPU를 낭비시킴
-매시점 하나의 I/O만 일어날 수 있음
구현 방법 2
-I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
-I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
-다른 프로그램에게 CPU를 줌

📍비동기식 입출력(asynchronous I/O)

I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

=> 동기식, 비동기식 모두 I/O의 완료는 인터럽트로 알려줌

 

 📍DMA(Direct Memory Access)

-빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용

-CPU의 중재 없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송

-바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴

 

원래 memory에 접근할 수 있는 건 cpu밖에 없었는데 DMA를 통해 memory에 직접 접근

 

 

 

 

서로 다른 입출력 기계어

-I/O를 수행하는 special instruction에 의해

-Memory Mapped I/O에 의해

 

 

저장장치 계층 구조

캐싱(재사용성)

 

Primary -> CPU의 직접 접근 가능

Secondary -> CPU가 직접 접근하는 것이 아니라 I/O controller에 요청하여 읽어들임

Main memory(DRAM), Cache Memory(SRAM)은 전원이 나가면 사라지는 휘발성