요즘 회사에서 버닝을 하고 있는 중이라 퇴근 후에 작업하기가 점점 힘들어 지고 있습니다. 아무래도 체력에 한계가 오는 것 같기도 하고... 그래서 새벽형 인간으로 변신을 고려하고 있습니다. 이게 뭐냐하면...

퇴근 후에 잠시 쉬었다가 바로 자는 겁니다. @0@)-b 그리고 새벽에 일어나는 거지요. 오늘은 시범으로 4시 30분에 일어나 봤는데... 나쁘지는 않는 것 같습니다. 일단 저녁에 무리해서 작업하는 것 보다는 나은 것 같네요. ^^;;;;

과연 얼마나 갈지 모르겠지만... 일단은 이렇게 한번 지내봐야겠습니다. ;) 새벽형 인간 프로젝트 만세~!!!

RSS를 돌다가 firejun(http://firejune.com/1458)님의 사이트에서 재미난 것을 발견했습니다. 바로 그림 파일을 압축해 주는 사이트입니다. ;) 요즘 안 그래도 GUI 시스템 때문에 이미지를 넣어야 하는데... 용량이 크면 시리얼로 전송하는데 문제가 있어서 많이 고민 중이었습니다. 그런데 이 사이트가 그 고민을 좀 덜어 주는군요 ㅎㅎ

사이트 주소는 http://www.gracepointafterfive.com/punypng/ 이고 아래와 같이 멋진 압축률을 보여 줍니다.

<punypng의 이미지 압축률>

실제로 MINT64의 GUI 프로토타입 이미지를 압축해 봤더니 약 30% 정도가 줄어들더군요. 원리는 알 수 없지만 꽤 고마운(?) 웹사이트입니다. ㅠㅠ 어흑... 이제 그래도 여전히 손실 압축 방식인 JPG에 비해서는 무지 크군요. ㅠㅠ

열심히 MINT64 OS에 GUI 시스템을 넣고 있는데... 문득 옛날 생각이 났습니다. 예전에도 열심히 GUI 프로토타입 만들고 OS Framework 만들어서 마이크로소프트웨어에 연재하고 그랬었는데... 그때 몇몇 분들이 하던 이야기가 떠오르더군요.

회사에 입사하면 이런 거 할 시간 없으니까, 지금이라도 많이 해둬라.

저는 회사를 다녀도 마음만 먹으면 할 수 있을 꺼라 이야기 했는데... 그분들은 하나같이 입사하자마자 정신 없이 바쁘고 피곤할 테니 얼마 못 갈거라고 했습니다.

사실 그때 좀 충격을 먹었습니다. 뭐, 회사가 바쁘고 정신 없다는데 충격을 먹은 게 아니라... 뭐랄까요... 프로그램 만드는걸 진심으로 좋아하는 사람이 아니라는 생각이 들었기 때문이지요. ㅠㅠ 게임이나 플라모델 조립 같은 건 밤을 새서라도 하면서, 프로그램은 그렇지 않다는 거니까요. 그래서 여러 반론을 제기했지만 그냥 뭘 모른다고 찌글(?)됐던 기억이 나더군요. ^^;;;; 요즘 그분들은 과연 뭘 하고 지내는지 궁금하네요 ㅎㅎ

입사한지 1년 반이 지난 지금도 전 여전히 그때처럼 프로그램을 하고 있습니다. 물론 피곤하기 때문에 예전 만큼 시간을 할당하지는 못하지만... 밤잠을 줄여 가며 회사에서 열심히 졸음을 깨워 가며 그렇게 진행하고 있습니다. 역시 마음가짐의 문제였던 거지 단순히 회사를 간다거나 피곤함의 문제는 아닌 것 같습니다. 정말 좋아한다면 말이지요. ^^ 

물론 앞으로 얼마나 더 지속될지는 모르겠지만, 적어도 하나는 확실합니다. 프로그램을 하는 시간은 지금보다 좀더 줄어 있을지 몰라도 여전히 프로그램을 만들고 있을 거라는 걸요. ;)

2009년 8월의 마지막 즈음... 시원한 바람을 맞으면서 한번 남겨 봅니다. ;) 내년에도 같은 뜻이 담긴 글을 남길 수 있길 빌며...

ps) 원래는 어제 저녁에 빡(?!) 떠오른 생각이었는데, 문서 정리한다고 이제야 한자 남깁니다. ;)

다음주면 GUI 시스템 작업을 해야 해서, 오늘 디자이너 준에게 부탁해서 프로토타입 이미지를 받았습니다. ㅎㅎ 바탕화면과 윈도우 프레임을 조합하고 보니 예전 것보다 훨씬 깔끔하네요. ㅠㅠ 어흑... 이때까지 GUI 시스템을 만들면서 윈도우 색깔이나 모양에 신경을 쓴 적이 없었는데... 시간을 좀 들이고 나니까 훨씬 멋지군요. ㅠㅠ


아래의 첫 번째 화면은 이제 만들 GUI 시스템의 프로토타입이고 두 번째 화면은 MINT64 OS 검증용으로 잠시 만들었던 OS의 GUI 시스템 화면입니다. MINT64 OS라는 이름에 맞추어 이번에는 녹색 계열로 배색해 봤습니다.

<MINT64 OS의 GUI 시스템 프로토타입>


<예전에 만들었던 GUI 시스템의 프로토타입>

 

녹색이 생각보다 촌스러운 색(?)이어서 조금만 잘못 써도 감(?)이 확 떨어져 보이던데... 멋지게 작업해 준 디자이너 준에게 감사의 말씀을 드립니다(준영아 사랑해~!! ㅋㅋ). 디자이너 준의 노력에 보답하려면 열심히 그대로 옮겨야겠네요. ㅎㅎ


아우~ 벌써 시간이 이렇게... ㅠㅠ 혹시 보시고 뭔가 부족하다고 생각되는 부분이 있다면 댓글로 제보(?) 부탁 드립니다. ;) 아직 2주 정도 시간이 있으니까 나중에 상의해서 반영하겠습니다. ;)


ps) 참고로 이미지의 저작권은 디자이너 준에게 있습니다. ㅠㅠ 무단으로 도용하면 미워할꺼에요 ㅠㅠ

