안녕하십니까 까마굽니다 (__)
 몇주의 삽질끝에 겨우 정리를 끝내고 이제야 겨우 소스를 릴리즈 하는군요. 아래는 릴리즈 파일의 00ReadMe.txt 입니다.

그럼 좋은하루 되세요 (__)
 게시물 및 소스파일 링크http://kkamagui.codesum.org/board/read.php?table=broad&no=10
링크 클릭
//////////////////////////////////////////////////////////////////////////////
//=============================================================================//
// 2004 06 18 // KKAMA OS 첫번째 소스 릴리즈
// Home Page : http://kkamagui.codesum.org//
//=============================================================================
 1. 인사말 ---------------------------------------------------------------------
안녕하십니까 까마굽니다. (__)약 2주동안 열심히 소스를 정리한 결과, 디버깅 코드의 대부분을 정리하고 소스를 릴리즈 할 수 있는 정도가 되었습니다. 물론, 다 정리된건 아니고 한참 개발중인부분과 너무 복잡해서 정리하기에 시간이 드는 부분을 제외한 나머지 부분을 정리했습니다.정리하면서 느낀건데, 확실히 중복 개발된 코드들이 많이 보이는군요, 나중에 다시중복 개발하게 될때 한번에 모아서 처리해야겠습니다.공개하기엔 너무 허접한 소스코드라 처음에 상당히 고민을 많이 했습니다만, 한소리먹을 생각하고 공개하기로 마음 먹었습니다.KKAMA OS가 나오기까지 도움을 주신 OSX86의 Edward님, B2OS의 주인장님, OSX86의 기홍님, OSX86의 모립, 그외 여러 많은 분들께 감사드리며 KKAMA OS를 인터넷으로 보냅니다.도움이 되시길 (__)

 2. License --------------------------------------------------------------------
KKAMA OS는 소스에 저작권 제약이 없습니다. 필요에 따라 추가, 수정, 삭제, 변경이 자유로우며 코드 일부 사용 또한 제약이 없습니다.KKAMA OS 자체가 여러 자료를 참고해서 만들어졌으므로, 선현(??)들의 뜻을 따라 License를 Free로 합니다.다만, 재배포시 현재의 00ReadMe.txt 파일을 포함시켜야 합니다.
 
 3. 소스 열람시 주의사항 -------------------------------------------------------
KKAMA OS의 소스코드는 저의 코딩 스타일에 따라, Tab을 insert space로 하여 3개의스페이스로 치환되어있습니다. 물론 코드가 좀 오래되고 여기저기서 코딩한 결과,Tab문자가 스페이스로 치환되지 않아서 Tab을 3으로 맞추지 않으면 들여쓰기가 맞지않는 일이 생길 수 있습니다. 이러한 불편을 최소화하기위해서 소스를 보실때는 Tab을 3으로 조정하면 됩니다.또 각 name 들이 상당히 길고, Structure를 typedef로 줄이지 않고 그대로 사용한걸보실 수 있는데, 제가 이름을 줄여쓰는걸 별로 좋아하지 않아서 그렇습니다.소스는 최대한 간단히 구현할려고 노력했습니다만, 과연 그런지는 의문이군요. @0@/~

 4. 컴파일 및 링크 준비 --------------------------------------------------------
KKAMA OS의 소스코드는 DJGPP V2.0(GCC V3.2.1) 이상의 버전과 NASM V0.98.36에서 컴파일 및 링크되었습니다. NASM은 DJGPP용으로 나온 Binary가 있으니 사용하시면 에러없이 컴파일 가능합니다.DJGPP의 설치 및 NASM의 설치는 각 사이트 DJGPP : http://www.delorie.com/NASM : http://nasm.sourceforge.net/wakka.php?wakka=HomePage/에서 찾을 수 있습니다.설치가 잘 안되는 분은 질답란에 올려주세요. http://kkamagui.codesum.org/board/list.php?table=qna

 5. 커널 컴파일 및 이미지 만들기 -----------------------------------------------
KKAMA OS 소스코드는 특정 IDE를 사용하지 않기 때문에, DJGPP에 포함된 make.exe를통해 컴파일 됩니다.00Kernel 디렉토리는 커널소스가 포함되어있고,01Boot 디렉토리는 부트로더 및 커널로더의 소스가 포함되어있습니다.각 폴더에는 컴파일에 관련된 Makefile이 존재합니다.부트로더 및 커널로더를 컴파일할 시, MAKEBOOT.BAT를 실행하시면 01Boot 폴더에boot.bin (부트로더), kloader.com (커널로더)가 생성됩니다.커널을 컴파일할 시, make.bat를 실행하시면 00Kernel 폴더에 kkernel.bin (커널이미지)가 생성됩니다.Floopy를 통해 부팅가능한 이미지를 생성하기위해서 MAKEIMG.BAT를 실행하시면 각각생성된 boot.bin, kloader.com, kkernel.bin을 통합하여 DISK.IMG를 생성하게 됩니다.생성된 DISK.IMG를 통하여 Bochs, VMWare로 부팅이 가능합니다.DISK.IMG를 Floppy에 옮겨담기 위해서는 A: 에 빈 디스켓을 삽입하고 DISK.IMG를 실행하면 됩니다. 엔터를 입력하기를 기다리는데, 엔터를 입력하면 디스크에 쓰기가진행되고 완료되고나면 Floppy를 통해 KKAMA OS로 부팅할 수 있습니다.

 6. 커널 실행 및 테스트 --------------------------------------------------------
