얼마전부터 사용하기 시작한 CVS인데, 처음에는 약간 회의적인 생각도 들었지만, 쪼금더 생각해 보니, CVS가 있으므로해서 얻는 이득이 귀찮은거 보다 더 큰거 같아서 한참 익숙해 질려고 노력하고 있다.

머니머니해도 젤 좋은점은 그 골치아픈 버전관리에 크게 신경을 쓸일이 없다는 것인데, 이건 정말 큰 매력인거 같다.

안그래도 요즘 여기저기 사이트가 늘어서 소스관리에 정신이 없는데, 정말 적절한시기가 아닐까 싶다. 무엇보다 서버가 외부망에 있으니, 어디서든 인터넷만 되면 바로 다운받거나 업하거나 할 수 있다.

음.. 대단 대단 @0@/~~
으읏... 젠장... 머리를 싸매고 문서를 뒤지고 쌩 쑈를 하면서 고민한 결과, 이미 되어있는 intrinsic 함수보다 더 빨리 하는 방법은 역시 Assembly로 승부하는수 밖에는 없는거 같다.

일단 머, MP3 Decoder는 실수 버퍼를 정수 버퍼로 교체하여 속도를 높이는 쪽으로 잠정적 결론이 났고, 앞으로의 작업을 위해 Assembly를 피해갈 수 없는 상황에 봉착해있다.

크윽... Assembly는 x86에서 커널 만들 때 말고는 안쓰리라 결심을 했건만... 안그래도 Assembly는 완전 쌩짜 수준인데... DSP꺼까지 봐야하다니... ㅡ0ㅠ/~~

절망이 아닐 수 없군....
쿨럭...;;;
오늘 DSP의 실수 처리 문제로 고민하다, 아는 사람의 회사에 인도 사람이 DSP를 하고 있다는 이야기를 들었다. 그사람은 DSP의 inline Assembly가 전문이란다. ㅡ0ㅡ...
홍냐... 당췌 DSP를 얼마나 해야 inline Assembly의 대가가될 수 있는 것인지...

난 겨우 x86소스를 포팅하는데도 진땀을 빼고있는데 말이다.
인도가 소프트웨어가 발달했다는 말을 들었는데, 머 이렇게나마 몸으로 느끼게 되네...

나도 외국인 친구나 사귀어 볼까나.. ㅡ_ㅡ;;;
DSP를 하는 인도 사람으로.. ㅋㅋㅋ

여튼 방심하지말고 열심히 해야겠다 @0@/~~
쿨럭.. 오늘 DSP의 실수연산이 정수연산보다 느리길래 단순히 실수 연산이 굉장히 느리다고 생각하고 있었다. 그런데... 오늘 같은 실수 연산을 ARM쪽에서 수행한 결과...

30배 정도 ARM이 클럭을 더 먹었다. @0@/~~ 쿨럭.. 이게 무슨일인지...
물론 ARM쪽에 하드웨어 가속 같은건 하나도 사용하고 있지 않았기때문에 정확한 테스트가 안되었을지는 모르겠지만 굉장한 클럭 소모였다.

음냥 그렇다면 DSP쪽에서의 실수연산은 나름대로 최적화된 Built in 함수를 이용해서 수행하고 있으니, 속도의 향상을 꾀할려면 얍삽 코드를 삽입하여 계산하는 수 밖에 없다는 것인데... 참으로 막막하다...

이를 어찌해야 좋을까나?? ㅡ0ㅠ/~~~
DSP 실수연산이 이렇게 클럭을 많이 잡아먹는줄 몰랐다.
DWORD 포인터의 덧셈연산이 9클럭을 잡아먹는데, 실수 걍 덧셈은 141클럭인가를 잡아먹는다.
이게 무슨일인가??
DSP는 실수연산용 칩이라고 알고있었던 나에게는 상당한 충격이 아닐 수 없다.
이실장님과 고민한끝에 일단 실수 연산을 클럭이 적게드는 정수연산으로 변환시키자는 방안이 나왔는데, 고민한 결과 다음과같이 나왔다.

첫번째는 소수점을 다 버리더라도 실수를 정수로 캐스팅한다음에 정수연산을 하는 방법이다. 이 방법은 1.9를 1로 만들어버리기 때문에 크게 좋은방법은 아닌듯 하다.

둘째는 내가 고정소수점 연산의 형식을 강제로 추출해서 가수는 가수끼리 지수는 지수끼리 더하는 방법이다. 이방법 역시 굉장히 빡시고 쉽게 되리라고 생각하지 않는다.

셋째는 가장 간단하고 쉬운 방법인데, 연산하는 실수 테이블 자체를 * 1000같은걸 해서 정수 테이블로 수정하고 나머지 연산들도 정수연산으로 바꾸는 것이다. 사실 MP3 디코더 역시 실수를 다시 정수로 변환하는 과정이 마지막에 있기때문에, 이방법을 이
용하면 마지막 과정은 / 1000 으로 간단히 해결할 수 있으므로 괜찮은 방법인거 같다.