태스크 부하 분산(Task Load Balancing)을 구현하는 중인데... PIT 컨트롤러의 인터럽트에서 스케줄러의 상태를 보고 태스크가 적은 곳에 집어 넣는 방법을 사용했습니다. 그런데 ㅡ_ㅡa... 이게 문제가 있네요. 난데없이 집어 넣은 스케줄러에서 실행되는 것이 아니라 다른 스케줄러에서 튀어나오질 않나... 같이 스핀락을 획득하는 부분이 없는데 데드락이 발생하지 않나... ㅡ_ㅡa... 그것 때문에 어제 밤 9시경부터 오늘 아침 8시까지 디버깅했습니다. 결과는 GG ㅠㅠ

디버깅을 미친 듯이 한 덕분에 오후 3시쯤 느즈막하게 일어났군요. 당췌... 이게 무슨 일인지... 다 해 놓고 막판에 테스트할 때 이런 문제가 나오면... 어흑... ㅠㅠ 그나마 GUI로 넘어가기 전에 발견했기에 망정이니... 아니면 큰일날 뻔 했습니다.

어휴 진짜... 증상은 있는데... 원인을 정확히 알 수가 없네요. ㅠㅠ 스핀락에 문제가 있는 것도 아니고... 코어가 많아서 그런 현상이 발생한다고 보기에는 뭔가 미심적인 부분이 있습니다(16개 코어 + 800개 태스크로 테스트를 하고 있답니다. ㅎㅎ). 그래서 방향을 선회해야겠는데... 시간이 좀 촉박한지라 고민을 계속 하고 있습니다. 오늘 안에 결과가 나오면 좋겠는데... 과연 잘 될지 모르겠네요. ^^;;;;

일단 또 작업을 시작해야겠습니다. ㅎㅎ 저녁쯤에는 글 하나를 더 쓸 수 있으면 좋겠군요 ㅠㅠ)-b

옛날부터 이것 저것 만들기를 좋아해서, 저도 쓸만한 물건이 있으면 버리지 않고 다른 용도로 활용하는 편인데... 그래서 DIY 가구쪽에도 관심이 좀 있습니다. ^^;;; 오늘 아무 생각 없이 Naver에 들어갔었는데... 헉... 이게 왠일입니까? 예쁜 창문틀을 손수 만드신 분이 있더라구요 @0@)-b 깜짝 놀랐습니다. 침대 프레임까지 다 같이 만드셨던데... 헐... ㅠㅠ

주인공은 바로 이분입니다. ㅠㅠ)-b 진짜 쵝오 더군요. 어흑... 나중에 큰 집으로 이사가면 저도 한번 만들어봐야겠다는 생각이 들 정도로 아주 잘 만드셨더군요. ;)

세니의 로뎀나무 그늘아래
http://blog.naver.com/fograin91/130034752576

궁금하신 분들은 한번 구경가보시는 것도 좋을 것 같아요 ㅎㅎ ;)

ps) 헐... 역시나... 한 2주만에 적는 글이군요. ㅡ_ㅡa... 이건 뭐... 점점 잠수 기간이 길어지는듯... ㅠㅠ

근 10일에 걸친 대장정이 끝났습니다. ㅠㅠ)-b 중간에 코드를 한번 잘못짜서 디버깅을 다시 하는 사태도 발생했지만, 결국 끝났습니다. ㅠㅠ 잠결에 코딩을 했더니만 알 수 없는 코드들이 중간 중간에 잔뜩 들어가 있더군요. ㅠㅠ 어흑 ㅠㅠ

코어 16개를 모두 활성화한 뒤에 대칭 I/O 모드(Symmetric I/O Mode)로 전환하여 인터럽트 처리 횟수가 전체적으로 10 이상 차이가 나면 인터럽트를 분산하도록 했습니다. 뭐, 매번 돌리면서 인터럽트를 분산시킬 수도 있지만 약간 오바인 것 같아서... ^^;;;;

아래는 인증 샷입니다. :) 코어 16개를 활성화하기 전에 인터럽트 처리 횟수를 출력하고, 16개를 활성화한 후 다시 출력했습니다. 그리고 마지막으로 인터럽트 부하 분산 기능을 활성화해서 키보드를 난타한 다음 최종적으로 처리된 횟수를 출력하도록 했습니다.

 


에혀~ 이제 스케줄러를 코어마다 추가하고 태스크 부하 분산(Task Load Balancing)만 처리하면 끝이군요. ;) 대망의 GUI로 넘어갈 수 있을 것 같습니다. ㅎㅎ 정리하면서 하느라 여기까지 오는데 꽤나 걸렸는데... 이제 좀 속도가 다시 붙을 것 같군요. ;) GUI는 지금까지 했던 것 보다는 알고리즘이 간단하니까 말이죠 ;)

에궁~ 오늘은 일찍 잘려고 했는데... 결국 또 이렇게 되는군요. ㅠㅠ 언능 누워야 겠습니다. ㅎㅎ 다들 좋은 밤 되세요 ;)


ps) 인터럽트 부하 분산 기능을 추가하긴 했는데... 시리얼 포트를 폴링 방식으로 사용하다보니 그다지 인터럽트 부하가 발생하지 않더군요. ㅡ_ㅡa... 사실 크게 이득이 없는 것 같습니다. 나중에 기가바이트 이더넷이나 추가하면 효과를 좀 볼지... ㅎㅎ :)

이번 주는 휴가도 있었고 해서 금방 주말이 오더군요. 그래서 그런지 주말이 아주 짧은 것 같습니다. ㅠㅠ 뭐 어제가 금요일인 것 같은데... 벌써 일요일 오후군요. ㅠㅠ(이 짧은 문장 치는데 ㅠㅠ가 몇 번이나 들어갔는지... 어흑... ㅠㅠ)

“회사일 + 프로그램 개발 + 드라이버 업데이트”이 세 가지가 한꺼번에 들이 닥치는 바람에 한 주가 정말 정신 없이 지나갔습니다. 하루는 해 뜨는 거 보고 바로 출근하는 기염을 토하기도 했지요. ㅠㅠ 어흑... 그래서 주말은 내내 잠만 잔 것 같습니다(헉... 그래서 주말이 짧은 건가...^^;;)

아무리 피곤해도 MINT64 OS는 진행해야 하는지라... 졸린 눈을 비비며 작업한 결과~!!! 일단 대칭 I/O 모드(Symmetric I/O Mode)로 전환은 시켰습니다. 대칭 I/O 모드가 무엇인고 하니, 멀티 프로세서나 멀티코어 프로세서를 사용할 때 여러 코어에 인터럽트를 전달하는 방식을 말합니다. 이렇게 하려면 PIC 컨트롤러가 아닌 I/O APIC와 로컬 APIC를 사용해서 인터럽트를 처리해야 합니다. ㅎㅎ 이제 다른 OS들처럼 인터럽트 로드 밸런싱(Interrupt Load Balancing) 정도는 할 수 있는 거죠. ;)

