上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的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控制和系统调用的更多相关文章

  1. iNeuOS工业互联网操作系统,分布式云端控制安全策略和增加实时日志功能

    目       录 1.      概述... 2 2.      平台演示... 2 3.      云端控制策略和应用过程... 2 3.1           云端控制策略... 2 3.2   ...

  2. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  3. 操作系统开发系列—13.g.操作系统的系统调用 ●

    在我们的操作系统中,已经存在的3个进程是运行在ring1上的,它们已经不能任意地使用某些指令,不能访问某些权限更高的内存区域,但如果一项任务需要这些使用指令或者内存区域时,只能通过系统调用来实现,它是 ...

  4. 操作系统:进程管理和IO控制

    一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进 ...

  5. linux操作系统基础

    计算机概述 1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机. 2.计算机五大单元:I/O单元 内存单元 c ...

  6. Linux C 程序 进程控制(17)

    进程控制 1.进程概述现代操作系统的特点在于程序的并行执行.Linux是一个多用户多任务的操作系统.ps .pstree 查看进程进程除了进程id外还有一些其他标识信息,可以通过相应的函数获得.// ...

  7. 01-Linux操作系统+指令

    一.Linux操作系统     操作系统定义:操作系统直接运行在计算机上的系统软件, 它是与硬件打交道和控制软件运行的计算机程序.          虚拟机:就是模拟一个真实的计算机,好比一个虚拟的电 ...

  8. DAY01、计算机组成及操作系统

    一.编程与编程的目的: 1.什么是语言?什么是编程语言? 语言是一事物与另一事物之间沟通的介质 编程语言就是程序员与计算机之间沟通的介质 2.什么是编程? 程序员把自己想要让计算机做的事用编程语言表达 ...

  9. 进程描述和控制(os 笔记二)

    进程描述和控制 ​ 计算机最初的主要任务之一就是高效的自动化我们的工作,完成用户交付的任务.而这种任务在计算机中的表示就是一个个的进程.从上一篇文章中描述的计算机的发展历史我们能发现,无论是单道批处理 ...

随机推荐

  1. Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。

    在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origs ...

  2. FFmpeg学习2:解码数据结构及函数总结

    在上一篇文章中,对FFmpeg的视频解码过程做了一个总结.由于才接触FFmpeg,还是挺陌生的,这里就解码过程再做一个总结. 本文的总结分为以下两个部分: 数据读取,主要关注在解码过程中所用到的FFm ...

  3. C#图片按比例缩放

    C#图片按比例缩放: // 按比例缩放图片 public Image ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight) ...

  4. spring aop对service层日志和异常的处理

    1.aop是什么 AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种 ...

  5. js通过循环多张图片实现动画效果

    以小鱼摇尾巴和眨眼睛为例 动画思路: 1.将图片资源放在数组里面 2.通过计时器来设定间隔时间 3.通过计数器来取相应的图片 第一步:基本框架,鱼身体 <body> <canvas ...

  6. 移动端图片随手势移动react组件(附移动开发小tips)

    这个效果是公司产品中一个用到的效果,用于展示项目的信息,废话少说,先上效果图,代码在最后:),这个组件是在上篇博客中用webpack搭建的环境中完成的http://www.cnblogs.com/wu ...

  7. Exploitation with Social Engineering Toolkit SET

    下面演示如何使用S.E.T工具创建Payload并配置Armitage实现目标主机自动上线. 打开S.E.T工具选择第一项,进行Attacks配置. 选择4创建一个Payload和Listener. ...

  8. Android Weekly Notes Issue #228

    Android Weekly Issue #228 October 23rd, 2016 Android Weekly Issue #228 本期内容包括: Android 7.1的App Short ...

  9. Images.xcassets不能获取图片路径

    原文地址:http://www.jianshu.com/p/5358f587af38 Images.xcassets在app打包后,以Assets.car文件的形式出现在bundle中.其作用在于: ...

  10. mac下查看.mobileprovision文件及钥匙串中证书.cer文件

    mac下查看.mobileprovision文件及钥匙串中证书.cer文件 一. mobileprovision文件查看 xxx.mobileprovision是ios开发中的设备描述文件,里面有证书 ...