일단 시도해 보도록하자.
홧팅이다 @0@/~~

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

사실은 얼마전에 웹서비스를 하던곳의 서버가 죽었습니다.

메인보드가 맛이 갔다고 하는군요. 상당히 안타깝습니다 크윽.. ㅡ0ㅠ/~~

웹이 맛이 가니까 할일도 없고.. 사실 그동안 홈피에 글쓰는게 일이었는데.. ㅡ0ㅠ/~~

아우~~ 언제 복구되려나...

여름이 다가서 상당히 시원하군요. 다들 감기조심하시구요~~

그럼 좋은하루 되세요 (__)

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

 오늘 드뎌 치과에 가서 한쪽 어금니 두개를 치료 받았습니다.머 치료받고 나올때까지는 기분 좋았는데, 양치하고보니.. 먼가 찝찝한게 붙어있군요. 사이드에 구멍 비슷한것이 뿅~ 나있는거 같기도 하고...
 
 낼 아침에 치과에 들러서 확인을 하고 출근을 해야 할듯...그래도 낼만 회사나가면 모래는 노는 날이라 참 흐믓합니다. 어셈블러나 마저 만들까 생각중입니다. ㅋㅋㅋ 요즘 회사 일때문에 정신이 없어서 진행은 좀 더딜듯...
 
 그럼 다들 좋은하루 되시고~ 번개 조심하세요 ㅋㅋㅋ 그럼 이만 (__)

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

 오늘 5시에 치과로 출발하기로 했는데, 차마 발길이 떨어지지 않는군요. 솔찍히 겁납니다. 덩치는 토실한게... 아직 어린앤가 봅니다. 치과가 넘 시로요. ㅡ0ㅠ...
 
 으으..이럴줄 알았으면, 단거 좀 대강 먹을껄...양치는 열심히 했는데.. 줴길.. ㅡ0ㅠ/~~오늘 덮어씌우는거랑 어금니 때우는거 하러 가야 하는데...아아.. 시로 죽겠어요.. ㅠ0ㅠ그래도 큰돈 나가기 전에 가야 하니까 가긴 가야 하겠지만...쩝쩝...넘시로크윽.. ~~(T^T)~~

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

 크윽... Add 명령을 조합하다가 도저히 지금의 구조로는 모든 명령에 대해 조합을맞추가기 어렵다는 결론이 났습니다.  MOV 까지는 잘 맞춰졌는데, Add가 되니까 약간씩 핀트가 어긋나서 다른 코드가 선택되는 걸 피할 수 가 없군요.

 으으... 이때까지 Register를 중심으로 Define하고 코드를 개발했었는데, 이게 오산이었습니다. 명령어의 Operand를 중심으로 했어야 하는데, 기존에 define 된걸 가지고 Operand를 맞출려고하니 무리가 있군요. Scanner 정도는 그냥 쓸수있을꺼 같은데, Parser랑 Code Generator는 완전히다시 써야 할듯 합니다.

 사실 생각한건데, Parser랑 Code Generator를 분리할 필요는 없다고 생각되네요. 분리를 하고 나니까 중복으로 검색하는것이 있어서, 하나로 합치는게 옳은거같군요. 일단 좌절입니다.

 아아.. 힘빠져.. ㅡ0ㅠ...다들 좋은하루 되세요 (__)

안녕하십니까 까마굽니다 (__)요즘 머 회사일 땜시롱 정신이 없어서 개발은 거의 못하고 있군요. ㅋㅋ여튼 오늘 아는 사람이 사랑니를 뽑으러 간다해서 저도 같이가서 충치나 치료할까했습니다. 가서 견적뽑으니.. 씨게 나오는군요.정말 장난아니게 나왔습니다.금을로 때우는데 20만원에서 30만원, 금니 덮어씌우는데 30만원, 하얀걸로 때우는데7만원 이렇게해서 요리조리 도합하니.. 128만원이 나오는군요.쿠.. 쿨럭... 상당한 금액이 아닐 수 없습니다. 쩝쩝 머 신경치료한 이는 빨리 덮어씌워야 한다니까 일단 그것만 치료하고 나머지는 어케 천천히 해볼까 생각하고 있습니다만, 여전히 비싸다는 생각은 떨쳐지지가 않는군요.여러분들도 이 관리 잘하세요~ ㅡ0ㅠ/~그럼 좋은하루 되세요 (__)

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

삽질에 삽질을 거듭하다보니, 16bit와 32bit Asambler를 만들게... 머 그냥 Directive를 통해 전환이 가능한 형태이구요, 열심히 Intel의 테이블을보고 만들었습니다.

아직 LABEL에 대한 처리가 좀 미흡하고, mov 명령에 대한 구현 및 테스트를 하고있어서 다른 명령의 형식에는 어떻게 적용될지는 의문입니다만, 여튼 별반 수정없이처리할 수 있을꺼 같군요. 만들어 놓고도 참 신기합니다. 동작을 하긴 하는군요.