image

<대칭 I/O 모드(Symmetric I/O Mode)> 

예전에 프로토타입을 만들 때는 인터럽트 로드 밸런싱 처리가 상당히 복잡했는데... 이번에는 아주 간단하게 끝냈습니다. ㅡ_ㅡa.. 역시 두어번은 짜봐야 제대로 된 로직이 나오는가 봅니다(사실 제가 허접해서... ㅡ_ㅡa...). 자세한 방법은 인터럽트 로드 밸런싱까지 처리되면 Milestone에 올리겠습니다. ㅎㅎ

아흐~ 오늘은 집 정리도 하기로 했는데... 시간이 좀 촉박할 것 같기도 하군요. 일단 또 한번 달려 봐야겠습니다. 다들 남은 주말 마무리 잘하세요 ;)

ps) 그냥 아무것도 안올리기가 뭐 해서, 대칭 I/O 모드로 전환해서 하드 디스크를 읽은 화면을 올립니다. ㅡ_ㅡa...

image

이것 저것 할 일도 많고 때 마침 여자친구의 생일이라서 하계 휴가를 냈습니다. ;) 그래서 이번 주 목요일부터 집에서 놀고 있는데 완전 좋습니다. 덕분에 여유도 좀 생겨서 필터 드라이버 업데이트 작업도 좀 하고 MINT64 OS에 I/O APIC를 넣는 작업도 좀 하고 있습니다.

정말.... 이게 얼마만에 갖는 여유인지 모르겠군요. 어제는 하루종일 집에 누워서 애니메이션을 봤는데, 그렇게 좋을 수가 없었습니다. ㅠㅠ)-b 어흑... 역시 사람은 여유롭게 살아야 하나 보군요. 오늘도 집에서 빈둥거릴 예정입니다. ㅎㅎ 물론 작업은 해야지요. ㅠㅠ

아아~ 비는 주절주절 내리지만, 여튼 즐거운 주말이군요. ;)
다들 즐거운 주말 보내세요. ;)

헥헥... 이번에는 거의 3주 만에 블로그에 글을 올리네요.  ㅠㅠ 점점 글 올리는 주기가 길어지는 걸 보니 조만간 폐허(?)가 되는 게 아닌가 걱정되는군요. ㅠㅠ 정말 블로그에 글 올릴 시간도 없이 열심히 작업했는데, 이제야 겨우 끝났습니다. 사실 코딩하는 데는 이틀 밖에 안 걸렸지만 내용 정리하는데 12일 정도가 걸렸군요. ㅡ_ㅡa... 회사를 다니고 있으니 야간에 작업을 해야 하는데, 그래서 더 어려운 것 같습니다. (이거 원... 잘하면 회사도 때려 치겠군요. 쿨럭..;;;;)


이번에 추가된 기능은 프로세서 내에 잠자고 있는 나머지 코어를 깨우는 일이었습니다. 보통 부팅을 시작하면 BIOS가 코어 중에서 하나만 선택해서 BSP(Bootstrap Processor)로 만든 후 부팅을 시키고, 나머지는 AP(Application Processor)로 만들어 대기시킵니다. BSP는 부팅이 끝나면 MP Configuration Table 같은 걸 읽어서 잠자고 있는 AP의 수를 계산한 뒤 나머지를 깨워서 일을 시키는 것이지요.


MP Configuration Table을 분석하는 작업은 지난 번에 했으니, 이번에는 이 정보를 바탕으로 AP를 활성화했습니다. 아래 그림은 총 16개의 코어를 활성화하여 각자가 메시지를 출력하게 한 것입니다.


 <총 16개의 프로세서(BSP 1개, AP 15개)가 동시에 동작하는 화면> 


아아~ 정말 작업하는 게 쉽지 않군요. 별다른 동기 부여 없이도 꾸준히 하는 스타일인데... 요즘은 살짝 지치는 느낌입니다. 아무래도 배보다 배꼽(?)이 더 큰 상황 때문이 아닐까 생각하는데... 앞으로 MileStone 2개 정도만 더 올리면 GUI라서 꾹 참고 진행하고 있습니다. ;)


에궁... 다음 MileStone은 BSP와 AP가 동시에 인터럽트 처리를 하는 것이 될 것 같습니다. 이것만 지나가면 AP에도 스케줄러를 붙여 멀티 태스킹 시킬 수 있으니... 거의 끝난 것이죠. ;) 아유~ 지겹네요. ㅠㅠ 그래도 열심히 해야지... 어쩌겠습니다. 어흑...


장마 전선이 올라왔다던데... 다들 비 피해 주의하시고 건강 잘 챙기세요 ;)


ps) 곧 GUI로 들어간다니 여자 친구가 MINT64 OS에서 쓸 바탕 화면을 디자인해 줬습니다.이 중에 하나를 택해야 할 것 같은데... 어떤 것이 좋을까요? ;)

 

 

드디어 긴긴 Single Core Processor 관련 부분을 마무리하고 Multicore Processor쪽으로 들어갔습니다. 이번에는 가장 기본이 되는  MP Configuration Table을 분석하는 기능을 추가했습니다. MP Configuration Table은 BIOS에서 만드는 것으로, 코어의 개수와 인터럽트 연결에 관련된 포괄적인 정보를 담고 있습니다. ;) 아래 그림을 보는 게 더 빠를 듯...

MP Configuration Table을 분석하는 이유는 실제 Core의 개수를 찾는 것과 나중에 인터럽트를 모든 Core로 전달하기 위해서입니다. BIOS는 부팅 과정에서 부팅을 담당하는 프로세서인 BSP(Bootstrap Processor)로 PIC 컨트롤러의 인터럽트 라인을 연결하므로, AP(Application Processor)를 깨운다 해도 PIC 컨트롤러의 인터럽트는 전달되지 않습니다. ;) 전달된다 하더라도 PIC 컨트롤러는 Multicore Processor를 지원할 능력이 없으므로 오동작하겠지요. ;)

