
操作系统
文章平均质量分 70
薛铁钢
这个作者很懒,什么都没留下…
展开
-
经典进程同步问题——读者写者问题
问题描述写者优先要求:为了防止“读者优先”可能导致的写者饥饿,可以考虑写者优先。即,当共享数据区被读者占用时,后续紧邻到达的读者可以继续进入,若这时有一个写者到来并阻塞等待,则写者后续到来的读者全部阻塞等待。即只要有一个写者申请写数据,则不再允许新的读者进程进入读数据。这样,写者只需等待先于它到达的读者完成其读数据的任务,而不用等待其后到达的读者。新读者:如果无读者、写者,新读者可以读。如果有写者等待,且有其它读者正在读,新读者等待。如果有写者写,新读者等待。新写者:如果无读者,新写者可以原创 2021-07-20 14:19:59 · 2049 阅读 · 0 评论 -
经典进程同步问题——生产者消费者问题
问题描述“生产者—消费者”问题 (producer/consumer problem) 是最著名的进程同步问题。该问题描述了共享固定大小缓冲区的两个线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。它是许多相互合作进程的抽象,如输入进程与计算进程;计算进程与打印进程等。要解决该问题,就必须原创 2021-07-20 14:05:06 · 5444 阅读 · 0 评论 -
经典进程同步问题——哲学家就餐问题
问题描述有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕,放下筷子又继续思考。哲学家进餐问题可看作是并发进程并发执行时处理共享资源的一个有代表性的问题。初始解法:Var chopsitck:array[0,1,2,3,4] of semaphore=1;/*5支筷子分别设置为初始值为1的互斥信号量*/第i个哲学家的活动r原创 2021-07-20 13:25:58 · 1196 阅读 · 0 评论 -
fork()系统调用
在Linux系统内,创建子进程的方法是使用系统调用fork()函数。fork()函数是Linux系统内一个非常重要的函数,它与我们之前学过的函数有一个显著的区别:fork()函数调用一次却会得到两个返回值。转载 2020-11-04 14:32:05 · 1734 阅读 · 0 评论