정말 이렇게 난잡한 프로그램은오래간만에 짜보는듯...Type Match를 위해 if-else switch의 난무.. ㅡ0ㅡ;;;;나중에 LABEL에 대한 마무리 처리를 조금 한다음, 소스코드를 좀더 간단하게 정리를해야 겠습니다. 아.. 오늘은 머리도 아프고 속도 영 않좋군요.병이 났나 봅니다 그려.. ㅋㅋㅋ그럼 다들 몸조심 하시고..

좋은하루 되세요 (__)

안녕하십니까 까마굽니다 (__)오늘은 몸이 쑤셔서 좀 일찍 일어났습니다. 태풍때문인가...그래서 아침에 밥먹고.. 몸을 좀 푼다음에 또 PC 앞에 앉아서 삽질을...ㅋㅋㅋ 지 버릇 개못준다고 어쩔수 없나 봅니다.그나저나 태풍에 별 피해가 없어야 할텐데....오늘 비가 많이 오고 풍수피해가 생겨버리면, 소방본부로 들어가서 대기해야 하는데,쩝쩝... 영 에라군요. 제대하면 여긴 절대 안와야 겠습니다.이거 영 신경쓰여서 원...하긴 머 이것도 내년까지만 하면 끝이니깐... ㅋㅋㅋ아.. 그럼 삽질을 슬슬 시작해 봐야 겠군요..그럼 다들 좋은하루 보내시고, 태풍에 잘 대비하시길..그럼 이만 (__)
안녕하십니까 까마굽니다 (__)

요즘 Kkamagui Simple Asambler를 만든다고 끄적거리고 있습니다.

mov 명령을 일단 대상으로 잡고 열심히 Operand 에 따라서 선택되어지는 값들을

추려내어 nasm의 output과 비교하는 작업을 하고 있는데, 흠 사실 머 별로 재미가

없군요. 쩝쩝... 어셈블로도 index base 를 사용하는 접근( mov eax, dword[ eax +

ebx * 2 + 0x1000 ] 같은것들 )을 빼고 나머지는 좀 테스트를 해봤는데, MOD 바이트를

선택하는 것에는 별반 문제가 없어보입니다. 흠.. 일단 MOV에 대해서 어느정도 처리가

끝나면 기본적인 명령들을 추가해나가면서 테스트 할 생각이고요, 목표는 부트코드를

Kkamagui Simple Asambler로 컴파일하는건데, 진짜 별로 재미가 없군요. 쩝쩝...

머 좀 신나는일 없을까요??
 안녕하십니까 까마굽니다 (__)
 으으.. 오늘 Machine Code Generator를 만들다가, OpCode까지는 어케 선택을 해줬는데, Mod 및 SIB를 선택하지 못하여 하루종일 보냈슴다. 이제야 필을 받아서 일단 mov reg, reg 형식을 대략 완성하고 output을 냈는데요,다행이도 nasm이랑 output이 같게 나오는걸 보니, 테이블을 틀리게 만든건 아닌거같군요.

 흠, 아직 테이블을 좀더 만들고 테스트해야 하는게 있긴하지만 머, 일단 첫발을내딛었기땜시롱 한자 끄적여 봅니다. 처음에는 모든 경우의 수를 생각하고 Scanner랑 Parser를 만들었는데요, 오늘 딱생각하니 빼먹은것이 있군요.

 으으, 다 포함하려니 소스가 자꾸 복잡해져서리 일단간단하게 완성하고 덧붙이던가 해야 되겠군요.에궁, 징짜 너무 빡시네요.

 그럼 좋은하루 되세요 (__)아래는 테스트 결과
/////////////////////////////////////////////////////////////////////////////
//input file
/////////////////////////////////////////////////////////////////////////////
mov ebx, eax
mov ebx, ecx
mov ebx, edx
mov ebx, esi
mov ebx, edi
mov ecx, eax
mov ecx, ebx
mov ecx, ecx
mov ecx, edx
mov ecx, esi
mov ecx, edi
mov edx, eax
mov edx, ebx
mov edx, ecx
mov edx, edx
mov edx, esi
mov edx, edi
mov esi, eax
mov esi, ebx
mov esi, ecx
mov esi, edx
mov esi, esi
mov esi, edi
mov edi, eax
mov edi, ebx
mov edi, ecx
mov edi, edx
mov edi, esi
mov edi, edi