따라서 Local APIC와 I/O APIC를 이용해서 모든 Core로 전달되도록 설정해야 하는데, 이때 MP Configuration Table에 저장된 정보가 아주 중요한 역할을 합니다. 실제 메인보드 제조사는 인터럽트를 어떻게 연결했는지를 알고 있으므로, BIOS에 그 정보를 저장해 둡니다. 이 정보가 MP Configuration Table에 들어 있는 것입니다. 만약 MP Configuration Table을 사용하지 않는다면... ㅎㄷㄷ... 생각만 해도 이건... ㅠㅠ

여튼~!!! 분석하는 게 끝났으니 이제 깨워서 일 시키는(?) 일만 남았군요. ㅎㅎ 아우 진짜 죽겠습니다. 이것만 끝나면 GUI로 바로 날아갈 텐데... ㅠㅠ  좀이 쑤셔 죽겠군요. ㅎㅎ 다음 작업도 끝나는 대로 인증 샷을 올리겠습니다. 다음 인증 샷에는 쌍둥이(?)가 열심히 일을 하는 화면이 나오겠군요. ;)

그럼 다들 좋은 저녁 되세요 ;)

ps) 아래는 QEMU의 MP Configuration Table의 내용입니다. 실제 PC와는 좀 다른 모습이군요. ;)



요즘 같은 세상에도 Visual Studio 6.0을 사용하는 사람이 있나 하시는 분이 계실지 모르겠지만, 전 세월을 역행하는지라... 아직도 6.0을 쓰고 있습니다. ㅠㅠ(사실 예전에 만들었던 소스 코드가 다 Visual Studio 6.0을 쓰고 있어서 귀차니즘 때문에 그냥 쓰고 있는 것 뿐입니다. ㅠㅠ) 거기다가 플랫폼 SDK까지 깔아서 쓰고 있으니 저한테 소스 코드를 전달 받으신 분은 꽤나 고생을 하시더군요. ㅠㅠ


이번에도 플랫폼 SDK 때문에 조금 문제가 생겼었는데요, 다행히도 마소 웹에서 플랫폼 SDK를 아직 서비스하고 있더군요. 물론 6.0 용은 아니고 2003 용인데 VC 6.0에서도 사용할 수 있습니다. ;) 파일은 아래에서 다운로드 받을 수 있습니다.



아후~ 결혼식을 다녀왔더니만, 벌써 저녁이군요. ;) 일단 밥 먹구 작업을 또 시작해야겠습니다.

이번에도 상당히 오랫동안 작업했습니다. 요즘은 귀차니즘이 도져서 가만히 않아서 작업하는 게 힘듭니다. 그래서 약간 진도도 처지고 의욕이 살살 꺼지고 있습니다. 그래도 갈 길이 멀기에 끙끙거리면서 작업해서 겨우 붙였군요. ;)


일단 말이 필요 없으니, 직접 한번 보시죠. ;) QEMU에서 실행해서 새 그림이 그려 진 텍스트 파일을 수신한 후, 그것을 다시 화면에 표시한 동영상입니다. 화면을 캡쳐한 것을 올려도 되지만, 동영상이 좀 더 액티브(??)하니 동영상으로 올렸습니다.


<동영상 파일을 변환하니 깨져서 그대로 올렸더니 파이어폭스에서는 제대로 안보이는 문제가 있네요. ㅠㅠ>

https://t1.daumcdn.net/cfile/tistory/13153C1B4A31337702 를 클릭하시면 다운로드 받아서 볼 수 있습니다.



파일 시스템이 생기니 이런 재미난 일도 할 수 있군요. ㅎㅎ 너무 신납니다. ;) 그러고 보니 OS의 기본 기능은 대부분이 구현되었군요. 이제 남은 건 멀티 코어를 활성화하는 부분이랑 GUI 정도인 것 같은데... 다음 이번 달과 다음 달은 꽤나 고생하겠다는 생각이 드는군요. ㅠㅠ 어흑 언능 작업해서 재미난 GUI로 가고 싶어요. ㅠㅠ 그럴려면 또 열심히 달려야겠군요. 어흑...

그러기 전에 오늘은 일단 좀 쉬어야겠습니다. 피곤에 너무 찌들어서 한참을 골골거렸다는 ㅋㅋ 그럼 다들 좋은 밤 되세요. ;)


ps) 다음은 MINT64 OS에서 전송한 ASCII Art 파일을 표시한 것을 캡쳐한 화면입니다. 예전에 쓰던 마스코트인 까마귀입니다. 어때요? 비슷하죠? ㅎㅎ


주말에 고향에 잠시 다녀왔더니 그만 정신 없이 또 주말이 가고 말았습니다. 이런... ㅠㅠ 눈물이 나는군요. 그런 고로 하던 작업도 밀리고 해서 본의 아니게 살짝 블로그를 버려(?) 뒀습니다. ㅠㅠ 그것도 그럴 것이 지금 한참 지겨운 작업을 하고 있기 때문이지요.


바로~!!! MINT64 OS에 시리얼 포트 드라이버를 추가하는 작업입니다. 시리얼 포트 드라이버를 추가하는 이유는 파일 시스템도 생겼겠다 해서 외부에서 데이터를 밀어 주고 MINT64 OS에서 저장하기 위함입니다. 앞으로 GUI도 추가되고 할 건데... MINT64 OS에서 그림을 그릴 수는 없잖아요. ㅠㅠ 프로그램도 힘든데 그림까지 그리고 싶지는 않거든요. ㅠㅠ


아아~ 역시나 예전에 만들어 놨던 코드를 옮기면서 보고 있는데, 디바이스 드라이버를 만드는 작업은 참 지루하군요. 만들 때마다 새로워서 스펙을 뒤져 가며 작업하다 보니 점점 진도는 느리기만 하고... 여튼 죽을 맛입니다. ㅎㅎ 그래도 이번 것만 추가하면 이제 멀티 코어 부분으로 진입할 예정이라 끙끙 거리면서 작업하고 있습니다. 크윽... 이번 주만 어떻게든 버티면 다음 주부터는 좀 재미나겠군요. ;)


늦은 밤에 작업하다가 제가 살아 있다는 것을 알리려고 한자 적었습니다. ㅎㅎ 밤이 많이 늦었군요. 언능 자야겠습니다. 그럼 다들 좋은 밤 되세요 ;)


아아~ 간만에 쓰는 포스팅인 것 같군요. ㅠㅠ 원래는 지난 주에 끝났어야 하는 작업인데... 클러스터 크기를 4Kbyte로 잡았더니만 테스트하는데 문제가 생겨서 포스팅이 늦어지고 있습니다. ㅠㅠ

