nckernel  0.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
해야 할 일

Page frame 관리자 구현할 것

현재 Page frame 을 할당하고 해제하기 위해 buddy allocator 만 구현된 상태이이다. 각 page frame 이 어떤 thread 를 위해 할당 되었는지, 또 reference 하고 있는 object 들은 몇 개나 있는지에 대한 관리가 필요하다.

Kernel thread & user process

커널에서 쓰레드를 생성하는 것은 pthread_create 함수로 제공하고, 유저 프로세스를 생성하는 것은 fork 로 제공하고, 실행 바이너리를 로딩하는 것은 exec 로 제공하자.

Global calloc (size_t nmemb, size_t size)
calloc 의 구현에 대한 정확한 요구사항 파악이 필요함 현재는 그냥 member 개수와 size 를 곱해서 실제 heap 할당 크기를 구하는 것으로 한다. malloc 을 그대로 사용한다.
Group ctype
locale 에 따라 각 함수의 동작이 달라질 수 있도록 하자.
Global execl (const char *path, const char *arg,...)
path 에 해당 하는 파일을 읽어서, 알맞은 binfmt 객체를 찾은 후, 실행 코드와 데이터들을 메모리에 로딩하고, 사용자 쓰레드용 스택 을 구성하고 thread->esp 를 갱신한 후 thread switching 이 발생 하도록 유도하여, user level thread 로 context switching 되도록 한다.
Global execle (const char *path, const char *arg,...)
path 에 해당 하는 파일을 읽어서, 알맞은 binfmt 객체를 찾은 후, 실행 코드와 데이터들을 메모리에 로딩하고, 사용자 쓰레드용 스택 을 구성하고 thread->esp 를 갱신한 후 thread switching 이 발생 하도록 유도하여, user level thread 로 context switching 되도록 한다.
Global execlp (const char *path, const char *arg,...)
path 에 해당 하는 파일을 읽어서, 알맞은 binfmt 객체를 찾은 후, 실행 코드와 데이터들을 메모리에 로딩하고, 사용자 쓰레드용 스택 을 구성하고 thread->esp 를 갱신한 후 thread switching 이 발생 하도록 유도하여, user level thread 로 context switching 되도록 한다.
Global execv (const char *path, char *const argv[])
path 에 해당 하는 파일을 읽어서, 알맞은 binfmt 객체를 찾은 후, 실행 코드와 데이터들을 메모리에 로딩하고, 사용자 쓰레드용 스택 을 구성하고 thread->esp 를 갱신한 후 thread switching 이 발생 하도록 유도하여, user level thread 로 context switching 되도록 한다.
Global execvp (const char *path, char *const argv[])
path 에 해당 하는 파일을 읽어서, 알맞은 binfmt 객체를 찾은 후, 실행 코드와 데이터들을 메모리에 로딩하고, 사용자 쓰레드용 스택 을 구성하고 thread->esp 를 갱신한 후 thread switching 이 발생 하도록 유도하여, user level thread 로 context switching 되도록 한다.
Global execvpe (const char *file, const char *const argv[], char *const envp[])
path 에 해당 하는 파일을 읽어서, 알맞은 binfmt 객체를 찾은 후, 실행 코드와 데이터들을 메모리에 로딩하고, 사용자 쓰레드용 스택 을 구성하고 thread->esp 를 갱신한 후 thread switching 이 발생 하도록 유도하여, user level thread 로 context switching 되도록 한다.
Global pthread_cancel (pthread_t thread)
pgd 와 rpgd 에 할당 된 Page table pointer 및 page frame 들도 모두 해제 해 주어야 한다.