现代计算机系统是一个复杂而庞大的系统,可分为两大部分:主机和外部设备。主机由CPU和内存储器组成,主机以外的计算机硬件统称为外部设备。
对于微型机,常采用共总线结构。设备和他们的控制器,连接与系统总线上,与内存统一编址。每一类设备单独设置控制器,在控制器和设备之间有设备接口,通过设备接口编程可以控制设备。
控制器的作用是把串行的位流转换为字节块,存入内部缓冲区,在进行必要的校验后,做字节块的传输,做完传输后仪中断方式向CPU报告。不多控制器,特别是块设备控制器,支持直接存储器存取(DMA)。
对于大中型计算机,外部设备部分在设备和控制器之间,还包括通道,通道实际上是专用的输入输出计算机。通道与cpu共用内存,有专门的输入输出指令,用来编写通道程序以控制设备。CPU经SIO,TIO,HIO等指令,委托和控制通道工作。作为CPU的助手,通道在执行完程序或者有异常,则用中断方式向CPU报告。
计算机设备分类:
从输入输出特性上分为:
1)字符设备。以字符为单位进行输入输出,也称慢速字符设备。
2)块设备。以字符块(物理块)为单位进行传输。
从设备独占上分为:
1)独占设备。该类设备在把设备分给进程后,在未使用完之前,不能作其他支配。
2)共享设备。多个进程可以“同时”从这些设备上存取信息。如辅存。
3)虚拟设备。在共享设备上为每个进程开辟一个专门用于输入输出的数据区域,在软件的支持下,每个区域的信息可以连续的、不依赖于产生信息的进程,经一台独占设备实行物理的输入输出。物理设备以及进程的数据区和支持软件,构成了每一个进程的独享设备。
设备管理的功能:
1)记住所有设备的工作状态;
2)为进程的输入输出请求分配设备和通道,为输入输出建立数据通路;
3)命令输入输出设备操作;
4)管理缓冲区;
5)管理设备中断,包括处理各种错误。
设备的数据结构(UCB):设备类型、标识符、设备状态、与设备相关的控制器表、等待此设备的进程表。
设备管理部分的缓存:
1)起中转站的作用,进程经由输入输出设备的输入输出信息,都是经缓冲区中转的,即进程只与缓冲区联系,输入输出设备也只与缓冲区联系。
2)解决信息的到达率和离去率不一致的矛盾。
3)设置缓冲存储器,暂存输入输出信息,可以减少设备中断CPU的次数。
4)使得一次输入的信息多次使用
为了对缓存实施管理,首先必须为每个缓存建立一个数据结构--缓存控制块(BCB)。BCB的数据项分为1)缓存管理相关(b_flag、b_addr、b_num);2)与输入输出设备相关(b_dev,b_length、b_error等)。
中断的作用:
1)对异步或例外事件的一种响应
2)这一响应由中断硬件自动地保存现行的CPU状态,以便处理完中断后能够重新恢复原来程序的运行
3)自动转入规定的例行程序,这程序称为中断处理程序。
中断的例子:利用始终实现轮转制度;增加并利用缺页中断,实现内存的虚拟分页存储。
为中断设置优先级解决多个中断源同时提出中断请求。
Spoolong技术(假脱机)
一个完整的spooling系统由四部分组成:输入部分的“存输入”和“取输入”,输出部分的“存输出”和“取输出”程序。
工作原理:卡片叠通过“存输入”被读入输入井;内存作业经spooling系统的“取输入”程序,从输入井中取输入,代替从卡片机输入;作业要打印的信息经“存输出”放入到输出井中;输出井的信息则有spolling程序从打印机打印出去。
优点:1)将慢速的字符设备变成快速的共享设备;
2)提高系统的并行性。
逻辑设备映射到物理设备是有OS中的一张逻辑设备表(LUT)描述的。
设备驱动程序在代表进程开始数据传送之前,必须确定设备的状态。这是通过把设备的状态寄存器内容读入到CPU中,并测试其不同的位来实现的。、
设备驱动程序是OS中直接与设备打交道并控制设备操作的那部分例程。一般来说,设备驱动程序的任务是接收来自它上面一层与设备无关的抽象请求,并指挥设备控制器执行这个请求。
磁道编号由外向内0,1...n。
磁盘的存取速度=磁头柱面定位时间+扇区定位时间+信息传输时间。
FCFS(先来先服务算法)
优点:公平,负荷小时可接受
缺点:负荷大,散布较均匀时,磁头来回移动的跨度太大。
SCAN算法(又称电梯算法):
让读写磁头在磁盘的直径方向上不断来回扫描(从一端到另一端,然后反过来),并在扫描的过程中为输入输出提供请求服务。
优点:减少了磁头的总移动量;
缺点:调度顺序依赖于手臂的移动方向。
C-SCAN:scan的改进算法,磁头总是沿着磁道的一端为输入输出提供请求服务,二在“回来的路上”快速空跑。使磁头附近相反方向可以得到尽快的服务。