我的操作系统复习——I/O控制和系统调用
上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用。
一、I/O控制方式
I/O就是输入输出,I/O设备指的是输入输出设备和存储设备。I/O控制方式值得就是CPU对内存资源与I/O设备之间输入输出的控制。I/O的控制方式按照发展有下面几种:
(1)、程序I/O方式。
这个最原始的方式的特点是I/O过程中,CPU全程阻塞。CPU向I/O控制器发送指令,要求读取一个字节,IO控制器取一个字节,存入自身的数据寄存器中,存入完毕后通知CPU。然后CPU把这个字节存入内存。在这个过程中,CPU的大部分时间都在等待操作完成。值得注意的是,这种控制方式必须以字节为单位。
(2)、中断驱动I/O控制方式。
这种控制方式的特点是I/O过程中,CPU跟I/O控制器并行工作,无需阻塞。传输过程跟程序I/O方式没区别。不过由于CPU在I/O过程中无需阻塞,效率比之程序I/O方式提高了百倍。
(3)、直接存储器访问I/O控制方式——DMA(Direct Memory Access)
这是一种非常有效率的I/O控制方式——数据传输的基本单位是数据块;DMA控制器将数据直接送入内存;整个数据块传送开始和结束的一刻CPU才会处理,其他时候CPU与控制器并行工作。值得注意的是DMA控制方式是由DMA控制器实现的,DMA控制器有3部分——主机&控制器接口、控制器&块设备接口和I/O控制逻辑。核心就是主机&控制器接口,这个接口是为了完成主机和块数据的直接交换。DMA控制器为了实现功能有四类寄存器:命令/状态寄存器(CR),用来存放控制信息和状态;内存地址寄存器(MAR),存放目标地址;数据寄存器(DR),相当于缓存,暂存数据;以及数据计数器(DC),存放本次 CPU 要读或写的字(节)数。数据传送的过程,简单来说就是,传送前在MAR中设置目标地址,在DC中设置数据块大小,然后控制器每从磁盘取数据存入内存或从内存取数据存入磁盘,就把MAR中的目标地址加一,并把DC中数据块大小减一,直到DC中数据块大小为0,数据便传送完毕。可以看到,DMA是由硬件实现数据块移动的。
(4)、I/O通道控制方式
这种控制方式是对DMA方式的改进,把一个数据块的传输改进为一组数据块的传输。通道指的是这整个传输的虚拟含义。I/O通道控制方式是由通道程序和设备控制器共同实现的。可以说,它比DMA方式改进的地方在于用程序增加了对DMA方式的控制,使多个数据块的传输能够合为一个整体。
《计算机操作系统》上这一幅流程图直接拿来用了:
二、系统调用
什么是系统调用?系统调用说白了就是操作系统提供的接口,用以与系统通信,取得系统服务。应用程序需要通过系统调用才能访问操作系统的关键资源。首先来了解一下计算机的两种状态。
(1)、计算机的两种状态——系统态和用户态
系统态和用户态,其本质就是CPU的两种状态。
1)系统态,又称管态或核心态。处理机运行操作系统的状态。
2)用户态,又称目态。处理机运行应用程序的状态。
应用程序需要调用系统功能时,通过系统调用,CPU转为系统态,取得系统资源,执行系统功能。对应CPU的系统态和用户态,CPU所执行的指令分为特权指令和非特权指令。
(2)CPU执行的两种指令——特权指令和非特权指令。
1)特权指令
即CPU在系统态所执行的指令。这种指令只允许系统态的CPU运行,即只允许操作系统调用。特权指令可以对操作系统执行能执行的所有操作,不受任何限制。
2)非特权指令
即CPU在用户态所执行的指令。这种指令只能执行一般性的操作任务,不能直接进行访问系统中的硬件和软件,其对内存的访问范围也局限于用户空间。应用程序想要访问系统中的硬件和软件,只能通过系统调用间接进行。
(3)系统调用的实现
那么系统调用是怎么实现的呢?系统调用是通过中断机制实现的,并且是同一个中断入口来实现。具体操作就是系统调用的时候,CPU转换为系统态,请求系统服务,处理完毕后继续执行应用程序。这里有几个概念需要了解一下:
1)中断的本质:百度百科解释的很好:“CPU执行完每条指令时,都会去检查一个中断标志位”,这句话是所有关于中断长篇大论的开场白,但很容易被人忽略,其实,这就是中断的本质。
2)内中断(陷入、捕获):由于系统调用引起的中断
3)陷入指令:由于系统调用引起中断的指令称为陷入指令。
4)中断标识码(中断类型号):由硬件(通常是中断控制器)产生,以标识不同的中断源。
5)中断向量:中断服务程序的入口地址。在某些计算机中,中断向量的位置存放一条跳转到中断服务程序入口地址的跳转指令。
6)中断向量地址:存储中断向量的存储单元地址
参考:《计算机操作系统(汤子瀛)》、百度
我的操作系统复习——I/O控制和系统调用的更多相关文章
- iNeuOS工业互联网操作系统,分布式云端控制安全策略和增加实时日志功能
目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制策略和应用过程... 2 3.1 云端控制策略... 2 3.2 ...
- 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?
1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...
- 操作系统开发系列—13.g.操作系统的系统调用 ●
在我们的操作系统中,已经存在的3个进程是运行在ring1上的,它们已经不能任意地使用某些指令,不能访问某些权限更高的内存区域,但如果一项任务需要这些使用指令或者内存区域时,只能通过系统调用来实现,它是 ...
- 操作系统:进程管理和IO控制
一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进 ...
- linux操作系统基础
计算机概述 1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机. 2.计算机五大单元:I/O单元 内存单元 c ...
- Linux C 程序 进程控制(17)
进程控制 1.进程概述现代操作系统的特点在于程序的并行执行.Linux是一个多用户多任务的操作系统.ps .pstree 查看进程进程除了进程id外还有一些其他标识信息,可以通过相应的函数获得.// ...
- 01-Linux操作系统+指令
一.Linux操作系统 操作系统定义:操作系统直接运行在计算机上的系统软件, 它是与硬件打交道和控制软件运行的计算机程序. 虚拟机:就是模拟一个真实的计算机,好比一个虚拟的电 ...
- DAY01、计算机组成及操作系统
一.编程与编程的目的: 1.什么是语言?什么是编程语言? 语言是一事物与另一事物之间沟通的介质 编程语言就是程序员与计算机之间沟通的介质 2.什么是编程? 程序员把自己想要让计算机做的事用编程语言表达 ...
- 进程描述和控制(os 笔记二)
进程描述和控制 计算机最初的主要任务之一就是高效的自动化我们的工作,完成用户交付的任务.而这种任务在计算机中的表示就是一个个的进程.从上一篇文章中描述的计算机的发展历史我们能发现,无论是单道批处理 ...
随机推荐
- jvm系列(六):jvm调优-从eclipse开始
jvm调优-从eclipse开始 概述 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配.回收的情况来调整各区域内存比例或者gc回收的策略:更深一层就是根据dump出来的内存结构和线程 ...
- 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程
本文记录了打PSU的全过程,意在体会数据库打PSU补丁的整个过程. 1.OPatch替换为最新版本2.数据库软件应用19121551补丁程序3.数据库应用补丁4.验证PSU补丁是否应用成功 1.OPa ...
- vertical-align浅析
一直以来都搞不懂vertical-align,它适用于什么元素,它的对齐规则是什么样的.索性查了下w3c相关规范,发现行高和基线对齐的规范说明里有如下内容: This section is being ...
- Azure Backup (3) 使用Azure备份服务,备份Azure虚拟机
<Windows Azure Platform 系列文章目录> 本将介绍,如何使用Azure备份服务,备份Azure虚拟机. 我们先预先创建2台Windows VM (命名为LeiVM00 ...
- Rafy 框架-发布网页版用户手册
前段时间把 Rafy 的用户手册由 CHM 格式转换为了网页格式,而且发布到了 github.io 上,即方便文档的实时更新,也方便大家查看. Rafy 用户手册网页版地址: http://zgynh ...
- redis安装记录
下载redishttps://redis.io/ 下载 3.2.6版本 ,上传到服务器 . 解压tar -zxvf redis-3.2.6 .tar.gz 修改配置文件(修改redis.conf ...
- 征途 bzoj 4518
征途(1s 256MB)journey [问题描述] Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天 ...
- 如何实现一个php框架系列文章【6】mysql数据库
实现一个mysql数据库封装需要考虑的问题 使用方便性 采用直接sql语句操作方式.只要会写sql语句,那么将没有其他学习成本. uctphp框架提供的dba辅助封装类,用会之后将爱不释手. 使用前需 ...
- java入门笔记001--java环境搭建
1. 常见dos命令 •dir : 列出当前目录下的文件以及文件夹 •md : 创建目录 •rd : 删除目录 •cd : 进入指定目录 •cd.. : 退回到上一级目录 •cd\: 退回到根目录 • ...
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...