网站大量收购独家精品文档,联系QQ:2885784924

操作系统第2次上机_1.pdfVIP

  1. 1、本文档共18页,可阅读全部内容。
  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文档。上传文档
查看更多
Linux 进程与线程 1. 实验目的 a. 熟悉 Linux 多线程和多线程 b. 熟悉 Linux 进程相关的系统调用 c. 了解线程之间的同步机制 2. 进程 基本概念 进程是指一个具有独立功能的程序在某个数据集上的一次动态执行过程, 它是系统进行资源分配和调度的基本单元。一次任务的运行可以并发激活多个进 程,这些进程相互合作来完成该任务的一个最终目标。进程具有并发性、动态性、 交互性、独立性和异步性等主要特性。 进程和程序是有本质区别的:程序是静态的一段代码,是一些保存在非易失性 存储器的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它 是程序执行的过程,包括动态创建、调度和消亡的整个过程,它是程序执行和资 源管理的最小单位。 进程状态 ● 运行状态(TASK_RUNNING):进程当前正在运行,或者正在运行队列中 等待调度。 ● 可中断的阻塞状态(TASK_INTERRUPTIBLE ):进程处于阻塞(睡眠) 状态, 正在等待某些事件发生或能够占用某些资源。处在这种状态下的进程可以被信号 中断。接收到信号或被显式的唤醒呼叫(如调用 wake_up 系列宏:wake_up、 wake_up_interruptible 等)唤醒之后,进程将转变为 TASK_RUNNING 状态。 ● 不可中断的阻塞状态(TASK_UNINTERRUPTIBLE ): 此进程状态类似于可 中断的阻塞状态(TASK_INTERRUPTIBLE ),只是它不会处理信号,把信号传 递到这种状态下的进程不能改变它的状态。在一些特定的情况下(进程必须等待, 直到某些不能被中断的事件发生),这种状态是很有用的。只有在它所等待的事 件发生时,进程才被显示的唤醒呼叫唤醒。 ● 可终止的阻塞状态(TASK_KILLABLE ):该状态的运行机制类似于 TASK_UNINTERRUPTIBLE ,只不过处在该状态下的进程可以响应致命信号。 它可以替代有效但可能无法终止的不可中断的阻塞状态 (TASK_UNINTERRUPTIBLE), 以及易于唤醒但安全性欠佳的可中断的阻塞状 态 TASK_INTERRUPTIBLE )。 ● 暂停状态(TASK_STOPPED ):进程的执行被暂停,当进程收到 SIGSTOP、 SIGSTP、SIGTTIN、SIGTTOU 等信号时,就会进入暂停状态。 ● 跟踪状态(TASK_TRACED ):进程的执行被调试器暂停。当一个进程被另 一个监控时(如调试器使用 ptrace() 系统调用监控测试程序),任何信号都可以 把这个进程置于跟踪状态。 ● 僵尸状态(EXIT_ZOMBIE):进程运行结束,父进程尚未使用 wait 函数族 (如调用 waitpid() 函数) 等系统调用来 “收尸” ,即等待父进程销毁它。处在该状 态下的进程 “尸体” 已经放弃了几乎所有的内存空间,没有任何可执行代码,也 不能被调度,仅仅在进程列表中保留一个位置,记载该进程的推出状态等信息供 其他进程收集。 ● 僵尸撤销状态(EXIT_DEAD):这是最终状态,父进程调用 wait 函数族 “收 尸”后,进程彻底由系统删除。 它们之间的转换关系如图 2 所示: 进程的创建、执行、终止 fork() 函数 :在 Linux 中创建一个新进程的唯一方法是使用 fork() 函数 exec 函数族: 这 6 个函数在函数名和使用语法的规则上都有细微的区别,下面就从可执行文件 查找方式、参数传递方式和环境变量这几个方面进行比较。 ● 查找方式:表 1 中的前 4 个函数的查找方式都是完整的文件目录路径,而最 后两个函数(也就是以 p 结尾的两个函数)可以只给出文件名,系统就会自动按照 环境变量 “$PATH” 所指定的路径进行查找。 ● 参数传递方式:exec 函数族的参数传递有两种:一种是逐个列举的方式,而 另一种则是将所有参数整体构造指针数组传递。在这里是以函数名的第 5 位字

文档评论(0)

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

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

1亿VIP精品文档

相关文档