chapter05 进程操作.pptVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chapter05 进程操作

* 精通Linux C编程 * 精通Linux C编程 重点内容: 进程概述 进程控制 第5章 进程操作 一、进程概述 进程现在已经成为操作系统和并发程序设计中的一个非常重要的概念。 进程的概念起源于上世纪60年代,但到底什么是进程目前尚无统一、确切的定义。一般认为程序是存储在磁盘上包含可执行机器指令和数据的静态实体,而进程是具有独立功能的可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的独立单位。或者说,进程是处于活动状态的计算机程序。 进程在其生存期内可能处于三种基本状态: (1)就绪状态。当进程已分配到除CPU以外的所有必要的资源后,只要能再获得处理机便可立即执行,这时的状态称为就绪状态。 (2)执行状态。指进程已获得处理机,其程序正在执行。 (3)阻塞状态。进程因发生某种事件(如I/O请求、申请缓冲空间等)而暂停执行时的状态,亦即进程的执行受到阻塞,故称这种状态为阻塞状态,有时也称为“等待”状态或“封锁”状态。 1、进程的基本概念 一、进程概述 进程在这几种状态之间相互转化,但对于用户是透明的。 进程是一个随执行过程不断变化的实体。和程序要包含指令和数据一样,进程也包含程序计数器和所有CPU寄存器的值,同时它的堆栈中存储着如子程序参数、返回地址以及变量之类的临时数据。当前的执行程序,或者说进程,包含着当前处理器中的活动状态。在多处理操作系统中,进程具有独立的权限与职责。如果系统中某个进程崩溃,不会影响到其余的进程。每个进程运行在各自的虚拟地址空间中,通过一定的通讯机制,它们之间才能发生联系。 1、进程的基本概念 一、进程概述 为了让Linux来管理系统中的进程,每个进程用一个task_struct数据结构来表示(task即任务,它与进程在Linux中可以混用)。数组task包含指向系统中所有task_struct结构的指针。 这意味着系统中的最大进程数目受task数组大小的限制,缺省值一般为512。创建新进程时,L1nux将从系统内存中分配一个task_struct结构井将其加入task数组。当前运行进程的结构用current指针来指示。 task_struct数据结构庞大而复杂,但它可以分成如下一些功能组成部分: 状态(state):除了上述三种进程的基本状态之外,Linux进程还有stopped和加zombie状态,在后续章节再做介绍; 调度信息:系统根据这些信息判定哪个进程最迫切需要运行; 进程标志号(Identifiers):用来区分进程的标识。 进程间通信机制:Linux支持经典的Unix IPC机制,如信号、管道和信号灯以及SystemV中机制,包括信号量、消息队列和共享内存。 2、Linux进程 一、进程概述 在Linux系统中,每一个进程都有唯一的进程识别号(process ID),系统就根据这些进程识别号来管理进程。除此之外,每个进程还有一个真实用户识别号(real user ID)、一个真实组识别号(real group ID)、 一个有效用户识别号(effective user ID)和一个有效组识别号(effective group ID)。一般情况下,真实用户ID与有效用户ID是相同的,都是运行该进程的用户ID;当我们设置了set_user_ID标记位时,真实用户ID仍为运行进程的用户ID,但有效用户ID变成当前运行文件的所有者的ID。组识别号也是这样,区别就是相应的标记位为set_group_ID。 可以调用下列函数取得进程的各种识别号: uid_t getuid(); /*返回真实用户识别号*/ uid_t getpid(); /*返回真实组识别号*/ uid_t geteuid(); /*返回有效用户识别号*/ uid_t getepid(); /*返回有效组识别号*/ pid_t getppid(); /*返回父进程识别号*/ pid_t getpgrp(); /*返回进程组识别号*/ 3、进程的识别号(ID) 一、进程概述 在Linuxx系统中,进程有两种运行模式:用户模式和系统模式。用户模式的权限比系统模式下的小很多,对于一般的进程,都是部分时间运行于用户模式,部分时间运行于系统模式。进程通过系统调用在这两种模式之间切换;当系统调用发生时,进程将由用户模式切换到系统模式继续执行;当系统调用返回时,进程将由系统模式切换回用户模式。 在Linux系统中,进程不能被抢占。只要能够运行它们就不会被停止。

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档