안녕하십니까 까마굽니다 (__)어제 출장에서 돌아와 머 변함없이 또 삽질하다..GUI Terminal Application 구현에 타격을 받고..쓰러져 고민하고 있습니다..쩝쩝 마땅히 좋은 방법이 안 떠올라 계속 고민중인데..머 좋은방법 없을까요??이번건 무대포로 막 하기도 좀 그런게 잘못하면 커널 자체를..심하게 수정해야 될수도 있어서 이왕이면 간단하게 하고 싶은데..것참.. 쩝쩝.. 어쩌징...좋은 방법 없을까요??
http://kkamagui.codesum.org/board/read.php?table=qna&no=17
안녕하십니까 까마굽니다 (__)네.. 오늘 깨달은건데, 기존의 CUI 프로그램들은 커널에직접적으로 key를 요청하게 되어있었습니다.무슨 말이냐 하면..커널에 Keyboard Queue가 있고, 각 CUI 프로그램들은키를 Kernel Queue에 요청해서 받아오는 그런 방식이었는데요..이게 쬐금 문제가 있네요. 머냐 하면!!GUI Manager 역시 Kernel에 Key를 요청하게 되는데,GUI 프로그램들은 Manager로 부터 message를 받아서 수행하게 되니머.. GUI Manager와 Key를 얻기위해 경쟁할 필요가 없겠지만CUI 프로그램은 GUI Manager와 마찬가지로 커널에서 Key를 바로 요청하니까 경쟁하게 되서 문제가 되네요.흐음, 이를 어쩐다...Window Shell 내에서 실행한 CUI 프로그램인 경우, 키를 WindowShell로부터 얻어서 실행을 해야 하는데 말이죠...으읏.. 방법이 없을라나...getch() 같은 함수를.. 어케 잘 redirection 해야 할까요??아님.. 다른 근본적인 해결책이 있을까요??흐음.. 머리가 아프군요.. s( -_-)a..
 안녕하십니까 까마굽니다 (__)네.. ㅎㅎ 어제 대강 가닥을 잡고.. 이제 슬슬 구현을 한번해볼까 합니다..어제 코딩을 쪼금 했는데, 역시.. 해야할께 이만 저만 아니군요..

 윈도우에 대한 고유 ID를 부여하는 부분부터, 윈도우를 Hash Table에 넣어서 관리하고 머, ZOrder관리하고.. 이런게... ㅡ0ㅠ..으읏..

 사실..머 글케 어려운건 아닌데, 기본으로 준비되어야 하는것들이 많아서.. 그 바탕 만드는데만.. 한참 걸릴듯 하군요..테스트도 해야하니.. 더 걸릴수도..머.. 여튼 한번 해볼랍니다..홧팅.. @0@/~


안녕하세요 까마굽니다 (__) 
요 며칠 또.. GUI System Call을 한번 생각해 봤느데요.. 
흐음.. 머 이만하면 충분할꺼 같긴한데... 또 머가 필요할까요?? 
의견 있으신분 리플 달아주세요 (__) 
http://kkamagui.codesum.org/board/list.php?table=tip 
안녕하세요 까마굽니다 (__)지금 제주도에서 출장중인데요..넹.. 오늘 GUI에 대한 대략적 설계를 쬐금 했습니다..아직 좀더 생각을 해 봐야 할듯 하지만.. 일단.. 팁란에 적어놓고.. 틈틈히 보면서 추가 삭제를 해봐야 겠군요..혹시 다른분들의 더 좋은 생각이 있으면.. 그것도 반영해서 추가를할 생각인데..흐음.. 아직은 걍 생각만 하고 구현은 하나도 안한상태~ @0@/~궁금하면 Tip 으로~ @0@/~
http://kkamagui.codesum.org/board/list.php?table=tip그럼 좋은하루 되세요 (__)
안녕하십니까 까마굽니다 (__)

네.. 이제 슬슬 본격적으로 GUI를 한판 해볼까 생각중입니다.

지금까지 만들었던것은 테스트를 위해 그냥 GUI Manager가 다 알아서 윈도우 만들어주고..

이동시키고 한거였는데요, 이제 이걸 쪼개서.. 각자의 진짜 역할을 줘서

어케든 분담시킬 계획입니다.

머.. 잘될지는 모르겠지만.. 일단 Interrupt쪽을 하나 할당해서 GUI 함수를 위한 interface부터

구현을 해놔야 겠군요..

젤 먼저 필요한건 프로그램이 시작되었을때, Message Queue를 커널에서 할당받고 윈도우를

