요즘 아주 늦은 시간까지 의자에 앉아 있는 게 습관이 돼서, 허리가 거의 부러질 지경이었습니다. 오래 앉지 않았을 때는 몰랐는데, 의자의 등판이 굉장히 약하더군요. ㅠㅠ 기대기만 하면 슥~ 뒤로 가버리니 허리가 계속 굽은 체로 컴퓨터를 했던 겁니다. ㅠㅠ

그래서 의자를 바꿔야 되겠다는 생각으로 지난 주쯤에 가구 몰에 갔었는데... 듀오백이 의외로 별로더군요. 앉았을 때 등을 감싸는 느낌이 좋긴 했지만 역시나 허리를 받쳐 주지 못해서 허리 아래쪽이 계속 굽어 있었습니다. 그나마 회사의 퍼시스 의자가 허리를 단단히 밀어 줬었는데... ㅠㅠ

고민하던 끝에 PC방 의자 같은 녀석을 발견했습니다. 이 의자의 좋은 점은 뒤로 젖힌 다음 Lock이 가능해서 약간 비스듬한 체로 앉을 수 있다는 겁니다. 비스듬하게 누워 보니 확실히 허리에 무리가 덜 갔습니다. @0@)-b 다만 가격이 듀오백 버금간다는... 무슨 중소기업 제품이 그리도 비싼지... 혹시나 해서 인터넷으로 알아봤더니 7만원 정도하더군요. 헉... 오프 라인 매장에서는 13만원이나 하던데... ㅎㄷㄷㄷ

이번 주 초에 질렀더니 어제야 도착했습니다. 설이라서 그런지 배송이 꽤 늦었다는... ㅎㅎ 조립해서 앉아 보니 아주 대만족입니다. ㅎㅎ 허리가 확실히 덜 아파서 오래 앉아 있어도 충격이 덜하더군요. 진작에 누울 걸 그랬나 봅니다. 의지가 랩업되어 골방 폐인 레벨이 더 올라가겠습니다. ㅎㅎ 이 여세를 몰아서 이번 주도 하나 뚝딱 끝내야겠네요. ;)

허리가 아프세요? 그럼 지금 당장 의자를 바꿔 보세요. ;) 훨씬 편하답니다.

아흑... 오늘도 일찍 올 예정이었는데... 퇴근 시간 전에 갑자기 일을 주는 바람에 1시간이나 늦게 퇴근했습니다. 안 그래도 요즘 작업이 많다 보니 일찍 집에 와야 일찍 잘 수 있는데... ㅠㅠ 결국 또 이렇게  되는 군요.

출 퇴근 시간이 자유롭다보니 이런 문제가 생기는 것 같습니다. 윗사람들이 자기 퇴근시간에 맞춰서 일을 시킨다는... ㅠㅠ 아흑... 전 1시간이나 일찍 출근했는데 말이지요. ㅠㅠ 아우 진짜 이거 피곤하군요.

내일은 반드시 일찍 와서 밀린 작업을 마저 하고 일찍 자야겠습니다. 홧팅~!! 야근 불가~!!

아아~  지난 주에 내내 정리하고 작업해서 인터럽트 처리에 기반이 되는 IDT와 TSS쪽 관련 작업을 완료했습니다. 아우~ 이번에는 생각보다 정리할 것이 많아서 아주 식겁했습니다. 분량이 다른 것보다 1.5배나 많아서 죽는 줄 알았거든요. ^^;;;;

이것 참... 역시 어림짐작으로 대충 가늠했더니만, 이런 일이 생기는군요. ㅡ_ㅡa... 이것 말고도 대충 대충 잡아 놓은 부분이 아주 많은데... 살짝 겁이 나기 시작했습니다. 올해 안에 끝낼 수나 있을지 모르겠네요. 이건 뭐... 미친 듯이 정리하지 않는 한 어렵겠다는 생각도 얼핏 들었습니다.

어쨋거나 시작한 일이니 마무리는 해야겠고... 도중에 그만두자니 성격에 안 맞고... 역시 전 고생을 사서하는 타입인 것 같습니다. ;) 죽이 되던 밥이 되던 달려 봐야겠습니다. ;)

이크... 벌써 또 이렇게 시간이 됐군요. 이만 자야겠습니다. 다들 좋은 밤 되세요

ps) 맨 앞의 그림은 Divide by zero 예외를 발생시켜서 임시 예외 핸들러를 부른 화면입니다. 아주 허접하지만 Milestome 용으로 올려 봅니다. ;)

이거 원... 주중 내내 잠을 못 잤더니, 어제 그냥 죽어 버렸군요. ^^;;;; 밀린 작업을 해야 했었는데... 것 참... 뭐랄까요? 일어나니 아무런 대책도 안 서고 그냥 멍~ 하니 창 밖만... ^^;;;;

하는 수 없이 오늘 열 버닝 해야겠습니다. 이번 주까지 아웃풋이 하나 나와 줘야 일정이 맞는데, 어찌될지는 모르겠네요. ;) 아직 하루(?)가 많이 남았으니 한번 달려 보겠습니다.

내일 저녁쯤에 또 하나 올릴 수 있길(??) 기대하며~!!! 홧팅~!!!

어휴... 이상한 일을 하나 맡게 되었는데, 금요일까지던 일정이 목요일로 줄어들어서 죽는 줄 알았습니다. 시간을 요하는 분석 업무라서 내일까지 해도 모자랄 판인데... 오늘까지 결과를 달라니... ㅡ_ㅡa... 황당하기 그지 없더군요. 어쨌거나 하던 일은 하고 집에 가자는 생각에 화장실 가는 시간도 줄이고 했더니... 마지막 시료 하나가 답이 안 나오는 겁니다. 다른 놈들이랑 완전히 증상이 다르더군요. ㅠㅠ

그래서 붙잡고 분석하다 보니 시간은 어느덧 저녁 시간을 훌쩍 넘었고, 아무리 분석해도 답은 안 나오고... 집에서 할 일은 산더미처럼 밀려 있는데... 완전 죽을 맛이더군요. 결국 포기하고 힘겹게 수화기를 들어서 비보를 전했는데... 얼래... 생각보다 반응이 담담하더군요. "그래요? 그럼 어쩔 수 없지요. 결과나 정리해서 주세요.” ㅡ_ㅡa...