파일 시스템을 워낙 허접하게 만들어 놓아서 1바이트를 읽고 쓰는데 성능이 엄청나게 떨어지네요. 좀 편하게 구현하려고 4Kbyte 단위로 하드 디스크를 읽고 쓰도록 했더니 1바이트를 수정해도 4Kbyte를 읽고 쓰는 기염을 토한다는...OTL... 털썩... 물론 캐시가 들어가면 훨씬 좋아집니다. ㅎㅎ

이거... 캐시를 안 쓰고 성능을 재면 128Kbyte짜리 파일을 한 바이트씩 읽고 쓰는데 무려 10분이라는 시간이 걸리네요. ㅠㅠ 이거 원 부끄러워서... ㅠㅠ 어흑... 그래도 캐시를 쓰면 5분 정도로 줄어드니 그나마 덜 부끄럽다는... ㅠㅠ 사실 10분이나 5분이나 큰 차이는 없지만... 구현을 편하게 하려고 대충했더니만 이런 문제가 생기네요. ㅠㅠ 어흑 눈물이 ㅠㅠ

일단 대충 해놓고 나중에 방법을 좀 강구해야겠습니다(아니면 그냥 쓰던가... 쿨럭..;;;). 그나마 다행인 건 램 디스크도 있으니 급하면 램 디스크를 쓰라고 하면 된다는 거~!!! OTL... 털썩... 일단 정리되는 대로 MileStone을 하나 올리겠습니다. 지금은 성능부터 재야겠군요. ㅎㅎ

그럼 다들 좋은 밤 되시길~ ;)

이번 포스팅은 거의 2주 만에 하는 것 같군요. ;) 이번에는 파일 시스템을 구현하다 보니 양이 많아서 이제야 겨우 끝났습니다. 일단 인증샷부터 보시죠. ;)

<MINT 파일 시스템을 구동한 동영상>

MINT 파일 시스템은 FAT 파일 시스템처럼 클러스터를 링크로 연결하는 형태로 되어 있습니다. 사실 FAT 파일 시스템을 쓸까도 고민했었는데, FAT 파일 시스템을 정리하고 구현하려면 양이 많아질 것 같고, 그렇다고 정리를 안 할 수는 없으니 그냥 간단한 파일 시스템을 만드는 것으로 했습니다. 그래서 나온 것이 MINT 파일 시스템인데 아래와 같은 구조로 만들었습니다.

 

<MINT 파일 시스템의 전체적인 구조>

척 봐도 FAT 파일 시스템과 아주 유사하다는 것을 알 수 있습니다. 디렉터리 엔트리 구조도 아주 단순합니다. 디렉터리 엔트리는 32 byte이며 파일 이름 24 byte와 파일 크기 4 byte, 그리고 파일 시작 클러스터 4 byte가 전부입니다. 클러스터 크기가 4Kbyte이므로 한 클러스터에 최대 128개의 파일을 생성할 수 있습니다.

<디렉터리 엔트리(Directory Entry)의 형식과 루트 디렉터리(Root Directory)의 구조>

이쯤되면 FAT 파일 시스템을 구현하는 게 더 낫지 않냐고 생각할지도 모르겠지만... MINT 파일 시스템은 극단(?)의 제약 사항을 걸어서 구현할 코드의 량을 대폭 줄였습니다. 그 제약 사항이 뭐야 하면...

디렉터리는 클러스터 하나만 사용할 수 있다
디렉터리는 루트 디렉터리만 존재한다

그렇습니다~!!! 서브 디렉터리를 제공하지 않고, 루트 디렉터리의 크기를 고정함으로써 경로(Path)처리나 디렉터리 처리에 관련된 코드를 대폭 줄인 것입니다. 실제로 예전에 FAT 파일 시스템을 구현했을 때와 비교한다면, 1/3 수준입니다. 물론 아쉬운 부분이 있긴 하지만... MINT64 OS처럼 간단한 OS에서 쓰기에는 충분한 것 같습니다. 어렵게 구현하는 것 보다 일단 구현하기 편하고 잘 돌면 되지요. ;)

구현할 양이 작아진 덕분에 C 언어 표준 입출력 함수, 즉 fopen(), fread(), fwrite(), fclose(), fseek(), opendir(), readdir(), rewindir(), closedir() 함수도 구현할 수 있었습니다. 마치 윈도우나 리눅스에서 콘솔 프로그램을 작성하듯이 MINT64 OS에서도 가능하다는 이야기지요. ㅎㅎ 실제로 아래는 위의 동영상에서 파일을 쓰고 읽는데 사용된 코드입니다.



아아~ 이제 파일 시스템에 캐시(Cache)를 넣고 램 디스크를 추가해야겠군요. 원래 이번 주 월요일에 시작해야 했는데 파일 시스템을 만드는 것이 늦어져서 이제야 시작합니다. ㅠㅠ 아흑... 또 주말을 반납해야 한다는... ㅠㅠ 열심히 만들어서 곧 Milestone을 하나 올리겠습니다. ;)

그럼 다들 즐거운 주말 되세요. ;)

아아... FAT 파일 시스템을 그대로 쓸까 하다가 FAT 파일 시스템을 좀 축소해서 아주 간단한 파일 시스템을 만들었습니다. 덕분에(?) 시간은 더 많이 걸리고 기능은 더 빈약(?)해졌군요. ㅠㅠ

예전부터 제가 만든 OS에서만 사용하는 독특한 파일 시스템을 만들고 싶다는 생각을 했었는데, 이제서야 겨우 만들었네요. ^^;;; 사실  FAT 파일 시스템에서 다 추려 내고 뼈대만 남긴 것 뿐이지만... 그래도 나름 뿌듯하다는... ㅠㅠ

일단 오늘은 밤이 좀 늦었으니 자세한 내용은 내일 포스팅 하겠습니다. 아아~ 무지 피곤하네요. ㅎㅎ 요즘 체력도 거의 다 떨어졌는데... 내일은 좀 문제가 있겠군요. ㅠㅠ 아흑 ㅠㅠ

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

와아~ 또 기다리고 기다리던 주말입니다. ;) 이번 주는 지극히 해 놓은 것이 없어서, 주말이 특히 바쁠 듯 합니다. 요즘 체력이 점점 바닥을 드러내고 있어서 작업하는 게 만만치 않네요. ㅎㅎ 그냥 멍하게 앉아 있을 뿐이고, 내용을 정리하는 작업은 점점 더 진도를 빼기가 어렵군요. ㅠㅠ

