【操作系统】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.mzph.cn/news/161569.shtml

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

相关文章

modbus协议及modbus TCP协议

一、Modbus协议 1.起源 Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。 Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU(通信效率最高,基于串口&am…

springboot前后端分离项目配置https接口(ssl证书)

文章目录 说明vue.js前端部署vue.js项目axios请求配置本地创建日志文件创建Dockerfile文件配置ssl证书nginx.confvue项目打包上传创建容器部署 后端springboot项目部署配置ssl证书打包部署 补充:jsk证书和pfx证书补充:两种证书的转化JKS转PFXPFX 转 JKS …

Elasticsearch:将最大内积引入 Lucene

作者:Benjamin Trent 目前,Lucene 限制 dot_product (点积) 只能在标准化向量上使用。 归一化迫使所有向量幅度等于一。 虽然在许多情况下这是可以接受的,但它可能会导致某些数据集的相关性问题。 一个典型的例子是 Cohere 构建的嵌入&#x…

使用 Lhotse 高效管理音频数据集

Lhotse 是一个旨在使语音和音频数据准备更具灵活性和可访问性的 Python 库,它与 k2 一起,构成了下一代 Kaldi 语音处理库的一部分。 主要目标: 1. 以 Python 为中心的设计吸引更广泛的社区参与语音处理任务。 2. 为有经验的 Kaldi 用户提供…

SpringBoot——启动类的原理

优质博文:IT-BLOG-CN SpringBoot启动类上使用SpringBootApplication注解,该注解是一个组合注解,包含多个其它注解。和类定义SpringApplication.run要揭开SpringBoot的神秘面纱,我们要从这两位开始就可以了。 SpringBootApplicati…

Spring实例化对象

默认proxyBeanMethods true,这种方法是用的代理模式创建对象,每次创建都是同一个对象,如果改为false每次都是不同的对象 FactoryBean的使用 定义的类A,造出来一个类B,可以在创造bean之前做一些自己的个性化操作

MFS分布式文件系统

目录 集群部署 Master Servers ​Chunkservers ​编辑Clients Storage Classes LABEL mfs高可用 pacemaker高可用 ​编辑ISCSI 添加集群资源 主机 ip 角色 server1 192.168.81.11 Master Servers server2 192.168.81.12 Chunkservers server3 192.168.81.13 Chunkserver…

【产品安全平台】上海道宁与Cybellum将整个产品安全工作流程整合到一个专用平台中,保持构建的互联产品的网络安全和网络合规性

Cybellum将 整个产品安全工作流程 整合到一个专用平台中 使设备制造商能够 保持他们构建的互联产品的 网络安全和网络合规性 产品安全性对 每个人来说都不一样 每个行业的系统、工作流程和 法规都存在根本差异 因此,Cybellum量身定制了 Cybellum的平台和技…

为何内存不够用?微服务改造启动多个Spring Boot的陷阱与解决方案

在生产环境中我们会遇到一些问题,此文主要记录并复盘一下当时项目中的实际问题及解决过程。 背景简述 最初系统上线后都比较正常风平浪静的。在系统运行了一段时间后,业务量上升后,生产上发现java应用内存占用过高,服务器总共64…

打印出一个底部有n个*的漏斗c语言

题目描述 打印出一个底部有n个*的漏斗 输入 第一行输入一个T;表示有T组测试数据 下面每一行都有一个n表示漏斗底部*的个数 n保证是奇数 输出 输出打印结果 两个测试答案之间要用换行分割 /*printf("这是第%d行 我要打印%d个* \n",Num,i); */ *********** *…

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场,仅次于美国。近年来,随着中国经济的持续增长和人民生活水平的提高,医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大,为医药行业的发展创造了良好的政策环境。为推动医药…

SparkSession介绍

一、 介绍 SparkSession是Spark 2.0中引入的新概念,它是Spark SQL、DataFrame和Dataset API的入口点,是Spark编程的统一API,也可看作是读取数据的统一入口;它将以前的SparkContext、SQLContext和HiveContext组合在一起&#xff0…

结构体与指针_sizeof_static_extern_函数指针数组_函数指针_回调函数

一、结构体与指针 #include <stdint.h> #include <stdlib.h> #include <stdio.h> #define up_to_down(uuu) (downdemo_t *)(uuu->beg) #define __plc__ typedef struct updemo_s{uint8_t *head;uint8_t *beg;uint8_t *end; }updemo_t; typedef struct do…

陪玩圈子系统APP小程序H5,详细介绍,源码交付,支持二开!

陪玩圈子系统&#xff0c;页面展示&#xff0c;源码交付&#xff0c;支持二开&#xff01; 陪玩后端下载地址&#xff1a;电竞开黑陪玩系统小程序&#xff0c;APP&#xff0c;H5: 本系统是集齐开黑&#xff0c;陪玩&#xff0c;陪聊于一体的专业APP&#xff0c;小程序&#xff…

2:kotlin集合(Collections)

集合有助于数据分组&#xff0c;方便后续操作 集合类型说明Lists有序的可重复的集合Sets无序的不可重复的集合Maps键值对映射集合&#xff0c;键唯一&#xff0c;且一个键只能映射到一个值 每个集合类型都可以是可变的或者只读的 List List按照添加的顺序存储内容&#xff…

Linux进程通信——共享内存

概念 共享内存&#xff08;Shared Memory&#xff09;&#xff0c;指两个或多个进程共享一个给定的存储区。 特点 共享内存是最快的一种 IPC&#xff0c;因为进程是直接对内存进行存取。 因为多个进程可以同时操作&#xff0c;所以需要进行同步。 信号量共享内存通常结合在一…

Open3D (C++) 计算两点云之间的最小距离

目录 一、 算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、 算法原理 Open3D中ComputePointCloudDistance函数提供了计算从源点云到目标点云的距离的方法,计算点云的距离。也…

python数据结构与算法-05_栈

栈 栈这个词实际上在计算机科学里使用很多&#xff0c;除了数据结构外&#xff0c;还有内存里的栈区 &#xff08;和堆对应&#xff09;&#xff0c;熟悉 C 系语言的话应该不会陌生。 上一章我们讲到了先进先出 queue&#xff0c;其实用 python 的内置类型 collections.deque …

【C语法学习】26 - strcmp()函数

文章目录 1 函数原型2 参数3 返回值4 比较机制5 示例5.1 示例1 1 函数原型 strcmp()&#xff1a;比较str1指向的字符串和str2指向的字符串&#xff0c;函数原型如下&#xff1a; int strcmp(const char *str1, const char *str2);2 参数 strcmp()函数有两个参数str1和str2&a…

HCIP-四、MUX-vlanSuper-vlan+端口安全

四、MUX-vlan&Super-vlan端口安全 MUX-vlan实验拓扑实验需求及解法1. 在SW1/2/3分别创建vlan10 20 30 402. SW1/2/3之间使用trunk链路&#xff0c;仅允许vlan10 20 30 40 通过。3. SW与PC/Server之间使用access链路。4. ping验证&#xff1a; Super-vlan端口安全实验拓扑实…