linux内核学习-7重要函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
来源:互联网 发布:windows集中管理 编辑:程序博客网 时间:2024/04/30 14:04
该程序主要描述了进程(任务)终止和退出的处理事宜。主要包含进程释放、会话(进程组)终止
和程序退出处理函数以及杀死进程、终止进程、挂起进程等系统调用函数。还包括进程信号发送函数
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 所指的子进程早已退出(已成所
谓的僵死进程),则本调用将立刻返回。子进程使用的所有资源将释放。该函数的具体操作也要根据其参
和程序退出处理函数以及杀死进程、终止进程、挂起进程等系统调用函数。还包括进程信号发送函数
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()是用于创建并复制进程的代码段和数据段以及环境。在进程复制过程中,主要牵涉
到进程数据结构中信息的设置。
0 0
- linux内核学习-7重要函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 main函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 init函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 fork()函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-3 main.c(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-4kernal目录(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-5任务调度(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-6信号量(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习- 字符设备块设备uart rs232(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- linux内核学习-宿主机为linux、windows分别实现VMware三种方式上网(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- 在对话框上增加新浪微博分享或关注按钮的源代码
- 关于新浪微博粉丝关注分享消息队列等架构的调研资料
- 程序员学习资料分享---爱分享的程序员(新浪微博)
- 【Linux技术】几个重要的linux内核文件
- (Windows Phone 7)人人网分享和新浪微博分享的整合封装
- 将一切寂寞的岁月,叫做青春
- Linux内核中断/异常的注册(重要中断函数的查找方法,Linux 2.6.11)
- 学习android笔记(7):实现微信和新浪微博分享(全)
- 文章标题
- 视图篇——前言
- 郑州到威海旅游景点推荐
- 黑马程序员关于c语言数组详解
- Activity 實現底部彈框
- linux内核学习-7重要函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))
- 初始化、赋值及内存模型
- poj 3345 Bribing FIPA
- 在windows系统下配置phpstorm下的ideavim
- Ant 打包黑框闪退, 并且没有报错。
- UML类图
- 解决provisional headers are shown的过程
- int or double 怎样为空学习
- 一个C++的内存池和内存管理的实现(八)