물론 예전에도 이 정도로 바쁠 때가 있었는데, 그때와 지금의 차이라면 나이보다는 “Money”인 것 같습니다. 예전에 이것 저것 많이 벌여 놔서 정신이 없었을 때... 그때는 노력의 대가를 Money로 받았기 때문에 힘든 줄을 몰랐습니다. 적당한 “보상”이 있었던 것이죠. ;)

그런데 요즘은 그런 것이 없어서 더 일찍 지치는 것 같네요. 요 며칠 원인을 생각한 결과 뭔가 “동기”가 될 만한 것들이 부족한 것 같습니다. 아무래도 당분간은 돈은 좀 힘들 것 같은데... 어떻게 이걸 해결해야 할지... 고민이 많네요. ㅠㅠ 이런 속물 같으니라고~!!! 정 안되면 작업 환경을 PC에서 노트북으로 바꾼다던가 모니터 위치를 옮긴다던가 해봐야겠습니다. 혹시 새로운 기분이 들지도 모르니 말입니다. ;)

에혀~ 그저 글 쓰는 사이에 벌써 1시가 넘었네요. ㅠㅠ 일단 오늘은 이만 자아겠습니다. 다들 좋은 밤 되세요 ;)

휴가를 다 반납하고 집에 틀어박혀 작업만 한 결과, 파일 시스템 기본 API를 만들었습니다. 물론 파일 시스템도 허접하게 하나 만들고 말이지요. 그런데 만든 API가 워낙 허접하다 보니 빈 파일 하나를 생성하고 삭제하는 기능 말고는 되는 게 없네요. ㅠㅠ

아흑... 이래서는 안되겠다 싶어서 표준 입출력 함수처럼 open, read, write, close, opendir 등등을 만들고 있습니다. 오늘이 벌써 수요일이니까 이번 주까지 할 수 있을지 모르겠지만, 일단 최선을 다 해야 할 듯 하군요. 에혀... 점점 갈 길은 아직 먼데 체력은 점점 떨어지고 있어서 큰일 났습니다.

무슨 수를 쓰긴 써야 할 때인 것 같군요. ㅎㅎ 일단 좀 더 달려 보고 안되면 특단의 조치(?)를 내려야겠습니다. 홧팅~!!!

ps) 그래도 Milestone인데 아무것도 없으면 허전할 듯 해서, 하드 디스크를 MINT 파일 시스템으로 포맷하고 나온 정보를 표시하는 화면을 올립니다. 어흑... 이런거나 올려야 되다니... 정말 한 게 없군요. ㅠㅠ

clip_image002

어제 몸이 너무 축 처져서 간만에 약국에 들렀습니다. 뭐... 남들 다 먹는 피로회복제(곰표?)를 하나 먹으려고 갔던 거죠 ㅎㅎ 그런데 약국에 갔더니 왠 이상한 알약과 굉장히 비싸 보이는 드링크를 주더군요. 뭐 알약은 곰표가 아니어도 좋긴한데... 드링크는 뭔가 이상해서 얼만지 물어 봤습니다.


2500원입니다. ^^


꽤액~!!!... 뭔놈의 드링크가 2500원이나... 그래서 옆에 있는 복분자로 바꿔 달랬더니 알약 500원이랑 드링크 500원이랑 해서 천원 달라고 하더군요. ㅡ_ㅡa... 일단 가격도 싸니 기분 좋게 들고 나와서 집에서 먹었습니다.


한 30분쯤 지났을까요? 잠이 쏟아지기 시작하는데... 잠시 눕는다는 게 9시 경에 누워서 오전 9시에 일어났군요. ㅠㅠ 불은 다 켜저 있고  TV도 밤새... ㅠㅠ 아흑... 이거 원... 수면제였던 것 같습니다. 아주 그냥 죽었다가 일어났네요. ㅠㅠ


덕분에 몸은 좀 개운하긴 한데... 잠을 많이 자서 그런 건지... 약발인지는 알 수가 없군요. 아흑... 여튼 잘 잤으니 언능 또 작업을 시작해야겠습니다. 근로자의 날 만세~!!!

<QEMU에 등록된 20MB짜리 하드 디스크의 정보를 읽은 화면>


읏차~ 예상 외에 변수가 생겨서 생각보다 조금 더 걸렸군요. ㅠㅠ 예전에 짰던 코드에 또 버그가 나와서 고칠까 말까 고민하다 보니 시간이 꽤 지났습니다. ㅠㅠ 수정하는 게 당연한데 왜 고민한 건지 잘 모르겠네요. (잠결에 그랬나? ㅡ_ㅡa..)

<LBA 0 어드레스에 2 섹터를 쓴 화면>

일단 간단히 읽고 쓰고를 반복해 본 결과 별 문제가 없는 것 같으니, 파일 시스템으로 넘어가야겠습니다. 파일 시스템은 FAT 파일 시스템을 아주 가볍게 개량해서 만들 생각입니다. 글은 이렇게 썼지만 사실 이미 작년 이맘때쯤에 만들었습니다. ㅡ_ㅡa;;; 아주 허접하지만 FAT 파일 시스템 드라이버를 만드는 것보다 일도 작고(과연??) 나름대로 쓸 만해서 이걸로 가기로 했습니다. 뭐 이름은 MINT64 Simple File System으로 해서 MSFS....가 아니라 MINTFS로 해야겠군요. ㅡ_ㅡa... 어디서 많이 본 듯한 이름이... 쿨럭..;;;


아아~ 또 바쁘게 하나 해야겠습니다. ㅎㅎ 이번 주말에 파일 시스템 스크린샷을 올릴 수 있으면 좋을 텐데.... ^^;;; 일단 열심히~!!! 그럼 다들 좋은 밤 되세요 ;)


하드 디스크 디바이스 드라이버 관련 링크는 아래를 참고하세요

http://www.nondot.org/sabre/os/articles/DiskandDiscDrives/

와아~ 드디어 또 기다리던 주말이군요. ㅠㅠ)-b 이번 주도 컨디션 난조로 거의 버리다시피 해서 주말에 작업을 많이 해야 하지만... 고향에 가야 돼서 이번 주도 좀 어렵겠군요. ㅠㅠ 요즘 날씨가 이상해서 그런지 영 컨디션이 좋지 않습니다. 머리가 마치 굳어 있는 듯한 느낌이랄까요? 귀도 머엉~ 하게 울리고... ㅠㅠ