//////////////////////////////////////////////////////////////////////////////
// 아래는 Kkamagui Simple Asambler Output
//////////////////////////////////////////////////////////////////////////////
Output[89C3]
Output[89CB]
Output[89D3]
Output[89F3]
Output[89FB]
Output[89C1]
Output[89D9]
Output[89C9]
Output[89D1]
Output[89F1]
Output[89F9]
Output[89C2]
Output[89DA]
Output[89CA]
Output[89D2]
Output[89F2]
Output[89FA]
Output[89C6]
Output[89DE]
Output[89CE]
Output[89D6]
Output[89F6]
Output[89FE]
Output[89C7]
Output[89DF]
Output[89CF]
Output[89D7]
Output[89F7]
Output[89FF]

 안녕하십니까 까마굽니다 (__)
 요 이틀째 어셈블러 제작에 매달리고 있는데요, 오늘 오전즈음해서 scanner를테스트한 다음, 그 output을 parser에 넣고 문법을 검사하려다보니, 기본적인 검사를 하더라도, 어셈명령에 따른 operand의 갯수 같은 것이 필요하겠더라구요.

 그리고 머신코드를 생성할 때는 각 operand에 따른 머신 코드의 맵핑 테이블이필요한데, 막상 고민해보니 깔끔한 생각이 안떠오르더군요. 하드코딩을 안할려고 머신코드의 규칙을 살펴봤으나, prefix/MOD/SIB 머 이런것들은 일정한 규칙같은게 있던데, 머신코드는.. ㅡ0ㅡ;;;;;

 그래서 nasm을 참고할려고 들여다 봤더니, 쿠.. 쿨럭...걍.. 테이블이 하드코딩 되어있더군요. ㅠㅇㅠ/~~크윽... 그래서 일단 저도 하드코딩해서 테이블을 만들어 놓고 이제 parser를만들어 테스트를 할려고 생각중입니다.하.. 참나... 이거 무쟈게 빡시군요.기본적으로 제가 쓰는 명령만 구현하는데도, 한참 걸리겠습니다. 그려...일단 오늘도 삽질 @0@/~~

 그럼 좋은하루 되세요 (__)

 안녕하십니까 까마굽니다 (__)
 넹 커널을 릴리즈한지 며칠이 지났는데요, 다행이도 "왜 일케 짯어요??" "정신이 있는 사람이에요??" 이런식의 글이 올라오지 않아서 긴장을 풀고 있습니다. ㅋㅋㅋ사실 잔뜩 요 며칠 쫄아있었기 땜시롱, 워낙 허접한 코드를 릴리즈해놔서 이것 또한걱정이군요.

 ㅡ0ㅡ;;;흠, 당분간 커널 소스는 손을 안대고, 다른걸 쪼금씩 해볼 생각을 하고 있습니다.머, 다음에 손보게 되면, FAT를 좀더 보강하고, 스레드를 구현해 넣고 GUI 함수약간 더 추가하는 정도가 될것 같군요.스레드와 GUI 함수에 대해서는 아직 뚜렷한 방향이 잡히지 않아서 약간 시간이 걸리겠구요, FAT 루틴은 사실 약간 보강이 된 상태인데 추가해야 할 부분이 생겨서그부분에 대한 처리를 미뤄둔 상태입니다.

 음, 글고보니 응용 프로그램용 라이브러리와 응용프로그램 전송하는 방법에 대한언급이 없었네요. 이것도 시간나는대로 릴리즈를... ㅋㅋㅋ아아, 눈탱이가 아프군요... 갑자기 왜이러지...그만 자야겠습니다.

 다들 좋은밤 되세요 (__)

 안녕하십니까 까마굽니다 (__)
 오늘 한번 어셈블러를 끄적거려 볼려고 했었습니다만, 쇼크만 먹었습니다.흠, 전 지금까지 Opcode는 각 명령에 대해서 1:1로 대응되는줄 알고있었기때문에,쉽게 보고 있었는데, 오늘 문서를 보니 같은 mov라도 뒤의 Operand에 따라서 Opcode가 틀리더군요.

 또 뒤에 오는 Operand 타입에 따라서 옵션으로 설정되는 것들이 있고, 으아~~ 어찌나 복잡하던지...하는수 없이, 책을 일단 쬐금 복사한다음 nasm을 이용해서 역어셈해가면서 봤습니다.규칙이 있긴하던데, 머 관건은 머신코드를 작성할때 적절한 Opcode를 선택하기위해서는 Operand의 Type을 알고있어야 한다는 결론에 봉착한것 말고는 별 소득이 없네요.테이블도 몇개를 이용해야 될꺼 같고, 으음 일단 mov 명령을 잘 뜯어본다음 nasm과동일한 output이 나오도록 한번 해봐야 겠습니다.

 그러려고하니 문제가, scanner를 만들어야 하겠는데 머 만드는거야 별 문제가 없지만 중요한건 scanner의 output을 parser가 가지고가서 문법 체크를 하고, 다시 이걸넘겨받아서 머신코드를 만드는 놈이 output을 만들어 내야 하는데, scanner의 output을 어떤식으로 할지가 문제군요.머 일단 Token단위로 자른다 치면, scanner의 output으로는 Token별 String도 있어야 할터인데 어떤식으로 할지 걱정이군요.걍 Queue에 넣어버릴까나, 쩝쩝... 암생각하지말고 String의 크기만큼 동적할당해서걍 스트링 복사한다음 Queue에 넣는 무식한 방법도 생각하고 있습니다.

 오홀홀홀.. 혹시 머 좋은 생각 있으신분 계신가요??있으시면 답글좀...
 그럼 좋은하루 되세요 (__)

