Operating Systems Review
- I/O 软件 系统
- I/O控制
- 轮询 流程?弊端
- 中断 什么是中断?中断处理流程?多重?抢占?弊端
- DMA 流程?
- Spooling
- 什么是假脱机 ? 假脱机 vs 脱机?
- 组成部分
- 工作原理:假脱机打印机
- 特点 (虚拟?why spooling?)
- Buffer
- Why buffer?
- Single , double, circle ,buffer pool
- 作用
- 磁盘调度
- 磁盘访问时间 = 寻道时间 + 旋转延迟 + 传输时间
- FCFS , SSJF , SCAN , C-SCAN , N-Setp-SCAN , FSCAN 算法流程
- 利弊?如何选择? SCAN适用于磁盘负荷大
- SSJF(平均寻道时间最短)
- 饥饿( FCFS , SSJF ) -> 解决饥饿( SCAN,C-SCAN ) SCAN -> C-SCAN (减少等待时间)
- 解决磁壁粘着(N-Setp-SCAN,FSCAN(简化版N-step))
- 设备独立性
- 1
- 2
- 3
- 操作系统Intro
- OS 目标,作用,发展动力
- 发展历史 无操作系统(人工操作 -> 脱机IO ) -> 单道批处理系统 -> 多道批处理系统 -> 分时系统,实时系统
- 什么是脱机IO ?why? 解决人机矛盾以及CPU,IO速度不匹配 什么是人机矛盾?
- 文件系统
- 什么是文件?目录 ?文件的逻辑结构?组织结构?目录结构?
- 分配方法及其优缺点
- 连续分配 随机访问 外部碎片&大小声明
- 链式分配
- 隐式链接 无外部碎片&大小可变 随机访问&指针占用空间
- 显示链接 无外部碎片&%大小可变&随机访问 链接表占用空间
- 索引分配&多级索引 随机访问&外部碎片&大小可变 索引表占空间&一级索引文件大小受限
- 增量式多级索引 unix采用
- FAT NTFS
- 空闲空间管理
- Bit Vector
- Linked List
- Grouping
- Count
- RAID 各级别
- 提高可靠性
- 数据一致性
- Memory 管理
- 链接,装载
- 连续内存分配
- 单一,固定分区,动态分区
- 动态分区
- 数据结构 空闲分区表
- 分配算法 first fit , next fit , best fit , worst fit
- 回收
- 覆盖 Overlay 将不会同时同时运行的程序段共享一块内存,by programmer
- 紧凑(compaction)
- Compaction is possible only if relocation is dynamic, and is done at execution time (运行时的动态可重定位技术)
- 对换(swap)
- 离散内存分配
- 分段
- 分页
- 段页式
- 虚拟内存
- 进程间通信
- 死锁
I/O System
一无所知还写。我tmD的真的是一无所知,什么都不知道。辣鸡。误人子弟。
计算机的两大任务就是 计算 与 I/O操作。 在冯诺依曼体系结构中,计算机有五大部件,分别是运算器,控制器,主存,输入系统,输出系统组成。 对于主存,需要频繁的进行读,写操作,可以将其看作是一种特殊的I/O设备。
因此不严格地说,这五大部件可以分为CPU(运算器,控制器),I/O设备。
计算机在运行时,需要与I/O进行交互。譬如当你浏览网页时,需要用鼠标点击或者是使用触控板。当你编辑时,需要使用键盘来键入。
需要计算机的任务(job)可以大致分为两种类型,一种是I/O密集型,即需要频繁大量的I/O操作,一种是CPU密集型,即需要大量的运算。
I/O设备层出不穷,各式各样。 计算机的任务是让用户能够使用这些I/O设备。
更好的是,能让用户方便的使用,高效的使用这些设备。
譬如说,对于磁盘读写而言、
典型的磁盘读写需要用磁头进行操作,先让磁头移动到指定的位置,然后进行读或者写。
这是一个非常底层的工作,如果用户进行磁盘读写时需要自己操作磁头,这将是一个多么恐怖的事情。
可用性 Availability
因此为了让用户能够使用这些设备。我们需要对底层进行抽象,隐藏。
可以添加以磁盘控制器Controller,每次需要读写的时候,只需要向磁盘控制器发送一个信号就可以了。
这个信号可能包括指令(读,还是写),地址(在哪里写),数据(写什么数据)。然后磁盘控制器可以操作磁头完成用户的这些请求操作。
控制器Controller应该算是一个硬件设备。完成可用性的应该是计算机组成原理等底层硬件的相关技术。
事实上,对于所有的I/O设备而言,都尤其对应的控制器,来隐藏底层,向上层提供一个接口,用户只需要提供一个接口就可以使用这些设备。
易用性与高效性
完成了可用性的工作,接下来的目标便是高效的完成I/O操作。
一方面,我们可以降低I/O操作的时延,即能够快速响应。
另一方面,我们可以增加不同设备间的并行性,让不同的设备可以并行地进行工作。
为了更加方便的使用IO设备,完成IO操作,需要进一步进行抽象,隐藏底层。
磁盘读写操作而言,CPU通过总线向磁盘contrller发送信号。然后磁盘完成相应的操作。
可以进一步封装为read(),write()操作,用户在编程是可以直接调用这样的接口。
进一步抽象,用户只需要提供read(filename),或者write(filename,data)即可完成相应的操作。接下来的操作由CPU,和磁盘控制器来完成。
1、轮询
2、终端
3、DMA
4、通道
操作系统在I/O方面的作用是管理和控制I/O操作和设备。
可拓展性 Scalability
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 rat_racer@qq.com