1974년, 운영체제를 만드는데 처음으로 고급언어 C가 사용되다.
2000년, 막 파이썬 붐이 일고 있던 리눅스코리아 사무실에서 나온 말, “야 이거 파이썬으로 운영체제 만들어도 되겠는걸!”
2001년, 뜬금없이 나타난 파격적인 “나름대로” 파이썬 기반 배포본 Gentoo Linux
2004년, 정말로 파이썬으로 운영체제를 만들고 있는 Unununium
이런 사건이 계속되면서, 뭔가 끝에 다가오는 느낌!
최근에 comp.lang.python에서는 파이썬으로 리눅스 커널을 다시 쓰기라는 글이 올라와서 한참 왁자지껄했습니다. 이정도면 그냥 지나가겠는데, 오늘은 freebsd-current 메일링 리스트에서 노익장 커미터 중의 한 명인 줄리언 일리셔씨가 커널 프레임워크라는 메일에서 C로 맨날 커널을 구현할라니 ㅂㅌ같은(aberrant) 레퍼런스 모델이나 계속 쓰고 있고, 여기저기서 반복된 똑같은 자료구조나 구현하고 있다고 신세 한탄을 하며, 이제 CPU들도 다 기가급인데 초고급 언어 (예를 들면 파이썬 같은..) 를 이용하면 정말 간단하게 해결될 것인데 하고 있군요. 흐흐.
그래요. 얼마전까지만해도 C++로 커널 만드는 것 조차, 느리지 않느냐! 쓸데없는 VM이나 런타임이 덕지덕지 붙지 않느냐! 하고 막 논란이 되고 그랬는데, 이제 여기저기서 초고급 언어를 쓰면 좋겠다 하고 잠시 꿈을 꿔 보는 사람도 있고, 진짜로 그런 짓을 해 보는 사람도 있고.. 아직은 좀 혼란스럽지만, Sun에서 Java로 데스크탑도 만드는 걸 보면 영 먼 얘기도 아닌 것 같습니다. 흐흐;
아직은 말도 안되죠.
kernel level address space sharing 이라든지
이로인해서 타이트한 메모리 버짓을 생각해보면
그리고 파이쏜을 쓴다면 퍼쓰레드커널 스택의 크기도
더 늘어나야 할것 같은데…
실제로 쓸만한 것은 절대로 안나온다는데 200원겁니다
L4가 C++로 작성됐죠. 예전 FAQ를 보면 C++를 쓴 이유를 타이핑 수를 줄이기 위해서라고 나와 있습니다(최신 FAQ에서 ‘It just is.’로 바뀌었더군요). ^^; 참고로 L4는 Mach보다 빠르다고 합니다.
Python 바이트코드를 실행하는 CPU를 만들면 가능할지도..
Julian의 이야기대로라면 현재 가까운 언어는 LISP, Forth정도밖에는 없어 보이는데요. 슬슬 LISP Machine의 재림이 가까울지도… 🙂
Python 자체도 C로 쓰여 있는데, 그건 어디서 돌죠? cjh님 말대로, Julian의 얘긴 domain specific abstraction이 가능한 언어를 얘기하는 것 같고, LISP과 Forth는 meta programming과 low-level access가 가능하다는 측면에서 candidate가 될 수 있겠네요. 물론 SavaJe처럼 많은 부분이 Java로 쓰여있는 언어도 있지만, Java는 meta programming을 지원하지 않기 때문에 Java가 자연스럽게 지원하는 레벨에서 조금만 더 문제가 복잡해지면 결국 같은 문제에 봉착하는 경우가 많습니다. Java와 관련된 수많은 코드 제네레이터나 AOP등이 그걸 보여주죠.
그래도 멀지 않은 미래에는 될지도 모르지요; 십년전만해도 개인용 컴퓨터에 메모리가 수기가씩 될줄 누가 알았겠습니까 =.=;
누구신지 모르겠지만 꽤나 매니악 하시군요 ^^ LISP/forth 로 삽뜨느니 차라리 c/c++ 을 쓰고 말겠습니다. LISP 이야 함부로 말할 물건이 아니지만, forth 라면 stack machine 을 위한 assembly 이상의 물건이라고 보기 힘들지 않나요?
……..차라리 PERL OS!!!!!
으으음.. LISP.. -O-
100% 자바와 아주 적은 양의 어셈블리만을 써서 실제로 부팅 되고 스크롤되는 콘솔과 네트워킹, 쉘을 제공하는 OS입니다. 자바를 기계어로 컴파일 한 것을 dump 한 다음에 거기서 JVM을 로딩하고 그 뒤에는 전부 자바라는 방식입니다. 바닥이 되는 부분을 한번 읽어 보세요. http://jnode.sf.net/
JVM을 자바로 짠 프로젝트는 제가 알고 있으며 제대로 작동하는 것이 둘이나 있습니다. 모두 Jalapeno의 후예입니다. JikesRVM은 IBM에서 각종 JVM 최적화를 시험하기 위해 만들었고 실제로 유전 알고리즘을 써서 가장 빠른 “최적화 DNA”를 구성합니다. http://www-124.ibm.com/developerworks/oss/jikesrvm/
Joeq은 말 그대로 단 한줄의 자바 아닌 코드도 없는 JVM입니다. 자체 중간 언어인 Quad를 쓰고, ELF 바이너리를 자바 코드와 링크할 수 있으며, 컴파일 된 네이티브 코드를 ELF 또는 PE 포맷으로 링크합니다. 부트스트랩을 위해 JVM의 class를 모델링하는 class가 따로 있습니다. (jq_class 등등) 역시 한번 시도해보시기 바랍니다. http://joeq.sf.net/
리습 머신의 운영체제 Genera가 GUI 파트까지 전부 리습으로 써진 사실은 모두 아시리라 믿고 생략합니다. x86에 리습만으로 짠 OS를 올린 프로젝트는 Movitz가 있습니다. 컴파일러에서 생성할 어셈블리를 리습 자료 구조로 정의합니다. 리습만으로 짠 ATAPI 드라이버를 구경할 수 있습니다. http://common-lisp.net/project/movitz/
Forth가 Open Firmware에 사용되며 Mac OS X의 부트로더라는 사실도 굳이 부연하지 않겠습니다. 척 무어가 무지하게 괴짜라는 건 분명합니다만 그는 실제로 그가 바닥부터 짠 OS인 ColorForth를 긴 세월동안 유일한 개발 환경으로 사용하고 있다고 합니다. http://www.colorforth.com/
그 외에 Perl OS는 들어본 일이 없지만 유쾌하기 그지없는 Perl/Linux(GNU/Linux에 대한 패러디입니다)가 있습니다. http://perllinux.sf.net/
Python으로 OS를 만들려는 Unununium과 Cleese는 이미 언급되었습니다. http://unununium.org/ 그리고 http://cleese.sf.net/
re: monsa. Forth는 스택 머신용 어셈블리 맞습니다, 맞고요. 매크로와 컴파일러 재정의를 지원하는 어셈블리라면 나쁘지 않다고 생각합니다.
재밌을거 같아요. ㅋㅋㅋ
자바 데스크탑은 그냥 GNOME이잖아요.. 왜 자바 데스크탑이라는 이름은 그냥 광고용…
“SUN JDS (Java Desktop System)” eq “GNOME 2.6 + JRE1.4” = true;
-_-;;;;;