c语言多进程多线程编程.pdfVIP

  1. 1、本文档共67页,可阅读全部内容。
  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文档。上传文档
查看更多
C 语言多进程编程 一. 多进程程序的特点 进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处 于活动状态的计算机程序。进程作为构成系统的基本细胞,不仅是系统内部独立运行的实体, 而且是独立竞争资源的基本实体。 进程是资源管理的最小单位,线程是程序执行的最小单位。进程管理着资源 (比 如 cpu、内存、文件等等),而将线程分配到某个 cpu 上执行。在操作系统设计 上,从进程演化出线程,最主要的目的就是更好的支持多处理器系统和减小上下 文切换开销。 进程的状态 系统为了充分的利用资源,对进程区分了不同的状态.将进程分为新 建,运行,阻塞,就绪和完成五个状态. 新建 表示进程正在被创建, 运行 是进程正在运行, 阻塞 是进程正在等待某一个事件发生, 就绪 是表示系统正在等待 CPU 来执行命令, 完成 表示进程已经结束了系统正在回收资源. 由于 UNIX 系统是分时多用户系统, CPU 按时间片分配给各个用户使用,而在实质上应 该说 CPU 按时间片分配给各个进程使用, 每个进程都有自己的运行环境以使得在 CPU 做进 程切换时不会忘记该进程已计算了一半的半成品”. 以DOS 的概念来说, 进程的切换都 是一次DOS 中断处理过程, 包括三个层次: 1) 用户数据的保存: 包括正文段(TEXT), 数据段(DATA,BSS), 栈段(STACK), 共享内 存段(SHARED MEMORY) 的保存. 2) 寄存器数据的保存: 包括 PC(program counter,指向下一条要执行的指 令的地址), PSW(processor status word,处理机状态字), SP(stack pointer,栈指针), PCBP(pointer of process control block,进程控制块指针), FP(frame pointer,指向栈中一个函数的 local 变量的首地址), AP(augument pointer,指向栈中函数调用的实参位置), ISP(interrupt stack pointer,中断栈指针), 以及其他的通用寄存器等. 3) 系统层次的保存: 包括 proc,u,虚拟存储空间管理表格,中断处理栈.以便于该进程再一次得到 CPU 时 间片时能正常运行。 既然系统已经处理好所有这些中断处理的过程, 我们做程序 还有什么要担心 的呢? 我们尽可以使用系统提供的多进程的特点, 让几个程序精 诚合作, 简单而又高效地把结果给它搞出来。 另外,UNIX 系统本身也是用 C 语言写的多进程程序,多进程编程是UNIX 的特点,当我们 熟悉了多进程?将会对 UNIX 系统机制有一个较深的认识.首先我介绍一下多进程程序的 一些突出的特点: 1.1 并行化 一件复杂的事件是可以分解成若干个简单事件来解决的, 这在程序员的大脑中早就形 成了这种概念, 首先将问题分解成一个个小问题, 将小问题再细分, 最后在一个合适的规模 上做成一个函数. 在软件工程中也是这么说的. 如果我们以图的方式来思考, 一些小问题的 计算是可以互不干扰的, 可以同时处理, 而在关键点则需要统一在一个地方来处理, 这样程 序的运行就是并行的, 至少从人的时间观念上来说是这样的. 而每个小问题的计算又是较简 单的. 1.2 简单有序 这样的程序对程序员来说不亚于管理一班人, 程序员为每个进程设计好相应的功能, 并 通过一定的通讯机制将它们有机地结合在一起, 对每个进程的设计是简单的, 只在总控部分 小心应付(其实也是蛮简单的), 就可完成整个程序的施工. 1.3.互不干扰 这个特点是操作系统的特点, 各个进程是独立的, 不会串位. 1.4.事务化 比如在一个数据电话查询系统中, 将程序设计成一个进程只处理一次查询即可, 即完成 一个事务. 当电话查询开始时, 产生这样一个进程对付这次查询; 另一个电话进来时, 主控 程序又产生一个这样的进程对付, 每个进程完成查询任务后消

文档评论(0)

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

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

1亿VIP精品文档

相关文档