딩굴댕굴

운영체제의 기초 - 20. I/O Devices and Device Drivers 1

by jennysgap

BOX

I/O Hardware 1







I/O Device 내부의 Register

Status Register: 장치의 상태를 보여주는 Register

Control Register: 장치의 동작을 결정하는 Register

Data Register: 입출력할 데이터를 잠시 보관하는 Register


Q. I/O Device의 Register에 접근하는 두 가지 방법은?

A. Memory-Mapped I/O, Port-Mapped I/O

















Mouse Driver의 역할 요약

- Mouse Interrupt 발생 시, Mouse의 Data Register에서 값을 읽어오는 역할

- Interrupt를 Event로 바꾸어 주는 역할













I/O Hardware 2



spindle: 회전축 (회전축에 여러장의 disk가 stacking 되어 있음)

Track: 한 디스크 표면에서 Spindle로부터의 거리가 동일한 환형의 저장 공간

Cylinder: 여러 장의 디스크에 수직으로 쌓여 있는 동일한 반지름의 Track들의 집합

Sector: Track을 분할하는 디스크 Read/Write의 단위 영역


Cylinder 단위의 데이터 접근이 중요한 이유

Arm Assembly가 고정된 상태에서 여러 Platter에 걸쳐 있는 한 Cylinder의 Track들을 동시에 읽을 수 있기 때문




Sector #(number)

  1. Cylinder #

  2. Track #

  3. Sector # in the track

* sector 에서 데이터를 읽으려면 3가지 3차원 정보가 필요합니다.


sector의 크기는 0.5K에서 4K까지 (sector의 사이즈가 block device의 block사이즈가 됨)

sector가 디스크를 읽을 때 데이터 transfer가 일어날 때의 minimal unit 사이즈가 됨




디스크가 돌면서 하는 일 (디스크에 기본적인 메커니즘)

1. Arm Assembly를 해당 실린더로 이동 시킴 (= Seek)

Seek Time: Arm을 목표한 지점(해당 Cylinder)까지 이동하는데 걸리는 시간

seek time이 disk를 굉장히 느린 device로 만드는 이유다

2. 해당 sector가 돌아올 때까지 기다려야 함

Rotational Delay: 디스크가 회전하여 목표한 지점(해당 Sector)이 Head에 도착하는 시간

RPM (Rotation Per Minute) 1분당 회전수 (RPM 때문에 rotational delay가 발생)

3. 해당 sector를 읽어 전기적신호를 만들어 주고 내보냄 or disk controller에 있는 Ram에 저장




우리가 사용하는 스마트폰에는 Flash가 16GB, 32GB 정도 들어있음



Flash의 operation은 3가지가 있음

  1. Read operation: 한페이지를 통째로 일어오는 operation

  2. Program(Write) operation: 디스크를 굽는다고 생각하기 때문에 program이라는 용어로 더 많이 씀

  3. Erase operation: Flash는 ROM이기 때문에 다시 쓸 수가 없음 (다시쓰려면 그 영역을 초기화 시켜야 함)


Erase-before-write

NAND Flash 메모리는 데이터의 덮어쓰기가 불가능하기 때문에 먼저 데이터를 Erase한 후에 Write를 해야 함

Worn-out

Erase 가능한 횟수에 제한이 존재함


Wear-leveling

NAND Flash의 한 영역에 Erase가 집중되어 Worn-out이 발생하는 거을 막기 위해 전체 영역을 고루 사용하도록 조절하는 기술


* 또 다른 특성: operation들의 수행시간이 다 다름

* Read / Write의 단위는 Page고 Erase의 단위는 Block이다.




Flash 메모리를 스토리지로 사용해서 파일 시스템을 구성하려면 파일 시스템 아키텍처 중에서 반드시 log structure 파일 시스템을 구성해야 함

왜? Erase-before-write라는 제약조건 때문임


page 0, 1, 2번 순차적으로 write했음 그러다 page 1번 내용에 업데이트를 하려고 했는데

Write하려면 내용을 지워야 함. 지우는 단위가 page가 아니고 block(전체 다 지워야 함)임 


파일 시스템의 내용을 업데이트할 때 바로바로 업데이트를 못하고 log 메모를 남겨서 별도의 공간에 업데이트 하는 것

이것을 Log structure 파일 시스템이라고 한다.



log-structured file system을 구성하면 반드시 page remapping을 해야 함

page들이 처음에는 Sequential(순차적인)으로 있있으나 업데이트를 몇번 하다보면 흩어지게 되기 때문





Device Drivers: I/O device를 통제하는 그리고 운영하는 S/W임

Device Drivers가 있으므로써 어떤일이 일어날까?

- 사용하는 파일 시스템 스토리지가 3차원 디스크인지 Flash 메모리인지 상관없이 파일 데이터를 읽거나 쓸 수 있음


S/W System 구성을 말할 때는 반드시 2가지를 말함

1. 정적인 구성 요소 (Structure)

2. 동적인 구성 요소 (Behavior)

==> (프로그램과 프로세스의 관계를 말하면 됨) 정적구성요소가 프로그램이고 동적구성요소가 프로세스다.


Device Driver의 동적구성요소는 ISR(interrupt service routine), 정적구성요소는 Device Driver를 유저프로그래밍이 사용할 때 호출하는 API들 operation들 이다. 결국 Device Driver는 라이브러리인데 어떤 function들은 유저프로세스에 의해서 불리고 어떤 function들은 interrupt에 의해서 불린다.






출처 - http://snui.snu.ac.kr/ocw/index.php?mode=view&id=679

출처 - http://snui.snu.ac.kr/ocw/index.php?mode=view&id=680

반응형

블로그의 정보

jennysgap

jennysgap

활동하기