까다로운 아키텍쳐? x86-64에서 시스템 프로그래밍하기

cppig1995의 이미지

요즘은 여전히 64비트 운영체제를 개발하고 있습니다.
사실 이 운영체제는 원래 32비트로 짜고 있었는데(약 반년간)...
최신형 64비트 컴퓨터가 생기는 바람에...
갑자기 x86-64상에서 동작하는 64비트 운영체제를 만들고 싶어서...
기존 32비트 OS프로젝트를 폐기하고 (소스도 dog rice cake 같아서 별로)...
64비트 운영체제 프로젝트가 시작 ( http://jds64.wo.tc ) 되었습니다.

그런데 불만인지 궁금증인지가 좀 있답니다.

왜 리얼 모드에서 보호 모드를 거쳐 롱 모드에 진입해야 할까요.
생각해 보면 그게 더 뭔가 흐름이 자연스럽고 하다는 느낌을 받지만...

그다음 느낌은 왜 도대체 가상 8086 모드가 없다는지도 이해가 안되고
(뭐 이거야 어차피 쓸일도 별로 없어서 별로 큰 불만은 아니지만)
왜 꼭 롱 모드에서는 페이징이 활성화되어야 할까요?
뭐 이것도 정말 궁금하고...

이 모든 궁금증에도 불구하고 삽질을 해서 롱 모드에 진입하는 데 성공했습니다 ;)
조만간 짜고 있는 VESA 그래픽부분과 API가 완성되면 올려야겠군요 ;)

그냥 잡담이었습니다 :p

익명사용자의 이미지

상식적으로 요즘 누가 페이징 안되는 운영체제를 쓰겠습니까. 누군가 미쳐서 MS-DOS의 64bit 버전을 만든다면 몰라도... -.-

페이징이 안되는 롱 모드를 지원하면 절대 그 누구도 전혀 쓸 일이 없는 이상한 모드를 처리하기 위해 아까운 논리소자 뭉텡이가 칩에 들어가야 되겠죠. 그게 다 돈입니다. :)

- jick

cppig1995의 이미지

그러고 보니까 그렇네요.
그나저나 위키백과에 x86-64 대한 내용 보니까
"DOS4GW와 같은 DOS 확장기와 비슷한 방식을 이용해서 64비트 DOS 지원을 만들 수 있다"
고 하던데 진짜 만드는 사람은 없겠죠...

논리소자 뭉텡이... 컥...



절망으로 코딩하고 희망으로 디버깅하자.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

Necromancer의 이미지

재밌으면 하는겁니다....

x86 같은 경우는 구 하드웨어와의 호환성 때문에 구조가 굉장히 복잡하죠.
32비트 보호모드 프로그래밍조차도 까다롭습니다. 예전에 저도 해봤다가 못한건데...

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

jachin의 이미지

하루하루 하고 싶어하는 것을 열심히 하는 것을 보니 기분 좋습니다.

열심히 해서 좋은 결과를 얻길 바라겠어요. :)

다만 평소 해야 하는 것들을 너무 간과하지 말아주길 바래요...

그 나이에만 할 수 있는 일을 열심히 하시길...
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

익명사용자의 이미지

............그 나이에만 할 수 있는 수 많은 것들이 있습니다. @.@

그런 것 또한... 놓치지 않고~ 누리길~ 바랍니다 :)

조성현의 이미지

jachin님의 조언도 물론 필요합니다.

하지만, 자신의 꿈을 펼칠 기회를 없애버리며, 특별한 목적과 의식이 없이 남들과 같은 삶을 걸어가는 것도 문제라 생각합니다.
또, 남들이 하지 않는 분야를 공부하면서 그만한 것도 얻으리라 생각합니다.

저 또한 중2시절 잘못된 판단(그렇지만 그게 저 인생의 전환점) 때문에, 제 인생의 모습이 많이 비껴섰지만, 그 판단이 있지 않았다면, 제 인생의 스승과 현재의 제가 되지 않았을 가능성이 큽니다.

어느 선택을 하든, 그리고 어느 인생을 걸어오든 세상에 옳은 것은 없습니다. 그렇지만, 평범함을 추구하는 생각은 버릴 수가 없군요. :)
----
MyWiki http://linu.sarang.net
----
;p $ rm -rf ~ && mkdir ~ && wget $열정 and $연애

조성현의 이미지

ARM용 보드에서 동작하는 OS를 개발하고 있는데, 최근 NAND Flash Device Driver 제작하는 과정에서 저의 엄청난 무지를 발견했습니다.

시스템 프로그래밍은 하드웨어 디바이스를 바로 다루기 때문에, 회로도를 꼭 봐야되더군요. 그걸 몰라서, 한 이틀 고생했습니다. 친구 덕분에 편안한 밤이 될 듯.

64비트 기대하고 있습니다. :)
----
MyWiki http://linu.sarang.net
----
;p $ rm -rf ~ && mkdir ~ && wget $열정 and $연애

anfl의 이미지


