1. I/O Devices
interface : 시스템 소프트웨어가 작동을 제어할 수 있도록한다. 모든 장치에는 지정된 인터페이스와 프로토콜이 있다.
internal : 장치가 시스템에 제공하는 추상적인 명령을 구현하기 위해 구현되어있다.
While (STATUS == BUSY)
; // 바쁘니까 이따 와라
Write data to DATA register
Write command to COMMAND register
(Doing so starts the device and executes the command)
While (STATUS == BUSY)
; // wait until device is done with your request
비효율성 및 불편함
1. Polling : Busy 면 계속 기다려햐함
2. Programmed I/O (PIO) : 오래걸림,
1.1 interrupts(Polling solution)
장치를 반복적으로 polling하는 대신 프로세스 재우고 context switch 함. 장치가 작업을 끝내면 하드웨어 interrupt가 발생하여 미리 계획해놓은 interrupt service routine (ISR)로 인해 CPU가 OS로 간다.
위에는 CPU가 디스크에 가있는 동안 polling 상태를 유지하고 있느사진이고 아래는 다른 일을 하고있는 사진이다.
1.2 Direct Memory Access (DMA)
효율적인 데이터 이동을 하게 해준다. 이는 CPU의 개입없이 장치와 메모리간의 전송을 조정할 수 있는 장치이다. OS는 DMA 엔진에 메모리 위치와 복사할 데이터 양을 알려줌으로써 DMA 엔진을 프로그래밍합니다. DMA가 완료되면 DMA 컨트롤러가 인터럽트를 발생시킵니다.
위에 사진은 1번 프로세스가 programed IO에 의해 프로그램이 이동되고 있다. 이동 된 후 1번 프로세스는 디스크에 있다가 돌아간다. 아래사진은 DMA 가 메모리 위치와 복사할 데이터 양을 받아 옮겨주고 있다. 그 시간동안 cpu는 2번 프로세스를 선택해서 실행한다.
1.3 Methods of Device Interaction
1) I/O 명령
- in과 out
- 이들은 특권을 가지고 있다
2) Memory-mapped I/O
- 하드웨어는 장치의 레지스터를 포인터처럼 사용할 수 있게 함
- 특정 레지스터에 접근하기 위해서 OS는 주소를 읽거나 저장한다.
2. Disk scheduling
2.1 Hard Disk Drives (HDD)
Platter : 데이터가 저장되어있는 원형 하드, 위 아래 모두에 정보를 담고 있으며 디스크는 하나 이상의 플래터를 가짐
Spindle : 플래터를 일정한 속도로 회정시키는 모터에 연결되어있다. 플래터의 중심 막대
Track : 원형 하드 안에 있는 섹터들의 모음.
Disk head : 플래터의 표면을 왔다갔다 하며 데이터를 읽고 쓴다. arm에 붙어있다.
disk arm : 헤드를 원하는 틁에 갈 수 있께 해준다.
2.2 I/O Time
seek time : 올바른 트랙으로 이동하기 위한 시간
Rotational Delay : 원하는 섹터를 찾기 위해 회전하는 시간
transfer time : 데이터를 작성하는데 걸리는 시간
2.3 Disk scheduling
OS가 디스크에 실행된 I/O 순서를 결정한다. 일련의 I/O 요청이 주어지면 디스크 스케줄러는 요청을 검토하고 다음에 예약할 요청을 결정한다.
1) FCFS (First Come First Save)
먼저 오는 데이터를 먼저 저장하는 방법이다.
Requests : 98, 183, 37, 122, 14, 124, 65, 67
98 → 183 → 37 → 122 → 14 → 124 → 65 → 67
arm을 여러번 움직어야한다.
2) SSTF (Shortest Seek Time First)
가까운 애를 먼저 저장하는 방법
Requests : 98, 183, 37, 122, 14, 124, 65, 67 (Head starts at 53)
65 → 67 → 37 → 14 → 98 → 122 → 124 → 183
기아가 생길 수 있다.
3) Elevator ( SCAN and C-SCAN )
SCAN : 위에서 아래로 데이터를 읽는 방법. 바닥에 도닥하면 맨 위로 간다.
C-SCAN : 아래에서 위로 데이터를 읽는 방법. 꼭대기에 도닥하면 맨 아래로 간다.
Requests : 98, 183, 37, 122, 14, 124, 65, 67 (Head starts at 53)
SCAN : 37 → 14 → 65 → 67 → 98 → 122 → 124 → 183
C-SCAN : 65 → 67 → 98 → 122 → 124 → 183 → 14 → 37
disk rotation cost 를 무시한다.
4) SPTF (Shortest Positioning Time First )
I/O Time을 고려하는 방법이다. 디스크는 시계 반대 방향으로 회전한다.
만약 seek time이 더 중요하다면 한 트랙밖에 차이 안나는 16을 접근하러 갈 것이고 rotation time이 더 중요하다면 왼쪽 방향으로 돌아갈 때 더 가까운 8을 접근하러 갈 것이다
'학부 내용 정리 > [ 2-1 ] 운영체제' 카테고리의 다른 글
[ OS ] File System Implementation (0) | 2022.06.14 |
---|---|
[ OS ] Files and Directories (0) | 2022.06.14 |
[ OS ] Common Concurrency Problems (0) | 2022.06.13 |
[ OS ] Semaphores (0) | 2022.06.13 |
[ OS ] Condition Variables (0) | 2022.06.12 |