“결과나 정리해서 주세요”

“결과나 정리해서 주세요”

“결과나 정리해서 주세요”

“결과나....”

전 대체 뭘 하고 있었던 걸까요? ㅠㅠ 이럴 줄 알았으면 그냥 대충 하는 건데... 허무하기 짝이 없군요. 너무 허무해서 요통이 도졌습니다. (‘’ )a... 쩝쩝... 그냥 집에나 갈걸 그랬나봐요. ㅎㅎ

내일은 진짜 일찍 와야겠습니다. 눈치 보고 있다가 바로 뿅~!! 하고 사라져야지요. ㅎㅎ 야근이 제일 싫어요 ;)

ps) 그나저나 요즘 자는 시간 좀 빼고, 계속 의자에 앉아 있었더니 허리가 부러질려고 하는군요. 어디 괜찮은 의자 없나요? 추천 좀 부탁 드립니다. ㅠㅠ

오늘 블로그를 돌다가 Xeraph 님의 블로그에서 재미있는 글을 봤습니다. “인텔 기가비트 NIC의 성능 향상 기법”이라는 내용이었는데, 원문은 http://xeraph.egloos.com/4808876 에서 보실 수 있습니다.

내용을 간단히 요약하자면 기가 비트쯤 되면 초당 무시무시한 패킷이 오고 가는데, 이것을 패킷이 올 때마다 인터럽트를 발생하게 하여 처리하면 인터럽트 처리의 오버 헤드 때문에 시스템의 전체적인 효율이 떨어진다는 것입니다. 어차피 패킷은 주기적으로 들어온다고 가정하면 인터럽트가 아닌 타이머를 사용할 수 있고, 주기적으로 패킷을 한꺼번에 읽도록 하면 효율을 높일 수 있다는 내용입니다.

실제로도 인터럽트가 자주 발생하면 현재 수행 중인 컨텍스트를 저장하고 복원하는 오버 헤드 때문에, 시스템의 성능이 급격히 떨어지게 됩니다. 저도 그런 경험을 한번 했었는데, 이 글을 읽고 나니 번뜩 떠오르더군요. 예전에 2003년쯤 자작한 kkama OS를 구동시키기 위해 펜티엄 2 233Mhz를 가진 노트북을 샀었습니다. Dell사 꺼였는 데, 플로피 디스크를 내장하고 있었기 때문에 상당히 메리트가 있었지요. ㅎㅎ

OS를 만들면서 GUI도 갖다 붙이고, HDD도 갖다 붙이고 하다가 장난 삼아(?) 시리얼 포트 드라이버를 만들 때였습니다. 전송 속도를 115200으로 맞춰 놓고 PC에서 노트북으로 데이터를 전송했더니, 정상적으로 패킷이 수신되지 않는 문제가 발생했습니다. 이상하다 싶어서 전송하는 동안 아무런 작업을 하지 않았더니 제대로 수신되더군요.

몇 번을 반복한 결과 시리얼로 패킷이 전송되는 동안 OS가 비정상적으로 느려지고, 마우스와 키보드, 그리고 HDD의 인터럽트, 그리고 인터럽트 불가 지역을 동시 다발적으로 수행할 때 패킷이 빠진다는 것을 알았습니다. 순진하게 시리얼 포트의 인터럽트가 발생할 때 마다 패킷 하나씩만 읽어 가서 FIFO에 남은 패킷이 계속 인터럽트를 유발했던 것이지요. 그러다 보니 처리가 늦어지고  패킷은 FIFO에서 밀려 사라지고... 등등의 문제가 발생했었습니다.

해결 방안은 간단했습니다. 시리얼 포트의 FIFO 크기를 늘리고, 인터럽트가 발생했을 때 마다 FIFO에 있는 데이터를 모두 읽음으로써 인터럽트의 발생 회수를 줄인 것입니다. 더불어 인터럽트 불가 영역을 줄여서 인터럽트에 좀더 빨리 반응하도록 한 것도 도움이 됐습니다.

안 그래도 지금 OS를 새로 만들고 있는데, 이런 점을 고려해서 잘 만들어야겠다는 생각이 드는군요. 그 동안 잊고 있었는데, 이점을 고려하면서 해야 할 것 같습니다.

에궁... 그럼 이만 또 자야겠네요. ㅎㅎ 다들 좋은 밤 되세요 ;)

아아~ 주말 내내 바쁘게 보냈습니다. ㅠㅠ 일거리(?)가 있어서 일도 좀하고, 정리하던 것도 마무리를 하다 보니 벌써 12시가 넘었네요. ㅎㅎ 지난 주에 너무 잠을 못 잤더니만, 늦게 일어난 것도 한 몫 한 것 같습니다. ^^;;;; 에궁... 뭐 좀 잼나게 놀려고 했더니만... 영화 한편을 볼 시간도 없었네요 ㅎㅎ ^^;;;

이제 몇 시간만 있으면 또 출근을 해야겠군요. 아흙.... 진짜 계속 하고 싶은 일만 하고 살수는 없을까 고민에 또 고민을 거듭하고 있습니다. ㅠㅠ 그래도 이제 학생이 아니니 그럴 수 없다는 것을 알면서도 괜시리 기대를 하게 되네요 ㅎㅎ

아아... ㅠㅠ 진짜 눈물이 앞을 가립니다. ㅠㅠ 회사 가기 시로오오오오~ ㅠㅠ

에궁... 테스트 버전의 키보드 드라이버를 MINT64 OS에 추가했습니다. ^^;;; 예전에 만든 OS는 필요한 키만 추려서 처리했는데, 이번에는 다 처리하도록 만들었습니다. 뭐 아직 정리가 좀 덜 되긴 했지만, 역시나 기록을 남긴다는 차원에서... ^^;;;

회사에서 맡은 일도 어느 정도 해결 한지라 부담 없이 작업에 몰두했더니, 밤이 꽤 깊었네요. 이만 자야겠습니다 . 자세한 포스팅은 내일 해야겠군요. ㅎㅎ 그럼 좋은 새벽(?) 되세요 ;)

