마이크로커널에 대해서 깜짝 놀랐습니다.

gurugio의 이미지


그야말로 깜놀입니다.

Toward real microkernels 라는 논문을 읽었는데
예전 마이크로커널 디자인을 채택한 Mach 가 느렸던 이유가
IPC가 느려서 그렇다거나 디자인 자체가 구현이 어렵다는 등으로 알고 있었는데
결국 실험 결과를 잘못 분석한 통계적인? 오류였다는 주장을 하고 있습니다.

IPC의 시간을 세부적으로 분석해보니
user-kernel 모드 스위치, 주소 공간이나 캐시 스위치 등등에 대한 시간의 포션이 적고
커널에서 잡아먹는 시간이 훨씬 길었고
조사 결과 커널을 만들때 이전 모노리틱 커널을 그대로 가져와서
디자인만 뜯어고치다보니 커널 코드가 길어져서
결국 커널이 엉망이었다는 결과라고 하네요..
아예 첨부터 다시 커널을 만든 L4 등은 IPC 시간의 차이가 별로 안난다는 결과도 있습니다.

커널 디자인에 대한 논쟁을 떠나서
그렇게 유명하고 난다긴다하는 사람들이 연구하고 발표한 결과들에
그런 엉성한 오류가 있었다는게 놀랍습니다.
물론 이 논문의 결과가 전부를 나타내지는 않겠지만
실험 결과 분석을 제대로 안한 것도 놀랍고
Mach 커널을 만들 때 다른 모놀리틱 커널 코드를 가져와서 만들었다는 것도 놀랍구요.
Mach는 유명한 분들이 모여서 만들다가 실패했다는 이야기를 들었는데
시간에 쫓기신건지...

마이크로커널에 대해 옹호하는 논문만 읽은 것이지만
그래도 마이크로커널의 철학이 왠지 그럴듯 해보입니다.
얼마전 릴리즈된 MINIX3가 마이크로커널 개념을 대부분 구현했다고 하는데
자세히 보면 좋을것 같습니다.
특히 임베디드 환경에서 마이크로커널 개념이 잘 먹힐것 같습니다.
모드 스위치도 필요없고 소형 커널 개념도 적합한것 같구요.

혹시 마이크로커널에 대해 알고 계신게 있으면 소개 부탁드립니다.
최근 논문에 반대된 결과가 나온게 있는지도 궁금하구요.

prio의 이미지

초창기 마이크로 커널의 낮은 성능이 통계적인 오류 때문으로 보이지는 않습니다.
(논문에서도 통계적인 오류라는 뉘앙스는 없지 않나요? 오히려 분석 자체는 맞는 것이었다고 일부러 말하고 있는데..)
애초에 마이크로 커널의 개념이 생기기도 전에, 모든 문제를 해결하고 발표될 수는 없는 것 아니겠습니까?

해당 글에서 다루고 있는 것도, 초창기 마이크로 커널에서 엉성한 오류가 있었다고 말하는 것이 아니라,
마이크로 커널에서 radical design change가 이루어진 배경에 대해 설명하고 있는 것이지요.

그리고 심비안 OS가 마이크로 커널 디자인입니다.

gurugio의 이미지


통계적이라는 말을 제가 잘못 쓴것 같습니다.
분석 오류라고 해야 정확할까요?

심비안에 대한 자료가 적어서 분석해보기가 어렵지 않을까 걱정이 됩니다.
심비안에 대해서 좋은 자료가 어떤게 있을까요?
책이 한권 있는 것 정도밖에 모르고 있습니다.

----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

prio의 이미지

"분석 오류"라는 말도 가혹하다고 생각합니다.

"Unix as an application program"이 발표된 것이 1990년 인데,

원글에 언급하신 논문을 쓴 Liedtke가 "On micro-kernel construction"을 발표하는 1995년 까지

거의 대부분의 사람들이 마이크로 커널은 태생적인 비효율을 가지고 있다고 생각하고 있었습니다.

그게 단지 하나의 논문 때문은 아니지요.

Liedtke도 일부러 '분석은 맞았다'라고 언급하고 있습니다.

5년의 시간 동안 기술은 그런식으로 발달하는 거 아니겠습니까.

2009년인 지금에 보는 시각은 일종의 콜롬부스의 달걀인거지요.

Scarecrow의 이미지

요즘은 마이크로커널이니 모놀리틱이니 하는 얘기가 거의 의미가 없습니다.

마이크로커널이라고 하는 녀석이나
모놀리틱이라고 하는 녀석이나
알고보면 둘다 하이브리드거든요...

라고 알고 있습니다.

gurugio의 이미지


그런가요?.. 하긴 제가 읽은 논문은 10년전 논문입니다.
최근 자료도 한번 찾아봐야겠네요.

근데 마이크로커널은 디바이스 드라이버등이
유저 프로세스로 동작해야 한다고 합니다.
일단 리눅스는 하이브리드는 아닌것 같습니다...

