Linux原理与结构 作者 郭玉东 全书 第7章.pptVIP

Linux原理与结构 作者 郭玉东 全书 第7章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
  在操作系统所营造的虚拟时空中,活动的主角是进程。进程(Process)是执行中的计算机程序、是用户在操作系统中的代理(替用户工作)、是操作系统中一切活动的发起者、是内核的主要服务对象。   操作系统内核的主要任务是保证进程更好地运行,毫无疑问,进程管理是操作系统工作的核心。进程管理部分所管理的对象是进程,所管理的资源是处理器,要达到的主要目标是提高处理器的利用率,尽可能减少处理器资源的浪费;平衡进程之间的关系,尽可能公平、合理地分配处理器资源;提高进程的运行速度,尽可能缩短进程的周转周期; 提高系统的反应能力,尽可能缩短进程的响应时间;提高进程的抗干扰性,实现进程间的隔离与保护;提供进程之间的同步、互斥和通信手段,维护资源的一致性,协调进程的前进步伐并允许进程间相互通信等等。   作为操作系统中的主体,进程有自己的生命周期。除第0号进程之外,系统中的其它进程都是动态创建的。新进程可以与父进程执行同样的程序,也可在运行过程中加载并执行新的程序。进程在运行过程中访问到的所有地址构成了它的虚拟地址空间,进程的程序、数据等都存储在虚拟地址空间中。为进程管理虚拟地址空间的是虚拟内存管理器,为进程提供处理器的是调度器。 运行中的进程需与其它进程互斥、同步和通信。完成任务的进程需要终止。因而进程管理子系统又被分割成进程创建、进程调度、进程终止、进程虚拟内存管理、进程互斥与同步、进程间通信等部分。      在早期的Linux系统中,进程扮演着两个角色,一是资源分配的实体,二是调度运行的实体。Linux以进程为单位分配资源,包括内存、设备等,又以进程为单位调度运行(处理器仅分配给进程)。获得了足够资源又获得了处理器的进程可以执行它的程序,等待资源尤其是等待处理器资源的进程无法执行程序,只能暂停等待。   新版本的Linux借鉴了其它操作系统的成功经验,允许将进程的上述两个角色分开,资源分配的实体仍被称为进程,但调度执行的实体被改称为线程(Thread)或轻量级进程(Lightweight Process)。Linux以进程为单位分配资源,以线程为单位调度运行。属于一个进程的所有线程称为一个线程组,一个线程组中的所有线程共享进程的资源,如内存、文件、信号处理、设备等。然而Linux又没有严格区分它的进程和线程。缺省情况下,Linux创建的都是进程,只有在特别声明时,新创建的进程才被作为创建者的同组线程。一个线程组中的第一个线程通常被作为进程创建, 称为领头进程,也就是该线程组的进程,拥有资源。线程组中的其它线程通常是被领头进程特别创建的进程,与领头进程共享资源,但它们是领头进程的兄弟而不是儿子,与领头进程拥有同一个父进程。在表示上,进程与线程完全一致,调度器同等对待进程与线程。传统意义上的Linux进程既是进程又是线程,它的线程组中仅有自己一个成员。在以下的讨论中,除非特殊需要,不再专门区分进程和线程。   进程的行为取决于它执行的程序,但进程又不等同于程序,用程序的代码和数据均无法刻画进程,必须为进程定义专门的管理结构。操作系统通常用进程控制块(Process Control Block,PCB)描述进程,也通过进程控制块管理进程。进程控制块是进程存在的唯一标识,其中含有进程的描述信息和控制信息,是进程动态性的集中体现。不同操作系统对进程控制块的叫法也不相同,Linux将自己的进程控制块称为task_struct。   除task_struct结构之外,Linux还为每个进程定义了一个系统堆栈。当进程运行在用户态时,它使用用户堆栈,当进程运行在核心态时,它使用系统堆栈。 由于每个进程都会在核心态运行,因而每个进程都必须有系统堆栈。在早期的版本中,进程的系统堆栈与它的task_struct结构共用8 KB的物理内存,task_struct结构位于首部,系统堆栈位于尾部。当处理器在核心态运行时,它的ESP总是位于当前进程的系统堆栈中,因而将ESP的低13位清0就可得到当前进程的task_struct结构。   在随后的发展中,task_struct结构越来越大,已不适合再驻留在系统堆栈中,因而Linux为每个进程另外准备了一个thread_info结构,用于替代task_struct驻留在进程的系统堆栈中。结构thread_info中的task指针指向进程的task_struct结构,而结构task_struct中的stack指针指向进程的thread_info结构,如图7.1所示。 图7.1 进程的系统堆栈与管理结构   结构thread_info中还包含如下信息:   (1) 标志flags,记录需要引起特别注意的信息,如有待处理信号、需再调度等。   (2) 处理器号cpu,记录运行该进程的当前处理器号。   (3) 抢占计数p

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档