사용가능 함수
<geekos/string.h>
memcpy
strcpy
snprintf
<geekos/malloc.h>
malloc
free
<geekos/screen.h>
스택의 한계
각 스레드마다 4K Stack 제한이 있음.
Memory Protection
protect mode가 아니여서 코딩 할 때 조심 해야한다.
Project를 진행하면서 좋은 습관..
Use Assertions : <geekos/kassert.h> KASSERT()
BOOL TYPE 변수들을 확인 할 때 사용된다. 만약에 false가 나오면 커널을 멈추고 Message를 호출해준다.
--> 오류 수정시 편하다.
Use Print Statements
현재 상황을 눈으로 보는것 만큼 좋은것은 없다. 물론.. 눈으로 본다는 것은 print와 같은 함수로
상황을 체크하는 것이다.
Test Early and often
약간.. 자신을 믿지 말라는것 같다. 커널 코드는... 프로그래머가 생각하는 것 이상으로 복잡해서 어디서 왜 문제 생겼는지 알기 가 어렵다.
그러니 하나하나 체크하면서 코드를 완성해나가자.. 물론 짱짱맨들은. ㅠ
GeekOS_Memory
1. Page
Alloc_Page
Free_Page
사용가능하다. 하지만 Chapter9에서 Virtual Memory 파트를 진행해야지만, 우리가 아는 Page 처럼 사용가능하다.
지금 진행 하지 않은 상태에서는 작고 고정된 영역의 페이지만 할당 된다.
2. Heap
GeekOS_Interrupts
인터럽트는 급하게 처리해야 할 일을 CPU에게 알려주고 처리 할 수있는 handler로 배당 시켜주는것.
종류에는..
Exceptions
Faults
Hardware Interrupts
Software Interrupts
GeekOS_Thread
g_currentThread로 전역 커널 스레드에 접근 가능
그리고 스레드의 동기화를 맞출수 있다.
<geekos.synch.h>
struct Mutex lock
Mutex_Lock(&lock)
code
Mutex_Unlock(&lock)
Condition 변수는 스레드가 대기 할 수있는 조건을 나타냄.
Keboard 관련 내용
Wait_For_Key()함수가 호출되면 Thread는 key event를 기다린다.
그리고 해당 함수의 return type은 Keycode 타입니다.
계속 추가... 해석만 하려니 재미가 없다.
'학부_대학원 > 대학원_학과공부정리' 카테고리의 다른 글
[Lecture] LaTeX - 3 (0) | 2017.03.04 |
---|---|
GeekOS - pro0 (0) | 2017.03.03 |
가상화 -xen(2) (0) | 2017.03.03 |
가상화- xen (1) | 2017.03.02 |
[Lecture] LaTeX - 2 (0) | 2017.03.01 |