早期系统还不太大,主要致力于提高功能的实现和获得较高的效率.因此没有注意设计结构,而是一个整体的.
随着操作系统规模越来越大,之前无结构的设计模式,会使得操作系统越来越复杂混乱,不利于后期维护人员的维护.因此出现了模块化设计结构.它按功能划分为各个独立性的模块,比如进程管理模块,存储器管理模块,I/O设备管理模块,算数逻辑模块等.这样结构清晰,利于管理.
设计基本原则:每一步设计都是建立在可靠的基础上,保质保量.每一层仅能使用更低一层提供的服务和功能.这样就使系统更容易调试和管理. 缺点就是: 效率变低.由于层与层之间是单向依赖的,相邻层之间需要建立通信机制,os每执行一个功能都需要自上而下穿越多个层次,必将造成操作系统的开销和消耗.
微内核并非一个完整的OS,它只是操作系统中最基本的部分.他只是为了构建其他操作系统的基础.其他系统在此基础上,扩展. 微内核主要功能: 1.实现与硬件的紧密处理 2.实现一些基本的功能
设备管理得主要功能有 缓冲区管理,设备分配,设备处理,虚拟设备以及实现设备独立性。
说到设备管理,那么就该想到I/O。
输入/输出(Input /Output ,简称I/O),指的是一切操作、程序或设备与计算机之间发生的数据传输过程。
输入/输出系统(Input/Output System) ,实现数据得输入,输出以及数据存储得系统。
输入/输出设备,就是指可以与计算机进行数据传输的硬件。
最常见的I/O设备有打印机、硬盘、键盘和鼠标。
从严格意义上来讲,它们中有一些只能算是输入设备(比如说键盘和鼠标);有一些只是输出设备(如打印机)。
所有储存器也可以算是输入/输出设备。如硬盘、软盘、光盘,U盘等。
1.2.1按照使用特性分类:
(1).存储器设备
这里得存储器设备指的是外存储设备,也叫外存和辅助存储器,通俗讲,就是硬盘,U盘,等外部存储器。
(2).输入输出设备(外界能与计算机进行数据交互得设备)
输入设备有:鼠标,键盘,扫描仪,视频摄像和各类传感器。
输出设备通常是由计算机加工处理后的信息送向外部的设备,比如打印机,显示器,音响。
1.2.2按照传输速率分:
(1).低速设备(2).中速设备(3).高速设备
1.2.3.按信息交换的单位
(1).块设备。数据的存取是以数据块为单位,属于结构设备。
磁盘属于典型的块设备,每个盘块大小为512kb–4kb。这样传输速率较高。
(2)字符设备。基本单位是字符。字符设备 种类繁多,比如打印机。
1.2.4.按照共享属性
(1).独占设备。
一段时间内只允许一个用户进程访问的设备,叫独占设备,也叫独占资源,临界资源。
打印机一段时间内不能同时打印及几个东西,只能一个东西打印完后,再打印。
打印机属于独占设备
(2).共享设备
一段时间内允许多个用户进程访问的设备。但是对于每一时刻而言,这类设备仍然只允许一个进程访问。
共享设备常见的是磁盘。一段时间内可以有多个用户程序进行数据的传输交换。比如 在这一段时间内,我既可以存qq的数据,然后我又存一些微信的数据。
(3)虚拟设备
因为一些独占设备,只能一个进程一个进程的访问,因此我们可以虚拟化出另一个同样的设备出来,这样就可以供多个用户程序使用了。
cpu由算术逻辑单元(ALU)和寄存器(小块内存)以及RAM(随机存取存储器设备,也叫内存)构成,可见他的功能负责对数据进行运算。
设备需要与cpu之间进行数据传输,也就是两者之间需要通信。但是设备不是之间与cpu之间进行通信,,而是与设备控制器通信,因此在I/O设备中需要有能与设备控制器进行通信接口。
设备与设备控制器之间的通信又需要几种控制线进行控制。
1)数据信号线,顾名思义,就是设备控制器与设备之间传送数据的信号。
对于输入设备而言,数据都是先放到缓冲器中,达到一定字节之后,才会交给设备管理器处理。
对于输出设备,数据由设备管理器通过数据信号线,传送到缓冲中,经转换器适当转换后再逐个输出。
2)状态控制控制线
控制操作的。比如 控制这个设备一直进行读操作。
3)状态信号线
传送当前设备的状态的信号。比如 想设备管理器传送,这个打印机设备还在打印。
1)设备控制器是一个实体,不是一串代码,他的功能就是处理一个或多个设备与计算机之间的数据交换。
我们之前说过,设备并不是直接与计算机之间进行数据交换,而是通过先和设备管理器进行交流,其次,设备管理器与cpu之间进行数据交换。
设备的不同类,导致设备控制器也有诸多类。不同类的设备控制器类别还比较大。
大多数控制器都有三部分组成
1.设备控制器与处理机之间的接口
2.设备控制器与设备的接口
3.I/O逻辑
设备控制器能进行一些简单的数据处理,分担了一些cpu的任务,而处理数据必不可少的就是逻辑运算的能力。因此设备控制器还有简单的I/O逻辑。
cpu处理繁复的I/O操作,必然负担很重,因此我们希望能将cpu从其中解脱出来,让cpu由时间处理其他的数据。
由此,出现了设备控制器,管理控制设备与cpu之间的数据处理。=,同时也替cpu分担了些数据处理的任务。
但,远远不够,cpu负担仍然很重。。。。
由此,我们在cpu与设备之间设置了I/O通道。
这个通道的作用就是替cpu处理设备传送过来的数据,这个通道是一种特殊的处理机,能够执行I/O指令。
比如,我在键盘上,输入“你好”,然后通道就处理这个指令,将“你好”两个字显示在屏幕上。
总的来说,它就是一种特殊的处理机,替cpu处理了一些I/O操作。
程序的运行是靠进程,当进程需要某个设备进行启动时,cpu向相应的设备控制器发出指令,然后设备控制器控制设备的启动,cpu仅仅只是发出一条I/O命令给设备控制器,之后就不管了,继续执行自己的任务。当设备数据传输完之后,cpu才再次出来,发送一条I/O中断命令。
中断驱动方式,是以字节为单位进行数据传输的,因此中断驱动方式比较低效,
比如读取磁盘中1kb的数据,需要cpu中断1k次。因此后面引入DMA I/O控制方式
这种方式传输数据的基本单位是数据块,传送的数据都是直接从设备到内存,较之以往,以字节为单位,效率高得多。