
操作系统
杨晴朗Solo
这个作者很懒,什么都没留下…
展开
-
读者——写者问题
有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程同时访问共享数据时则可能导致数据不一致。因此要求: 允许多个读者同时对文件执行读操作; 只允许一个写者往文件中写信息 任一写者在完成写操作之前不允许其他读者或写着工作 写者执行写操作前,应然已有的读者和写者全部退出 互斥关系:写进程-写进程、写进程-写进程。读进程与读进程不存在互斥关系 解法1: 设置一个互斥信号量rw,在写者访问共享文件前后分别执行P、V操作。 读者进程和写者进程也原创 2021-03-22 20:22:49 · 152 阅读 · 0 评论 -
哲学家就餐
错误解法1: #define N 5 //哲学家数目 void philosopher(int i) { //哲学家编号从0到4 while(true){ think(); //思考 take_fork(i); //拿起左边的叉子 take_fork((i+1)%N); //拿起右边叉子 eat(); //进食 put_fork(); //放回左叉原创 2021-03-22 17:21:10 · 126 阅读 · 2 评论 -
生产者-消费者问题
#define N 100 //缓冲区中的槽数目 int count = 0; //缓冲区中的数据项数目 void producer(void) { while(true){ item = producer_item(); //生产一个数据项 if(count = N) sleep(); //判断缓冲区满否,若满,进程休眠 insert_item(item); //若未满,插入一个新数据项 count++;原创 2021-03-20 20:23:03 · 200 阅读 · 0 评论 -
Peterson算法
#define FALSE 0 #define TRUE 1 #define N 2 //进程数量 int turn; //现在轮到谁 int interested[N]; //所有值初始化为0 void enter_region(int process) //进程0或1 { int other; //另一进程号 other = 1 - process; turn = process; //设置标志 interested[process] = TRUE; //表示感兴原创 2021-03-15 21:32:29 · 980 阅读 · 0 评论 -
操作系统的特征
并发与共享互为存在条件,并发和共享是操作系统最基本的两个特征 1.并发 指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但在微观上是交替进行的 并行:指两个或多个事件在同一时刻同时发生。 并发性指计算机系统中同时存在着多个运行着的程序 2.共享 即资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用 互斥共享:一个时间段内只允许一个进程访问该资源。 同时共享:允许一个时间段内由多个进程并发地对他们进行访问 共享性指系统中地资源可供内存中多个并发执行地进程共同使用 3.虚拟 指把原创 2021-03-07 18:34:37 · 814 阅读 · 0 评论