我的操作系统复习——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学习(4)——全面总结Java的GC算法和回收机制
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...
- EXP/IMP 导出生产库表的指定数据到测试库一例
一般来讲,EXP/IMP是上一代导出导入程序,EXPDP/IMPDP是新一代的导出导入程序.对于大数据量的导出导入首选EXPDP/IMPDP,可以用到并行度,对表空间等操作上也更加的灵活.对于小数据量 ...
- HTML 基础篇
本章内容: 简介 HTML定义 标签定义和属性 HTML5基本结构 HTML5字符集 <head>标签 <title> <base/> <link/>( ...
- SSE指令集学习:Compiler Intrinsic
大多数的函数是在库中,Intrinsic Function却内嵌在编译器中(built in to the compiler). 1. Intrinsic Function Intrinsic Fun ...
- Linux特殊符号浅谈
Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...
- 04实现累加和计算功能并且实现textbox不允许输入数字以外的字符但不包括退格键同时不允许第一个数值为0
private void button1_Click(object sender, EventArgs e) { double number1, number2; if (double.TryPars ...
- MySql Access denied for user 'root'@'localhost' (using password:YES) 解决方案
关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入"mysql -uroot -pmyadmin"后出现以下错 ...
- HTTP各状态码解释
状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必 ...
- Maven部署构件至远程仓库
私服的一大作用就是部署第三方构件,包括组织内的生成的构件以及一些无法从外部仓库获取的构件.无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其它团队成员使用.Maven除了能对 ...
- 节日来了发个HTML5红包
效果图: 请关注微信公众号 何问起 , 账号ihewenqi ,或者微信扫描下图二维码: 关注后发送 愚人节 ,或 微信节日红包 ,可以体验效果. 代码如下: <!DOCTYPE html> ...