Strict Standards: Non-static method Soojung::addReferer() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/settings.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/lifthrasiir/sites/sapzil.info/soojung/settings.php:79) in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Counter.class.php on line 63

Strict Standards: Non-static method Entry::getEntry() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/entry.php on line 51

Strict Standards: Non-static method Soojung::entryIdToFilename() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Entry.class.php on line 182

Strict Standards: Non-static method Soojung::queryFilenameMatch() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Soojung.class.php on line 55
TokigunStudio3 | 블로그: reboot.com

내용으로 바로 넘어 가기


TokigunStudio3

228 / 3282   


더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.

reboot.com

2005/03/19 AM 02:11 | 개발/역공학 | 8 comments | 0 trackbacks | AllBlog: vote, to pocket

김중태문화원에서 글을 보고 그냥 생각나서 적어 본다.

옛날에, 그러니까 도스 시절에 reboot.com이라는 프로그램이 있었더란다. 아마 도스 써 본 사람은 다 알고 있으리라 생각하지만 이 프로그램은 warm boot를 해 주는 프로그램이다. 쫌 더 간단하게 말하자면, Ctrl-Alt-Del 키를 누르는 효과를 내는 프로그램이다. 재밌는 건 이 프로그램의 크기는 아무리 커도 20바이트를 넘지 않았다. -_-;;;;

갑작스레 생각나서 reboot.com의 어셈블리 소스를 구해서 확인해 봤다. 원리는 무진장 간단하다:

- 0040h segment의 72h 위치에 있는 워드(word)에 0000h(cold boot) 또는 1234h(warm boot)를 집어 넣는다.
- FFFFh segment의 00h 위치로 이동한다.

간단하다고 말해 놓고 보니까 컴퓨터 아키텍처에 대해 모르는 사람은 전혀 알 수 없으니... 간단한 설명을 붙여 놓겠다.

일단 세그먼트라는 것은 메모리를 나누는 일종의 구역이다. 옛날의 컴퓨터에서는 64KB 단위로 세그먼트가 나뉘어져 있었고, 이게 com 파일과 exe 파일을 나누는 중요한 기준이 되기도 했다. (com 파일의 크기가 64KB 이하로 되어 있는 이유가 바로 한 세그먼트만을 사용하기 때문이다. exe 파일은 여러 개의 세그먼트를 사용하기 위해서 초기화 작업이 필요하다.) 지금의 32비트 아키텍처에서는 세그먼트 개념이 거의 사라진 상태니 별로 알아 둘 필요는 없겠다.

다음 0040h segment는 바이오스 데이터가 있는 영역이고, FFFFh segment는 롬 영역을 가리킨다. FFFFh segment의 0h 위치부터 시작되는 코드는 0040h segment의 72h 위치에 있는 워드(2바이트로 표시되는 숫자)를 읽어서 warm boot를 할 건지 cold boot를 할 건지 결정한 후 자기 할 일을 한다. 결국 warm이냐 cold냐를 결정하고 롬 영역의 코드로 가면 끝인 것이니, 크기가 그렇게 작을 수 밖에. :)

HDD Parking 프로그램도 찾아 봤는데 이건 도스 인터럽트 때문에 헷갈려서 못 읽겠더라. 아무튼 이 작은 프로그램 덕분에 옛날 추억에 잠시 잠길 수 있었으니 나쁘진 않겠지.

TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=543

Comment: klutzy (2005/03/19 AM 03:49)

reboot.com 사이트 이름인줄-.-;;
(전에 command.com 사고싶었는데 신경안쓰는사이에 누군가가 사버렸더군요 orz)

Comment: 다콘 (2005/03/19 AM 04:15)

저 역시... -_-;;

Comment: daybreaker (2005/03/19 AM 09:04)

"옛날 추억에 잠시 잠길 수 있었으니 나쁘진 않겠지." -> 뭔가...-_-;;

Comment: 토끼군 (2005/03/19 AM 09:38)

klutzy, 다콘: 케헿;
daybreaker: 쓸 말이 없어서....

Comment: 하늘이 (2005/03/19 PM 11:59)

아 잡작스레 EXE와 COM 이야기가 나오니 궁금했던게 있었습니다만

그 시절, command.com은 어떻게 64KB 이상이 될 수 있었던건지 궁금했었습니다만, 혹시 아시는지요? ^^;;

Comment: 토끼군 (2005/03/20 AM 12:06)

하늘이: 생각해 보니까 command.com이 100KB 가까이 되긴 하네요. 글쎄요. 저도 잘 모르겠군요 -.-;;; (뭔가 짐작이 가는 구석이 있긴 하지만...)

Comment: Puzzlet Chung (2005/03/20 PM 12:40)

cd, del, dir, md, rd 같은 게 모두 command.com에 들어 있지 않나요?

Comment: 토끼군 (2005/03/20 PM 02:46)

Puzzlet Chung: 그렇죠.

Copyright (c) 1995-2005, Kang Seonghoon (Tokigun).