신년을 맞아 좀더 낭창한 회사 생활을 계획했었는데... 새해 첫 출근부터 깨졌습니다. ㅠㅠ 정확하게 7시 55분에 전화를 받은 것을 시작으로 이번 주 수요일까지 아주 주구장창 반야근(?) 모드로 생활했네요. 작년에 이상한 일을 하나 맡았더니, 신년부터 아주 난리도 아니군요. ^^;;;;

회사에서는 회사일 고민하려, 집에서는 문서 정리하랴 아주 눈코 뜰 새가 없네요. 그러고 보니 요 며칠간은 거의 3시가 넘어서 잔 듯합니다. 이러다가 어디 가서 쓰러져 자는(?) 기염을 토하는 건 아닌지 새삼 걱정이 되네요. ;) 그래도 새해에 목표가 아주 분명한 만큼 올해는 좀 무리해야겠습니다.

아유... 그나저나 뭐라도 하나 잘 풀려야 할 텐데... 회사 일도 쉽지 않고, 정리하는 작업도 쉽지 않군요. 끄응... 어디 좋은 해결책 없을까요? ㅎㅎ 밤이 또 늦었으니 일단 해결책은 내일 고민해야겠군요. ;)

그럼 다들 좋은 밤 되세요 ^^

안녕하세요, kkamagui 입니다. ;) 새해가 되어 처음으로 하는 포스팅이군요. 그간 일이 좀 있어서, 일도 좀 하고(휴가인데 말이죠... ㅠㅠ) 코드 정리 작업을 병행하다 보니 이제서야 하나 올립니다. ㅎㅎ 아우 휴가를 정신 없이 보냈네요. 그나마 위로 일찍 올라 왔으니 이 정도는 한 것 같습니다. 계속 밑에 있었다면 아마... GG ㅠㅠ

이제 월요일이 되면 다시 회사로 가야 하는 데... 끔찍하군요. 어디 짱 박혀서 하고 싶은 것만 하고 살 수는 없을까 심히 고려 중입니다. 나이라도 어리면 과감히 퇴사하고 다른 것에 뛰어들어 볼 텐데... 좀 있으면 꺾인 환갑이라 그럴 수도 없네요. ^^;;;; 그냥 회사 다니면서 잠 좀 줄여 이것 저것 하는 정도 밖에는.... 그나마 졸졸하던 칼퇴도 이번 달부터는 힘들듯... ㅠㅠ (아아~ 이거 난 언제 자라는 말이냐... ㅠㅠ)

위에 그림은 새로 정리해서 만든 MINT64 OS의 스크린 샷입니다. 점점 소스 공개가 불투명해지고 있는 상황에서 이런 스크린샷을 올리는 게 과연 옳은 일인지는 모르겠지만... 개발 기록을 남긴다는 차원에서 꾸준히 올리고 있습니다. 어찌됐던 빨리 마무리 되었으면 좋겠는데... 점점 알 수가 없네요. ㅠㅠ

앗... 벌써 시간이 이렇게... 일단 자야겠습니다. ^^;;; 다들 좋은 밤 되시고... 아 아니구나... 좋은 아침 되세요 ;)

아아~ 2008년 한해도 이렇게 지나가는군요. ;) 올해는 여러 가지 일이 있었습니다. 다행이(?) 취직도 했고, OS도 새로 만들기 시작했으며 그 동안 계속 생각만 하고 있었던 마이크로 소프트웨어에 기고도 했으니 말입니다. ㅎㅎ 계획한 일을 100%로 봤을 때 한 70% 정도는 이룬 것 같습니다. 못다한 30%는 올해의 끝자락과 내년에 걸쳐서 해야 할 것 같군요. ;)나름대로 만족스러운 한 해였던 것 같습니다. 오늘 오후에 변기가 고장 난 것만 빼면 말이지요. ㅠㅠ)-b

휴가가 이번 주까지 임에도 불구하고, 집에서 너무 나태한 생활을 했더니 PC가 그리워서(?) 예정보다 빨리 올라왔습니다. 어제 새벽에 와서 밤새도록 작업하고 놀았더니 2시에 일어났네요. ㅎㅎ 이런... 이래서야 고향집이랑 뭐가 다른지... ㅠㅠ)/~

새해는 좀더 내공 수련에 힘쓰는 한 해가 되었으면 좋겠습니다. 개인적으로 책을 좀 많이 읽는 한 해가 되었으면 좋겠네요. ^^;;; 전공 서적도 많이 읽고 교양 서적도 많이 읽었으면 좋겠습니다. ㅎㅎ

여러분도 올해 마지막 날을 마무리 잘 하시고, 내년도 뜻 깊은 한 해가 되시길 바랍니다. ;)

http://kkamagui.tistory.com/614에 제 PC에서 테스트한 A20 게이트의 이상 증세에 대해 글을 남겼습니다. 생각 외로 많은 분들이 관심을 가져 주셨는데, 그 중에서 A20 게이트에 따른 주소 공간의 변화에 대한 내용을 한번 정리할 필요가 있어서 글을 하나 끄적 거립니다.

A20 게이트는 아시는 분은 아시겠지만 어드레스 라인 20bit에 관련되어 있습니다. 즉 A20 게이트가 비활성화 될 경우 어드레스 라인 20bit가 강제로 0으로 설정되어 홀수 Mbyte에 접근되지 않는 것이지요. ^^;;;; 물론 코드에서 홀수 Mbyte에 접근할 수 있지만 이것은 다시 짝수 Mbyte에 맵핑됩니다. 아래 그림을 보시면 한눈에 알 수 있습니다. 3Mbyte + 64Kbyte 영역에 접근하는 예를 나타냈습니다.



따라서 이 때문에 코드에서 사용하는 선형 주소는 짝수 Mbyte에 중복 맵핑되는 결과를 가져옵니다. 이로 인해 전체적인 주소 공간은 아래 그림과 같이 변환됩니다.

