您的位置:首页 > 运维架构 > Linux

linux内核学习-7重要函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))

2015-04-21 12:12 330 查看
该程序主要描述了进程(任务)终止和退出的处理事宜。主要包含进程释放、会话(进程组)终止

和程序退出处理函数以及杀死进程、终止进程、挂起进程等系统调用函数。还包括进程信号发送函数

send_sig()和通知父进程子进程终止的函数tell_father()。

释放进程的函数release()主要根据指定的任务数据结构(任务描述符)指针,在任务数组中删除

指定的进程指针、释放相关内存页并立刻让内核重新调度任务的运行。

进程组终止函数kill_session()通过向会话号与当前进程相同的进程发送挂断进程的信号。

更多电子书教程下载请登陆http://down.zzbaike.com/ebook

本站提供的电子书教程均为网上搜集,如果该教程涉及或侵害到您的版权请联系我们。

第5 章 内核代码 linux/kernel/

117

系统调用sys_kill()用于向进程发送任何指定的信号。根据参数pid(进程标识号)的数值的不同,

该系统调用会向不同的进程或进程组发送信号。程序注释中已经列出了各种不同情况的处理方式。

程序退出处理函数do_exit()是在系统调用的中断处理程序中被调用的。它首先会释放当前进程的

代码段和数据段所占的内存页面,然后向子进程发送终止信号SIGCHLD。接着关闭当前进程打开的所有

文件、释放使用的终端设备、协处理器设备,若当前进程是进程组的领头进程,则还需要终止所有相关

进程。随后把当前进程置为僵死状态,设置退出码,并向其父进程发送子进程终止信号。最后让内核重

新调度任务的运行。

系统调用waitpid()用于挂起当前进程,直到pid 指定的子进程退出(终止)或者收到要求终止该

进程的信号,或者是需要调用一个信号句柄(信号处理程序)。如果pid 所指的子进程早已退出(已成所

谓的僵死进程),则本调用将立刻返回。子进程使用的所有资源将释放。该函数的具体操作也要根据其参

数进行不同的处理。

fork()系统调用用于创建子进程。Linux 中所有进程都是进程0(任务0)的子进程。该程序是

sys_fork()(在kernel/system_call.s 中定义)系统调用的辅助处理函数集,给出了sys_fork()系统

调用中使用的两个C 语言函数:find_empty_process()和copy_process()。还包括进程内存区域验证与

内存分配函数verify_area()。

copy_process()是用于创建并复制进程的代码段和数据段以及环境。在进程复制过程中,主要牵涉

到进程数据结构中信息的设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