그냥 다 때려치우고 잠시 쉬고 싶은 마음도 있지만... 영 쉽지 않네요. 지금 쉬면 뒷탈이 생길 것 같아서 어떻게든 작업을 하려고 노력 중입니다.(누가 상 안주나요? ㅎㅎ) 열심히 해서 이번 주도 Milestone 하나를 올려야 할 텐데... 벌써 걱정이 태산이군요. ㅠㅠ

또 끄적 끄적거려 봐야겠습니다. ㅠㅠ 다들 즐거운 주말 되세요 ㅠㅠ)/~

<64MB 영역 중에서 17MB를 커널 영역으로 사용하고 나머지 47MB를 동적 메모리 영역으로 할당한 화면>

아아~ 정말 이번 내용은 길고 지루했습니다. ㅡ_ㅡa... 내용 정리하는데 거의 9일이 걸렸고, 쓴 내용을 검토하는데 거의 5일이 걸렸습니다. ㅠㅠ 동적 메모리 할당과 해제에 대한 내용이다 보니 다른 스텝보다 좀 아니 훨씬 많더군요. 진짜 죽는 줄 알았습니다. ㅠㅠ


그래도 온몸을 배배 꼬아 가며 정리한 보람이 있는지 마무리하긴 했습니다. ;) 그리고 무시무시한 버그도 녀석도 하나 잡았지요. ㅎㅎ 지난번에도 캐시를 잘못 설정해서 GUI의 속도가 무진장 느린 문제가 있었는데, 이번에도 캐시 때문에 메모리에 접근하는 시간이 무지 걸리는 문제가 발생했습니다(이전에 발생한 캐시 문제는 http://kkamagui.tistory.com/608 에서 볼 수 있습니다).  지난번에 당한 게 있어서 금방 해결은 했는데... 왠지 좀 씁쓸하더군요. 약 10 챕터 정도를 거슬러 올라가서 다 수정해야 했기 때문입니다. ㅠㅠ 아흑... 몇십 분을 삽질하려니 죽을 맛이었습니다. 그래도 일찍 찾아서 다행이네요. ^^;;;; 저쪽 뒤에서 찾았다면 아마 기절했을 듯합니다. ㅎㅎ 이만하길 다행이랄까요?


동적 메모리를 처리하는 알고리즘으로는 제가 즐겨 쓰는(?) 버디 블럭 알고리즘(Buddy Block Algorithm)을 썼습니다. 버디 블럭 코드만 4번째 구현하는데, 이번이 그나마 제일 깔끔한 것 같네요. 나름대로 튜닝도 해서 속도도 만족스럽게 나오고... ^^;;; 혼자 쓸게 아니라서 신경 좀 썼습니다. MINT64 OS에서 구현한 방법은 나중에(?) 공개하겠습니다.


버디 블럭 알고리즘이 궁금하신 분은 http://kkamagui.tistory.com/20 를 참고하기 바랍니다(예전에 만든 자료라서 좀 부실하지만 어떤 원리로 동작하는지 확인하는 용도로는 괜찮을 듯 하군요. ^^a... ).


에혀~ 그러고 보니 또 한 주가 사라졌군요. ㅠㅠ 이러면 안 되는데... 언능 작업 들어가서 부족한 시간을 보충해야겠습니다. 그럼 다들 즐거운 주말 되세요. ;)

아핫~ 너무 신납니다. ^^)-b 또 즐거운 주말이군요. ㅎㅎ 이번 주는 MINT64 OS에 동적 메모리 할당 & 해제 기능을 넣고 있는데, 역시나 주중에 주식 때문에 거의 작업을 못해서 주말 내내 짱 박혀 작업할 것 같습니다. >ㅁ<)-b 밖에 나갈 시간도 없지만 괜시리 주말이라 설례는군요(그러고 보니 회사 가는 날보다 더 빡신듯... ^^;;;;)

이번 주 투자 현황을 굳이 표현한다면....

난~~ 계속 오를 것 같았던 주식은 살살 떨어지고 있고~ 유상 증자니 하는 소리가 들릴 뿐이고~ 그냥 엄마가 보고 싶고~ ㅠㅠ 작업은 밀려서 당장 내일이 안보일 뿐이고~!!! 

대략 이런 상황이네요. ㅎㅎ 정말 주식처럼 깜깜한 주말입니다. ㅎㅎ

에혀~ 그래도 열심히 해야지 어떻게 하겠습니다. ㅎㅎ그나마 성격 하나는 낙천적이라 다행인 듯 하군요. ^^;;; 이번 주말에도 Milestone 하나 올릴 수 있도록 열심히 해야겠습니다. ;)

그럼 다들 즐거운 주말 되세요 ;)

오늘은 태어나서 처음으로 아주~ 큰 돈을 써 버린 날입니다. 그 동안 소소하게 투자하던 주식에... 거액을 걸어 버렸다는 것이지요. ㅠㅠ 모~ 기업 주식을 무려 400주 가량 사 버렸습니다. 이거 원 심장이 발딱거리고 흥분 되어서 작업을 할 수가 없네요. ㅠㅠ

많은 고민을 하고 내린 결론이지만.... 잘한 짓인지는 잘 모르겠습니다. 하지만... 계속 과감한 투자가 필요한 시점이라고 생각을 하고 있던 지라... 여유 돈을 왕창 부어 버렸습니다. ㅠㅠ 이제 남은 일은 기도(?)하는 것 뿐이군요. ^^a....

확 내릴 경우를 대비해서 여유 돈을 좀 가지고 있긴 합니다만... 지금은 이것도 확 부어 버릴 기세라서... 릴렉스 하고 있는 중입니다. 어휴... 진짜 불안 불안하군요.

새삼 주식 하시는 분들이 대단해 보입니다. 다들 건승하시고, 2009년에는 대박나세요 ;)

근 3주만에 Milestone이군요. ;) 3주동안 감기 몸살에 멤버십 후배들 호출에... 뭐 기타 등등이 섞여서 작업이 좀 더뎠습니다. 덕분에 2주 동안 해야할 분량을 3주나 되서야 겨우 끝냈군요. ㅠㅠ 아흑... 피 같은 한주가 그냥 사라져 버렸네요. ㅠㅠ

