2008. 7. 21. 00:45
     

 크윽... 죽는 줄 알았습니다. ㅠㅠ 지난 휴가와 이번주 주말을 모두 투자해서 드디어 Interrupt 처리 부분을 넣고, 나중에 사용할 APIC 와 IO APIC쪽 설정 기능을 넣었습니다. ㅠㅠ 사실 훨씬 더 일찍 끝났어야 하는 일이나... 가상 머신에 불완전함 때문에 코드를 고치고 테스트하다보니 많이 늦어졌습니다.

 현재 테스트 중인 가상머신은 총 3개인데, VMware, Bochs, 그리고 QEMU를 사용하고 있습니다. 재미있는건 각자 BIOS 설정이 조금씩 다르고, 같은 코드라도 동작하는 방식이 다르다는 것이죠. ㅠㅠ 이것 때문에 죽는 줄 알았습니다. 특히 Interrupt 처리부분에서 Bochs와 VMware에 문제가 있는 것 같더군요.

 테스트를 몇시간동안 한 결과 코드에서 Stack을 Align하지 않고 사용하는 경우, 간혹 Stack에 데이터가 덮어써져서 나중에 iretq로 돌아왔을 때 정상적으로 수행되지 않는 문제가 있었습니다. 원래 CPU가 realign을 해주게 되어있습니다만, 정상적으로 동작하지 않는 때가 있는 것 같습니다. 물론 꼼수로 해결했습니다만, 뭔가 좀 씁쓸하네요. ^^;;; 더 웃긴건 QEMU의 경우는 괜찮다는 것이죠. ;) 이 문제 때문에 거의 이틀을 꼬박 날렸습니다. 아흑 내시간...ㅠㅠ

 더 가관인 문제는 VMware에서 생겼습니다. Keyboard Interrupt를 발생하지 못하게 한 뒤에, 키를 마구 입력해서 키보드 버퍼를 체운 후 APIC쪽을 Enable 하니 Interrupt가 발생하지 않는 것이 아니겠습니까? @0@)/~!!! VMware의 APIC쪽하고 PIC쪽에 매치하는 부분에서 문제가 있는 것 같은데, 키보드 버퍼에서 데이터를 다 읽어내면 그때부터 인터럽트가 발생하기 시작합니다. ㅡ_ㅡa;;;;; 이것도 결국 땜빵코드로 해결... ^^;;;

 마지막으로 애교로 넘어가줄 수 있는 문제... Qemu에서 int 13, 즉 Disk Read에 문제가 있더군요. 여러 섹터를 읽도록 요청하면 간혹 덜 읽히고 종료되는 문제가 있었습니다. 이 문제는 어느정도 예상을 하고 있던 것이라 역시나 땜빵으로 해결... 예전에 만들면서 겪었던 문제라서 그냥 애교로 넘어갔습니다. ㅎㅎ

 결국 온갖 삽질 끝에 세가지 에뮬레이터에서 모두 동작시키는데 성공했습니다. 아래는 세가지 에뮬레이터에서 동작시킨 화면입니다.
사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

 이제 대충 멀티 태스킹과 elf64의 재배치(Relocation) 쪽만 해결하면 되겠군요. ㅎㅎ 코어를 하나 더 활성화 시키는 것은 저번에 해봤으니 그냥 붙여넣기만 하면... (설마 이것도 쉽게 안되려나..ㅠㅠ)  그나저나 계속 삽질만 해서 큰일입니다. ㅠㅠ 크윽...

 제발 좀 한번에 가자 ㅠㅠ)/~~

 그럼 다들 좋은 밤 되시길~ ^^)-b




Android App

Posted by 호기심 많은 kkamagui(까마귀, 한승훈)

댓글을 달아 주세요

  1. Favicon of http://equinox.tistory.com BlogIcon 아크히츠 2008.07.21 03:27 신고  댓글주소  수정/삭제  댓글쓰기

    전 버추얼박스 쓰지만, OS 개발 쪽은 정말로 얕은 지식이라 그저 존경스럽습니다.
    수능끝나면 다시 공부시작하고 싶어요...(하루만에 하차한지라..)

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2008.07.21 09:34  댓글주소  수정/삭제

      Virtual Box도 상당히 괜찮은 에뮬레이터지요 ;)
      다만 64bit쪽 Guest OS가 지원되지 않는 것 같던데... 오늘 가서 Virtual Box쪽도 돌려봐야겠군요. ;)
      고등학생이신데 대단하십니다. 전 고삐리 때 그냥 놀기만 했다는 ''a..

  2. Favicon of http://www.filewiki.net BlogIcon 김상규 2008.07.21 09:58  댓글주소  수정/삭제  댓글쓰기

    ㅋㅋ 형 저에게 정보를 알려주시옵소성 +ㅁ+

  3. Favicon of https://ssmhz.tistory.com BlogIcon ㄱ효진님 2008.07.22 17:31 신고  댓글주소  수정/삭제  댓글쓰기

    형님 블로그는 들어올때 마다 놀라움의 연속

    효도르 경기만큼이나 임팩트한데요, ㅎㅎ

    완성된 OS 곧 나오겠네요, ^^

    • Favicon of http://kkamagui.tistory.com BlogIcon kkamagui 2008.07.22 20:17  댓글주소  수정/삭제

      설마 곧 나오겠냐... ㅋㅋ
      아직 갈길이 멀다. ㅠㅠ
      가장 큰 elf64의 relocation 문제가.... 당체 어떻게 파일 포멧이 구성되있는지도 확실히 모르겠다는 @0@)-b