- 리눅스에서 윈도우를 한다면. Wine 이 있다고 합니다.
- 리눅스 OS 만 100개가 있다고 합니다.
- MS-DOS. PC-DOS
- 윈도우도 10가지 이상에 버전이 있습니다. WINCE 도 있죠.
- TMAX 윈도우. 북한 붉은별 1호
- OS 만들기 책이 있습니다.
- EMM386. QEMM. QEMU. VirtualPC. VirtualBox. DosBox. VMWare
- VDI. VHD
- 요즘은 MonoDevelop이 있구요.
- ModernIE 라는 무료 윈도우 VM도 있구요.
- 안드로이드. JavaVM
- 구글도 OS 죠
- 웹 OS 도 있습니다.
- 윈도우에서 안드로이드를 하는 지니 VM 플레이어. 블루스택. Arc Welder http://macnews.tistory.com/3248
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
운영체제 개발에 자주 사용되는 C언어 같은 경우 초심자는 포인터 기반 자료구조 (ex: linked list, tree) 하나 탈 없이 만들어서 활용하는 것도 만만치 않습니다. 메모리가 어디로 새거나 유효하지 않은 포인터를 참조하거나 등등. 그나마 어플리케이션 레벨에서는 프로그램이 에러 메시지라도 내고 죽거나 프로그램이 응답이 없노라고 OS가 대신 전해 주기라도 하지만 OS 개발중에는 그런 서비스도 기대할 수 없어서 거의 미궁 속의 디버그가 되는 경우가 많습니다. 그걸 얼마나 빠르게 해낼 수 있느냐는 프로그래머 본인의 디버그 경험과 역량에 달렸죠. 덧붙이자면, Kernel preemption을 지원할 경우 더 어려워지고 멀티코어 들어가면 훨씬 더 어려워집니다.
어셈블리어를 직접 짜야만 하는 경우가 그리 많지는 않지만, 문제는 어셈블리어는 빙산의 일각이라는 겁니다. 운영체제 코어를 짜다 보면 부득이 CPU와 밀접하게 동작해야 하는 부분들이 있는데 (컨텍스트 스위칭, 시스템 콜, 가상메모리 관리 등) 코드 전체를 볼 때 많은 양이라고 볼 수는 없어도 타겟 CPU 아키텍처에 대해 상당한 지식을 필요로 합니다. CPU+메모리를 벗어나 하드웨어를 추가하면 추가할수록 그것도 또 알아야 합니다. (키보드, 모니터, 하드디스크 등). 그나마 소위 x86 달린 PC 하드웨어들은 참조할 수 있는 자료가 꽤 많긴 하더군요.
아무튼, 본격적으로 들어가면 들어갈수록 컴퓨터공학의 상당 분야를 커버하는 게 운영체제입니다. 지식 측면뿐만 아니라 프로그래머의 숙련도 무척 중요하고요. 그러고서도 이미 널리 쓰이고 있는 운영체제들과 겨루는 건 또 불가능에 가깝습니다. (여기에도 나름의 이유가 있습니다.)
목표가 높은 건 좋은 일입니다. 그런데 중요한 건, 그런 드높은 목표에 비해 당장은 좀 보잘 것 없어 보이는 프로그래밍 연습이나 공부를 몇 달이고 몇 년이고 하면서 실력과 경험을 쌓을 수 있는 근성이죠. 그리고 그런 근성을 갖추는 건 제법 어렵습니다. 그래도 일단 도전해보세요. 지식이나 경험이 어디로 달아날 것도 아니고, 손해보는 건 없지 않겠습니까?
참고해보세요.
- 리눅스에서 윈도우를 한다면. Wine 이 있다고 합니다.
- 리눅스 OS 만 100개가 있다고 합니다.
- MS-DOS. PC-DOS
- 윈도우도 10가지 이상에 버전이 있습니다. WINCE 도 있죠.
- TMAX 윈도우. 북한 붉은별 1호
- OS 만들기 책이 있습니다.
- EMM386. QEMM. QEMU. VirtualPC. VirtualBox. DosBox. VMWare
- VDI. VHD
- 요즘은 MonoDevelop이 있구요.
- ModernIE 라는 무료 윈도우 VM도 있구요.
- 안드로이드. JavaVM
- 구글도 OS 죠
- 웹 OS 도 있습니다.
- 윈도우에서 안드로이드를 하는 지니 VM 플레이어. 블루스택. Arc Welder
http://macnews.tistory.com/3248
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
OS를 개발하려면. 운영체제 이론, 컴퓨터 아키텍처
OS를 개발하려면.
운영체제 이론, 컴퓨터 아키텍처 이론,
어셈블리어 ( 질문자님 경우엔 Intel x86 / x86-64 Assembly ), C/C++,
여기에 추가로 파일 시스템 이론, 컴퓨터 그래픽스 이론 정도만 알면
기초적인 GUI O/S는 개발 가능할 것입니다.
나머지는 Intel CPU Manual과 각종 하드웨어 스펙들을 보고 개발하는 게 전부거든요.
===
http://cafe.daum.net/codeinside
단순히 언어를 배운다는 것 정도로 정리되는 일이
단순히 언어를 배운다는 것 정도로 정리되는 일이 아니죠.
운영체제 개발에 자주 사용되는 C언어 같은 경우 초심자는 포인터 기반 자료구조 (ex: linked list, tree) 하나 탈 없이 만들어서 활용하는 것도 만만치 않습니다. 메모리가 어디로 새거나 유효하지 않은 포인터를 참조하거나 등등. 그나마 어플리케이션 레벨에서는 프로그램이 에러 메시지라도 내고 죽거나 프로그램이 응답이 없노라고 OS가 대신 전해 주기라도 하지만 OS 개발중에는 그런 서비스도 기대할 수 없어서 거의 미궁 속의 디버그가 되는 경우가 많습니다. 그걸 얼마나 빠르게 해낼 수 있느냐는 프로그래머 본인의 디버그 경험과 역량에 달렸죠. 덧붙이자면, Kernel preemption을 지원할 경우 더 어려워지고 멀티코어 들어가면 훨씬 더 어려워집니다.
어셈블리어를 직접 짜야만 하는 경우가 그리 많지는 않지만, 문제는 어셈블리어는 빙산의 일각이라는 겁니다. 운영체제 코어를 짜다 보면 부득이 CPU와 밀접하게 동작해야 하는 부분들이 있는데 (컨텍스트 스위칭, 시스템 콜, 가상메모리 관리 등) 코드 전체를 볼 때 많은 양이라고 볼 수는 없어도 타겟 CPU 아키텍처에 대해 상당한 지식을 필요로 합니다. CPU+메모리를 벗어나 하드웨어를 추가하면 추가할수록 그것도 또 알아야 합니다. (키보드, 모니터, 하드디스크 등). 그나마 소위 x86 달린 PC 하드웨어들은 참조할 수 있는 자료가 꽤 많긴 하더군요.
아무튼, 본격적으로 들어가면 들어갈수록 컴퓨터공학의 상당 분야를 커버하는 게 운영체제입니다. 지식 측면뿐만 아니라 프로그래머의 숙련도 무척 중요하고요. 그러고서도 이미 널리 쓰이고 있는 운영체제들과 겨루는 건 또 불가능에 가깝습니다. (여기에도 나름의 이유가 있습니다.)
목표가 높은 건 좋은 일입니다. 그런데 중요한 건, 그런 드높은 목표에 비해 당장은 좀 보잘 것 없어 보이는 프로그래밍 연습이나 공부를 몇 달이고 몇 년이고 하면서 실력과 경험을 쌓을 수 있는 근성이죠. 그리고 그런 근성을 갖추는 건 제법 어렵습니다. 그래도 일단 도전해보세요. 지식이나 경험이 어디로 달아날 것도 아니고, 손해보는 건 없지 않겠습니까?
답변해주신 모든 분들께 진심으로 감사합니다.
답변해주신 모든 분들께 진심으로 감사합니다.
-----------------------------------------------------------------------------------------------------
'Python'
오래된 글이지만 읽어보시면 좋을것
오래된 글이지만 읽어보시면 좋을것 같습니다.
http://repilria.tistory.com/382
댓글 달기