본문 바로가기

학부_대학원/대학원_학과공부정리

GeekOS - pre knowledge

SMALL
GEEKOS 사전 지식?

사용가능 함수

<geekos/string.h>

memcpy

strcpy

snprintf

<geekos/malloc.h>

malloc

free

<geekos/screen.h>

Print


스택의 한계

각 스레드마다 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 타입니다.



계속 추가... 해석만 하려니 재미가 없다.


LIST

'학부_대학원 > 대학원_학과공부정리' 카테고리의 다른 글

[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