kernel space에서 file access
안녕하세요~~
kernel space 에서 file access를 실현하였는데요...
코드형식은 아래와 같습니다.
char *buffer = kmalloc(buf_size, GFP_KERNEL);
int len, source, dest;
mm_segment t old_fs = get_fs();
set_fs(KENEL_DS);
source = sys_open(SOURCE_FILE, O_RDONLY, 0);
dest = sys_open(DEST_FILE, O_RDWR | O_CREAT, FMODE_WRITE);
len = sys_read(source, buffer, buf_size);
while(len > 0)
{
sys_write(dest, buffer, len);
copysize += len;
}
sys_close(source);
sys_close(dest);
set_fs(old_fs);
위와 같은 형식으로 코딩하여 kernel space에서 간단한 filecopy프로그램을 작성하였습니다.
그런데 속도측정을 해보니 user space에서 file I/O를 진행한것보다 속도가 더 뜨네요..
이거 대체 뭔 일인지???
저는 kernel space에서 직접 file access를 하면 속도가 많이 향상된다고 알고있었는데 실지 코딩해보니 그렇지 않네요....(물론 제가 왕초보라서 코딩을 잘 못한탓이겠죠.. ㅠㅠ)
고수님들께 부탁드립니다...
어떻게 하면 속도향상을 할수 있겠는지........
khttpd, TUX 소스 참조하시길...
in-kernel HTTP server인 khttpd, TUX들이 in-kernel에서 파일들을 열고 읽는 것으로 알고 있습니다. 그 프로그램 소스 참조하세요~
/***************************************
Being the one is just like being in love.
***************************************/
/***************************************
Being the one is just like being in love.
***************************************/
Thanks very much!!
Thanks very much!!
좋은 하루 되세요!!
댓글 달기