计算机操作系统感悟随笔--设备管理 IO

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
I/O设备
I/O设备可以分为存储设备或输入输出设备;块设备或字符设备;低速中速高速设备。
I/O设备不是直接和cpu进行通信,而是通过设备控制器和cpu进行间接通信,cpu通过设备控制器去控制一个或多个设备。
设备控制器功能:①接收和识别cpu的命令;②数据交换;③标识和报告设备的状态;④地址识别;⑤数据缓存;⑥差错控制;

如上所示是设备控制器的结构图,主要分为与cpu的接口,与I/O设备的接口和I/O逻辑控制,I/O逻辑控制会对收到的地址进行译码。
I/O通道
I/O通道的引入是为了解决当外设多时,cpu任务负担重的问题,I/O通道设备是建立在cpu和设计控制器之间。I/O通道设备使得cpu从io任务中解放出来。当cpu 发出io指令后,io通道执行通道程序完成io任务,完成后向cpu发出中断信号。

I/O控制方式
I/O控制方法由四种:程序I/O方式(查询方式),中断方式,DMA方式,I/O通道控制方式。
①程序I/O方式:这种方式也可以称为查询方式,cpu不断地去查询设备控制器是否将数据放到了数据存储器中,或者从数据存储器存到设备中,当完成IO时cpu才能去干别的事。
②中断方式:这种方式当cpu发出指令后就可以去干别的事,当设备控制器把数据存在数据存储器后,向cpu发出中断请求,然后cpu再来处理这部分数据。
③DMA方式:虽然中断方式提高了cpu的利用率,但是数据寄存器有限,中断是以字节单位进行中断,也就是说读取或存储一个字节后就需要进行中断,那么其实cpu的利用率还是很低的,所以就诞生了DMA方式,这种方式由DMA控制器直接将设备中的数据以数据块为单位直接传输到内存中,当传输结束后才向cpu发起中断。
④IO通道控制方式:DMA虽然大大地提升了cpu的利用率,但是DMA只能传输一个连续的数据块。所以引入了IO通道的控制方式,IO通道控制方式可以传输不连续的数据块,减少了cpu干预。cpu通过对IO通道发出指令,然后让IO通道自己工作,等数据传输完才向cpu发起中断。

缓冲
缓冲可以缓和cpu和IO设备速度不匹配的问题,减少对cpu的中断频率。
缓冲又分为单缓冲,双缓冲,循环缓冲。缓冲使得设备控制器在搬运数据的同时使得cpu也能同时进行计算工作,大大地提升了cpu的利用率。
不过现在用的比较多的是缓冲池,缓冲池中包含多个缓冲区。缓冲区又分为空缓冲区,装载输出数据的缓冲区和装载输入数据的缓冲区。

IO软件
io软件需要达到以下几个目标:与具体设备无关、统一命名、对错误的处理、缓冲技术、设备的分配与释放、屏蔽io控制方式的差异。
io软件又分为以下几个层次:用户层软件、设备独立性软件、设备驱动程序、中断处理程序。
用户层软件负责向上层用户提供接口。
设备独立性软件负责逻辑设备和物理设备的映射、缓冲、设备保护、设备分配及释放。
设备驱动程序负责驱动io设备工作。
spooling技术
spooling技术是缓和高速cpu和低速io设备速度不匹配的问题。通过外围控制机,以高速磁盘为介质来做脱机操作。也就是说把高速磁盘作为了一个中间介质来提升低速io设备的速度问题。同时spooling系统将独占设备变成了虚拟的逻辑共享设备。