따라서 1Mbyte 이하의 위치에서 코드가 실행되는 상태에서 1Mbyte ~ 6Mbyte 까지 영역을 모두 0으로 초기화하는 프로그램을 실행한다면, 1Mbyte ~ 2Mbyte 영역을 초기화하는 순간 자신이 실행 중이던 코드 영역(1Mbyte 이하에 있는)을 모두 0으로 초기화하게 됩니다. 실행되는 코드는 1Mbyte 이하의 어드레스에 존재하므로 프로세서는 온통 0x00으로 도배된 코드를 실행하게되고, 이는 잘못된 인스트럭션이므로 예외(Exception)이 발생하게 됩니다. 즉 프로그램이 멈추거나 리부팅하게 됩니다.

이전에 글을 대충썼더니만, 증상에 대해서 오해하시는 분들이 있어서 다시 한번 정리합니다. ^^
휴일인데도 이런걸 하고 있는 걸 보면... 역시... ㅠㅠ)-b 골방 폐인인듯... ㅎㅎ

그럼 다들 즐거운 연말 보내세요 ;)

회사에서 시간이 좀 남아서 정리를 하던 중에, 재미있는 글을 발견했습니다. 글 주제는 Core의 수가 점점 증가하는 것이 대세이고, 이것을 효율적으로 지원하는 것이 처리 속도를 향상시키는데 도움이 될 것이라는 내용이었습니다. 그 문서에 Intel 사이트의 웹페이지 링크가 첨부되어 있었는데... CPUID를 사용해서 물리적인 Core Processor와 Hyper Threading Logical Processor의 수를 검사하는 방법이 나와 있었습니다.

나름대로 깔끔한 문서라서 회사에서 킵(?) 한 다음 집에 와서 키워드로 검색하니, 이번에는 동영상 강의가 나오더군요. @0@)-b PDF로 작성된 문서보다 훨씬 깔끔하게 정리되어 있어서 공유 차원에서 올립니다. 동영상 강의는 http://software.intel.com/en-us/articles/hyper-threading-technology-and-multi-core-processor-detection 에서 볼 수 있습니다.

제가 만드는 MINT64 OS에서는 Performance를 크게 고려하지 않기 때문에, Core Processor인지 Hyper-Threading Logical Processor 인지 굳이 구분하지 않습니다. 만약 같은 Package에 있는 같은 Core인가, 아니면 같은 Core에 있는 Hyper-Threading Logical Processor인가 판단하여 적절하게 스케줄링하면 보다 높은 Performance를 낼 수 있을 것 같지만... 자세한 건 실제로 벤치마킹한 문서를 봐야 알 것 같습니다. 나중에 시간 나면 Core나 Hyper-Threading에 따라서 어떻게 스케줄링해야 하는지도  한번 봐야겠습니다. ㅎㅎ

차 시간이 다가와서 이만 가야겠군요. ;) 다들 메리 크리스마스~!!!

오늘도 어김없이 늦은 시간까지 컴퓨터를 했습니다. 뭐 이래저래 정리할 게 좀 있어서 작업하다 보니 좀 늦었군요. ㅡ_ㅡa... 고향에 가서는 좀 일찍 자야겠습니다(진짜? ㅎㅎ). ㅠㅠ 사실 고향에 내려갔을 때 작업을 좀 하려고 노트북을 셋팅하다보니 늦었다는... ㅋㅋ(역시 난 천성이 골방 폐인일지도... ㅠㅠ)

아우 진짜 피곤하군요. 요즘 늦게 자는 습관이 들어서 점점 더 늦게 자는 것 같습니다. 이제 새로운 잡(Job)도 할당받았으니 회사에서 열심히 해야 하는데... 연말이라 분위기가 너무 들떠서 그냥 버티다 오는군요. ;) 뭐 새해부터 열심히 하면 되겠지요~ 올해는 요대로 그냥 마무리를 하렵니다. ㅎㅎ

그나마 천만 다행인 일은 보낸 리뷰가 퇴짜맞지 않았다는 겁니다. 만약 퇴짜 맞았다면 아마 지금도 리뷰를 쓰고 있었을지도... ㅠㅠ 어흑... 생각만 해도 끔찍하군요. 하긴 수백 페이지짜리 책을 읽는 게 더 곤욕이었지만 말입니다. ㅎㅎ

어찌 되었거나 오늘은 즐거운 크리스마스 이브이고~ 고향에 내려가는 날이다 보니 기분이 너무 좋습니다. 기분은 좋은데 왜~ 머리는 깨질 것 같고 눈알은 튀어나올 것 같은지... ㅠㅠ 어흑... 잘 시간이 됐나 보군요.

그럼 다들 즐거운 크리스마스 되시고, 성탄절에 뵙겠습니다. ;)

다들 메리 크리스마스~!!!!

image

어제 후배에게 테스트를 부탁한 뒤로 생각한 것인데, 각 PC 별로 64bit 및 멀티 코어 검사에 문제가 없는지 확인할 필요가 있을 것 같습니다. 지금 상황으로 보니 프로세서가 64bit 모드를 지원하더라도 BIOS나 기타 문제 때문에 64bit로 전환되지 않는 문제가 있는 것 같더라구요. ㅎㅎ

좀더 자세한 내용은 실제로 테스트를 해봐야 알겠지만... AMD 프로세서 쪽도 체크해 볼 필요가 있을 것 같습니다. 지금까지는 Intel이나 AMD나 64bit 쪽 전환하는 과정이 같다고 가정하고 작업을 했었는데... 순간 아닐 수도 있다는 생각이 들었습니다. 마침 이번 주가 즐거운 크리스마스고 고향집(홈 스윗 홈~!!!)으로 내려갈 예정이니 고향집에 있는 PC(AMD PC)를 마구 굴려서 정보를 뽑아 낼 예정입니다. 그리고 테스트 결과를 여기 블로그나 스프링노트쪽에 올려야겠습니다.

이거 원~!!! 할 일이 태산이군요. ;) 그나마 다행인 것은 틈틈이 책을 좀 봐서 리뷰는 대충 끝냈다는 거~!!! 이제 문서만 만들면 되는데... 왜 이렇게 문서를 만들기가 귀찮은지... 그냥 스프링노트에 끄적거린걸 바로 날려 버리고 싶은 충동이 마구 마구 밀려옵니다. ㅠㅠ)-b 그래도 처음하는 리뷰이니만큼 신경을 좀 쓰긴 써야 할 것 같군요. ㅎㅎ 아흙~!! ㅠㅠ