3주동안 MINT64 OS에 많은 변화가 있었습니다. 첫 번째는 멀티 태스킹과 멀티 스레딩 기능이 추가되었다는 것이고 두 번째는 실수 연산 기능이 추가되었다는 것입니다. 이 두가지 기능이 추가됨으로써, 태스크 관리쪽이 거의 마무리 되었네요. ㅎㅎ

역시 기념으로 스크린 샷을 찍어 올립니다. 그리고 이번에는 좀 특별하게 동영상도 찍었습니다. ;) 왠지 정지해 있는 화면만으로는 뭐가 어떻게 돌아가는지 확인하기 힘들 것 같아서요... ^^;;;;

아래는 첫 번째는 원주율의 근사값을 계산하는 화면이며, 두 번째는 MINT64 OS를 테스트하는 동영상입니다. 워낙 허접해서 볼 건 없지만 기념삼아 찍어봤습니다.

<원주율을 계산하는 테스트>


<테스트 동영상>

어휴~ 이제는 동적 메모리 관리랑 파일 시스템쪽을 구현해야 하는군요. ㅠㅠ 어흑 어찌나 갈길이 먼지... 머리가 살살 아프네요. ㅠㅠ 일단 자고 내일 생각해야겠습니다. ㅠㅠ

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

ps1) 파일 압축쪽도 추가해야하는데... 혹시 소스 파일하나 짜리 Zip 압축/해제 코드를 보신 분은 제보 부탁드립니다. ㅠㅠ 출처를 밝히고 당겨 써야겠어요. ㅠㅠ

ps2) 실제 PC에서 테스트해보니, 더 느리군요. ㅡ_ㅡa... 그래서 태스크의 수를 300개로 줄였습니다. 아무래도 화면에 출력하는 루틴이 시간을 많이 잡아 먹는 듯 하네요. ^^;;;

제가 왠만하면 동영상 같은 거 잘 안올리는 데... 이 동영상은 감동을 받아서 꼭 올려야겠다는 생각이 들더군요.

라디오 방송국 같은 데서 라이브를 하는 것 같은데... 그냥 눈물이 줄줄 흐르는군요. ㅠㅠ 이렇게 노래를 잘하는 그룹인지 몰랐습니다.
(개인적으로는 화면 왼쪽에 계신 분이 노래를 더 잘하시는 것 같군요. 목소리도 꽤나 고음이시고 깨끗한게... ㅎㅎ >ㅁ<)-b)

일단 한번 들어보시죠.


다비치의 "Listen" 입니다.





그냥 눈물이 줄줄.. ㅠㅠ






image

<좋은 곳으로 간 아이팟 터치입니다. ㅠㅠ>

주인을 못 만날 것 같던 아이팟 터치 신품이 결국 팔렸습니다. ㅠㅠ 때마침 오늘 고기를 먹는 날(?)이라서 부랴부랴 후딱 나가서 전달해 드렸습니다. ;) 그런데.... 이 바닥이 참 좁더군요. @0@)-b 지인의 아이팟 터치가 멤버십 후배분들에게 팔렸습니다!!!

우엉~ 정신이 없어서 많은 이야기를 나누지는 못했는데... 잠깐이지만 옛날 생각이 물씬 나더군요. ㅠㅠ 굉장히 그리운 느낌이었습니다. 불과 1년 좀 넘게 지났을 뿐인데 이렇게 느끼는 걸 보면... 아저씨가 다 된 듯한... ^^;;;; 지금이 가장 좋은 시기이니, 하고 싶은 거 많이 하시고 즐겁게 보내시길 바랍니다. ㅠㅠ (회사오면 별거 없어요~ 그냥 노가다만 하다가 나이 먹어요~ ㅠㅠ)

에궁~ 구매해 주셔서 감사하구요, 부디 잘 쓰시길 바랍니다. ;) (지인께서 완전 좋아했답니다. ㅋㅋ) 제품에 문제가 있다면 제가 AS를 해드릴 수는 없고, 대신 책이라도 한 권 나중에... 쿨럭..;;;; 여튼 그렇게 하겠습니다. ^^)-b

그럼 복 받으세요 ;)


<다시 재 등장한 아이팟 터치 16GB 입니다>

이전에 블로그에 글을 한번 올렸더니, 간혹 문의를 주시는 분이 계셔서 글을 하나 올립니다.

아직 아이팟 터치 2세대 16GB 한대 더 있습니다. 역시 재고를 맡은 거구요~

구성품은 스킨 케이스 + 박스 풀 셋 + 음악 상품권입니다.

가격은 40만원 극 초반에 드리니~ 편하게 문의 주시면 됩니다.

그럼 좋은 하루 되세요 ;)


ps) 연달아 이런 글을 좀 올렸더니, 마치 장사꾼이 된 것 같군요. ^^;;;;

image<출처 : 네이버> 

어제 간만에 여자 친구랑 영화를 봤습니다. 요즘 계속 작업하느라 집에만 있었더니 여자 친구도 좀 답답했겠지요. ^^;;;; 뭐 볼만한 영화 없을까 했는데, 딱 마침 초능력자 영화가 나왔다는 이야기가 생각났습니다.

네이버를 열심히 검색하니(사실 열심히 할 것도 없더군요. @0@)-b 그냥 떡~!! 하니 나왔다는 ㅎㅎ) 푸시가 나오던데... 일단 줄거리가 마음에 들어서 보러 갔습니다.

영화의 스토리는.... 사실 별 기대 안 했고 초능력자 영화니까 화려한 CG를 기대하고 갔는데... 약간 CG가 어설프더군요. ㅠ_ㅠ... 마지막에 주먹다짐(?) 말고는 크게 볼게 없었습니다. 스토리도 역시나 좀 어설픕니다. 중간 중간에 연결 고리가 있는데 연결 고리에 대한 설명이 부족해서 이해하기가 좀 어렵구요.

그래도 별점을 5점 만점에 3점을 주는 이유는... 전체적인 조화가 맞다랄까요? 약간 엉성한 스토리에 엉성한 특수 효과가 묘하게 맞았습니다(물론 지극히 개인적인 생각입니다. ^^;;;). 그래서 나름 지루하지도 않고 그렇다고 막~ 가슴 떨리는 스릴도 없고... 그냥 볼만한 영화가 됐다는.... ㅎㅎ

그냥 친구들 끼리 시간 때우기는 그만인 것 같습니다. ;)

5점 만점에 3점~!!!

+ Recent posts