磁盘存储器管理
①物理构成:
磁盘包括多个物理盘片,每个盘片有一个或两个存储面。每个磁盘被组织成多个同心环,称为磁道,每个磁道可存储相同位数的二进制位。每个磁道又被分为若干个扇区,每个扇区包含数据字段和控制字段。
②磁盘调度:
在磁盘中读取数据时,磁盘的寻道时间远远超过了数据传输时间。
那么磁盘调度就是要减少磁盘的平均寻道时间。
先来先服务:该调度算法未对磁盘寻道进行优化,只适合磁盘io请求少的情况。
最短寻道时间优先:该寻道方式是先访问近的磁道。
扫描算法:虽然最短寻道时间保证了每次寻道时间最短,但是可能会造成某些进程需要的数据一直距离磁头的位置比较远,造成长时间获取不到数据。这种算法又可以称为电梯算法,沿一个方向寻找最近的数据,直到该方向的磁道上没有请求。
循环扫描算法:循环扫描算法规定了磁盘的单向移动,例如只能从最里扫到最外,这样防止了刚被扫描过的磁盘又要被访问,而等待很长时间。
NStepSCAN算法和FSCAN算法:在前几种算法中会出现磁臂粘着的情况,如果在处理该磁道的时候,又有该磁道的请求,那么就会一直处理下去,使得无法处理别的请求。
NStepSCAN算法是将SCAN算法分成了N个队列,对一个队列采用SCAN算法,按FCFS算法处理这些队列。
FSCAN算法是对N步SCAN算法的化简,只分成了两个队列。
③磁盘缓存
磁盘缓存其实是内存中的一个空间。
④提高磁盘io的方法
提前读、延迟写、优化物理块的分布、虚拟盘
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ThinkPHP 是一个优秀的PHP框架,可以帮助我们快速开发高质量的 Web 应用程序。因此,使用 ThinkPHP 来开发 OA 系统是非常方便和实用的。下面我们来讨论一下如何使用 ThinkPHP 来开发一个人力资源管理系统。 1. 创建数据库 首先,我们需要创建一个数据库来存储我们的数据。在该数据库中,我们需要创建一些表来存储员工信息、部门信息、职位信息、薪资信息等等。我们可以使用 MySQL 数据库来创建这些表。 2. 创建 ThinkPHP 项目 在创建完数据库之后,我们需要创建一个 ThinkPHP 项目来实现我们的 OA 系统。我们可以使用 ThinkPHP 官方提供的命令行工具来创建项目,具体命令如下: ``` composer create-project topthink/think oa ``` 执行完上述命令后,会在当前目录下创建一个名为 oa 的 ThinkPHP 项目。 3. 配置数据库 在项目创建好之后,我们需要配置数据库连接信息。在项目的 `.env` 文件中,我们可以配置数据库的相关信息,如下所示: ``` # 数据库类型 DB_CONNECTION=mysql # 数据库地址 DB_HOST=127.0.0.1 # 数据库端口 DB_PORT=3306 # 数据库名 DB_DATABASE=oa # 数据库用户名 DB_USERNAME=root # 数据库密码 DB_PASSWORD= ``` 我们需要根据自己的实际情况来修改这些配置项。 4. 创建控制器和模型 在 ThinkPHP 中,我们可以通过创建控制器和模型来实现 OA 系统的功能。我们可以使用命令行工具来快速创建控制器和模型,具体命令如下: ``` # 创建控制器 php think make:controller Index # 创建模型 php think make:model User ``` 执行完上述命令后,会在项目中生成一个名为 Index 的控制器和一个名为 User 的模型。 5. 实现功能 在创建好控制器和模型之后,我们就可以开始实现 OA 系统的功能了。比如,我们可以实现员工信息的添加、修改、删除、查询等操作,部门信息的添加、修改、删除、查询等操作,职位信息的添加、修改、删除、查询等操作,薪资信息的添加、修改、删除、查询等操作等等。我们可以在控制器中编写处理逻辑,在模型中编写数据库操作。最后,我们可以使用视图来展示数据。 6. 测试系统 在实现完功能之后,我们需要对系统进行测试。我们可以使用浏览器或者 Postman 等工具来测试系统的功能是否正常。如果有问题,我们可以根据错误提示来进行调试和修复。 总之,使用 ThinkPHP 来开发 OA 系统是非常方便和实用的。我们可以根据自己的实际情况来定制系统的功能和界面,从而更好地管理公司的人力资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值