userspace driver란 무엇인가?
mplayer를 까는데 video쪽에서 vidix를 쓰겠다고 나오더군요.
이게 최신에 나온건데 도데체 먼가요? 리눅스에서 비디오쪽에 관심이 많아서요 ....
살펴보면
VIDIX - Video Interface fo *nix라고 나오는데 이게 먼가요?
README에 보면 this library was designed and introduced as interface to userspace drivers to provide DGA everywhere where it's possible(unline X11).
-It's portable successor of mga_vid technology which is located in user-space.
-Unlikely v4l it provides interface for video playback
I hope that these drivers will be portable same as X11(not only on *nix)
먼저 질문을 좀 구체적으로 정리하면
1. userspace driver란 무엇인가? (그럼 kernelspace driver랑 어떻게 틀린가?)
2. DGA란 무엇인가?
3. 그럼 이놈의 정체를 이미 아시는 분은 설명좀 해주세요. 어케서 이눔은 userspace driver인지 머하는 놈인지? 저는 kernel에서 driver를 개발은 해봤는데 userspace driver라는 말은 첨 들어봅니다.
부탁드립니다.
그럼 좋은 하루 되세요.
[자답]우선 DGA는 (Direct Graphics Access군요)
DGA is short for Direct Graphics Access and is a means ofr a program to bypass the X-Server and directly modifying the framebufffer memory.
There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was introduced with XFree4.0.1
DGA1 provides only direct framebuffer access as described above. For switching the resolution of the video signal you have to rely on the XVidMode extension.
DGA2 incorporates the features of XVidMode extension and also allows switching the depth of the display. So you may, although basically running a 32bit depth Xserver, switch to a depth of 15 bits and vice versa.
However DGA has some drawbacks. It seems it is somewhat dependent on the graphics chip you use and on the implementation of the Xserver's video driver that controls this chip.
기준은
커널 속에서 아니면 User 프로그램처럼 도느냐
대표적인 Userspace Driver은 XFree86이죠. (DRI제외)
Written By the Black Knight of Destruction
Re: userspace driver란 무엇인가?
* User level device driver vs. Kernel level device driver
(U : user level, K : kernel level , C : comment)
1. 기존의 많은(엄청나게..) C 라이브러리를 사용할 수 있는가?
- U : Ok
- K : No
*커널에서는 /proc/ksyms에 명시된 즉, export된 루틴에 대해서만 사용가능
2. conventional debugger를 제공하는가?
- U : Ok
- K : NO
* 디바이스 드라이버를 일반적인 debugging tool만으로 debug하는 것은 적당하지 않음.
3. 디바이스 드라이버가 fail할때 영향은?
- U : 보통은 해당 프로세스에만 영향을 미침
- K : System Fail로 이어짐
4. User memory swappable? 즉, 드라이버가 대량의 메모리를 사용할 수 있는가?
- U : 대량의 메모리 사용가능, 일반 프로그램과 거의 동등함
- K : kmalloc()의 한계 및 소량의 제한된 메모리
* 커널에서 유저메모리 영역을 할당받는 테크닉을 사용할 수 있음
5. 인터럽트를 제어할 수 있는가?
- U : 불가능
- K : 가능
6. priviledged mode?
- U : 요구됨
- K : 기본사항(default)
* direct memory access, I/O port 를 제어시 필요
7. response time
- U : 커널드라이버에 비해 느림
- K : 빠름
* User level 드라이버는 context switch가 이뤄져야 드라이버가 동작
8. swap ?
- U : ok
- K : no
* device driver가 swap되면, response time이 아주 길어지므로, swap되지 않게 작성해야 함.
9. 중요장치 제어에 사용되는가?
- U : 아니요
- K : 예, 특히 network, block device등은 필수적인 경우가 많음
10. 예를 들어 보면?
- U : X server, libsvga, gpm mouse driver등
- K : 대부분의 디바이스 드라이버
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기