해당 책을 공부하고 여러해가 지나고 한 3년 고생한듯 합니다.


구글을 디지면서 미칠듯한 날들을 몇개월씩.... 회사에서 일도 안되고 ..ㅋㅋ 하여간 고생했습니다.


와이프 아기임신하고 산후 조리원 들어 가면서 집중하고 보다가 아이가 생기면서 날밤지새우면서 공부했습니다.


몇자 적어 봅니다.


이 책의 숙제 였던 부분  입니다.


최종 목표였던 uefi 방식으로 돌리기에는 너무 변경할 사항이 많았습니다. 언젠간 갈 사항이라고 봅니다.


이미 대부분의 os들은 2010년 이후로 uefi방식을 다 지원합니다.


저의 목표였던 


   1.network 구현 (tcp , udp)

      -ftp client 구현 


   2.usb 구현 (ohci,uhci,ehci,xhci) 

             - usb 스토리지 usb 메모리 구현

             - usb 마우스 , 키보드 구현


   3.ahci (sata disk) 

       

   4.fat32로 파일 시스템 변경


   5.윈도우 탐색기 비슷하게? 구현


가끔 보면은 usb 부팅 문제를 자주 말씀하시는대 그 부분은 바이오스에서 인식할수 있는 파티션인경우


mbr로 부팅을 시켜주고 자체 파일 시스템이면 바이오스가 floppy처럼 에뮬레이팅을 해주면 되고 이 경우가 아니면


안된다고 os dev문서에서 읽은 적이 있습니다.


저는 그동안 수 없이 많은 밤에 삽질을 하고 어려웠던 순간을 지나 수 많은 os 개발 사이트 및 osdev에서


수많은 하비 os를 분석했습니다.


짜집기한 지식으로 1번은 구현을 했습니다. (tcp , udp 이쪽에도 눈물없이는 들을수 없는 상황이 ㅠㅠ)


물론 이 부분에도 패킷 seq,ack 동기화 기법을 몰라서 오는 대로 받다가 한 몇달 고생했네요


GBn(Go-Back-n) ARQ 기법과 SR(Selective-Repeat) ARQ 기법 

https://jwprogramming.tistory.com/37?category=680194


요것 때문에 완전 삽질 했습니다.


지금은 ftp client를 만들어서 나름 잘 돌아간다고 생각합니다. ㅎㅎㅎㅎㅎ .....아마도요... 모든 경우엔 아닐껍니다. ...


2.usb이거는 제일 오래 삽질 했습니다


완벽히는 안되었지만 저희 pc로 부팅해서 키보드를 빠르게 인식하지는 못하지만

 

대충 한키는 1초정도 누르면 인식이 됩니다. ㅋㅋㅋㅋㅋ


책은 usb라는 외국인이 쓴 회색책을 보고 안되는 영어 분석하면서 한 1년 삽질 했습니다.


그 외에 usb관련 소스는 구글에서 닥치는대로 본거 같네요


usb 디스크는 인식은 잘하고 약간에 딜레이는 주면 잘 됩니다. 역시 느리거나 가끔 실패가 납니다. 


내부 프로토콜 싱크 문제 인듯하나 대충은 돌아 갑니다. ㅠㅠ


3.이 부분에도 eclipse 컴파일러가 아주 visual studio에 비해 떨어진다는 사실을 여지 없이 느꼈습니다.

   void funca(char *string)   => funca() 그냥 이렇게 콜해도 에러가 안나고 이상한 값을 참조하다가 이상하게 되는데

   이거 찾다가 미치는줄 알았습니다.

   

  이거 말고도 많습니다. .c 파일에 해당 함수의 선언부 .h 파일을 include 한해줬는데 어쩔때는 돌아가고 어쩔때는 그냥 뻗어 버립니다.

  

  이 sata 부분은 잘 돌아 갑니다

 

4. fat32 이 모듈은 공개 된거 써서 잘 돌아 갑니다.


참고로 계속 개발을 해보고 싶으신 분들은 이미 모든 자료는 구글에 있다고 생각합니다.

osdev.org요 사이트가 엄청난 도움이 되었습니다.


이제 저는 삶으로 돌아가고자 합니다. 그동안 와이프한테 너무 미안하고 육아에 매진 하고자 합니다.


제가 고생했던 부분에 도움이 필요하신분들은 메세지 주십시요 ㅎㅎ