panda.jpg 


안녕하세요 판다 이우영입니다.


2013년이 되었습니다.

모두 새해 복 많이 받으세요~~


떡국 드셨나요? 참고로 전 떡국 안먹었습니다.

(안먹는 이유 다들 짐작하시겠죠? ㅎㅎ)


2013년에는 조금더 자세하게 조금더 친절하게 해보자는 뜻에서

블록 디바이스를 설명 해보기로 했습니다.

(제가 최근에 볼일이 생겼기 때문만이 절대 아니랍니다 ㅎㅎ)


지금까지 만들어 보았던 디바이스 드라이버는 모두 문자 디바이스 형태 였습니다.

블록 디바이스는 알아야 할 내용이 많이 있기때문에 조금 꺼려졌었습니다.


어디서 부터 설명을 해야할지.. 등등 고민도 많았습니다 ㅎㅎ.


그래도 시작했으니 최선을 다해 보겠습니다.


블록 디바이스란?



블록 디바이스가 무엇일까요?


컴퓨터의 보조 기억 장치들을 생각하신다면 편합니다.

보조기억 장치로는 대표적인 하드디스크, 플래시 메모리 등등 많은 장치들이 있습니다.

이 장치들을 제어하는 것이 블록 디바이스 드라이버 입니다.


한번 전체적인 그림을 한번 확인해 볼까요?

(좋은 그림이 있어 http://blog.naver.com/PostView.nhn?blogId=dong880510&logNo=140162846919 에서 퍼왔습니다.

문제시 삭제 하도록 하겠습니다)


Linux_Device_Driver.png


이 그림 하나로 문자, 블록, 네트워크 3개의 디바이스 드라이버를 모두 설명하고 있습니다.


문자와 블록 디바이스드라이버의 차이점이 하나 보이시죠?

버퍼가 있는것과 없는것으로 보입니다.


일반적인 블록 디바이스 들은 아주 심하게 느립니다.

(CPU 입장에서요 ㅎㅎ)


그렇기 때문에 이장치들을 효율적으로 관리를 하기위해 블록 단위로 제어를 하기 시작했습니다.

하지만 전송을 요청할 때 마다 처리를 한다면 cpu 입장에서는 쉬는일이 많아 질겁니다.

(장치의 응답을 기다려야 하기 때문이죠)

그래서 이 블록들을 모아두었다가 한번에 처리를 하기 시작합니다.

이러기 위해서는 버퍼가 필요하겠죠?

또한 장치에 (읽거나 쓰는)요청이 많이 있을때 이것들을 효과적으로 사용하기 위해서 스케줄러가 따로 있습니다.

이것을 I/O 스케줄러라고 부른답니다.


무엇인가 생소한것들이 튀어나오기 시작합니다.

이런식으로 블록 디바이스를 제대로 알기 위해서는 커널에 대한 이해도가 문자 디바이스에 비해서 요구가 되고 있습니다.


오늘은 이정도로 간단하게 넘어가도록 하겠습니다.


다음시간 부터는 블록이 무엇인지, 페이지는 무엇인지, 사용되는 구조체들에대한 설명, 등등

차근차근 알아보도록 하겠습니다.


너무 많은 내용들이 뭉처있는 부분이다 보니 저도 정리가 잘되어있지 않내요 ㅎㅎ.


어디서 부터 설명을 해야 좋을지 고민입니다 ㅎㅎ


그럼 문자와 블록 디바이스의 차이점 잘 기억해 두시고

다음시간에 만나겠습니다.


바이바이~~