【操作系统】I/O软件层次结构

文章目录

  • 1. 前言
  • 2. I/O软件层次结构
    • 2.1 用户层软件
    • 2.2 设备独立性软件
    • 2.3 设备驱动程序
    • 2.4 中断处理程序

1. 前言

偶然看到“程序员的护城河是什么”这个话题,作为一个工作两年多的程序员吧,经常看到网上关于各种35岁危机、裁员甚至猝死之云云。最近也不仅思考起了这个问题:我的护城河是什么

我的护城河不单单是指一直作为一个程序员不被开除,而是我有哪些能力让自己始终不担心生计?或者说是应该提升哪些能力使得自己不对未来那么担忧和迷茫。

思考了一段时间。

首先,要排除家里“有矿”的前提(就算有矿那也得在精神层面不断提升自己吧)。我觉得第一就是要有始终学习的习惯,不然淘汰只会提前到来;第二是要分析自己,找到自己更容易获得资源的那个方向(这样至少机会多点),然后先慢慢积累着。耐心的等待着量变到质变的那一刻;第三就是做好手上的事情,始终觉得“不务正业”的风险太高了,做好擅长的事情,除此之外还要尽可能的了解其他知识达到扩展知识面的目的;最后就是觉得应该在工作中积极争取,不能只做一亩三分地,要主动出击,争取机会(当然了,也不能超出能力范围太多,否则适得其反)。

以上就是我这个工作不算久的职场人的一点思考,或许还略显浅显,欢迎大家交流。

那么接下来继续学习吧。

2. I/O软件层次结构

为了让IO相关的硬件设备能够被上层方便的使用,相关的软件程序是必不可少的。我们通过下图看些IO的软件层次结构:

在这里插入图片描述

2.1 用户层软件

用户层软件工作在用户态,主要有两个作用:

  • 实现用户交互接口;
  • 通过库函数实现系统调用;

2.2 设备独立性软件

设备独立性软件相当于所有设备的管理者。它向上一层提供调用接口,具有设备保护、容错处理、设备分配与回收、数据缓冲区管理、逻辑设备与物理设备映射等功能。

2.3 设备驱动程序

不同设备硬件特性不同,但CPU的指令相同,因此需要各硬件设备商负责编写自己的驱动程序软件。驱动程序负责控制硬件设备,将CPU指令转换成设备操作。驱动程序是以独立进程的形式存在的

2.4 中断处理程序

对于IO软件而言,中断处理程序也是必不可少的。当CPU发出IO指令后,调用中断程序,保存现场并阻塞当前进程,转向IO操作;当设备完成IO后再次向CPU发起中断信号,中断程序继续执行。因此中断程序还具有直接操作硬件的能力。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/206536.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构题型

选择题 2021 数据处理的单位:数据元素 矩阵压缩存储 2022 ①单链表头插法选择 ②矩阵压缩存储,行优先 ③删除链表节点的时间复杂度 ④稀疏矩阵存储 ⑤平衡二叉树时间复杂度 ⑥栈和队列的出队,问栈的大小至少多少 ⑦拓扑排序 ⑧参考书 360…

软件第三方测评报告可作哪些用途?

软件第三方测评报告是指由独立、中立的第三方机构对软件进行全面、客观、科学的评估和分析后所做的报告。该报告基于系统而严密的评测流程,通过多项指标和标准,对软件的性能、功能、易用性、安全性等方面进行评价,为用户提供一个权威、可靠的…

js读取json文件

1. 原生的两种方法 1.1 XMLHttpRequest const xhr new XMLHttpRequest(); xhr.overrideMimeType("application/json"); xhr.open(GET, data.json, true); xhr.onreadystatechange function () {if (xhr.readyState 4 && xhr.status 200) {const data …

【必读】从零开始,一步步教你安装nginx,搭建个人博客网站!

nginx搭建个人网站 Nginx是一款轻量级Web服务器、反向代理服务器以及电子邮件代理服务器,并且具有高并发连接处理能力和低内存消耗的特点。它也可以用于负载均衡和缓存控制等功能。 功能: 静态网站服务器:Nginx可以用来作为静态网站服务器&am…

d3dcompiler_47.dll缺失怎么修复,d3dcompiler_47.dll的作用有哪些

d3dcompiler_47.dll丢失是一种常见的电脑问题。如果你遇到了这个问题,不要惊慌,下面的方法可以帮助你解决。本文将详细介绍解决d3dcompiler_47.dll丢失问题的步骤,让你手把手地学会。 一.解决d3dcompiler_47.dll丢失问题的步骤 解决方法一&a…

【问题定位】通过看Mybatis源码解决系统问题

开发需求好好的,运维同事突然发现了一个问题,某个任务的详情页面加载不出来。看日志,系统在进行查询操作的时候抛出空指针异常。感觉是Mybatis内部异常,所以就跟踪源码看下Mybatis运行到哪一步报错的。 DefaultSqlSession#select…

SQLite3 数据库学习(四):Qt 数据库基础操作

参考引用 SQLite 权威指南&#xff08;第二版&#xff09;SQLite3 入门 1. 创建连接执行 sql 语句 在 Qt 中使用数据库要在工程文件中添加QT sql1.1 main.cpp #include "createsqlapp.h" #include <QApplication> #include <QSqlDatabase> #include &l…

技术分享| gcc版本升级到5.2

一、介绍 GCC&#xff08;GNU Compiler Collection&#xff09;是一套广泛使用的开源编译器集合&#xff0c;用于编译多种编程语言&#xff0c;包括C、C、Objective-C、Fortran等。GCC 的不同版本提供了许多新功能、改进和修复&#xff0c;其中包括从 GCC 4.8.5 升级到 GCC 5.…

Python Pandas简介及基础教程+实战示例。

文章目录 前言一、Pandas简介二、Python Pandas的使用关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言 Pan…

Oracle:poor sql导致的latch: cache buffers chains案例

巡检时&#xff0c;执行如下sql发现长会话&#xff1a; SELECT SE.SID,SE.SERIAL#,TO_CHAR(LOGON_TIME,YYYY-MM-DD HH24:MI:SS),SE.STATUS,SE.OSUSER,SE.MACHINE,SE.PROGRAM,SE.BLOCKING_SESSION, SE.SQL_ID,SE.PREV_SQL_ID ,SE.EVENT,SE.P1TEXT,SE.P1,SE.P2TEXT,SE.P2,SE.P3…

JOSEF信号继电器 JX-18A/2 电压 220VAC辅助电源 板后接线

JX-18/2A系列信号继电器 JX-18A/2A1信号继电器&#xff1b; JX-18A/2A2信号继电器&#xff1b; JX-18B /2A1信号继电器; JX-18B/2A2信号继电器; JX-18C/2A1信号继电器; JX-18C/2A2信号继电器; JX-18E/2A1信号继电器; JX-18E/2A2信号继电器; JX-18D/2A1信号继电器; JX…

c++ 谓词

1. 一元谓词 #include <iostream> #include<vector> #include<algorithm>using namespace std;class CreaterFive{ public:bool operator()(int val){return val>5;} };int main() {vector<int> vec;for(int i0; i<10; i){vec.push_back(i);}ve…