에궁... 이제 그만 슬슬 자야겠습니다. 사실 잔다기 보다는 몬스터 헌터 2G에 재미를 붙여서 그거 좀 하다가 잘려고... (‘’ )a... 이래도 되는 건지 잘 모르겠군요. ㅠㅠ)-b

그럼 다들 좋은 밤 되시고, 크리스마스 준비 잘하시길~ ;)

ps) 윗부분에 스크린샷은 A20 게이트를 활성화하고 찍은 겁니다. ㅎㅎ 뭐 키보드 컨트롤러를 사용해서 On 하는 건 이제 구식이라 BIOS와 시스템 컨트롤 포트를 사용해서 깔끔하게 처리했습니다. ;) 세상 참 좋아졌군요. ㅎㅎ

지금 A20 Gate에 대한 내용을 정리하고 있습니다. 뭐 예제로 보는 것이 가장 확실해서 간단한 예제를 하나 만들어 제 PC에 동작시켜 봤는데... 일반적인 상황이라면 분명히 죽어야 하는 예제인데 이상하게 버젓이 살아서 동작하는 겁니다. @0@... 혹시나 해서 이것 저것 테스트 해봤습니다만, A20 Gate 쪽이 완전히 동작하지 않는 것 같았습니다. 이제 XT 시절에 쓰던 프로그램을 다시 돌릴 일이 없으니, 무의미하긴 하지만.... 없으니 뭔가 좀 허전하더군요. 에러를 발생시키기 위해서 A20 Gate를 비활성화 했음에도 불구하고 잘 동작하는 것 보면 작동 안 한다고 보는 것이 맞겠지요. ㅎㅎ

혹시나 해서 후배 PC에 돌려봤는데, 일단 후배 PC는 자동으로 A20 Gate가 켜지는 건 아닌 것 같았습니다. A20 Gate를 끄고 OS를 부팅했을 때는 계속 리부팅 되더라구요. ^^;;; 그런데 이상한 점은 64bit 모드로 전환되지 않는 다는 것이었습니다. 정상적인 상황이라면 64bit로 전환되어 커널이 실행되어야 함에도 불구하고 64bit로 전환하는 곳에서 멈춰 있었습니다. ㅡ_ㅡa...

원인은 좀 더 살펴봐야 알겠지만... 살짝 골치가 아프네요. ㅎㅎ 이거 원... 프로세서가 64bit를 지원하는 것 만으로는 안되는 것이 있나 봅니다. ㅠㅠ 어흑... 머리야...


ps) A20 게이트와 주소 공간에 대해서는 따로 정리를 한번 했습니다. ;)

http://kkamagui.tistory.com/619

image

와우~ 가상 머신 에뮬레이터 중에 하나인 Virtual Box의 새 버전이 출시되었습니다. 새로운 버전은 http://www.virtualbox.org/wiki/Downloads에서 다운로드 할 수 있습니다. 이번 릴리즈에서 추가된 주요 기능 중에 눈에 띄는 점은 32bit OS에서 64bit 가상 머신을 실행할 수 있다는 것입니다. 이전 버전에서는 32bit OS에서는 PAE를 지원하지 않아서 64bit 모드로 진입할 수 없었는데 말이죠. ;) 다만 하드웨어의 기능을 사용하기 때문에 프로세서가 64bit 모드를 지원하지 않는다면 실행할 수 없습니다.

흑흑... 그렇게 따지면 VMWare와 별로 다를 것이 없군요. 아직까지는 에뮬레이션 환경 면에서 QEMU를 따라올 에뮬레이터가 없는 것 같습니다. QEMU 같은 경우는 소프트웨어적으로 처리하므로 32bit OS에서도 프로세서의 기능에 관계없이  64bit에 멀티 코어 환경까지 에뮬레이션 해주니 말입니다.

여튼 공짜로 쓸 수 있는 가상 머신 에뮬레이터가 늘어난다는 것은 OS 개발자에게 좋은 일이지요. PC를 직접 키고 끈다면 파워가 나갈지도... 눈물이 흐르는군요 ㅠㅠ)-b

헉... 이거 천지... 오늘은 별로 한 것도 없는데 벌써 2시가 다 됐습니다. 이것 참.... 진도가 무지 안 나가네요. ㅎㅎ 그래도 새로 산 책상 덕에 필요한 책이랑 노트북을 한자리에 펼쳐 놓을 수 있어서 그나마 다행인 것 같습니다. ;)

사실 처음 이사 와서 돈이 없던 시절에 인터넷에서 싼 책상을 샀었는데... 노트북만 쓸 때는 괜찮았지만 24인치 모니터를 지르는 바람에 책상이 완전 좁아 졌습니다. 뭐 사실 일을 벌이기 전에는 책 펼 일이 잘 없어서 그냥 그러려니 했는데, 이제는 이것 저것 봐야 할 책들이 산더미라서 도저히 안되겠더라구요. ㅎㅎ 큰 맘 먹고 지른 건데, 지금은 상당히 잘 샀다고 생각하고 있습니다. 역시 프로그래머의 책상은 넓고 봐야 합니다. ㅎㅎ ;) 특히 저처럼 지저분한 사람들한테는 더욱 더 넓어야지요.

아웅~ 또 머리가 살살 아프군요. 내일은 송년회가 있는데... 그냥 일찍 끝내고 집에 왔으면 좋겠습니다. ㅎㅎ 눈치 잘 보고 있다가 집으로... ;) 에구 자꾸 말이 길어 지네요. 이제 자야겠습니다.

다들 좋은 밤 되세요 ;)

오늘 집에 왔더니 왠 책이 배달되어 있더군요. 얼마 전에 책 리뷰 요청을 받았을 때, 자세한 리뷰를 조건으로 받기로 한 책이었습니다. 책 이름은 비밀(?)이라서 아직 밝힐 수는 없지만, 꽤나 괜찮은 책이라는 것 정도만 살짝 알려 드리겠습니다. ㅎㅎ 사실 요즘 이것 저것 하느라 눈 코 뜰 새 없이 바쁘지만, 그래도 새로운 내용에 호기심이 불타 올라 리뷰 요청을 덥석 물고(?) 말았습니다.