근데 왠지 예전 탄넨바움교수님과 토발즈님이 하신
떡밥을 다시 던지는 듯하네요.
의도적인 낚시는 아닙니다~ ;-)

----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

Scarecrow의 이미지

제 말을 "리눅스도 하이브리드커널이다."라는 주장으로 받아들일 수 있겠군요.
그런건 아니고...
이제는 이거나 저거나 장단점을 따지며 다투기엔
제가 아는 범위에서는 서로 비슷해 졌다는 의도였습니다.

Modular monolithic kernels are not to be confused with the architectural level of modularity inherent in microkernels or hybrid kernels.
http://en.wikipedia.org/wiki/Monolithic_kernel

Hybrid kernel is a kernel architecture based on combining aspects of microkernel and monolithic kernel architectures used in computer operating systems. The category is controversial due to the similarity to monolithic kernel; the term has been dismissed by some as just marketing.
http://en.wikipedia.org/wiki/Hybrid_kernel

리눅스로 생각해 보면 마이크로커널의 장점을 모놀리틱하게 수용한 부분으로
일단 커널모듈같은게 있겠고
또한 필요에 따라서 fuse나 wine처럼
유져모드에서 커널의 기능을 하는 것도 있으니까 말이죠...
http://en.wikipedia.org/wiki/Filesystem_in_Userspace
http://en.wikipedia.org/wiki/Wine_(software)#Architecture

저도 전문가는 아니므로 ...
=3==3====3

cwryu의 이미지

먼저 논문이 주장하는 사실을 믿기 힘듭니다.

왜곡된 벤치마크가 가장 많이 등장하는 매체 중 하나가 논문이죠. (어쩌면 가장 많이 등장할 지도?)

idotrip의 이미지

논문도 저자에 따라 틀린겁니다.

왜곡된 사실을 적음 그 저자는 학계에서 매장당하죠

대다수 인정받을 논문의 퀄리티까지 매도하시다니..

그 수많은 노력을 하여 만든 논문의 저자들을 모독하는 행위 같습니다

cwryu 님은 졸업논문을 그렇게 대충 쓰셨나 봅니다.

cwryu의 이미지

논문을 그렇게 대충 읽으셨나 봅니다.

JuEUS-U의 이미지

논문은 연구결과 발표 외에도
자신의 의견과 주장을 전하는 매체(?)입니다.
따라서 대다수의 논문이 못믿을 물건인겁지요 ( = ω=)r;;

심지어는 실험 논문인데도
같은 주제로 쓴 2편의 결론이 서로 정반대인 경우도 있습니다.
("휴대폰과 건강의 관계"가 대표적입죠)

warpdory의 이미지

학교 다니실 때 논문 읽는 방법을 안 배우셨나 봅니다.

논문은 끊임없이 의심하면서 읽으라고 가르치는데 말이죠.
"이건 유명한 사람이 쓴 논문이니깐 믿어라." 가 아니라 "의심하고 의심하고 또 의심하고 그래도 의심하고 읽고 받아들이고 또 의심하라." 이런 식으로 배운 기억이 나는데 말이죠.

논문은 어디까지나 어떤 한 관점을 주장하는 것에 불과합니다. 그리고, 그 사실은 학자들, 그리고 그것의 전공자들, 더 나아가면 일반대중들에게 읽혀지고 그것을 받아들이고, 또는 인정 못하고 ... 그 논문의 문제점을 지적하고, 이러면서 그 학문이 발전하는 것이지, 논문을 무조건적으로 받아들이면 그 학문은 이미 썩어서 공팡이가 피는 죽은 학문입니다.

---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.
http://akpil.egloos.com


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

Prentice의 이미지

종교의 문화는 믿음에 기반을 두고 있고 과학의 문화는 의심에 기반을 두고 있다죠.

정태영의 이미지

왜곡이라고 까지 하기는 조금 그렇지만, 아무래도 자기한테 유리한 부분만을 논하는 건 사실이죠.

일례로 FTL 논문들을 보면 쓰기 속도가 빨리진다 라고 주장하는 것들이 꽤 많은데 그 중 대부분이 읽기는 엄청 느려지겠더군요. -_-a 자기한테 불리한 얘기를 써놓는 논문은 거의 없어요.

더 좋은 결과를 보이는 알고리즘들이 있는건 뻔히 알면서도 일부러 비교 대상에서 뺀다거나...

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

Darkcircle의 이미지

단점은 절대로 말하지 말라... 이거였는데
맞는 얘기인가 모르겠군요 =x=;
왜 그렇게 하지 말아야 하는지도 모르겠습니다. ㅡ.ㅡ;

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

prio의 이미지

스레드를 보고 깜놀하고 있는 1인 입니다.

분야마다 분위기가 다른건가 싶기도 한데,

단점을 언급하지 않거나 좋은 알고리즘과의 비교를 빼먹었거나 하는 것들은

리뷰 단계에서 어차피 다 걸리지 않나요?

