Linu进程编程.pptVIP

  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文档。上传文档
查看更多
Linu进程编程

Linux 进程编程 Linux Process program 定义 状态 进程ID 进程互斥 临界资源 临界区 进程同步 进程调度 抢占式,非抢占式 (1) 非抢占式优先权算法(又称不可剥夺调度:Nonpreemptive Scheduling) 在这种方式下,系统一旦将处理机(CPU)分配给运行队列中优先权最高的进程后,该进程便一直执行下去,直至完成; 或因发生某事件使该进程放弃处理机时,系统方可将处理机分配给另一个优先权高的进程。 这种调度算法主要用于批处理系统中,也可用于某些对实时性要求不严的实时系统中。 (2) 抢占式优先权调度算法(又称可剥夺调度:Preemptive Scheduling) 该算法的本质就是系统中当前运行的进程永远是可运行进程中优先权最高的那个。 在采用这种调度算法时,每当出现一新的可运行进程,就将它和当前运行进程进行优先权比较,如果高于当前进程,将触发进程调度。这种方式的优先权调度算法,能更好的满足紧迫进程的要求, 故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中。Linux也采用这种调度算法。 进程算法 程序的优先级: nice, renice [root @test /root ]# ps -l ??F S? ?UID? ?PID??PPID??C PRI??NI ADDR? ? SZ WCHAN??TTY? ?? ?? ? TIME CMD 100 S? ???0??5624??5606??0??70? ?0? ? -? ?608 wait4??pts/0? ? 00:00:00 bash 000 R? ???0??6944??5624??0??76? ?0? ? -? ?769 -? ?? ?pts/0? ? 00:00:00 ps ? ???PRI 代表这个程序『可被执行的优先级』越小越早被执行. ? ???NI 代表这个程序的 nice 值. 由于 PRI 是越小越快被执行,而由于我们加入 nice 值之后,将使得 PRI 变为: ? ? PRI(new) = PRI(old) + nice nice ? ?? ?语法: ? ?? ?[root @test /root ]# nice [-n number] command ? ?? ?? ?? ? 参数说明: ? ?? ?-n :就是后面那个 number 即为 nice 值! renice ? ?? ?语法: ? ?? ?[root @test /root ]# renice [number] PID ? ?? ?参数说明: ? ?? ?范例: ? ?? ?[root @test /root]# renice 5 234 死锁 获取进程ID 进程创建 父、子进程之间的区别 fork的返回值; 进程ID、不同的父进程ID; 父进程设置的锁,子进程不继承; 子进程的未决告警被清除; 子进程的未决信号集设置为空集。 思考运行结果 进程的结构 进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段” “代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。 堆栈段存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。 而数据段则存放程序的全局变量,常数以及动态数据分配的数据空间(比如用malloc之类的函数取得的空间)。 进程创建--vfork fork VS vfork 1. fork():子进程拷贝父进程的数据段,堆栈段 vfork():子进程与父进程共享数据段 2. fork()父子进程的执行次序不确定 vfork 保证子进程先运行,在调用 exec 或 exit 之前与父进程数据是共享的,在它调用 exec或 exit 之后父进程才可能被调度运行。 3. vfork 保证子进程先运行,在她调用 exec 或 exit 之后父进程才可能被调度运行。如果在 调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。 exit和_exit exit和_exit用于中止进程; _exit的作用:直接使进程停止运行,清除其使用的内存空间,并清除其在内核中的数据结构; exit与_exit函数不同,exit函数在调用exit系统之前要检查文件打开情况把文件缓冲区的内容写回文件中去。如调用printf()函数。 int main() { printf(this is a test\n) printf(test exit fun); exit(0); } 原因就是因为最后一句话上没有加上特殊的字符, 如换行和文件结束符,因为这个时候文件是存放再在缓冲

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档