进程同步与互斥
互斥:指某一个资源同时只允许一个访问者对其进行访问 , 具有唯一性和排它性 。 但互斥无法限制访问者对资源的访问顺序 , 即访问是无序的
同步:是指在互斥的基础上(大多数情况下) , 通过其它机制实现访问者对资源的有序访问 。 大多数情况下 , 同步已经实现了互斥 , 特别是所有写入资源的情况必定是互斥的 。 少数情况是指可以允许多个访问者同时访问资源 。
同步:体现的是一种协作性 。 互斥:体现的是排它性 。
进程同步有哪几种机制:
1.信号量机制
一个信号量只能置一次初值 , 以后只能对之进行p操作或v操作 。 由此也可以看到 , 信号量机制必须有公共内存 , 不能用于分布式操作系统 , 这是它最大的弱点 。
2.自旋锁
旋锁是为了保护共享资源提出的一种锁机制 。 调用者申请的资源如果被占用 , 即自旋锁被已经被别的执行单元保持 , 则调用者一直循环在那里看是否该自旋锁的保持着已经释放了锁 , 自旋锁是一种比较低级的保护数据结构和代码片段的原始方式 , 可能会引起以下两个问题;
(1)死锁
(2)过多地占用CPU资源
3.管程
信号量机制功能强大 , 但使用时对信号量的操作分散 , 而且难以控制 , 读写和维护都很困难 。 因此后来又提出了一种集中式同步进程——管程 。 其基本思想是将共享变量和对它们的操作集中在一个模块中 , 操作系统或并发程序就由这样的模块构成 。 这样模块之间联系清晰 , 便于维护和修改 , 易于保证正确性 。
4.会合
进程直接进行相互作用
5.分布式系统
由于在分布式操作系统中没有公共内存 , 因此参数全为值参 , 而且不可为指针 。
线程同步的方式
互斥量 Synchronized/Lock:采用互斥对象机制 , 只有拥有互斥对象的线程才有访问公共资源的权限 。 因为互斥对象只有一个 , 所以可以保证公共资源不会被多个线程同时访问
信号量 Semphare:它允许同一时刻多个线程访问同一资源 , 但是需要控制同一时刻访问此资源的最大线程数量
事件(信号) , Wait/Notify:通过通知操作的方式来保持多线程同步 , 还可以方便的实现多线程优先级的比较操作
什么是虚拟内存?
1).内存的发展历程
没有内存抽象(单进程 , 除去操作系统所用的内存之外 , 全部给用户程序使用) —> 有内存抽象(多进程 , 进程独立的地址空间 , 交换技术(内存大小不可能容纳下所有并发执行的进程)
)—> 连续内存分配(固定大小分区(多道程序的程度受限) , 可变分区(首次适应 , 最佳适应 , 最差适应) , 碎片) —> 不连续内存分配(分段 , 分页 , 段页式 , 虚拟内存)
2).虚拟内存
虚拟内存允许执行进程不必完全在内存中 。 虚拟内存的基本思想是:每个进程拥有独立的地址空间 , 这个空间被分为大小相等的多个块 , 称为页(Page) , 每个页都是一段连续的地址 。 这些页被映射到物理内存 , 但并不是所有的页都必须在内存中才能运行程序 。 当程序引用到一部分在物理内存中的地址空间时 , 由硬件立刻进行必要的映射;当程序引用到一部分不在物理内存中的地址空间时 , 由操作系统负责将缺失的部分装入物理内存并重新执行失败的命令 。 这样 , 对于进程而言 , 逻辑上似乎有很大的内存空间 , 实际上其中一部分对应物理内存上的一块(称为帧 , 通常页和帧大小相等) , 还有一些没加载在内存中的对应在硬盘上 , 如图5所示 。
- QQ飞车小橘子头像 qq飞车小橘子禁图封面
- 乳胶床垫有正反面区分吗 乳胶床垫有正反面区分吗知乎
- 台式电脑怎么进入bios 电脑怎么进入bios界面
- 韩束抚纹面霜 韩束黑金抚纹修护丝绒霜好吗怎么用
- 韩束抚纹面霜 韩束黑金抚纹修护丝绒霜好用吗?
- 床对着窗户风水好不好 床下面空的风水好吗
- 圆形铣刀片 铣刀片规格大全
- 聚划算的化妆品都是正品吗 聚划算里面的东西是正品吗
- 坟墓后面修公路好不好 坟前庙后是风水宝地
- 换牙过程 换乳牙是先换上面还是下面
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