작정하고 실험 결과를 엉터리로 쓴 것 말고는 뻔히 다 보이는 것들이잖아요.

리뷰어들을 속여 넘길(?) 수준이면 속였다고 하기도 뭐하구요.

근거 없으면 "we believe ~" 라고 고쳐 써야 하고,

related work 약하면 지적 받고, assumption, limitation 안 쓰면 지적 받고.

뭐 그런 거 아니었던가요;;;

정태영의 이미지

단점을 언급한 논문은 거의 없을걸요. 그리고 사실 최고의 성능을 보이는 논문들과만 비교를 해야한다면 연구자들에겐 너무나도 가혹하죠. -_-a

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

gurugio의 이미지


논문이란 것은 뭔가 발전되거나 향상된 것에 대한 보고이기 때문에
제한이나 가정이 있을 수 있어도
단점에 대한 거론은 하지 않는 것이 맞습니다.

또다른 누군가가 바로 그런 제한과 가정을 다시 발전시키도록
공개하는 절차가 논문이기도 하구요.

ACM의 의장이라고 하나요?
여튼 높은 분이 그러셨으니 원래 논문이라는게 그런것 같습니다.

----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

winner의 이미지

그런데 논문에 대해서 다들 그렇게 생각하신다니 저도 놀랬습니다.
논문 읽을 때 의심하는 거야 과학의 기본이긴 한데... 논문 작성에 대해서 이야기 하신 바는 저로서는 좀 납득이 안되는군요. 하여간 고쳐저야 할 문제가 아닐런지요.

정태영의 이미지

왠만큼 획기적으로 생각하기 전에는 사이드 이펙트 없이 무조건적으로 좋아지진 않다보니 좀 어쩔 수 없는 것도 있는 것 같습니다.

물론 모든 논문이 다 그렇다는 건 아닙니다.

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

gurugio의 이미지

음.. 일단 제 표현에 문제가 있었습니다. 죄송합니다.

한개의 논문만 읽어서 문제가 있긴 했지만
제 글의 요지는 과거에 마이크로커널이 무조건 느리다는 편견이
있었는데 그것이 좀더 자세히 조사를 해보니 커널 디자인의 문제가 아니라
구현 문제가 있었다는 것입니다.
즉 커널 자체가 처리하는 시간이 길었을 뿐이고
디자인상에 소모되는 시간인 유저-커널모드 스위칭이나 메세지 전달 등은
커널 디자인에 따라 큰 차이가 없었다는 연구 결과였습니다.
그래서 최근에는 L4 커널 시리즈같이 가상화에도 응용될 정도로
빠른 퍼포먼스의 마이크로커널이 만들어지고 있다는 논문이 최근에도 계속 발표되고 있는것 같습니다.

논문이라는 것의 진실성이나 논문 심사 등의 문제는 여기서 이야기할 문제는 아닌것 같습니다.
연구 결과란 그때의 연구 결과이지 진리는 아니니까요.

----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

죠커의 이미지

L4 등의 커널이 빨라진 것은 trade-off가 있습니다. L4 논문들을 읽어보시면 아시겠지만 안정성과 이식성을 희생하고있습니다. 안정성과 이식성을 희생한다면 모노리딕 커널도 보다 성능이 강화될 여지가 있습니다. 그리고 L4등의 커널을 응용한 가상화는 무리를 하면 OS 수준 가상화나 반가상화 정도에 응용을 할 수 있을텐데 L4가 안정성과 이식성에서 문제가 있을 수 있기에 범용화가 힘들다고 판단하며 요즘의 대세는 전가상화와는 조금 거리가 있겠지요.

L4는 퀄컴의 쇠퇴로 덩달아서 쇠퇴하고 있으며 산업에서 마이크로커널의 영향력은 날로 감소하고 있습니다. 흔히 최근의 커널을 하이브리드 커널이라고 말하며 마이크로커널과 모노리딕 커널의 중간 형태라고 이야기하곤 하지만 과거의 연구자들이 fat-kernel이라고 비난하던 모노리딕의 커널에 더 가깝겠지요. 마이크로커널의 성공적인 예로 이야기하는 Mac OS X 역시 XNU 커널이란 fat-kernel을 사용하고 있습니다.

- 죠커's blog / HanIRC:#CN

lugi의 이미지

직접적인 속도 비교 자료가 없어서 정확한 비교가 어렵지만, 마이크로 커널도 나름의 장점이 있습니다. 제가 업무상 QNX라는 RTOS를 몇년 정도 사용하였는데, 커널의 구현이 모노리닉보다 아주 단순하고, 모든 프로그램이 유저모드에서 수행되다보니,개발자들의 진입장벽이 상대적으로 낮은 편입니다.
단순히 속도로 OS를 비교하기 보다는 특정 목표에 가장 적합한 것을 선택하는 지혜가 더 필요할 것 같습니다.

--------------------------------------------------------------------------------------
조금씩이라도 전진한다.