操作系统
文章平均质量分 58
铁皮暖壶
这个作者很懒,什么都没留下…
展开
-
进程创建-fork
只是将Hello通过write写到缓冲区, 并没有打印, 直到进程结束时才清空缓冲区打印。终端默认使用行缓冲, 读到换行时就清空缓冲区并将缓冲区内容写到终端。最终程序运行的结果就是叶子结点的进程并发执行最后一条。当stdout重定向时, 使用全缓冲.结果: 6个Hello。结果: 8个Hello。原创 2024-05-13 17:09:17 · 328 阅读 · 0 评论 -
哲学家就餐问题
在一个圆桌上坐着五位哲学家,每个哲学家面前有一个碗装有米饭的碗和一个筷子。哲学家的生活包括思考和进餐两个活动。当一个哲学家思考时,他不需要任何资源。当他饿了时,他试图拿起两只相邻的筷子来吃饭。由于碗和筷子不能被共享,因此必须找到一种方法来确保哲学家能够安全地进餐,即不会发生死锁(所有哲学家都在等待筷子)也不会发生饥饿(某些哲学家永远无法拿起筷子)限制最多只能4人同时上桌, 则可以保证至少有一个人可以同时拿起两根筷子。规定每个人, 先拿编号小的筷子, 再拿编号大的筷子。原创 2024-05-12 22:17:25 · 206 阅读 · 0 评论 -
条件变量解决同步问题之打印金鱼
本代码为老师上课演示条件变量解决同步问题示例(本人只做记录与分享)本人未使用老师封装的POSIX线程库, 直接在单文件中调试并注释。原创 2024-05-12 18:07:40 · 157 阅读 · 0 评论 -
基于POSIX的信号量模拟DAG上的并行计算的同步问题
自己增加了随机生成DAG(有向无环图)(不保证连通)数据进行测试。本代码主题借鉴nju的jyy老师的代码。运行打印结果即为并行计算DAG的拓扑序。原创 2024-05-12 16:43:39 · 171 阅读 · 0 评论 -
银行家算法简易实现
程序可以针对不同进程的请求进行判断,并决定是否满足其需求。算法程序需要设计合理的数据结构,对资源情况、进程相关数据进行存储。实现银行家算法的核心: 安全性算法, 银行家算法的请求判断。生成可能会产生死锁的数据, 但是没有调度出死锁的情况。随机生成数据, 并校验数据是否会产生死锁问题。生成可能会产生死锁的数据, 调度出死锁的情况。打印银行家算法一次接受的请求向量序列。打印每个线程的合法请求向量序列。保证没有死锁的数据, 运行结果。原创 2024-05-11 17:29:40 · 177 阅读 · 0 评论 -
基于POSIX标准库的读者-写者问题的简单实现
对共享文件做P操作的, 所以一个读线程完成读操作后会立即再次对文件发起读请求. 从而使得可能在后续读线程就绪前, 就准备好的写线程一直被阻塞. 从而引起了这些写线程出现饥饿现象.当然, 如果线程中不加入死循环, 则每个线程只对文件操作一次, 则所有的线程都有机会操作文件.此时写线程只会饥饿, 但不至于饿死. 而加入死循环, 可能会导致线程饿死.前面读者优先的实现问题在于: 当读线程在占用文件时, 其它读线程直接进入临界区, 则不被阻塞, 仅有后续的写线程被阻塞。, 表示正在对文件进行读操作的线程的数量.原创 2024-05-07 17:02:26 · 1172 阅读 · 1 评论