操作系统-笔记-第二章-锁

🌸章节汇总 

一、第一章——操作系统的概念

二、第二章——【进程】

二、第二章——【线程】​编辑

二、第二章——【进程调度】

二、第二章——【进程同步与互斥】

二、第二章——【锁】

三、第三章——内存管理

四、第四章——文件管理

五、第五章——输入输出管理

​​​​​​​🚀 学习心得

目录

二、第二章——【锁】

1、互斥锁​编辑

2、信号量机制

(1)信号量机制——整形信号量

(2)信号量机制——记录信号量

(3)总结(重点——记录信号量)

3、信号量机制——实现互斥、同步

(1)信号量设置为1——互斥

(2)前V后P——同步

(3)前V后P——前驱图

(4)总结

4、生产者-消费者问题

(1)画出前驱图

(2)写代码——PV操作

(3)思考——PV操作的顺序可以换么?

(4)总结

5、多生产者-多消费者问题

(1)画出前驱图(互斥-PV, 同步-VP)

(2)写代码——PV操作

(3)写代码——PV操作(改进:不用互斥信号量)

(4)具体问题,具体分析

6、吸烟者问题

(1)问题分析

(2)问题解决

7、读者-写者问题

(1)解决方案

(2)思考

8、哲学家进餐问题(死锁问题)

(1)问题分析

(2)方案实现

(3)考点

9、管程

(1)来历(PV操作太麻烦)

(2)定义 & 特征

(3)具体实现

(4)拓展1——封装思想

(4)拓展2——Java中的管程思想(sync-同步)

(4)拓展3——Java中的同步+异步(和前端的请求+返回操作差不多)

(5)总结

10、死锁

(1)死锁、饥饿、死循环

(2.1)死锁产生条件——清华笔记

(2.2)死锁产生条件——软考笔记

(2.3)死锁产生条件——王道笔记

(3)总结

11、预防死锁(破坏四个条件之一)

(1)破坏互斥(优缺点)

(2)剥夺资源【破坏不剥夺条件】(优缺点)

(3)破坏请求+保持条件(一次性拿完)

(4)破坏循环等待(按照顺序申请资源)

(5)总结——王道版

(5)总结——清华版

12、银行家算法(避免死锁 ※※※)

(1)清华版——银行家算法

(2)软考版——银行家算法

(3)王道版——银行家算法

13、死锁的检测 & 解除

(1)清华版——检测 & 解除

(2)王道版——检测方法(理解-资源分配图-能够化简!)

(3)王道版——解除方法

(4)总结


二、第二章——【锁】

1、互斥锁

 

2、信号量机制

信号量机制——可以很好的解决【互斥、同步】的问题

PV操作——proberen —— verhogen        

(1)信号量机制——整形信号量

缺点:如果需要资源被占用,那么会进行忙等

(2)信号量机制——记录信号量

用来解决——“忙等”问题

在整形的基础上,创建了一个【等待队列】,当资源不够时,自我阻塞,等待别人唤醒~

(3)总结(重点——记录信号量)

3、信号量机制——实现互斥、同步

(1)信号量设置为1——互斥

(2)前V后P——同步

PV操作——P拿,V释放

如果实现的同步?

1、执行在前面的代码段——用V操作(必须让他执行了,才会释放资源)

2、执行在后面的代码段——用P操作(有了资源,才可以跳出等待)

这样就是实现了同步~

(3)前V后P——前驱图

这样就实现同步啦~

(4)总结

4、生产者-消费者问题

(1)画出前驱图

(2)写代码——PV操作

其中1个PV是用于——互斥

2个PV是用于同步(有两个同步信号量)

(3)思考——PV操作的顺序可以换么?

不能乱改——可能会导致死锁!(具体问题,具体分析!)

(4)总结

5、多生产者-多消费者问题

(1)画出前驱图(互斥-PV, 同步-VP)

(2)写代码——PV操作

(3)写代码——PV操作(改进:不用互斥信号量)

(4)具体问题,具体分析

当缓冲区大小为1,那么可能不需要设置——【互斥信号量】

6、吸烟者问题

(1)问题分析

(2)问题解决

不需要——互斥信号量~(因为桌子上只能放一个资源!)

7、读者-写者问题

读者——共享锁(乐观锁)

写者——互斥锁(悲观锁)

在这个锁的基础上——可以设计的锁的粒度

(粒度大小说明)用生活举例:

你不允许别人进入你的房子,那么就给房子上了锁——【房子锁】

你允许别人进入你的房子,但你不允许别人进入你的房间,就给房间上了锁——【房间锁】

