官术网_书友最值得收藏!

exit

Every process must end. Process termination is done either by the process calling exit() or when the main function returns. A process may also be terminated abruptly on receiving a signal or exception that forces it to terminate, such as the KILL command, which sends a signal to kill the process, or when an exception is raised. Upon termination, the process is put into exit state until the immediate parent reaps it.

The exit calls the sys_exit system call, which internally calls the do_exit routine. The do_exit primarily performs the following tasks (do_exit sets many values and makes multiple calls to related kernel routines to complete its task):

  • Takes the exit code returned by the child to the parent.
  • Sets the PF_EXITING flag, indicating process exiting.
  • Cleans up and reclaims the resources held by the process. This includes releasing mm_struct, removal from the queue if it is waiting for an IPC semaphore, release of filesystem data and files, if any, and calling schedule() as the process is no longer executable.

After do_exit, the process remains in zombie state and the process descriptor is still intact for the parent to collect the status, after which the resources are reclaimed by the system.

主站蜘蛛池模板: 阿荣旗| 伊宁县| 宜丰县| 长乐市| 开原市| 花莲市| 土默特左旗| 方正县| 平陆县| 蒙山县| 增城市| 巴东县| 宁海县| 缙云县| 二连浩特市| 淮安市| 宣武区| 桑日县| 丁青县| 武汉市| 庐江县| 壶关县| 昭平县| 蒙阴县| 镶黄旗| 开阳县| 苏州市| 中江县| 乌兰浩特市| 嵩明县| 元朗区| 海盐县| 万荣县| 顺昌县| 府谷县| 梁山县| 壤塘县| 微山县| 新安县| 永兴县| 双江|