linux fork에서 COW(Copy-on-write) 기능 어떻게 없애나요?
글쓴이: romanEgloo / 작성시간: 월, 2012/03/05 - 2:50오후
OS 과제 중에 하나인데, 도대체 해결이 안되서 질문드립니다. 도와주세요~ㅜㅜ
시스템 콜을 새로 만들어서 커널 컴파일을 하는건데요, 새로 만들 시스템 콜은 dumbfork입니다.
리눅스에서는 fork를 할때, address space를 통채로 복사하지 않고, 메모리 영역을 자식 프로세스랑 공유한다고 배웠습니다.
덤포크는 이러한 기능없이 프로세스를 통채로 복사하도록 하는 시스템 콜인데요. clone_flags중에 하나를 꺼 버리면 될 것 같은데,
정확하게 어떤게 그러한 역할을 하는지도 모르겠고, 또 어떻게 do_fork를 불러야 하는지도 모르겠습니다.
일단은 이런식으로 만들었는데,
asmlinkage long sys_dumbfork(struct pt_regs *regs) { printk(KERN_NOTICE "flags: %d", regs->flags); return do_fork(CLONE_VM, regs->sp, regs, 0, NULL, NULL); }
Killed라고 하면서 끝내버리네요.
sys_clone같은 경우는,
return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr);
이런 식으로 do_fork를 호출하는데, 넘겨주는 인자들은 어디서 어떻게 구하는 건지 전혀 모르겠어요..
c 프로그래밍도 초보인데, do_fork.c 보고 있자니 머리가 아픕니다. ㅜㅜ
Forums:
댓글 달기