한 2주 안에 리뷰를 마쳐야 해서 조금 더 바쁜 나날을 보낼지도 모르겠습니다. ;) 정말 일 복(?)이 터진 것 같군요. ㅠㅠ)-b 그래도 행복한 이 기분은 대체... 값 비싼 책을 공짜로 받아서 일까요 ㅎㅎ 완전 좋습니다. 올해는 블로그 덕에 이것저것 덕을 많이 보는 군요. 블로그 만세~!!!! ;)

리뷰는 나중에 허락 받고 나서 올리도록 하겠습니다. 다들 그럼 좋은 저녁 되세요 ;)

ps) 마로님이 보내주신 Wii VGA 케이블 무지 잘 쓰고 있습니다. ㅠㅠ 완전 짱이더군요. 너무 감사합니다. ^^)-b

아우~ 이번 내용에 대한 정리는 지난 주부터 시작했는데, 이것 저것 일이 많아서 진도가 굉장히 안 나가는군요. ㅠㅠ 특히 온 주말을 디버깅에 투자했더니 더 그런 것 같습니다. ㅎㅎ 사실 한번 만들었던 걸 다시 만들려니 더 진도가 안 나가는 것 같기도 하네요. ㅎㅎ

드디어 기나긴 어셈블리어의 늪을 빠져 나와 C 코드로 접어들었습니다. 이제 대부분의 작업을 C 코드로 할 수 있겠군요. ㅎㅎ 물론 중간 중간에 꼭~!!! 어셈블리어로 처리해야 하는 부분이 있어서 완전히 빠져 나왔다고 보기는 어렵지만, 어찌되었든 C 코드를 쓸 수 있다는 데 의의가 있으니... ^^;;;

아흙...회식에서 술을 좀 퍼먹고 왔더니, 체력이 거의 바닥입니다. ㅎㅎ 자면서 코딩해서 내일 다시 뒤집어 엎는 게 아닌가 슬슬 걱정이 되는군요. 일단 뭐 대충 이만하면 됐으니 그만 자야겠습니다.

다들 좋은 밤 되세요 ;)

거의 이틀 간의 삽질 끝에 부팅에 성공했습니다. ;) 물론 한번에 성공한 건 아니고, 여러 문제가 있었습니다. ^^;;;; 것 참... 버그가 한 두 개가 아니더군요.


첫 번째 버그는 IDE 하드를 체크하는 루틴에 있었습니다. 가상 PC에서는 IDE를 사용한다는 가정하에 코드를 작성했는데, 실제 PC는 SATA였기 때문에 동작하지 않더군요. ^^;;; 원래는 타이머를 체크하면서 검사하게 되어 있었는데 인터럽트 불가 루틴이 앞에 있어서 결국 타이머가 이벤트가 발생하지 않았고 무한 루프를 돌았다는... ㅠㅠ


두 번째 버그는 대충 만든 동적 메모리 할당 루틴 때문이었습니다. 이상하게 어디서 int 타입으로 계산했는지 2GB 이상의 어드레스의 메모리를 할당 받으면 sign extension이 일어나서 Unsigned Long 타입으로 받았을 때 상위 32bit가 모두 0x0F로 설정됐습니다. ㅠㅠ  가상 PC에는 메모리를 최대 64MB로 설정해 놨기 때문에, 발견되지 않았더군요. 크윽...


세 번째는 MTRR 레지스터를 잘 못 설정해서 생긴 문제였습니다. ㅠㅠ 어설프게 배웠더니(?) 홀수 MB 메모리는 캐시를 사용하도록 설정하고 짝수 MB는 캐시를 사용 안 하도록 설정했더군요. 그 덕분에 굉장히 느린 GUI 화면을 볼 수 있었습니다. ㅡ_ㅡa... 어찌나 느리던지... RDTSC를 통해 CPU 속도도 재보고, 프로파일러를 만들어서 화면 업데이트 속도도 재 봤는데... 헉... 초당 3 프레임 정도 나왔습니다. 하도 이상해서 램, 비디오 램 두 영역을 잡아서 1024 * 768 * 2 Byte를 동일한 함수에서 채워 봤습니다. 얼래... 램이랑 비디오 램이랑 둘 다 비슷하더군요. ㅡ_ㅡa... 램 영역은 캐시를 활성화 하도록 했기 때문에 원래대로라면 램이 더 빨라야 하는데 말이죠. ^^;;;; 결국 잘못 셋팅해서... ㅠㅠ


이런 자잘한(?) 문제를 다 해결하고 나서야, 광속(?)으로 동작하는 MINT64 OS를 볼 수 있었습니다. 코드 두줄 바꿨을 뿐인데 정말 빠르더군요. ㅠㅠ)-b 크윽... 초당 3프레임 나올 때는 진짜 띵~ 하던데...ㅠㅠ 기념으로 사진을 찍어서 올립니다. ㅎㅎ 동영상을 찍고 싶었지만 카메라가 꾸져서... 다음에 디카를 사면 한번 찍어 올리겠습니다. ㅎㅎ


이제야 다시 정리(?)하는데 집중할 수 있겠군요. 덕분에 주말의 2/3을 날렸네요. ㅎㅎ 그래도 기분은 좋습니다. ;) 앗싸 MINT64 OS 만세~!!!


ps) 이번에 좁은 책상을 버리고 퍼즐 형태의 사무용 책상으로 바꿨더니 작업 능률이 200%는 올라간 것 같습니다. 역시 작업 환경은 무조건 좋고 봐야 합니다. ;) 그지? 후배야? ㅋㅋ

네이버에서 도메인을 공짜로 주는 이벤트를 하더군요. 그래서 언능 신청했습니다. 새로 신청한 도메인은



입니다. >ㅁ<)-b

아우~ 좋군요~ 네이버 만세 ;)

