WWDC06 - 3 - What’s New in the kernel?

8 08 2006

WWDC06 의 두번째 날입니다.

현재 Leopard 에 들어갈 새로운 xnu 커널에 대한 세션을 듣는 중인데, 너무나 방가운 소식에 세션을 들으며 포스팅을 합니다.

방가운 소식은!? 드디어 애플이 인텔용 다윈 커널 소스를 공개했습니다!! (와와!! 이제 공부할 거리가..!! 흐흐) 정말 기다리던 방가운 소식이구요. 커널에 새로운 내용들은..

* 64bit 애플리케이션의 지원 - ( LP64, 기존 드라이버/kexts 의 완벽환 호환 )
* Intel 64bit 에서 - 4gb/4gb (kernel/user) 로 나눠서 사용, 32비트 드라이버 호환성, user space 는 128TB 까지 사용 가능
* Leopard 에서는 UNIX’03 표준을 따릅니다.
* -D_POSIX_C_COURCE 혹은 -D_NO_POSIX_C_SOURCE 로 컴파일 가능 ( 바이너리 타켓을 Tiger 이하 버젼으로 하게되면 legacy behavior 로 컴파일된다네요 )
* Darwin 의 pthreads 에서 모든 cancellation points 를 지원한답니다.

기타 변경사항~

* 파일크기보다 큰 사이즈를 read() 하려고 할때 기존은 -1 로 errno 를 설정하고 EOF 를 리턴했는데, 처음 read() 에는 파일전체를 다 읽어주고 다음번에 읽을 때 에러를 리턴하도록 변경했습니다.
* 그룹에 시그널을 보낼때 시그널을 보내는 프로세스가 그룹안에 있으면 시그널을 보낸 프로세스도 시그널을 받도록 되었습니다. ( killpg() 에서 )
* posix_spawn() - fork()/exec() 보다 빠르게!! 어드레스 스페이스를 복사하지 않습니다. 음.. 이건.. 세션 짧은 설명만으론 잘 이해를 못했습니다. 따로 봐봐야 할듯!
* !!! DTrace 의 추가 !!! - OpenSolaris 의 Dynamic Tracing 을 포팅했습니다. kill() 시그널을 보낼 프로세스를 찾는 예를 보면, 아래와 같이 하면 됩니다. 흐흐;

#!/usr/sbin/dtrace -s

syscall::kill:entry
{
trace(pid);
trace(execname);
}

아이고.. 우선은 이정도 까지만!! 갑자기 너무 많은 내용이 머리 속에 계속 들어오니까 힘드네요!! @_@; 간만에 학교 수업듣는 기분이라.. 흐흐 잼있습니다. ( 복학하고 싶어요 ^^; )

또 이어서 올리도록 하겠습니다 :)


Actions

Informations

4 responses to “WWDC06 - 3 - What’s New in the kernel?”

10 08 2006
CN (07:10:56) :

(exe cn ame)

10 08 2006
또다른 일권 (10:47:36) :

저는 봐도 뭐가 뭔지 모르겠습니다만.. 이렇게 다 알아 들으시는분들 보면 정말 신기해요. 하하

14 08 2006
Carol (19:50:38) :

Hey! How was your trip/WWDC? Looks like you had a lot of fun! You got to see Steve Jobs~ Hope you didn’t have any trouble at the airport.. anyway, talk to you later!

27 08 2006
정태영 (13:06:46) :

보니까 예전방식의 read 는 오히려 버그같아보이는데 -_-;; read 는 결과로 읽은 바이트 수를 돌려주니까… file size 보다 큰 값을 읽으려고 해도 문제될 건 없을텐데;;;

흠흠 그나저나 리눅스 등에선 fork 를 하더라도 메모리는 복사되지 않고 실제 메모리에 변화가 일어나는 순간 메모리를 복사하게 되니까 (copy on write) 거기서 거기일 거 같은데… 설마 os x 에선 아직 cow 같은걸 제대로 지원하지 않았던거려나 -_-?

흠흠 rss 주소가 바꼈었구나 :p

Leave a comment

You can use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>