阿鲲的博客 主修软件工程和算法模型,极客成长中

操作系统复习

2019-04-19
jktian

阅读:


DMA:CPU和外存之间的数据传输方式,还有程序传送方式/中断传送方式

以上两种方式,均由CPU控制数据传输,不同的是程序查询方式由CPU来查询外设状态,CPU处于主动地位,而外设处于被动地位。这就是常说的—-对外设的轮询,效率低。而中断传送方式则是外设主动向CPU发生请求,等候CPU处理,在没有发出请求时,CPU和外设都可以独立进行各自的工作。  需要进行断点和现场的保护和恢复,浪费了很多CPU的时间,适合少量数据的传送.对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式 通常系统的总线是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态–高阻状态,而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。DMAC是控制存储器和外部设备之间直接高速地传送数据的硬件电路,它应能取代CPU,用硬件完成数据传送的各项功能

总线(地址总线、数据总线和控制总线)

PV操作(p操作:信号量-1,继续或阻塞进程放入队列中;v操作:信号量+1, 继续或唤醒队列中第一进程),先要明确临界资源是什么,互斥还是同步,可以很简单也可以很复杂.信号量初值为1或者其他整数,有时候需要设置empty和full两个进行同步 信号量表示资源的实体,是一个与阻塞队列相关的一个整型变量,对进程和资源进行管理和控制,正数表示空闲在资源量,负数的绝对值表示有需求的该信号量的阻塞队列中的进程数目   互斥模式:一段程序中同一信号量的p,v都存在   同步模式: 同一信号量的p和v出现在不同的进程中,用于保持两个进程之间的同步.非对称的

死锁:死锁预防,死锁避免,死锁恢复,死锁忽略 死锁的条件:互斥(资源独占),占有且等待,非抢占,循环等待 银行家算法(特定时间下,判断是否为安全状态,找到安全序列.若假设经过此次分配后,是安全状态,则分配) https://blog.csdn.net/wyf2017/article/details/80068608   一个一维数组:available(当前系统剩余,不包括已分配的)   三个矩阵:max(最大需求), allocation, need(还需要多少资源)   根据available决定是否进行分配.work数组是临时的available

读者写者问题(两种写法,第一种容易饿死写者;第二种让当前读者全完成就开始写,不允许在写者想写的时候,再允许新读者进入) 多个读者对个数的操作要加锁 https://www.cnblogs.com/dancingwing/p/4165711.html

程序(program)/进程/线程/应用程序(application)   程序是静态的   进程是程序加上特定的数据集的动态.进程间的关系为父子,平行的,不是主从的   线程有主从之分,主线程结束,则进程结束   应用程序可以是一些进程.如浏览器为每个页面开一个进程

内存碎片:内部和外部

段页式管理

设备管理(io)   块设备   字符设备

假脱机技术 https://blog.csdn.net/guo13313/article/details/50703630 系统中独占设备的数量有限,往往不能满足系统中多个进程的需要,从而成为系统的瓶颈,使许多进程因等待而阻塞。另一方面分配到独占设备的进程,在整个运行 期间往往占有但不经常使用设备,使设备利用率偏低。为了克服这种缺点,人们通过共享设备来虚拟独占设备,将独占设备改造成共享设备,从而提高设备的利用率 和系统的效率,该技术即假脱机技术 假脱机技术即SPOOLing(Simultaneous Peripheral Operating On-Line)。SPOOLing是指在联机情况下实现的同时外围操作,也称假脱机输入输出操作,它是操作系统中的一项将独占设备改为共享设备的技术。SPOOLing是低速输入输出设备与主机交换的一种技术,通常也成为“假脱机真联机”,它的核心思想是以联机的方式得到脱机的效果。 SPOOLing技术是用于将一台独占设备改造成共享设备的一种行之有效的技术。当系统中出现了多道程序后,可以利用其中的一道程序,来模拟脱机技术输入时的外围控制机的功能,把低速输入输出设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样便可以在主机的直接控制下,实现脱机输入、输出功能。 假脱机技术有输入井和输出井、输入缓冲区和输出缓冲区、输入进程和输出进程、请求打印队列组成

假脱机的特点 (1)提高了输入输出速度 SPOOLing技术引入了输入井和输出井,可以使输入进程、用户进程和输出进程同时工作,从而提高了输入输出速度。 (2)将独占设备改造为共享设备 由于SPOOLing技术把所有用户进程的输出都送入输出井,然后再由输出进程完成打印工作,而输出井在磁盘上,为共享设备。这样,SPOOLing技术就把打印机等独占设备改造成立共享设备。 (3)实现了虚拟设备功能 由于SPOOLing技术实现了多个用户进程共同使用打印机这种独占设备的情况,从而实现了把一个设备当成多个设备来使用,即虚拟设备的功能。

版权声明:本文为博主原创文章,转载请附上博文链接!

进程的状态

进程间通信:

IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等 消息队列,提供了一种从一个进程向另一个进程发送一个数据块的方法 共享内存,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。 信号量,为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题

1.管道:速度慢,容量有限,只有父子进程能通讯

2.FIFO:任何进程间都能通讯,但速度慢

3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

4.信号量:不能传递复杂消息,只能用来同步

5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

文件系统

文件系统的种类有很多,每一种文件系统的结构,逻辑,存取速度,灵活性,安全性,大小,等等都不一样。文件系统可以被使用在磁带,移动硬盘,闪存等地方。

FAT(File Allocation Table)文件系统诞生于1977年,它最初是为软盘设计的文件系统,但是后来随着微软推出dos和win 9x系统,FAT文件系统经过适配被逐渐用到了硬盘上,并且在那时的20年中,一直是主流的文件系统。后来随着硬件技术的进步,硬盘的容量也越来越大,这种文件格式逐渐被扩展了,出现了FAT12,FAT16,FAT32等文件系统,甚至后来还出现了FAT64的文件系统。 在今天,FAT已经不是windows系统的主流文件系统了,但是它在软盘,闪存(u盘),以及很多嵌入式设备上还是很常见的。

NTFS全称是New Technology File System,它是一种比FAT32功能更加强大的文件系统。

HFS/HFS+: Mac os

一般在Linux操作系统里常见的主要有Ext2、Ext3、Linuxswap和VFAT四种格式:

文件系统管理磁盘的技术方案: 连续分配, 链式分配, 索引分配

操作系统设计

  1. 逐步抽象出上层语言,简化工作量,方便效率
  2. 内核:进程/存储/文件/设备
  3. 进程管理(Processing management) 存储管理(Memory management) 设备管理 文件系统(File system) 程序接口 用户界面(User interface) 驱动程序(Device drivers)

上一篇 红黑树

下一篇 B树和B+树

Comments

Content