OS 만드는 사람들 참 많네요.
이제 아무나 scheduler, interrupt 정도는 만들수 있을듯...
부디 간단한 scheduler와 interrupt, 간단한 GUI만 가지고 OS만들었다고 말하지 않기를 바랍니다.
OS에서 multi-tasking과 interrupt는 시작일뿐이라는걸 기억해두시길.
마지막으로 논문 많이 보시기 바랍니다.


blkstorm의 이미지

전에도 댓글로 올린적이 있습니다만, 돼지군의 글을 볼때마다 깜짝깜짝 놀랍니다. 저 나이에 저정도의 이해력과 실력을 갖추고 있다니...

하지만, 한편으로 좀 안타까운 점도 있습니다.

앞에서 jachin님도 댓글로 올리셨습니다만, 그 나이에 할 수 있는 것,내지는 그 나이가 아니면 할수 없는 것들을 열심히 하는 것이 더 중요하다고 생각합니다.

x86_64 OS를 만들어보는것, 좋은 경험입니다. 누구한테서도 배울수 없는 좋은 경험이라고 생각합니다.

하지만, 그것을 해보기 위해서 돼지군이 겪어야할 시행착오와 장벽은 수없이 많을 것입니다.

알고리즘
데이터구조
OS
컴퓨터구조
컴파일러

컴퓨터를 이해하기 위해서 최소한으로 이수해야하는 다섯과목들입니다 (컴공/컴과에서). 지금 당장 이 글에 올린것만 보더라도, 컴퓨터 구조하고 OS 과목에서 나오는 내용들입니다. 그것도, '최신의 교재'에서 각 챕터의 맨 마지막 'Putting It All Together' 섹션에서 나올만한 것들입니다. 인터넷에서도 관련된 소스코드를 구할 수 있겠지만, '왜?'라는 질문이 들어가다 보면, 결국에는 저 과목들에서 가르치는 내용으로 이어질 것입니다. (앞에 ARM이야기도 나왔지요, 회로도까지 봐야한다고. 앞에 다섯과목중에 기초전자회로 과목은 없습니다.)

물론, 돼지군의 컴퓨터 실력을 의심하는 것은 절대로 아닙니다. 이제 막 컴공 박사과정을 시작한 저보다도 나은 것같으니깐요.

이것저것 욕심이 많이 날 것입니다. 디스크 드라이버 컨트롤러도 만들어 보고 싶고, Vesa driver도 만들어 보고싶고. (인터넷에서도 구할 수 있겠지요) 하지만, 욕심이 지나친 것이 아닌가 생각이 드는 것은 어쩔 수 없군요. 좋은 경험임에는 틀림없지만, 더 중요한 것을 놓치는 것이 아닌가 생각이 듭니다.

꼭 64bit OS를 해보고 싶다면, uclinux나 Micro C OS같은 것을 64비트 용으로 포팅하거나, 기능을 확장하는 정도가 적당하지 않을까요. (이미 해본 것이라면 대략 난감... ^^;;)

하여튼, 좋은 경험 많은 분들과 공유하면 좋겠습니다. 다시한번 이야기하지만, 그 나이에 할 수 있는 것, 그리고 그 나이에서 밖에 할수 없는 것이 뭔지를 잘 생각하고 지금 이 프로젝트를 진행하는게 좋을 것같습니다.

행운을 빕니다.

ydhoney의 이미지

전 sls기반이랑 rpm기반 배포판만 만들어봤는데..

=3=33 
 
====================여기부터 식인어흥====================
어흥 몰라 어흥? 호랑이 어흥!! 떡 하나 주면 어흥!! 떡 두개 주면 어흥어흥!!

warpdory의 이미지

저도 OS 랍시고 만들었던 게 있긴 하군요. 대학 1학년때 마이크로마우스 대회 나간다고 8051 칩 가지고 놀면서 명령어 10개 짜리(각각 45, 90, 135, 180, 225, 270, 315 각도로 회전하기, 그리고 전진, 정지, 리셋명령) OS 를 만들었던 기억이 있군요. 어셈블리어로 만들었었는데...

그 코드가 어딨는지도 모르겠군요...

저렇게 만들었던 마이크로 마우스가지고 마이크로마우스 대회 나가서 .. 벽뚫고 나가서 실격 당했었습니다. T.T

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

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


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

즐겁게 놀아보자.

dhunter의 이미지

벽 뚫고 나가서 실격...;

그나저나 cppig 님같은분들이 있으니 한국 IT의 미래는 밝은걸지도요.
--
from bzImage
It's blue paper

from bzImage
It's blue paper

sheep의 이미지

벽뚫고 나가서 실격 당했었습니다...

나름대로 최적화에 성공하신거네요...

지름길을 만들어서 가다니.. ㅎㅎ

--------
From Buenos Aires, Argentina
No sere feliz pero tengo computadora.... jaja
닥치고 Ubuntu!!!!!
To Serve My Lord Jesus
blog: http://sheep.tistory.com (블로그 주소 바꼈습니다)

--------
From Buenos Aires, Argentina
No sere feliz pero tengo computadora.... jaja
닥치고 Ubuntu!!!!!
To Serve My Lord Jesus
blog: http://sehoonpark.com.ar
http://me2day.net/sheep