'운영체제' 개발

whs9400의 이미지

안녕하세요

우선 제가 목표로 삼은 것이 있습니다.
'운영체제' 개발 인데요.

제가 Windows 와 맞먹는 운영체제를 개발하고 싶습니다.
(물론 목표 입니다!!)

그런데 어떤 공부를 해야 운영체제를 개발할 수 있을지 궁금해서 이렇게 글을 남겨봅니다..

우선 저는 'Python 공부' -> '알고리즘 공부' -> 'C 공부' -> 'C++ 공부' 이런식으로 해볼 생각입니다..

shint의 이미지

- 리눅스에서 윈도우를 한다면. 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를 개발하려면.

운영체제 이론, 컴퓨터 아키텍처 이론,
어셈블리어 ( 질문자님 경우엔 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 하드웨어들은 참조할 수 있는 자료가 꽤 많긴 하더군요.

아무튼, 본격적으로 들어가면 들어갈수록 컴퓨터공학의 상당 분야를 커버하는 게 운영체제입니다. 지식 측면뿐만 아니라 프로그래머의 숙련도 무척 중요하고요. 그러고서도 이미 널리 쓰이고 있는 운영체제들과 겨루는 건 또 불가능에 가깝습니다. (여기에도 나름의 이유가 있습니다.)

목표가 높은 건 좋은 일입니다. 그런데 중요한 건, 그런 드높은 목표에 비해 당장은 좀 보잘 것 없어 보이는 프로그래밍 연습이나 공부를 몇 달이고 몇 년이고 하면서 실력과 경험을 쌓을 수 있는 근성이죠. 그리고 그런 근성을 갖추는 건 제법 어렵습니다. 그래도 일단 도전해보세요. 지식이나 경험이 어디로 달아날 것도 아니고, 손해보는 건 없지 않겠습니까?

whs9400의 이미지

답변해주신 모든 분들께 진심으로 감사합니다.

-----------------------------------------------------------------------------------------------------
'Python'

tyhan의 이미지

오래된 글이지만 읽어보시면 좋을것 같습니다.
http://repilria.tistory.com/382

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.