首页 > 编程知识 正文

进程通过进程调度程序而获得cpu,实时系统的进程调度

时间:2023-05-03 20:54:36 阅读:59398 作者:2079

目录1 .进程独占1.1临界资源和临界区1.2准则1.3硬件实现独占1.4信号量独占2 .进程同步2.1生产者消费者问题2.2读者写手问题3.1进程之间的通信3.1共享内存方式3.2管道通信机制3.3消息

1 .进程排他

进程互斥是进程同步控制的特殊情况。

1.1临界资源和临界区临界资源:一段时间内只能使用一个流程的资源。

临界区:使用临街资源的流程的一部分。

1.2为了按照指导原则提供互斥支持,系统必须满足以下条件:

(1)空闲时让)一个流程退出临界区,正好等待其他流程进入临界区,让其进入。

)2)临界区有进程(忙则等),其他进程有待。

(3)有限待机)一个过程在临界区无限运行,在有限时间内不能退出。

(4)优先顺序高于(等待权限)的流程在等待区域时,请让出临界区域的流程。

1.3使用硬件实现独占中断禁用:保证进程进入临界区后不中断,有效实现独占中断。

wile(true(/*禁用中断) /关键部分(/*启用中断)/}缺点:

(1)成本过高,执行效率低下

)2)不能用于多核处理器配置

专用机器命令: compare_and_swap命令

好处:

)1)适用范围广

)2)使用方便

)3)能够应对多个临界区域

缺点:

)1)导致CPU耗尽,在等待一个进程进入临界区的过程中,不断检测

)2)之所以导致饥饿,多个进程等待进入临界区,是因为在极端情况下,某些进程可能永远不能进入临界区。

1.4实现信号量互斥信号量的是一个数据结构,简称s。 主要有两个原语操作wait和signal。

原语wait(s ) :用于申请一个资源,有时写为p

voidwait(semaphores )//申请时,资源数量将减少一个。 此时,资源数小于0时,表示没有可用资源。 阻止进程并将其放入等待队列s.value=s.value-1中。 if(s.value0)块) s.queue; )原语的signal(s ) :用于释放一个资源,有时写为v

增加一个voidsignal(semaphores )//资源数,如果此时资源数小于或等于0,则启动进程并将其放入就绪队列s.value=s.value 1; if(s.value=0)唤醒up ) s.queue; )信号的物理含义:注意信号的初始值大于等于0,使用时初始化信号。

使用wait和signal原语时,必须注意使用顺序。 否则可能会发生死锁。

2 .使用进程同步信号进行进程同步时,必须将一个信号与一条消息相关联。

2.1生产者(消费者问题说明:生产者生产的产品放在缓冲区,缓冲区满了就会发生堵塞。 消费者从缓冲器中取出产品,在缓冲器为空的情况下,会发生堵塞。

解决方案:现在,您将设置三个信号量: S1、mutex和S2,它们指示缓冲区是否有空间、当前是否只能进行一个操作(生产或消耗),以及缓冲区是否已满。 定义两个变量I和j分别指向生产产品的位置和消费产品的位置。

2.2读者(书写者问题说明:读者与书写者共享一系列数据区域,允许多个读者同时执行阅读操作,允许读者、书写者同时操作,不允许多个书写者同时操作。

解决方案:假设阅读是优先的。 也就是说,假设写下来等待,但其他读者在读。 这样,新读者也能读。 信号量w用于读者和书写者、书写者和书写者之间的互斥; 设置信号量读取计数表示正在阅读的读者数量。 将mutex设置为对名为readcount的关键资源的互斥访问。

3 .各进程之间的通信进程可以根据通信内容分为控制信息的传输和大容量数据的传输; 高级通信机制可分为共享内存方式、管道通信机制和消息传递机制。

3.1共享内存方式使用共享内存可以避免对一个内容的重复访问,但请注意,这将排除对存储区的访问。

3.2管道通信机构管道通信是连接读进程和写进程实现进程之间通信的共享文件,也称为pipe文件。

由于可以以文字流的形式将大量的数据传送到管道,传输大量的数据,因此被广泛采用。

3.3消息传递机制是信息单位,可以分为直接通信方式和间接通信方式。

直接通信方式:发送进程直接将消息发送给接收进程,接收进程接收任何发送消息,可以知道发送方是谁。

简介通信方式:消息不是直接送达,而是发送到临时消息队列(邮箱)。 灵活性强,可以一对一、一对多、多对多、多对一。

4 .管理流程集中管理分散在各个流程中的临界区,防止流程有意或无意的非法同步操作。

5 .思维导图

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。