안녕하십니까 까마굽니다 (__)오늘 원래 회사에서 레프팅 계획이 잡혀있어서, 아침부터 희한한 일을 겪고우의곡절 끝에 무사히 마치고 돌아왔습니다.노 저을때는 몰랐는데, 집에오니 손목이 무쟈게 쑤시는 군요.나름대로 스냅을 이용한다고 손목을 빙빙 돌렸더니, 이런데서 문제가... ㅋㅋㅋ약간 몸도 피곤하고 글치만 잼썼네요.담에도 가야 겠음~ㅋㅋㅋ 그럼 좋은 밤 되세요 (__)
 안녕하십니까 까마굽니다 (__)
 몇주의 삽질끝에 겨우 정리를 끝내고 이제야 겨우 소스를 릴리즈 하는군요. 아래는 릴리즈 파일의 00ReadMe.txt 입니다.

그럼 좋은하루 되세요 (__)
 게시물 및 소스파일 링크http://kkamagui.codesum.org/board/read.php?table=broad&no=10
링크 클릭
//////////////////////////////////////////////////////////////////////////////
//=============================================================================//
// 2004 06 18 // KKAMA OS 첫번째 소스 릴리즈
// Home Page : http://kkamagui.codesum.org//
//=============================================================================
 1. 인사말 ---------------------------------------------------------------------
안녕하십니까 까마굽니다. (__)약 2주동안 열심히 소스를 정리한 결과, 디버깅 코드의 대부분을 정리하고 소스를 릴리즈 할 수 있는 정도가 되었습니다. 물론, 다 정리된건 아니고 한참 개발중인부분과 너무 복잡해서 정리하기에 시간이 드는 부분을 제외한 나머지 부분을 정리했습니다.정리하면서 느낀건데, 확실히 중복 개발된 코드들이 많이 보이는군요, 나중에 다시중복 개발하게 될때 한번에 모아서 처리해야겠습니다.공개하기엔 너무 허접한 소스코드라 처음에 상당히 고민을 많이 했습니다만, 한소리먹을 생각하고 공개하기로 마음 먹었습니다.KKAMA OS가 나오기까지 도움을 주신 OSX86의 Edward님, B2OS의 주인장님, OSX86의 기홍님, OSX86의 모립, 그외 여러 많은 분들께 감사드리며 KKAMA OS를 인터넷으로 보냅니다.도움이 되시길 (__)

 2. License --------------------------------------------------------------------
KKAMA OS는 소스에 저작권 제약이 없습니다. 필요에 따라 추가, 수정, 삭제, 변경이 자유로우며 코드 일부 사용 또한 제약이 없습니다.KKAMA OS 자체가 여러 자료를 참고해서 만들어졌으므로, 선현(??)들의 뜻을 따라 License를 Free로 합니다.다만, 재배포시 현재의 00ReadMe.txt 파일을 포함시켜야 합니다.
 
 3. 소스 열람시 주의사항 -------------------------------------------------------
KKAMA OS의 소스코드는 저의 코딩 스타일에 따라, Tab을 insert space로 하여 3개의스페이스로 치환되어있습니다. 물론 코드가 좀 오래되고 여기저기서 코딩한 결과,Tab문자가 스페이스로 치환되지 않아서 Tab을 3으로 맞추지 않으면 들여쓰기가 맞지않는 일이 생길 수 있습니다. 이러한 불편을 최소화하기위해서 소스를 보실때는 Tab을 3으로 조정하면 됩니다.또 각 name 들이 상당히 길고, Structure를 typedef로 줄이지 않고 그대로 사용한걸보실 수 있는데, 제가 이름을 줄여쓰는걸 별로 좋아하지 않아서 그렇습니다.소스는 최대한 간단히 구현할려고 노력했습니다만, 과연 그런지는 의문이군요. @0@/~

 4. 컴파일 및 링크 준비 --------------------------------------------------------
KKAMA OS의 소스코드는 DJGPP V2.0(GCC V3.2.1) 이상의 버전과 NASM V0.98.36에서 컴파일 및 링크되었습니다. NASM은 DJGPP용으로 나온 Binary가 있으니 사용하시면 에러없이 컴파일 가능합니다.DJGPP의 설치 및 NASM의 설치는 각 사이트 DJGPP : http://www.delorie.com/NASM : http://nasm.sourceforge.net/wakka.php?wakka=HomePage/에서 찾을 수 있습니다.설치가 잘 안되는 분은 질답란에 올려주세요. http://kkamagui.codesum.org/board/list.php?table=qna

 5. 커널 컴파일 및 이미지 만들기 -----------------------------------------------