하나 만드는 것이니까요.. 일단 요걸 한번 해서 태스트 해봐야 겠습니다..

흠 또 삽질의 연속이 되겠군요..

그나저나 우습군요..

아직도 사각형, 글짜 찍기 루틴 밖에는 없는데..

이걸로 Application을 만들다니.. 참 대단하다는 생각이 듭니다.. ㅋㅋㅋ

그래도 머 BOXBOX를 구현하기는 충분하다고 생각되는군요~

여튼 홧팅입니다 @0@/~~



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

이제 슬슬 GUI Mode에서 동작하는 Shell을 만들어볼까 합니다.

흐음.. 그러기 위해서는 이제 GUI Manager를 어디다 둘것인가 하는 문제하고..

GUI Manager와 어떤 통신관계를 유지할 것인가?? 하는 문제가 발생하는군요..

원래의 목적은 GUI Manager를 Application Level로 내릴 생각이었습니다만..

지금은 쪼금 고민중입니다...

Application Level로 내려서 얻는 이득이 과연 무엇일까?? 하는 생각이

머리를 스쳤기 때문이지요..

Application level로 내려서 얻는 이득을.. 전 Kernel size의 축소 및 쉽게 교체 가능한

GUI Manager, 그리고 Interrupt를 이용한 System Call의 최소화를 생각했는데요,

사실 Kernel Level로 올라가도 Interrupt를 이용하지 않고 GUI Manager와 교신하는게

가능하군요. 그리고 오히려 kernel Level로 가는것이 각 프로세스의 Memory를 그대로 당겨

읽을수 있기때문에, 더 이득이 큰거 같습니다.

쩝쩝.. 당혹스럽군요..

단순히 System Call을 줄여보자고.. Application Level로 내릴 생각을 했다니..

약간 황당... Application Level에서 구현 가능한건 kernel Level에서도 구현 가능한데 말이죠..

왜 그랬을까요?? ㅡ_ㅡ;;;

기존의 System Call을 다 Interrupt로 구현해놔서 저도 모르게 압박(??)을 받고 있었나 봅니다..

쩝쩝..

머.. 그래서 일단.. 지금의 계획은..

GUI Manager는 Kernel Level에 두고..

GUI Manager -> Application은 공유메모리를 이용한 Queue로..

Application -> GUI Manager는 Interrupt를 이용한 System Call

을 이용하기로 일단은 결정했습니다..

쩝쩝.. 또 한바탕 삽질을 해야 할꺼 같군요...

일단은 이렇게 해놓고.. 쫌 아니다 싶으면.. 다시 생각을..

백견이 불여일행~~!!

그럼 다들 좋은밤 되세요 (_ _)


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

오늘 드디어 밤이 되어서야 겨우 홈피 업뎃을 했군요..

개발하는거 보다 문서 적는게 더 빡시네요..

에드님이 참 대단하게 느껴집니다 그려.. 쿨럭..;;;

으흣.. 그람 이제 슬슬 자볼까나~

새로운 커널과 수정된 bochs에 대한 정보는

http://comeng.ce.knu.ac.kr/~c0038063

에 가시면 확인할 수 있습니다

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

KKAMA OS를 Bochs에서 돌리던중..

Bochs에서 보낸 Serial out이 실제 포트로 나가지 않는걸 발견했습니다..

아시는 분하고 열심히 씨름하다..

결국 소스를 고치기로 결정하고.. ( 사실.. ㅡ_ㅡ.. 정말로 고칠줄은 몰랐죠.. 혹시나 하는 맘에

봤는데.. )

뒤지다... 결국 저지르고 말았습니다.. @0@/~

일단 지금은 하드 코딩으로 파일에 시리얼 출력을 쓰고.. 파일에서 시리얼 입력을 받고..

이런식으로 수정했는데요..

머 낼쯤이면 별탈없이.. 실제 시리얼하고도 연계가 가능할꺼 같군요.. 쩝쩝..

윈도우는 파일이나 시리얼이나.. 같으니깐..

근데... 의외로 파일이 더 나을수도 있겠어요..

파일로 하니까.. 실제 시리얼 포트가 2개가 있지 않아도 되고..

지금 KKAMAOS는 시리얼로 제가 임의로 정한 프로토콜로 통신하거든요..

그러니.. Application 파일을.. 프로그램으로 돌려서 일단 시리얼 전송 프로토콜을 앞부분에 붙여

가지고 파일로 저장하면..

