Post date: Nov 30, 2016 5:44:28 AM
process관련 마지막 강좌이다..
process 종료는 의외로 간단하다. 실제로 소스를 보더라도 몇라인 되지도 않는다.. 간단히 보자..
먼저 process가 종료할게 되면 exit.c의 do_exit()가 호출되어진다.
1. 먼저 task_struct의 flag를 PF_EXITING 으로 자신이 종료 중임을 알린다.
2. __exit_mm()을 통해 process가 가지고 있던 mm_struct 해제 하고
3. ext_sem()를 통해 세마포어 해제
4. __exit_files()를 통해 파일 서술자 참조 카운트 감소
5. __exit_fs()를 통해 파일 시스템 참조 카운트 감소
6. task_struc.state = TASK_DEAD를 설정한 후 sched.c 의 schedule 호출
7. schedule()은 deactivate()함수를 통해 runqueue에서 삭제 한다...
<< 이미지 클릭 시 확대 >>
process의 생성과 종료 , wait와 wake_up 의 과정을 간략하게 도식화 하면 아래와 같다.
<< 이미지 클릭 시 확대 >>