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()是用于创建并复制进程的代码段和数据段以及环境。在进程复制过程中,主要牵涉
到进程数据结构中信息的设置。
和程序退出处理函数以及杀死进程、终止进程、挂起进程等系统调用函数。还包括进程信号发送函数
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()是用于创建并复制进程的代码段和数据段以及环境。在进程复制过程中,主要牵涉
到进程数据结构中信息的设置。
相关文章推荐
- linux内核学习-3 fork()函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 main函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-5任务调度(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-宿主机为linux、windows分别实现VMware三种方式上网(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习- 字符设备块设备uart rs232(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-6信号量(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 init函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-4kernal目录(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 main.c(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- [技术分享] 20110803,Web 代理客户端通过 TMG ISA 不能访问新浪微博等网站
- pytho 4000 n之pandas库学习常用函数
- 维基百科WikiPedia 技术架构学习分享
- Linux内核的ioctl函数学习
- Linux内核的ioctl函数学习
- 今天刚刚注册博客,希望可以努力学习,分享技术文档
- 这里只是记录我的学习历程,技术有限,仅用于备份和分享
- 【传智播客郑州校区分享】职场小白到传智播客郑州校区学习变身技术达人
- Linux内核的ioctl函数学习
- [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构