IO设备按照使用特征分类:
- 人机交互类外部设备(数据传输速度慢)
- 存储设备(数据传输数据快)
- 网络通信设备(数据传输速度介于上述二者之间,在于网络设备情况)
IO设备按照传输速度分类:
- 低速设备
- 中速设备
- 高速设备
IO设备按照交换信息的单位分类:
- 块设备(传输速度较高,对它可随机读写任意一块)
- 字符设备(传输速度较慢,不可以随机读写任意一块,在输入输出时常采用中断驱动方式:一种IO控制方式)
这一块单独内部比较多,单独拎出来都能几万字,这里就不做过多的叙述,
下面整理了一下主要知识点,需要了解的可以点击链接或者百度查询相关文献进行学习
可点击 操作系统之IO设备详解 了解详情,这位博主写的很详细。
- I/O控制器
- I/O设备的机械部件
- I/O设备的电子部件(I/O控制器)
- I/O控制器的组成
- 内存映像 I/O VS 寄存器独立编址
- I/O控制方式
- 程序直接控制方式
- 中断驱动方式
- DMA方式
- DMA控制器
- 通道控制方式
- I/O软件层级结构
- 用户层软件
- 设备独立性软件
- 为何不同的设备需要不同的设备驱动程序
- 设备驱动程序
- 中断处理程序
- 核心子系统
- 这个功能要在哪个层次实现
- I/O调度
- 设备保护
- 假脱机技术(SPOOLing技术)
- 设备的分配与回收
- 设备分配是应考虑的因素
- 静态分配和动态分配
- 设备分配管理中的数据结构
- 设备分配的步骤
- 设备分配步骤的改进
操作系统的主要功能
操作系统主要功能有以下5个方面:处理机管理功能、存储器管理功能、设备管理功能、文件管理功能和操作系统和用户之间的接口功能,简单拓扑图如下:
处理机管理功能
处理机制管理功能包含:进程控制、进程同步、进程通信、调度
1、进程控制
主要是为作业创建进程、撤销(终止)已结束的进程,以及控制进程在运行过程中的状态转换。
进程控制原语:
- 创建进程原语
- 撤销进程原语
- 阻塞进程原语
- 唤醒进程原语
进程创建
创建一个具有指定标识符的进程,建立进程的PCB结构。
进程撤销
回收进程资源
进程阻塞
进程唤醒
2、进程同步
主要任务是为多个进程(含线程)的运行进行协调。
- 进程互斥方式:这是指诸进程在对临界资源进行访问时,应采用互斥方式。
- 进程同步方式:指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。(信号量机制)
3、进程通信
多个进程在活动过程中彼此间会发生相互依赖或者相互制约的关系,为保证系统中所有的进程都能正常活动,就必须设置进程同步机制,它分为同步方式与互斥方式。
相互合作的进程之间往往需要交换信息,为此,操作系统需要提供通信机制。
进程通信有三种方法 ,分别是共享存储、管道通信、消息传递。
3.1、共享存储
两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。
操作系统只负责提供共享空间和同步互斥工具(如P、V操作)
基于数据结构的共享: 比如共享空间里只能放个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式
基于存储区的共享: 在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。
3.2、管道通信
1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。
2.各进程要互斥地访问管道。
3.数据以字符流的形式写入管道,当管道写满时,写进程的 write(系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
4.如果没写满,就不允许读。如果没读空,就不允许写。
5.数据一旦被读岀,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况
3.3、消息传递
进程间的数据交换以格式化的消息( Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
4、调度
包括作业调度和进程调度。
作业调度是通过一定的算法策略从外存上将作业放入内存,分别为它们创建进程,分配资源,使之处于就绪状态;
进程调度是从就绪状态的进程队列中选择一定的进程为之分配处理机,使它可以运行。
存储器管理功能
存储器管理分为4个功能,分别是:内存分配、内存保护、地址映射、内存扩充
内存分配
内存分配的主要任务是为每道程序分配一定的内存空间,为此操作系统必须记录整个内存的使用情况,
处理用户提出的申请,按照某种策略实施分配,接收系统或用户释放的内存空间。
由于内存是宝贵的系统资源,在制定分配策略时应该如何考虑提高内存的利用率,减少内存浪费。
内存保护
不同用户的程序都放在同一个内存中,就必须要保证它们在各自的内存空间中活动,不能相互干扰,更不能侵占操作系统的空间,为此需要建立内存保护机制。
内存保护有两种,
一是各个用户进程只能在自己的内存空间中运行,不得使用其他非共享用户进程的内存空间;
二是用户进程不得访问操作系统的程序和数据。
常见的内存保护机制是设置两个界限寄存器,标志可使用空间的上界和下界,系统对每条指令所要访问的地址进行越界检查。
地址映射
CPU在执行用户程序时,要从内存中取出指令或数据,为此就必须把所用的相对地址(或称逻辑地址)转换成内存的物理地址。
编译和链接所得到的可执行文件,其程序地址是从0开始的,需要操作系统将从0开始的逻辑地址转换为物理地址,需要硬件的支持。
内存扩充
指通过虚拟存储技术,从逻辑上扩充存储器的大小,使更多的用户进程可以并发执行。
常见的机制包括:请求调入和置换功能。
请求调入允许在仅装入部分程序和数据的情况下就启动该程序的执行,当所需要的指令或者数据不在内存空间的时候,通过向OS发出请求,由OS将所需要的部分调入内存。
置换则是指,允许将内存中暂时不用的程序和数据移至硬盘,以腾出内存空间。
一个系统中的内存容量是有限的,不能随意扩充其大小。然而,当对内存“求大于供”的局面时,就需要采取虚拟存储技术。
将程序当前使用的部分放在内存,而其余部分放在磁盘上,以后根据程序执行时的要求和内存当时使用的情况,随机地将所需部分调入内存;
必要时还要把已分配出去的内存回收,供其他程序使用(内存置换)。
设备管理功能
总体来说,设备管理内容包括,响应进程的IO请求、为进程分配IO设备,完成IO操作;提高IO速度,提高CPU和IO设备的利用率。
设备的分配和驱动由操作系统负责,即设备管理的主要功能包括:缓冲管理,设备分配,设备驱动和设备无关性。
- 缓冲管理:通过在CPU和IO设备之间设置缓冲,有效解决IO设备和CPU的速度不匹配问题,提高CPU的利用率,提高系统的吞吐量。常见策略包括单缓冲、双缓冲以及缓冲池等。
- 设备分配:根据用户IO请求、系统现有资源状况以及设备分配策略来分配设备。同时还需要考虑,设备分配完后,系统是否安全等问题。
- 设备驱动:检查IO请求是否合理,了解设备状态,读取有关的参数和设置设备的工作方式,然后向设备控制器发出IO命令,启动IO设备完成相应IO操作,响应中断请求并调用相应中断处理程序进行处理。
- 设备无关性:设备无关性又称设备独立性,即用户编写的程序与实际使用的物理设备无关,由操作系统把用户程序中使用的逻辑设备映射到物理设备。
文件管理功能
文件管理功能包括:文件存储空间的管理,文件操作的一般管理,目录管理,文件的读写管理和存取控制。
- 文件存储空间的管理:系统文件和用户文件都要放在磁盘上,为此,需要由文件系统对所有文件以及文件的存储空间进行统一管理:为新文件分配必要的外存空间,回收释放的文件空间,提高外存的利用率。
- 文件的一般管理:文件操作的一般管理包括:文件的创建、删除、打开、关闭等。
- 目录管理:为每个文件建立一个目录项,以记录文件的详细情况。并通过对目录项的管理提供文件的共享以及快速的目录查询等功能,提高文件检索速度。
- 文件的读写管理和保护:根据用户的请求,从外存中读取数据或者将数据写入外存中。为了保证文件信息的安全性,防止未授权用户的存取或破坏,对各个文件(包括目录)进行存取控制
提供操作系统与用户之间的接口功能
用户上机操作时直接使用到操作系统提供的用户接口,操作系统对外提供多种服务,使得用户可以方便、有效地使用计算机硬件和运行自己的程序,
使得软件开发变的容易、高效。现代操作系统提供三种用户接口:程序用户接口,命令行接口以及图形用户接口。
程序用户接口
主要为用户的程序使用操作系统的服务提供、访问系统资源提供便利。它由一组系统调用组成。是用户程序取得系统服务的唯一途径。
也称系统调用接口,系统调用是操作系统内核与用户程序、应用程序之间的接口,它位于操作系统核心层的最外层。
所有内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在程序中使用,不能直接作为命令在终端上输入和执行。
由于系统调用能够改变处理机的执行状态,从用户态变为核心态,直接进入内核执行,所以执行效率很高。
用户在自己程序中使用系统调用,从而获取系统提供的众多基层服务,
命令行接口
在提示符之后用户从键盘上输入命令,命令解释程序接收并解释这些命令,然后把它们传递给操作系统内部程序,执行相应功能。
命令行接口不属于操作系统内核,相应的程序是在用户空间中运行的。
图形用户接口
就是通过图形化的操作界面,用容易识别的各种图标来将系统的各项功能、各种应用程序和文件直观表现出来。
以鼠标取代命令的键入等。
用户利用鼠标,窗口,菜单,图标等图形用户界面工具,可以直观、方便,有效地使用系统服务和各种应用程序及实用工具。
图形用户接口也不属于操作系统内核,相应的程序是在用户空间中运行的。