딩굴댕굴

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

by jennysgap

BOX

Device Drivers 1








    



Character Device는 주로 Sequential access를 하고 Block Device는 주로 random access를 한다.


Block Device는 block buffer cache를 갖고 있다. 

Character Device는 일반적으로 사람과 interaction하기 때문에 느린 device임. 

Block Device는 large volume을 빠른 속도로 전송시킴. 


Block Buffer Cache의 역할

CPU에 비해 상대적으로 속도가 느린 Block Device의 성능을 보완






File System의 역할

1. 디스크에 있는 Data를 읽거나 쓸 수 있는 기능을 제공

2. File이나 Device와 같은 시스템 자원들에게 Name Space를 제공



   



Realdata: Character contents를 의미함 

Metadata: File의 특성을 표현하는 부가적인 Data

  - 파일이 생성된 날짜

  - 파일의 last modify된 날짜

  - 파일을 누가 읽을 수 었는지 없는지에 대한 access permission

  - 파일의 주인


Major Number: 어떤 타입의 device인가를 나타냄 (major number당 하나의 device number가 존재)



Device Drivers 2




character device table라는 Array가 있음

이 array는 시스템에 존재하는 device type 만큼 entry를 가지고 있다. 

character device table의 index는 Major Number가 된다.








Q. Character Device Driver와 비교했을 때 Block Device Driver에서 추가되는 것은?

A. Block Buffer Cache가 추가된다.






Two-level interrupt handling

interrupt가 발생하면 거기에 대한 handler가 뜸 (자기가 수행해야 하는 최소한만 수행하고)

나머지 중요한 로직은 별도의 context에서 따로 돌게 함 (유닉스는 Bottom half 방식으로 수행시킴)

Bottom half 는 interrupt 수행중에서 돌리는 것이 아니고 일종의 커널레벨 쓰레드라고 생각하면 됨


리눅스에서 interrupt handler는 먼저 interrupt를 disable시킴 그리고 OS에서의 민감한 이슈들 먼저 처리하고

나머지 로직은 Bottom half형태로 만들어서 Bottom half Queue에 넣어넣고 끝냄

Bottom half 는 나중에 시간이 있을 때 스케쥴링을 함







Device Driver가 제공해 주는 5개의 함수 (Open, Close)











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

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

반응형

블로그의 정보

jennysgap

jennysgap

활동하기