- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单车道长桥设置信号量mutex=1,公共变量Lcount=0,Rcount=0 自左向右的车 If(Lcount==0) P(mutex); Lcount++; 通过桥; Lcount--; If(Lcount==0) V(mutex); 2.8.2 Linux的进程控制 Linux中的进程控制是通过系统调度来实现的。 (1)进程的创建 (2)进程的执行 (3)进程的等待 (4)进程的终止 2.8.3 Linux的进程调度 Linux的run_queue队列中包含了系统中所有处于运行状态的进程(该队列包括正在执行的进程和可以执行的等待CPU资源的进程),进程调度的任务就是在run_queue队列中选出一个进程在处理机上运行。进程调度策略决定了系统对资源,特别是CPU资源的分配策略,进程调度策略会对系统的性能产生直接的影响。 Linux将进程分为两类:普通进程和实时进程。普通进程没有特殊的响应要求,实时进程一般要求系统立即做出响应,要求实时进程总能优先于普通进程被执行。总的来说,Linux系统使用的调度策略有:用于实时进程的先进先出算法(FIFO)和轮转算法(RR),用于普通进程的基于优先级的轮转算法。实际上,Linux是将这些进程调度算法融合在一起使用。 和进程调度相关的信息(上) (1) policy(策略)。是系统对该进程实施的调度策略。在Linux系统中,每个进程都可以有一个调度策略,这在它的task_struct结构中的policy属性中规定,如表2.8所示。进程的调度策略是从父进程那里继承来的,但可以通过特定的系统调用来改变。 调度策略标志 调度算法 SCHED_RR 用于实时进程,基于优先级的轮转法 SCHED_FIFO 用于实时进程,基于优先级的先进先出算法 SCHED_OTHER 用于普通进程,基于优先级的轮转法 表2.8 调度策略标志 和进程调度相关的信息(下) (2) priority(优先级)。是系统为进程给定的静态优先级。此优先级不随时间的变化而改变,可以通过系统调用或renice命令修改。优先级实际是从进程开始运行算起的、允许进程的运行时间值,普通进程的可用时间片的初值即为该值。 (3) rt_priority(实时优先级)。是系统为实时进程给定的优先级,实时进程的可用时间片的初值即为该值。实时进程的优先级可以用系统调用来修改。 (4) counter(计数器)。进程可用的时间片计数,相当于进程的动态优先级。进程开始运行时该值等于优先级(priority或rt_priority)的值,每次时钟中断时,该值减1,随时间不断减少。当它小于或等于0时,表明进程的时间片用完。 2.8.4 Linux进程的同步和通信 进程在协同工作时遇到的问题主要有进程同步和互斥,同时,进程间经常需要传递信息。Linux支持多种通信机制,常用的有:信号(Signal)机制、管道(Pipe)机制(包括无名管道和命名管道)以及与System V进程通信机制兼容的消息队列(Message Queue)机制、信号量(Semaphore)机制和共享内存(Shared Memory)机制。 1. 信号机制 信号机制是Linux最基本的进程通信机制,它通过向进程发送异步的时间信号来处理异常事件。例如,信号可以由终端键盘产生,用来中断程序的执行;也可以通过一个错误条件产生,比如进程对虚拟内存的非法存取等也会产生信号,用来向系统或进程报告突发的硬件故障等。 信号机制的一个主要特点是它的异步特性,这表现在进程在执行期间可随时接收到信号,甚至可能当进程正在执行系统调用时接收信号。利用信号机制可以处理不可预知的进程通信问题。 2. 管道机制 Linux的管道分为两种类型:一种是有名管道,它是一个按名存取的文件,该文件可长期存在,任意进程都可按通常的文件存取方法存取有名管道;另一种是无名管道,它是为系统调用pipe()建立的临时文件,它实际是由固定大小的高速缓冲区构成(Linux限制该缓冲区大小为1页,即4KB)。在管道中读数据操作始终和写数据操作相同的次序来进行。 3. System V的进程通信机制 为了与其他系统兼容,Linux支持3种Syetem V进程通信机制:消息机制、信号量机制和共享内存机制。一般把信号量、消息和共享内存机制统称为System V IPC机制,而把信号量、消息和共享内存统称为System V IPC对象。 4. 共享内存机制 共享内存机制主要用到了如下几个系统调用: (1) 创建共享内存段shmget(),成功则返回共享内存段唯一识别号。 (2) 进程申请连接共享内存段shmat(
原创力文档


文档评论(0)