지금까지 만들기만 실컷 만들고 플로피 드라이브와 디스크가 없어서 테스트를 못하고 있었습니다. 그러다 오늘 문득 USB에 심으면 바로 테스트 할 수 있겠다는 생각이 들더군요. 그래서 부트 로더를 좀 수정한 다음 USB에 옮겨 담으니 떡!! 하고 부팅이 됐습니다. @0@)-b

물론 한번에 된 건 아니고, 이것 저것 설정 문제 때문에 삽질을 좀 많이 했습니다. 대략 8시부터 시작했는데, 벌써 2시군요. ㅡ_ㅡa... 거의 6시간 동안 작업했다는.... 그런데 좀 이상한 건 듀얼 코어 활성화에 64bit 전환, 그리고 램도 거의 4기가까지 잘 잡히는데... 윈도우가 굉장히 느리더군요. ㅡ_ㅡa... 뭔가 이상했습니다. 가상 머신에서 테스트하는 것 보다 더 느리게 동작했습니다. ㅠㅠ

hlt() 루틴도 빼 보고 타이머 인터럽트의 회수도 줄여 봤지만... 테스트를 하면 할수록 클럭의 속도가 낮게 잡힌 것이 아닐까 하는 생각이 들더군요. 물론 BIOS에서 스피드 스텝 옵션은 끈 상태였습니다. 아우... 당췌 무슨 일인지... 일단 오늘은 밤이 늦었으니 이만하고... 내일은 튜닝을 좀 한 다음 인증 샷을 올리겠습니다. ;)

그럼 다들 좋은 밤 되세요 ^^)-b

ps) 정리해야하는데, 다시 일을 벌이는 듯한 느낌이군요. 만약 스피드 스텝쪽 문제라면 왠지 챕터 하나가 더 늘어날 듯 하다는... ㅠㅠ 아흙... 미쵸...

OS를 만들면서 지금까지는 makefile을 거의 배치 파일 수준으로 사용하고 있었습니다. 이게 무슨 말이냐 하면... 디렉토리에서 소스 파일 이름만 달랑 추출하고, .C 파일과 같은 소스 파일이 수정되었을 때만 커널을 다시 빌드한다는 이야기입니다. 귀차니즘때문에 이렇게 쓰시는 분들이 많을 것 같다는... ^^;;;; 이렇게 되면 헤더 파일이 수정되었을 때, 해당 헤더 파일을 당겨쓰는 .C 파일들이 자동으로 빌드되지 않기 때문에 문제가 생깁니다.

뭐, 사실 혼자 테스트 할때는 매번 Clean해서 전부 삭제하고 다시 빌드하면 되니 신경을 안썼는데... 거사(?)를 치루려다 보니 이런것 하나하나가 신경 쓰이더군요. 결국 makefile을 뒤엎어서 의존성 관련 부분을 추가했습니다. 거의 3시간 정도 이것만 한 것 같네요. ㅠㅠ

C 파일로 부터 의존성 정보를 뽑는건 아주 간단합니다. "gcc -c -M Main.c Main2.c > a.txt" 와 같이 옵션을 주면 아래와 같이 이쁘게 출력해 줍니다. 이렇게 생성한 a.txt 파일을 makefile에 포함시켜주면 나머지는 규칙에 따라서 알아서 빌드해 줍니다. :)
Main.o: ../Source/Main.c ../Source/Main.h
Main2.o: ../Source/Main2.c

makefile에 포함시키려면 다음과 같이 써주면 됩니다. $(wildcard a.txt)는 디렉토리에서 a.txt 패턴이 들어간 파일명들을 스페이스바로 구분한 리스트를 나타내며, ifeq는 두 항목을 비교하는 것입니다. 즉 아래 코드는 같은 디렉토리에 a.txt가 있으면 해당 파일을 makefile에 포함시키라는 의미입니다.
ifeq (a.txt, $(wildcard a.txt))
include a.txt
endif

위의 내용을 추가해서 만든 makefile을 실행한 것입니다. 의존 관계에 대한 정보가 아주 자알~ 생성되고 있음을 볼 수 있습니다. ;)
C:\MINT64\01.Kernel32>make dep
make -C Temp -f ../makefile InternalDependancy
make[1]: Entering directory `/c/MINT64/01.Kernel32/Temp'
gcc.exe -c -M ../Source/Main.c ../Source/Main2.c > .dependancy
make[1]: Leaving directory `/c/MINT64/01.Kernel32/Temp'

아아~ 이거 원... 마음이 급해서 날림으로 만들었더니, 이런데서 시간을 많이 잡아먹는군요. ㅎㅎ 하루를 그냥 날린 것 같습니다. ㅠㅠ 나머지 작업은 할 수 없이 내일 해야겠네요. ;)

그럼 다들 좋은 밤 되세요 ;)

에궁 에궁~ 요즘 글 정리하랴 OS 코드 정리하랴 정신이 없습니다. 정리하던 도중에 OS의 구조가 바뀌는 바람에 또 한번 식겁(?)을 하고 겨우 다시 원점으로 되돌려 놨습니다. ^^;;;; 지난번까지는 모두 어셈블리어로 작업을 했었는데, 이제 C 코드를 같이 빌드할 수 있게 되었습니다. 덕분에 작업이 더 수월해 지겠군요. >ㅁ<)-b

image

아우~ 했던 작업을 또 할려고 그러니 귀찮은 것도 있고, 정리도 하려니 시간이 아주 좔좔 들어가는군요. ㅠㅠ 잠을 좀 자긴 자야 할텐데... 큰일입니다. ^^;;;; 일단 오늘도 늦었으니 이만 자고 나머지는 내일 정리해야겠군요.

다들 좋은 밤 되세요 ;)

블로그를 돌다가 완전 어이없는 글을 봤습니다. 제목은 위와 같구요, 내용은 다음과 같습니다.

현금인출기에 지갑이 떨어져 있어도 절대로 갖고 나오지 마세요

