加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 进程管理剖析--转

发布时间:2021-01-24 05:12:40 所属栏目:Linux 来源:网络整理
导读:地址:http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.html Linux 是一种动态系统,能够适应不断变化的计算需求。Linux 计算需求的表现是以 进程 ?的通用抽象为中心的。进程可以是短期的(从命令行执行的一个命令),也可以

存在于 Linux 的进程也可通过 Linux 调度程序被调度。虽然调度程序超出了本文的讨论范围,但 Linux 调度程序维护了针对每个优先级别的一组列表,其中保存了?task_struct?引用。任务通过?schedule?函数(在 ./linux/kernel/sched.c 内)调用,它根据加载及进程执行历史决定最佳进程。在本文的??小节可以了解有关 Linux 版本 2.6 调度程序的更多信息。

进程销毁可以通过几个事件驱动 — 通过正常的进程结束、通过信号或是通过对?exit?函数的调用。不管进程如何退出,进程的结束都要借助对内核函数?do_exit(在 ./linux/kernel/exit.c 内)的调用。此过程如图 2 所示。

实现进程销毁的函数的层次结构

do_exit?的目的是将所有对当前进程的引用从操作系统删除(针对所有没有共享的资源)。销毁的过程先要通过设置?PF_EXITING?标志来表明进程正在退出。内核的其他方面会利用它来避免在进程被删除时还试图处理此进程。将进程从它在其生命期间获得的各种资源分离开来是通过一系列调用实现的,比如?exit_mm(删除内存页)和?exit_keys(释放线程会话和进程安全键)。do_exit?函数执行释放进程所需的各种统计,这之后,通过调用?exit_notify?执行一系列通知(比如,告知父进程其子进程正在退出)。最后,进程状态被更改为?PF_DEAD,并且还会调用?schedule?函数来选择一个将要执行的新进程。请注意,如果对父进程的通知是必需的(或进程正在被跟踪),那么任务将不会彻底消失。如果无需任何通知,就可以调用?release_task?来实际收回由进程使用的那部分内存。

Linux 还在不断演进,其中一个有待进一步创新和优化的领域就是进程管理。在坚持 UNIX 原理的同时,Linux 也在不断突破。新的处理器架构、对称多处理(SMP)以及虚拟化都将促使在内核领域内取得新进展。其中的一个例子就是 Linux 版本 2.6 中引入的新的 O(1) 调度程序,它为具有大量任务的系统提供了可伸缩性。另外一个例子就是使用 Native POSIX Thread Library (NPTL) 更新了的线程模型,与之前的 LinuxThreads 模型相比,它带来了更为有效的线程处理。有关这些创新及其前景的更多信息,请参见?。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读