system call(fork)에대해 궁급하여 글을 올립니다....(__)
글쓴이: hogi2271 / 작성시간: 금, 2006/11/17 - 11:31오후
이번에 프로세스생성과정을 공부하게 되었습니다.
bash의 명령어 처리부분을 이해하고 마지막으로 프로세스 생성과정을 이해하려고 하는데...
bash에서 fork()를 호출 하고 ..... fork()에 의해 마지막에 do_fork()까지간다는것은 책으로 훑어 감은 잡았습니다.
do_fork()에 대한 소스는 있으니 그걸 부석하면 되는데....
fork()에서 do_fork()까지 가는 과정이 궁급합니다...
fork()도 하나의 system call이니 .. 그에 따른 인터럽터가 발생할것이고 핸들러가 .. 동작 할껏인데(제가 배운 지식이 한하여)..;;;
커널 소스에서(unstd.h)에서 #define fork 2 이정도만 나와있고 그이후부터가 모호 합니다.;;;;;;;
fork() -> ..->sys_fork()->..->clon()->.. ->do_fork() ;;;;;;;
바쁘신 시간 조금만 쪼개어 주시면 감사하겠습니다.(__) 감기조심하세요~~~
Forums:
응용프로그램에서
응용프로그램에서 fork()를 호출하면 (fork 뿐만 아닌 모든 시스템콜을 호출하면) 0x80 인터럽트가 걸립니다.(x86 가정) 80 인터럽트는 entry.S 파일의 system_call() 함수를 호출하고 이 함수에서 호출된 시스템콜의 번호를 추출하고 이에 따른 커널 함수, 여기서는 sys_fork(), 를 sys_call_table에서 찾아서 호출합니다.
sys_fork에서 (아마도) do_fork를 호출 할 겁니다.
그 후에 과정은 분석 하시면 될것이고...
질문에 대한 답이 되었는지 모르겠습니다.
감사합니다.(__)
원하는 답이 충분히 되었습니다.
^^/
감사합니다.(__)
원하는 답이 충분히 되었습니다.
^^/
댓글 달기