KKAMA OS 소스코드는 특정 IDE를 사용하지 않기 때문에, DJGPP에 포함된 make.exe를통해 컴파일 됩니다.00Kernel 디렉토리는 커널소스가 포함되어있고,01Boot 디렉토리는 부트로더 및 커널로더의 소스가 포함되어있습니다.각 폴더에는 컴파일에 관련된 Makefile이 존재합니다.부트로더 및 커널로더를 컴파일할 시, MAKEBOOT.BAT를 실행하시면 01Boot 폴더에boot.bin (부트로더), kloader.com (커널로더)가 생성됩니다.커널을 컴파일할 시, make.bat를 실행하시면 00Kernel 폴더에 kkernel.bin (커널이미지)가 생성됩니다.Floopy를 통해 부팅가능한 이미지를 생성하기위해서 MAKEIMG.BAT를 실행하시면 각각생성된 boot.bin, kloader.com, kkernel.bin을 통합하여 DISK.IMG를 생성하게 됩니다.생성된 DISK.IMG를 통하여 Bochs, VMWare로 부팅이 가능합니다.DISK.IMG를 Floppy에 옮겨담기 위해서는 A: 에 빈 디스켓을 삽입하고 DISK.IMG를 실행하면 됩니다. 엔터를 입력하기를 기다리는데, 엔터를 입력하면 디스크에 쓰기가진행되고 완료되고나면 Floppy를 통해 KKAMA OS로 부팅할 수 있습니다.

 6. 커널 실행 및 테스트 --------------------------------------------------------
KKAMA OS의 홈페이지 http://kkamagui.codesum.org/kkamaosHowTo.html의 설치 및 실행순서를 참조하시면 명령어 리스트를 보실 수 있습니다.

 7. 버그 및 의문사항 -----------------------------------------------------------
KKAMA OS의 홈페이지 http://kkamagui.codesum.org/board/list.php?table=qna의 QNA 페이지를 이용하시면 됩니다
 안녕하십니까 까마굽니다 (__)
 요즘 계속 소스를 정리한다고 거의 기능 추가부분은 손을 안대고 있습니다.그래도 계속 무리를 좀 했더니 대충은 끝나 가는군요.사실, 세부적인 정리는 안했고 그냥 인덴트랑 주석을 좀 정리하고, 가장 중요한디버깅 코드들을 삭제하는데 중점을 두었습니다.

 머 사실 몇몇 파일들은 한참 개발중이기 때문에 정리자체가 무의미 하다고 생각되어 무시한것도 있습니다만, 여튼 끝이 보입니다.이제 파일도 몇개 안남았는데( 사실 무쟈게 많더군요... ㅡ0ㅠ.. 죽는줄 알았음 또 소스는 얼마나 긴지.. 꼭 공부 못하는 애들이 코드가 길듯.. ), 정리 되고 나면커널 소스를 올리겠습니다.

 그럼 좋은하루 되세요 (__)
 ps) 홧팅입니다 @0@/~~

 안녕하십니까 까마굽니다 (__)
 크윽, 소스를 밤낮 할꺼 없이 좀 무리해서 정리를 했더니만, 동작이 이상하군요.ㅡ0ㅠ 분명 정리하다가 멀 같이 지워버린거 같습니다.

 크윽 젠장, 두군데나 벌써 이상이 생겼는데요, 막막하군요. 정리를 마저하고 디버깅을 해야 할지, 아니면 일단 지금 해결하고 다시 정리를 시작해야 할지...한가지 분명한건, 잘못 정리했다는 것이죠.

 ㅡ0ㅠ.. 아아, 젠장 젠장...소스는 정신이 말짱할때만 봐야 겠네요.
 그럼 좋은하루 되세요 (__)
 
 ps) 요즘 질답란의 폭주로 인해 상당히 뿌듯하다는...모두들 홧팅입니다. @0@/~

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

오늘 thread에 대해서 고민하다가 문득 pthread라는 놈의 소스를 보게 되었습니다. 전 pthread는 user level이라고 알고 있었는데, 아니더군요. ㅡ0ㅡ;;; 역시 나의 지식은 허망한것이었음... http://www.gnu.org/software/pth/pth-manual.html
 
위 링크는 GNU Portable Thread 라는 user level thread에 대한 문서인데요, 내용이 참 잘되어있군요. 제가 궁금해하던 "user level thread에서 과연 preemptive 하게 context switching이 가능한가??" 에 대한 물음을 단 한자로.. 압축해 놓았더군요. 충격이었습니다. SIGVTALRM... ㅡ0ㅡ...
 
결국 signal을 이용하면 간단히 스위칭을할 수 있었군요. ㅡ0ㅠ... 저걸 이용해서 user level의 thread library를 만들면, 커널 만드는 거랑 비슷할 것 같습니다. 사실 스케줄링 부분은 크게 다를것이 없으니...
 
시간이 나면 GNU Portable Thread도 차근 차근 한번 봐야겠습니다. 가능하면 포팅도 한판 때리는 쪽으로... 아직 먼 이야기지만... 좋은밤 되세요 (__)

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