你允许别人进入你的房间,但你不允许别人打开你的柜子,就给柜子上了锁——【柜子锁】

  1. 写优先
  2. 读共享

(1)解决方案

写优先——读写公平法(先来先服务)【防止写进程饿死~】

(2)思考

8、哲学家进餐问题(死锁问题)

(1)问题分析

(2)方案实现

(3)考点

9、管程

(1)来历(PV操作太麻烦)

(2)定义 & 特征

(3)具体实现

程序员封装一层——PV操作(实现同步、异步)

然后提供简单的接口,用来之后使用~

(4)拓展1——封装思想

(4)拓展2——Java中的管程思想(sync-同步)

就比如——下载文件(异步任务——多线程——你得设置线程池的大小!)

1、你需要规定同步队列的大小!

2、然后设置同步方法

3、调用同步方法

(4)拓展3——Java中的同步+异步(和前端的请求+返回操作差不多)

异步任务可以设置数量(设置连接池大小),避免有太大的异步任务

(5)总结

10、死锁

(1)死锁、饥饿、死循环

死锁和饥饿——是【操作系统】关心并解决的问题!

(2.1)死锁产生条件——清华笔记

(2.2)死锁产生条件——软考笔记

基本问题:该系统至少需要多少资源?可以不发生死锁?

总资源数 = K * (N -1) + 1

K:进程数量

N:一个进程需要的资源数

死锁 => 四种条件 必然存在

(2.3)死锁产生条件——王道笔记

(3)总结

11、预防死锁(破坏四个条件之一)

  1. 互斥(加入buffer——把【互斥资源】变为【共享资源】)
  2. 不剥夺(他在等待资源后,就强行让他休息,夺走他手里的资源)
  3. 请求和保持(占有资源的情况)
  4. 循环等待(给所有资源编号【从小到大】——按顺序申请资源~)

(1)破坏互斥(优缺点)

优点:简单(把互斥资源——变为——共享资源)

缺点:应用点比较少(毕竟很多地方需要互斥性!)

(2)剥夺资源【破坏不剥夺条件】(优缺点)

(3)破坏请求+保持条件(一次性拿完)

不准持有——一次性拿完!!!(简单,但是资源利用率低)

(4)破坏循环等待(按照顺序申请资源)

(5)总结——王道版

(5)总结——清华版

12、银行家算法(避免死锁 ※※※)

(1)清华版——银行家算法

(2)软考版——银行家算法

  1. 求出剩下的资源数
  2. 求出各项进程还需要的资源数
  3. 按照选项——开始推算是否满足!(如果满足,则选择即可)

(3)王道版——银行家算法

13、死锁的检测 & 解除

(1)清华版——检测 & 解除

(2)王道版——检测方法(理解-资源分配图-能够化简!)

       

(3)王道版——解除方法

(4)总结

重点!!!加油吧!!!不能放弃啊!!!

时间:2023年8月20日12:20:10

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
R语言实战笔记第九章介绍了方差分析的内容。方差分析是一种用于比较两个或多个组之间差异的统计方法。在R语言中,可以使用lm函数进行方差分析的回归拟合。lm函数的基本用法是: myfit <- lm(I(Y^(a))~x I(x^2) I(log(x)) var ... [-1],data=dataframe 其中,Y代表因变量,x代表自变量,a代表指数,var代表其他可能对模型有影响的变量。lm函数可以拟合回归模型并提供相关分析结果。 在方差分析中,还需要进行数据诊断,以确保模型的可靠性。其中几个重要的诊断包括异常观测值、离群点和高杠杆值点。异常观测值对于回归分析来说非常重要,可以通过Q-Q图和outlierTest函数来检测。离群点在Q-Q图中表示落在置信区间之外的点,需要删除后重新拟合并再次进行显著性检验。高杠杆值点是指在自变量因子空间中的离群点,可以通过帽子统计量来识别。一般来说,帽子统计量高于均值的2到3倍即可标记为高杠杆值点。 此外,方差分析还需要关注正态性。可以使用car包的qqplot函数绘制Q-Q图,并通过线的位置来判断数据是否服从正态分布。落在置信区间内为优,落在置信区间之外为异常点,需要进行处理。还可以通过绘制学生化残差的直方图和密度图来评估正态性。 综上所述,R语言实战第九章介绍了方差分析及其相关的数据诊断方法,包括异常观测值、离群点、高杠杆值点和正态性检验。这些方法可以用于分析数据的可靠性和模型的适应性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [R语言实战笔记--第八章 OLS回归分析](https://blog.csdn.net/gdyflxw/article/details/53870535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pan_peter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值