FSTWikiDiff for 1.17 NewLinuxKernel
Login:
Password:
Join
E D R S I H P RSS
FrontPage|FindPage|TitleIndex|RecentChanges

Difference between r1.17 and the current

@@ -53,10 +53,19 @@
관련 API는 [wiki:KernelApi3 KERNEL API 3 - Linux Driver Model]를 참고하라.
== devfs ==
리눅스 커널 2.6.14 이후부터 더이상 사용되지 않는다. 효율적인 디바이스 노드의 관리를 위하여 리눅스 커널 2.5 이후 사용되어 왔으나 커널 레벨과 사용자 레벨의 불분명한 관리 방식으로 인해 커널에서 제외되게 되었다. 대체 방식으로 udev가 개발 진행되고 있다.
 
또 다른 대안으로는 ndevfs라는 것이 있다. 자세한 내용은 다음 절을 보라 
 
== ndevfs == 
2005년 6월 24일 Greg KH에 의해 nano device file system이 공개되었다. ndevfs라는 이름으로 매우 간단한 구조로 devfs를 대체할 목적을 갖고 있다. 
 
Greg KH의 메일링 리스트의 원문 및 trackback은 다음 사이트에서 볼 수 있다. 
* [http://kerneltrap.org/node/5347] 
 
커널의 메인 스트림에 포함되지는 않았지만, 잘 사용하면 매우 편리할 것으로 생각된다.
== remap_page_range ==
리눅스 커널 2.6.10 이후 버전부터 더이상 사용되지 않는다. 그 이유는 인자 중 물리 주소를 넘겨 받는 인자가 32비트로 4GB 이상의 메모리를 매핑할 수 없다. 이 때문에 이 함수는 더이상 사용되지 않으며 '''remap_pfn_range'''로 대체되었다. 이 함수는 물리 주소를 32비트로 넘겨 받지 않고 대신에 PAGE_SHIFT만큼 비트 쉬트트한 값인 페이지 프레임 번호를 넘기도록 하고 있다. 이를 통해 4GB 이상의 메모리도 매핑할 수 있다.
== C++ in the Linux Kernel ==
이는 공식 리눅스 커널에 포함된 것이 아니다. 재미있는 구현이라 생각되어 여기 소개한다. 자세한 것은 다음의 웹 사이트를 참고하자.
* [http://netlab.ru.is/exception/LinuxCXX.shtml]



New Linux Kernel #

-- 김도집 2005.10.19

Contents

1 New Linux Kernel
1.1 개요
1.2 AIO
1.3 NPTL
1.4 HRT
1.5 kprobes
1.6 FUTEX
1.7 inotify
1.7.1 간단한 테스트
1.8 class_simple
1.9 devfs
1.10 ndevfs
1.11 remap_page_range
1.12 C++ in the Linux Kernel

1.1 개요 #

내가 잘 모르거나, 새롭게 적용된 것들을 어떤 분류 기준도 없이 임의대로 정리한 것이다.

1.2 AIO #

Asynchronous I/O

1.3 NPTL #

리눅스 커널 2.6에서는 Native POSIX Thread Library를 지원하고 있다. 스레드의 생성 및 파괴에서 기존 스레드보다 4배정도의 성능 향상을 보여준다고 한다. 기존 리눅스 스레드가 프로세스에 1:1로 대응되는 방식으로 생성이 되어 스레드로서의 인정을 받아오지 못했다. NPTL은 native thread로서 스레드 다운 스레드가 만들어진 것이다.

자세한 것은 다음을 참조한다. 관련 개발자는 다음과 같다.

1.4 HRT #

HRT는 High Resolution Timer로, HRT 프로젝트는 POSI 1003.1b Section 14(Clocks and Timers) API과 호환되며 이를 구현하는 것을 목표로 하고 있다. 자세한 내용은 프로젝트 홈페이지를 방문해 보라.

1.5 kprobes #

kprobes를 이용하여 커널 모드 내에서 디버깅이 가능하다.

[http]Linux Journal에 실린 [http]Kernel Korner - Kprobes—a Kernel Debugger를 참고하라.

1.6 FUTEX #

futex는 사용자공간에서 사용할 수 있는 빠른 락킹 시스템 콜이다. 자세한 것은 다음을 참조한다.

1.7 inotify #

dnotify를 대체는 하는 것으로 inode에 기반한 파일 시스템의 변경을 감지하는 시스템이다.

커널 2.6.13에 처음으로 적용되었다.

공식 홈페이지는 [http]http://www.kernel.org/pub/linux/kernel/people/rml/inotify/이다.

1.7.1 간단한 테스트 #

다음은 inotify가 적용된 커널로 부팅한 경우에 간단히 테스트하는 방법이다. 다음을 실행해 보자.
dmesg |grep '^inotify device minor' |awk -F= '{ print $2 }'
쉘에서 위와 같이 실행하며 inotify 디바이스의 부번호를 확인할 수 있다. 이 디바이스 부번호를 이용하여 디바이스 노드를 생성한다.
mknod /dev/inotify c 10 [numbfer from awk]

이후 간단한 PERL Program으로 테스트 할 수 있는데, 자세한 것은 다음 사이트를 참조하라.

1.8 class_simple #

리눅스 커널 2.6.13 버전 및 그 후속 버전에서는 class_simple_ 로 시작하는 API가 없다. 대신 class_ 로 시작하는 것들로 대체 되었다.

관련 API는 KERNEL API 3 - Linux Driver Model를 참고하라.

1.9 devfs #

리눅스 커널 2.6.14 이후부터 더이상 사용되지 않는다. 효율적인 디바이스 노드의 관리를 위하여 리눅스 커널 2.5 이후 사용되어 왔으나 커널 레벨과 사용자 레벨의 불분명한 관리 방식으로 인해 커널에서 제외되게 되었다. 대체 방식으로 udev가 개발 진행되고 있다.

또 다른 대안으로는 ndevfs라는 것이 있다. 자세한 내용은 다음 절을 보라

1.10 ndevfs #

2005년 6월 24일 Greg KH에 의해 nano device file system이 공개되었다. ndevfs라는 이름으로 매우 간단한 구조로 devfs를 대체할 목적을 갖고 있다.

Greg KH의 메일링 리스트의 원문 및 trackback은 다음 사이트에서 볼 수 있다. 커널의 메인 스트림에 포함되지는 않았지만, 잘 사용하면 매우 편리할 것으로 생각된다.

1.11 remap_page_range #

리눅스 커널 2.6.10 이후 버전부터 더이상 사용되지 않는다. 그 이유는 인자 중 물리 주소를 넘겨 받는 인자가 32비트로 4GB 이상의 메모리를 매핑할 수 없다. 이 때문에 이 함수는 더이상 사용되지 않으며 remap_pfn_range로 대체되었다. 이 함수는 물리 주소를 32비트로 넘겨 받지 않고 대신에 PAGE_SHIFT만큼 비트 쉬트트한 값인 페이지 프레임 번호를 넘기도록 하고 있다. 이를 통해 4GB 이상의 메모리도 매핑할 수 있다.

1.12 C++ in the Linux Kernel #

이는 공식 리눅스 커널에 포함된 것이 아니다. 재미있는 구현이라 생각되어 여기 소개한다. 자세한 것은 다음의 웹 사이트를 참고하자.

last modified 2006-04-05 09:17:04
ShowPage|FindPage|DeletePage|LikePages Valid XHTML 1.0! Valid CSS! powered by MoniWiki
0.0366 sec