요즘 은행 현금인출기에 사기를 칠 목적으로 사기꾼들이 지갑을 두고 가는 사례가 많습니다.
이걸 좋은일을 하겠다고 들고 나오시거나 그냥 가지고 나오시면 절도죄가 성립된다고 하네요.
CCTV의 성능이 좋아서 현금인출기에서 촬영된 사진으로 추적이 가능하며 일주일안으로 경찰이 집으로 방문한답니다.
쉬운 예를들면 사기칠놈이 현금인출기앞에 지갑을 두고 나간다.
그걸 모르고 지갑을 좋을일 할려고 지갑을 우체통에 넣어준다.
사기칠놈이 지갑에 돈이 많이 들어있다고 신고한다.
경찰에서 CCTV사진을 이용해서 추적한다.
집으로 경찰이 찾아온다.
사기칠놈이 합의금으로 거액을 요구한다.
주변에 아시는 분도 좋은 일 할려다가 4백만원정도에 합의하셨다고 하시네요...
지갑에 만원들어있었구....암것도 없었다능 ㅎㅎㅎ
경찰에서도 그 계좌추적해봐도 10만원도 안들어있었던 계좌고 당하셨다고만 위로만 한다네요......
잘아는 은행 직원으로부터 받은 글입니다.
신종사기수법이라고 하는데.....간담이 서늘해집니다.
좋은일도 하지마시고 모른척하는게 상책이네요~ㅋㅋ

- 본 쪽지는 무단펌질을 적극 환영합니다. -

이거 원... ㅡ_ㅡa... 어째 살아야할지... 완전 안습이군요. 뭐 특템도 가지 가지겠지만 이런 건 조심해야겠습니다.
오늘 여자친구와 간만에 영화를 봤습니다. 제가 스릴러나 공포를 좋아해서 볼만한 영화라고는 눈먼 자들의 도시와 쏘우 V 밖에 없더군요. 여자 친구가 정신적 충격이 있을까봐 쏘우는 차마 못보겠고 해서 눈먼 자들의 도시를 봤습니다.

결론은.... ㅡ_ㅡ... 뭐랄까요.... 진짜 알 수 없는 영화더군요. 그냥 보고 있으니 아무 생각도 안들고... 감동도 없고 사실성도 좀 떨어졌습니다. 혹시나 보실 분들을 위해서 내용까지는 안 적겠지만... 스릴러라고 하기에는 긴장이 "많이" 부족하고, 드라마라고 하기에는 뭔가 심상치 않은 분위기랄까요? ㅠㅠ

굳이 평점을 주자면 10점 만점에 2점 정도 주고 싶습니다. 물론 비유와 상징같은 심오한 내용도 좋지만 적어도 관객이 수긍할 수 있을 정도는 되야 할텐데... 이건 뭔가 좀... 크윽... ㅠㅠ 진짜 눈물이 나네요.

뭔가 스릴러 중에 강도가 좀 덜하고 밋밋한 영화를 보고 싶으시다면 이 영화를 추천합니다. ;)

오늘 회사에서 무슨 발표 비스므리한 걸 했더니만, 상품으로 YEPP-Q1을 받았습니다. 그것도 8GB짜리를 말입니다. 어떻게 생긴 물건이냐면 요렇게 생겼습니다.

Q1 

상품을 준다는 이야기는 못 들었었는데, 다른 사람에게 양보 안 하길 잘했군요. 사장단 앞에서 하는 발표라서 상당히 부담되어 다른 사람한테 넘길려고 했었는데 말이지요. ㅎㅎㅎ 센스있게 케이스까지 같이 주더군요. ㅎㅎ 아주 신납니다.

이제 또 새로운 디지털 라이프가 시작되겠네요. 헤헤~ 음질이 기존 꺼보다 더 좋아졌다는데, 상당히 기대가 됩니다. ^^)/~ 야호~

오늘은 좀 늦었으니 박스 개봉식은 내일 해야겠네요. ㅎㅎ 그럼 다들 좋은 밤 되세요 ;)

ps1) 집에 없는 전자 기기가 없는 듯.... NDS 2대에 PSP1 대, 그리고 닌텐도 Wii까지... 당췌 뭐하는 사람이지 모르겠네요. ㅎㅎ

ps2) 혹시 어플리케이션을 개발할 수 있는 API 같은 건 공개 안 하는지 모르겠네요. 공개한다면 메모장 같은 거 하나 만들어서 올려 볼텐데 말입니다. ㅎㅎ

에궁... 좀 전까지 해서 보호 모드로 전환하는 내용까지 대충 마무리했습니다. 이제 좀 더 손본 다음 메모리를 잠시 정리하고 64bit로 전환하면 되겠군요. 화면 캡처하랴 그림 그리랴 표 만들랴 완전 정신 없습니다. ㅠㅠ

아우 어찌나 길고 험난한지... 아주 죽을 맛입니다. ㅠㅠ 그래도 찔끔 찔끔 진도가 나가고 있으니 그나마 다행이네요. ㅎㅎ 일단 오늘은 몹시 피곤하니 일찍 자야겠습니다. 다들 좋은 밤 되세요 ^^

헉... 오늘은 참 재미난 것(?)들을 많이 보게 되는군요. 이번에는 iPhone에 Linux를 올린 동영상입니다. 이건 말이 필요없습니다. 일단 한번 보시죠.


iPhone Linux Demonstration Video from planetbeing on Vimeo.

와우~ 콘솔 쉘이 뜨고 리눅스 커맨드를 입력하는 모습이 참 인상적이네요. 부트 로더를 만들어 올려서 iPhone과 Linux를 선택해서 돌릴 수 있게 한 것 같은데... 정말 대단한 사람들인 것 같습니다. ^^;;;

iPhone용 Linux에 대한 내용은 http://linuxoniphone.blogspot.com/2008/11/linux-on-iphone.html 에서 보실 수 있습니다. iPhone이랑 iPod 터치랑 크게 차이가 없으니 iPod 터치에도 리눅스를 돌릴 수 있겠다는 생각이 드네요. ^^;;; 나중에 시간있으면 하나 질러서 뭐 좀 해봐야겠습니다. 그러고 보니 한참 가지고 놀던 NDS가 저쪽에 처박혀서 절 째려보고 있군요. ㅠㅠ 아흙... NDS에 프로그램도 업데이트 해야하는데... 시간이 부족하네요. ㅎㅎ

여튼... 세상에는 참 대단한 사람들이 많다는 거~!!!!

+ Recent posts