페이지 디렉토리, 페이지 오프셋 이용해서 어떻게 찾아가는지???
vaddr.h, mmu.h
pml4는 디렉토리와 같다
임의의 pml4도 n개의 엔트리들로 구성되어있다
어떤 임의의 pml4의 시작부분부터 N칸만큼 이동하면, N번째 임의의 pml4에 대해 N번째 엔트리가 나올 것이다
(= 어떤 pml4의 기준주소로부터 offset만큼 이동하면 해당 pml4엔트리를 만날 수 있다 )
KERN_BASE = 42 하드코딩의 의미
유저메모리.. 나는 어디에 저장해(??)
PTE(페이지 테이블 엔트리)
페이지 테이블, 페이지 디렉토리는 둘다 RAM에있는가?
Linux 커널에서 사용자 공간 메모리에 액세스하는 방법은 무엇입니까?
NOT_REACHED() 의 의미??
여기오면 커널이 혼란스러워함(헐… 여기 오면안되는데…. 그냥 패닉 내야겠당ㅎㅎ)
thread 구조체에 All_elem 언제쓰누???
프로세스 디스크립터, 파일 디스크립터 테이블
**fdt
(File Descriptor Table)PageFault를 이용하여 bad-ptr-attack(string copy)을 방어하려고 할 때, 왜 rax
레지스터를 0Xffffffff
로 설정하여 주는지?
0xffffffff = -1임, 어셈블리로 -1 set 쉽게 해주려고
그냥 exit(-1)을 빠르게 하기 위한 장치임
이번 과제에서 HEAP 영역을 쓰면 안 되는 걸까??
Page할당은 힙도 스택도 아닌 영역에 할당된다
syscall.c의 case문에서 a label can only be part of a statement and a declaration is not a statement
에러가 뜸
exec에서는… fn_copy에 palloc을 하고, 거기에 strlcpy를 해준다. 왜 할당된 페이지에 해주는가? 거기에 프로그램이 올라가지는 않겠지? 단순 이름이 너무 길까봐 palloc을 해주는건가? malloc으로는?해주면 안되나?
우리의 fork가 잘 안되었던 이유?
아래와 같은 레지스터들을 복사해야함
하지만 syscall을 통해 건내받은 레지스터들에는 충분한 인자들이 전달되지 않았음