요즘 스케줄이 이상스레 빡빡한지라, 커널코드를 거의 볼 수가 없군요. 쩝쩝, 빨리 정리를 해야 하는데, 진도도 안나가고 그렇다고 딱히 멀 하는 것도 없는데, 아.. 회사에서는 요즘 좀 프로젝트 때문에 바쁜거 말고는... 집에서는 별로.. 아.. 그것도 아니군요. 

이사짐을 하나 하나 정리하고 있는데,이게 또 시간이 장난이 아니구나.. ㅡ0ㅡ;;;; 쩝쩝.. 언능 정리하고 다른걸 한번 해보고 싶은데, 웃기는 것이 정리를 하다보면참 뷁스러운 부분들이 보여서, 이걸 어케 하면 좋을지 고민하다가 또 하루를 날리는경우도 있어서리... 

허허.. 참나.. ㅡ_ㅡ;;;;하여간 아주 미치겠습니다. 다들 좋은밤 되시구요.그냥 오밤중에 한자 끄적여 봅니다. 요즘 너무 글을 적게 적은거 같아서요.. ㅋㅋㅋ 

그럼 이만 (__)

안녕하십니까 까마굽니다 (__)요즘 틈틈이 시간을 내서 이제껏 정신없이 짜왔던 코드들을 정리하고 있는데요,우오.. 워낙 많다보니 시간도 장난아니게 걸리고 한 함수가 정리 끝나면테스트하고, 다시 확인하고...진짜 장난아닙니다. ㅡ0ㅠ... 내가 왜 이걸 하고 있나 싶기도 하고...워낙 디버깅 코드들이 즐비하고, 마구잡이로 추가된 소스들을 걸러내야 하기 땜시한번은 해야할 작업인데, 영 의욕이 나지 않는군요.원래 한번 짠 코드는 손을 안대는 성미라... ㅡ_ㅡ;;;아.. 글고보니 지금껏 짯던 놈들은 앵간하면 손을 다시 안댔네요.흠... 하긴 그것들은 그리 복잡하고 덩치큰 놈들이 아니었으니 그럴수도......하여튼 왕 짜증입니다.날씨도 덥고... 쯧쯧...더위 조심하시고 좋은하루 되세요 (__)
안녕하십니까 까마굽니다 (__)흠.. 오늘 멀티 스레드의 구현에 대해서 한번 생각해 봤습니다.꼭 있어야 할꺼 같기는 한데, 구현할려고 하니 약간의 벽을 느끼게 되네요.제가 볼때는 멀티 스레드를 구현하는 방법은 두가지가 있다고 생각합니다.( 순전히 저 혼자 생각이에요. 오해마시길... ㅡ_ㅡ;;; )한가지 방법은 스레드를 커널 레벨에서 생성을해서 Process 처럼 하나의 Task 영역을 먹는 방법이죠.이렇게하면, 커널이 볼때는 스위칭 할때 두개의 process가 떠있는거 처럼 생각되기때문에, 속도면에서 별로 손해도 없고 구현에도 크게 문제가 없는 방법 같습니다.다만, 문제가 되는것이 fork시나 exec시에 프로세스가 만들어놓은 Thread를 잘 관리를 해줘야 한다는 단점이 있습니다. 특히 옴팡지게 많은 스레드를 가진놈을 fork()할때는 거의 자살할 정도의 복잡성을 요하지 않을까 생각됩니다. ㅡ_ㅡ;;;머 역시 그놈의 exit() 역시 자살할정도의 주의가 필요할꺼 같은데...다른 한가지 방법은 Application Level에서 멀티 스레드를 구현하는 방법입니다.이건 머 한 프로세스의 CPU Time을 나누서 내부적으로 잘 스위칭 하는 방법이라커널이 보기에는 몇개의 스레드가 생기던 하나의 Process이기 땜시롱 fork()나exec()할때 그 프로세스만 잘 복사해주면 별 문제 없는 방법인거 같습니다.개인적으로 볼때 두번째 방법이 땡기긴 하는데, 어떻게 나누어 쓸지에 대한 생각이없어서 역시 이것도 빡시군요.당장 구현하기에는 첫번째 방법이 좋고, 조금 앞을 내다본다면 두번째 방법을택해야 할꺼 같은데...제가 듣기로는 linux의 pthread가 Application Level의 thread라는데, 한번 눈여겨볼 필요가 있겠군요.아아... 너무 멀고도 험합니다 그려.. ㅡ_ㅠ...머 좋은 방법 없을까요??그럼 좋은하루 되세요(__)
안녕하십니까 까마굽니다 (__)흠, 원래 놀러갈 생각이었는데, 약속이 취소되는 바람에 서점에 오게 되었습니다.이래저래 다니다보니, Compiler 입문이라는 책이 보이는군요.붙잡고 한 2시간 읽었는데, 아아.. 무지 머리아픕니다. ㅡ0ㅠ...2학년때인가, 배웠던 오토마타가 나오는데, 참 어렵더군요.그래도 읽다보니 어휘분석기인가?? lexical Analysis( 철자가 맞는지.. ㅡ0ㅡ )..그거에 대한 설명이 나오던데, 토큰을 분석해서 타입을 찾는 부분이 있더군요.여기에 그 오토마타 시간에 배운 언어표기법을 이용해서 마구 설명해 놓는데....한참을 읽다가 생각한것이,"아.. 걍 나도 Asambler 어휘분석기나 만들어봐야겠다."였습니다. 머 Asambler는 문법이 간단하고, 제가 주로쓰는건 몇몇 안되는 명령어들 밖에 없으니 한번 만들어보는것도 괜찮겠다는 생각이 들더군요.흠, 여튼 머리가 아파서 집에 슬슬 가봐야 겠습니다. ㅋㅋ그럼 다들 좋은하루 되세요 (__)
안녕하십니까 까마굽니다 (__)오늘 번쩍 떠오른게 있어서 그걸 처리하기위해 노트북을 폈는데,어떤 부분이냐 하면 Serial을 통해 파일을 수신하는 부분이었습니다.잘되는 부분이긴한데, 간혹 보면 파일이 다 수신되지 않는 상황이 있어서 코드를 보게 됬는데요, 머 일단 속도를 좀 높이기 위해 약간의 삽질(??)을 하고실행을 딱 시키는 순간.. 앗찔하더군요.. ㅡ_ㅡ;;;아.. 글쎄.. 한 Task가 Serial Read를 줄기차게 요청하는데, 문제는 이놈이CPU를 독점하고 있던 것이었습니다.쿠.. 쿨럭;;;;사실 독점할만할 이유가 없었기때문에 상당히 당황스러웠는데 코드를 보는순간그럴수도 있겠다는 생각이 들더군요.코드는 대략 이렇습니다.while( 1 ){ dwRead = read( dwSerialFd , vbBuffer , sizeof( vbBuffer );}int read( ... ){  InNotSwitchingSection();  readFromSerial(...);  OutNotSwitchingSection();}코드를 보시면 InNotSwitchingSection() 이 스위칭을 불가하는 부분이구요,OutNotSwitchingSection()이 다시 가능하게 하는 부분입니다.요게 계속 루프를 돌니까, Timer Interrupt가 발생해서 스위칭을 하려고 보니InNotSwithchingSection()이 되어 스위칭 불가한 상황이 많아서 거의 스위칭을 하지 못하고 있더군요.사실 소비하는 시간으로 보면 스위칭 가능보다 불가로 있는 시간이 더긴....그래서 운이 좋으면 스위칭 될때고 있고.. ㅡ_ㅡ;;;;; 그런 상황이었습니다..그래서 이를 해결하고자.. kOutNotSwitchingSection()에서 만약 태스크가 자기에게 할당받은 Time Slice를 다 사용했을 경우, 강제로 다른 태스크로 스위칭 해주어 골고루 CPU를 사용할 수 있게 수정했습니다. 지금까지는 별 이상이 없어보이는데, 역시 두고봐야하겠죠..흠... 하다보니.. 이런 경우도 생기는 군요..그럼 좋은하루 되세요 (__)
안녕하십니까 까마굽니다 (__)요즘 이사갈집을 수리하느라, 일요일마다 차출되서 노가다를 하고 있습니다.어찌나 빡신지.. 아주 죽겠습니다.. 쿠.. 쿨럭..원래 일요일은 쉬어줘야 하는데, 노가다를 하니 정말 정신이 없는.. ㅡ0ㅠ..원래 코딩도 거의 주말에 몰아서 했는데, 이젠 그시간도 안나고..빨리 이사를 가든지.. 머를 하나 해야겠습니다. 쩝쩝..간만에 삽질좀 하고 포대를 좀 날랐더니.. 삭신이 쑤시는 군요..오늘은 일찍가서 쉴수 있을지 모르겠습니다..에궁.. >_<그럼 좋은하루 되세요 (__)

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

어느정도 정리가 되고나면, Assembly Compiler를 만들어볼까 합니다.

마침 에디터는 만들어놓은게 있으니, compiler 만 있으면 내부적으로 코딩 + 테스트가 가능

할것 같네요. 어디까지나 계획입니다만, 잘될지... 으흣.. >_<

Comment - 일단 생각만 하고 있습니다. (__) 생각만..

안녕하십니까 까마굽니다 (__)오늘 역시 아는 사이트를 돌다보니 제가 초기에 보던 책이 개정판이 나온다고하더군요...참.. 멋집니다.. 저도 나이가 들어서 나중에 무언가를 남길 수 있으면 좋겠군요..아직 머 허접이다 보니, 아는것도 별로없고.. 개발하다가 뒤엎기가 일수...그래도 용케 여기까지 왔다고 생각되는군요.저도 한가할때마다 시간을 열심히 쪼개 여러부분에 투자를 해야 할것 같습니다.SCV의 본분을 다하기 위해.. 오늘도 내일도...홧팅 @0@/~~

+ Recent posts