KKAMA OS에서는 그걸 읽어서 Bochs안의 하드로 옮기고..

머 일케 하면.. 굳이 시리얼이 두개가 있을 필요가 있을까 하는 생각이 드는군요..

쿠쿠쿠~ >_<

넹 일단 좀더 해봐야겠습니다~

정말 별짓 다하는군요. ㅡ_ㅠ...

화이티이이이이이잉~ ㅡ0ㅠ/~~~
안녕하십니까 까마굽니다 (__)

넹.. 오늘 또 외근을 나와서.. ( 사실.. 아침 일찍부터 나와서 아직까지 뺑이치고 있지요.. ㅡ_ㅠ.. )

머.. 테스트 하러 왔기 때문에 별로 크게 할일은 없었습니다 ㅋㅋ

그래서 이것 저것 홈피 업뎃하고.. ( 아.. 오늘 내가 머때문에 업뎃했더라?? ㅡ_ㅡa.. )

Ram Disk를 만들라꼬 하루종일 꼼지락 거렸군요...

머.. 일단 구현은 다 됬는데요.. 약간 테스트가 더 필요할지도 몰라서..

아직 릴리즈는 안할렵니다~

근데... 속도가 진짜 무쟈게 빠르군요.. ㅋㅋㅋ

하드하고는 속도 비교가 좀 어렵네요.. 하긴 램하고.. 장치하고.. 비교한다는 자체가.. 이미..

ㅡ_ㅡ;;;;

여튼 좀더 해봐야 겠습니다~ 캬캬~~

그럼 다들 좋은하루 되시길~~ (__)
안녕하십니까 까마굽니다 (__)

어제 한 예상대로.. 역시 Interrupt 플래그의 문제였습니다.

해보니까 되는군요.. 으흣.. >_<

파일 복사 및 지우기 테스트를 해보니까 Vmware랑 큰 차이가 없는데...

흐음 Bochs도 잘만들었군요.. 홧팅 @0@/~~

이제 또 딴짓하러 가야징..

그럼 다들 좋은하루 되세요 (_ _)

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

오늘 외근을 나왔는데 말이죠.. ㅡ_ㅡ;;;

테스트가 길어져서 멀할까 생각하던중.. RAM DISK에 대한 생각을 조금 해보기로 했습니다...

쩝쩝.. 외근은 따분하군요.. >_<

RAM DISK라.. 흐음.. 일단 File System은 FAT쪽을 사용할 껀데요..

FAT16을 쓸지.. 32를 쓸지를 모르겠군요..

아무래도 32를 쓸꺼 같습니다. Root Directory에 대한 제한이 없으니..

그냥.. 이걸로.. ㅡ_ㅡ;;;;

흐음 문제는 FAT Driver의 low level I/O 함수의 Read/Write 단위는 Sector단위 인데요..

이걸 메모리랑 맵핑해주는것만 잘하면 될꺼 같군요..

별로 크게 문제가 될껀 없을꺼 같습니다 쩝쩝..

일단 지난주에 정리했던 Fat Driver를 잘 살펴본다음, 적당히 메모리를 할당해서..

File Allocation Table, Root Directory만 만들어주면 될꺼 같군요..

지금 당장 생각은 이런데, 모르죠 또 하다보면 희한한게 걸릴지.. ㅡ_ㅡ;;;

제가 Ram Disk를 생각한 이유는, 이제 곧 더 추가될 GUI Manager의 테스트를 위함이지요..

아무래도, 실제 HDD를 이용하면 약간의 위험부담도 있고 속도도 느리니까

걍 프로그램을 Serial로 전송해서 거기서 RamDisk에 저장한다음..

반복 실행이 가능하도록 할려구 생각중입니다.

Ram Disk니, Read Write 하는 속도가 HDD랑은 비교도 되지 않겠지요.. ㅋㅋㅋ

그걸 노리고 있답니다.

그나저나.. 처음엔 계획에도 없었고 꿈에도 없었던.. 별 희한한 것들을 다 만들게 되네요..

RAMDISK를 제가 초기에 생가할때는, 별로 필요없는 기능(??) 이라고 생각했는데..

지금 생각하니 의외로 쓸모가 많겠군요.. 특히..

HDD가 없는( 그럴리는 없겠지만 ) 곳에는.. 거의 필수겠네요.. 쩝쩝..

머.. 일단 해봐야겠슴다 그려..

다들 좋은하루 되세요.. (__)


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

오늘 하는김에 Bochs에서 hdd Interrupt가 발생하지 않는것에 대한 문제점을..