KKAMA OS의 홈페이지 http://kkamagui.codesum.org/kkamaosHowTo.html의 설치 및 실행순서를 참조하시면 명령어 리스트를 보실 수 있습니다.

 7. 버그 및 의문사항 -----------------------------------------------------------
KKAMA OS의 홈페이지 http://kkamagui.codesum.org/board/list.php?table=qna의 QNA 페이지를 이용하시면 됩니다
 안녕하십니까 까마굽니다 (__)
 요즘 계속 소스를 정리한다고 거의 기능 추가부분은 손을 안대고 있습니다.그래도 계속 무리를 좀 했더니 대충은 끝나 가는군요.사실, 세부적인 정리는 안했고 그냥 인덴트랑 주석을 좀 정리하고, 가장 중요한디버깅 코드들을 삭제하는데 중점을 두었습니다.

 머 사실 몇몇 파일들은 한참 개발중이기 때문에 정리자체가 무의미 하다고 생각되어 무시한것도 있습니다만, 여튼 끝이 보입니다.이제 파일도 몇개 안남았는데( 사실 무쟈게 많더군요... ㅡ0ㅠ.. 죽는줄 알았음 또 소스는 얼마나 긴지.. 꼭 공부 못하는 애들이 코드가 길듯.. ), 정리 되고 나면커널 소스를 올리겠습니다.

 그럼 좋은하루 되세요 (__)
 ps) 홧팅입니다 @0@/~~

 안녕하십니까 까마굽니다 (__)
 크윽, 소스를 밤낮 할꺼 없이 좀 무리해서 정리를 했더니만, 동작이 이상하군요.ㅡ0ㅠ 분명 정리하다가 멀 같이 지워버린거 같습니다.

 크윽 젠장, 두군데나 벌써 이상이 생겼는데요, 막막하군요. 정리를 마저하고 디버깅을 해야 할지, 아니면 일단 지금 해결하고 다시 정리를 시작해야 할지...한가지 분명한건, 잘못 정리했다는 것이죠.

 ㅡ0ㅠ.. 아아, 젠장 젠장...소스는 정신이 말짱할때만 봐야 겠네요.
 그럼 좋은하루 되세요 (__)
 
 ps) 요즘 질답란의 폭주로 인해 상당히 뿌듯하다는...모두들 홧팅입니다. @0@/~

안녕하십니까 까마굽니다 (__)

오늘 thread에 대해서 고민하다가 문득 pthread라는 놈의 소스를 보게 되었습니다. 전 pthread는 user level이라고 알고 있었는데, 아니더군요. ㅡ0ㅡ;;; 역시 나의 지식은 허망한것이었음... http://www.gnu.org/software/pth/pth-manual.html
 
위 링크는 GNU Portable Thread 라는 user level thread에 대한 문서인데요, 내용이 참 잘되어있군요. 제가 궁금해하던 "user level thread에서 과연 preemptive 하게 context switching이 가능한가??" 에 대한 물음을 단 한자로.. 압축해 놓았더군요. 충격이었습니다. SIGVTALRM... ㅡ0ㅡ...
 
결국 signal을 이용하면 간단히 스위칭을할 수 있었군요. ㅡ0ㅠ... 저걸 이용해서 user level의 thread library를 만들면, 커널 만드는 거랑 비슷할 것 같습니다. 사실 스케줄링 부분은 크게 다를것이 없으니...
 
시간이 나면 GNU Portable Thread도 차근 차근 한번 봐야겠습니다. 가능하면 포팅도 한판 때리는 쪽으로... 아직 먼 이야기지만... 좋은밤 되세요 (__)

 안녕하십니까 까마굽니다 (__)
 출장중이라 소스 손대는게 별로 여의치는 않지만, 갖고 놀다보니 심각한 버그가발견되어서 수정해 올렸습니다.Release에 커널이.. HowTo에 d.img가 있는데요..이걸 두개 다 엎어쓰시면 될꺼같네요.

 이번에 추가된 사항은,stdin, stdout, stderr 의 사용 및 pipe의 추가를 들 수 있겠는데요,이걸 이용해서 gui Shell을 구현해 봤습니다.커널을 부팅해서 gui를 입력하시면.. 지난번과 변함없는 허접한 GUI 화면이 뜨구요,거기에 기본적으로 생기는 창 하나가 GUI Shell이 되겠네요..클릭 하셔서 키를 입력해 보시면.. 키가 입력되고, 콘솔에서 쓰는 명령이 그대로먹는걸 확인하실 수 있습니다.
 
 머.. 같은 루틴이니 당연한 결과.. ㅡ_ㅡa..근데.. Bochs에서.. 왜 일케 느린지 모르겠네요..V*Ware에서는 꽤 괜찮은데 말이죠..황당합니다.. 쩝쩝.. ㅡ0ㅡa...네.. 그럼 질문사항은 QnA로 올려주시구요..좋은하루 되세요 (__)
http://kkamagui.codesum.org

+ Recent posts