한번 파헤쳐 보기로 했는데요,

저번에 Mouse를 할때, 이상하게 VMware하고 Real Machine에서는 마우스가 동작을 했는데,

bochs에서는 동작을 하지 않더군요..

그래서 한참을 헤매다가..

Mouse Interrupt를 발생시키게 하는 플래그를 발견하고는 그뒤로 별 문제 없었는데..

혹시 이것도 그런류의 문제가 아닌가 살펴보다가..

문서에 보니 Interrupt를 발생시키게 하는 플래그를 설정하는 포트가 있더군요..

그래서 혹여나 bochs에서 찍고, VMware에서 찍고 해서 값을 비교했는데,

머 상위 4bit는 거의 reserved되어있어서 그냥 나뚜면 되는건데..

문제는 하위 4bit에 설정된 값이 서로 틀리더군요..

흐음.. 이걸 어케 바꾸면 되지 않을까 생각하는데요..

해볼려고 하다가.. 일이 생겨서 외근을 나왔네요.. ㅡ_ㅠ...

크윽.. 젠장.. 요즘 왜이렇게 외근이 많은지...

집에가서 테스트를 한번 해봐야 겠습니다.. 쩝쩝..

이것만 해결되면.. 보크스에서도 하드를 쓸수가 있게 되는군요..

크흣~ >_<

머 별 상관은 없지만.. 보크스가 부팅이 더 빠르기 때문에..

이번 테스트가 성공적을 끝나면.. 다시 Vmware에서 Bochs로 넘어올듯도...

여튼 테스트~~ @0@/~~


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

12시가 지났으니 오늘이라고 해야 되나.. 어제라고 해야 되나.. ㅡ+ㅡ;;;

머 여튼 어떻게든 일단락을 지었습니다..

아직 할께 많이 있지만..

ㅡ_ㅠ.. 시간이 너무 많이 걸려서 그만할라꼬.. >_<

이번 작업의 주 목적은

Low level Driver와 Partition Driver를 분리하는 작업이었는데요..

처음엔 금방할줄 알았는데, 원체 밀접하게 관련이 되서..( 좀 사이가 좋아야지! 나원참.. ㅡ_ㅡ;;)

이녀석들을 때내는데 시간이 많이 걸렸네요..

머.. 구조를 많이 뜯어고친건 아닌데..

복잡하게 얽혀있는 함수들을 잘라낸다고.. 생 고생.. ㅡ_ㅠ...

해놓고 봐도... 영 맘에 안드는..

나중에 보고 정 안되겠으면...

Memory Management 하고 Process Management 부분만 빼고 다 재개발을

해버려야 겠군요..

앞으로는 좀더 생각을 잘해야 되겠다는걸.. 이번주에.. 뼈저리게 느꼈습니다..

머 사실 지금 이래 생각해도.. 나중에 되면.. 지금하고 똑같이..

걍 테스트 주욱 하다가.. 되면.. 탁!! 덮어서 그걸 계속 쓰고.. 연결하고..

이러겠지요.. 그러다 나중에 재개발하고..

아아아아아아아아아앍~~!!!

여튼 주말까지 다 날렸네요...

밤도 깊었고...

나머지는 낼 해봐야 겠습니다 그려~ 쿨럭..;;

그럼 다들 좋은밤 되시길.. (__)

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

으흣.. 근 6일동안의 장장한 FAT쪽 함수에 대한 정리가 대강 끝이난듯 보입니다.. ㅡ_ㅡ;;;

머.. 사실.. 아직 할께 많이 남았지만.. 파일 생성 및 삭제.. 머 이런부분에서는...

크게 문제가 없어보입니다.

꼬여있고 하드를 중복으로 읽던 함수들을 대강 정리함으로써, 약간의 속도 향상도 있었는데요..

일단.. 요 작업이 대강 끝나는대로.. 다시 바이너리 릴리즈를.. 한판.. ㅡ0ㅡ;;;

소스도 릴리즈를 하고 싶지만은..

이게.. 지금 디버깅 코드가 장난이아니라서..

오래된 주석도 다 삭제를 해야 되는데...

정말 테스트의 연속이라 이걸 할 짬이 안나는 군요.. 쩝쩝.. ㅡ_ㅡ;;;;

오늘 깨달았는데, tuncation 함수가 없더군요..

황급히 구현을 해야 될듯.. 언젠가 한다고 미루고 있다가..

오늘에야 발견했나 봅니다..

내가 몬살지 그냥.. ㅡ_ㅠ...


+ Recent posts