驱动相关基础

news2025/1/18 11:45:54

1.程序分类

1.1 裸机程序:直接运行在对应硬件的的程序
1.2 应用程序:只能运行在对应操作系统上的程序

2. 计算机系统的层次结构

2.1 无操作系统的简单的两层结构
在这里插入图片描述

2.2 有操作系统的四层层次结构
在这里插入图片描述

3. 操作系统

狭义:给应用程序提供运行环境的裸机程序,也称操作系统的内核
广义:一组软件集合,包含:

  1. 最核心的裸机程序-----内核(kernel)
  2. app开发常用的一些功能库(如C语言标准函数库,线程库,C++标准类库,QT类库等)
  3. 一些管理用的特殊APP(如桌面管理、命令行、app包管理、系统管理器、系统设置、一些常用的后台服务程序)

4. 操作系统内核的实现模式

内核:操作系统最核心的那个裸机程序,主要负责硬件资源的驱动和管理
一个操作系统内核主要包括以下几个子模块:

  1. 任务管理(进程管理):包括多任务支持、任务调度、任务间通信
  2. 内存管理:物理内存管理、虚拟内存实现
  3. 设备驱动:各种外部设备的I/O支持
  4. 网络协议支持:
  5. 文件系统支持:
  6. 启动管理:

两种典型的内核实现形式:

  1. 单内核(宏内核):所有子模块代码编译到一个比较大的可执行文件(镜像文件)中,各子模块代码共用同一套运行资源,各模块间交互直接通过函数调用来进行
  2. 微内核:只将任务管理、内存管理、启动管理最基本的三个子模块编译到一个微型的可执行文件中,其他子模块则各自编译成一个独立的后台服务程序,这些服务程序与微型内核以及APP间的主要通信通过IPC进行。

单内核特点:效率高、稳定性低、扩展性差、安全性高 典型操作系统:unix Linux等
微内核特点:效率低、稳定性高、扩展性高、安全性低 典型操作系统:Windows、QNX

5.设备驱动程序

一种添加到操作系统中的特殊程序,主要作用是协助操作系统完成应用程序与对应硬件设备之间的数据传送的功能,简言之,设备驱动程序就是操作系统中“驱动”对应硬件设备,使之能正常工作的代码。
一个驱动程序主要完成如下工作:
1.初始化设备,让设备做好开始工作的准备
2.读数据,将设备产生的数据传递到上层应用程序
3.写数据,将上层应用程序交付的的数据传递给设备
4.获取设备信息,协助上层应用获取设备的属性、状态信息
5.设置设备信息,让上层应用可以决定设备的一些工作属性、模式
6.其他相关操作,休眠、唤醒、关闭等
其中最核心的工作就是设备数据的输入和输出,因此计算机外部设备(外设)也被称为IO设备

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

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

相关文章

Python图像处理【7】采样、卷积与离散傅里叶变换

采样、卷积与离散傅里叶变换0. 前言1. 图像傅里叶变换1.1 傅里叶变换基础1.2 傅里叶变换应用1.3 逆傅里叶变换应用2. 利用采样改变图像分辨率2.1 上采样2.2 下采样小结系列链接0. 前言 采样 (Sampling) 是用于选择/丢弃图像像素的空间操作,通常用于增加/减小图像大…

(byte)1658385462>>16=-40,怎么算的?

正文 在 Github 项目mongo-java-driver有一个类ObjectId.java,它的作用是生成唯一 id 的,它的核心实现是下面这样一段代码 [1]: public void putToByteBuffer(final ByteBuffer buffer) {notNull("buffer", buffer);isTrueArgume…

【数据结构Java版】树与二叉树的相关知识全解

目录 一、树型结构 (1)树的定义 (2)树的基本术语 (3)树的存储结构 二、二叉树 (1)二叉树的定义 (2)两种特殊二叉树 1.满二叉树 2.完全二叉树 &…

CSS中你可能不知道的Selectors特性

CSS中你可能不知道的Selectors特性本文作者为奇舞团前端开发工程师引言最近看了2022年全球CSS调查报告&#xff0c;发现了一些不常见的伪类和伪元素。伪类:has()html<div><h1>H1</h1><h2>H2</h2><p>h1{margin: 0 0 0.25rem 0}</p> &…

设置访问SSH为密钥访问

1.制作密钥对 ssh-keygen输入会问两个问题 设置公私钥名称&#xff08;可以留白&#xff0c;直接回车&#xff09;设置公私钥密码&#xff08;可以留白&#xff0c;直接回车&#xff09; 第一次输入第二次确认 留空确认的话&#xff0c;生成公私钥。共有两个文件 # 私钥 id…

Rxjava源码分析实践(三)【RxJava基本原理分析之订阅流】

本节,我们从Rxjava使用代码入手,去结合自己已有的知识体系,加查阅部分源码验证的方式,来一起探索一下Rxjava实现的基本原理。 为了本文原理分析环节,可以被更多的人理解、学习,所以小编从初学者的角度,从使用入手,一点点的分析了其中的源码细节、思想,建议大家随着本文…

NCMMSC论文介绍 | 探索语音自监督模型的高效融合算法

本文介绍了清华大学语音与音频技术实验室&#xff08;SATLab&#xff09;与上海交通大学跨媒体语言智能实验室&#xff08;X-LANCE&#xff09;合作的NCMMSC录用论文&#xff1a;Exploring Effective Fusion Algorithms for Speech Based Self-Supervised Learning Models。该论…

动态列合并更新

【问题】 I have one query, would be great if anyone can help me out on this. In SQL, I have two tables with same column names. Want to query if there is any difference in the column values and if yes will update the values(in the first table) else if the…

【工具类】后台Mock工具类

目录一、介绍二、使用方法1. Controller层定义接口2. 编写json文件3. 开启AOP4. 调用接口验证三、源码一、介绍 Controller层定义完接口后&#xff0c;不需要写业务逻辑。编写Json文件&#xff0c;调用接口时返回json文件的数据。 优点&#xff1a; 设计阶段即可定义好接口&…

Centos 图形化yum管理工具 - yum Extender

文章目录背景安装开启yum-GUI工具 - yumexyum list installed列出软件包的依赖yum cleam背景 作为一个yum工程师&#xff0c;长期备受yum 命令的煎熬。 难道yum就乜有一个GUI管理界面吗&#xff1f; yum Extender (简称 yumex ) , 是 yum 的图形化操作界面。可以通过 yumex 方…

ActiveMQ高级特性和大厂面试常考重点

目录 一、引入消息队列之后该如何保证其高可用性 二、异步投递Async Sends 三、延迟投递和定时投递 四、ActiveMQ消费重试机制 五、死信队列 六、如何保证消息不被重复消费呢?幂等性问题你谈谈 一、引入消息队列之后该如何保证其高可用性 ActiveMQ集群模式_zoeil的博客-…

【机器学习】KNN 算法介绍

文章目录一、KNN 简介二、KNN 核心思想实例分析&#xff1a;K 值的影响三、KNN 的关键1. 距离计算1. 闵可夫斯基距离2. 曼哈顿距离3. 欧氏距离4. 切比雪夫距离5. 余弦距离总结2. K值选择四、KNN 的改进&#xff1a;KDTree五、KNN 回归算法参考链接一、KNN 简介 KNN 算法&#…

想在微信上使用chatGPT?小程序?公众号?企业微信,最终还是选择了企业微信版本的chatgpt

chatgpt的接口现在都可以正常用了&#xff0c;但是怎么把这个功能放在手机上随用随开呢&#xff1f;微信个人聊天版本小程序版本公众号版本企业微信版本逻辑实现方式微信个人聊天版本 网上很多微信机器人版本的&#xff0c;但是原理是网页版微信&#xff0c;很多账号都不能登陆…

golang指针

指针 区别于C/C中的指针&#xff0c;Go语言中的指针不能进行偏移和运算&#xff0c;是安全指针。 要搞明白Go语言中的指针需要先知道3个概念&#xff1a;指针地址、指针类型和指针取值。 1.1. Go语言中的指针 Go语言中的函数传参都是值拷贝&#xff0c;当我们想要修改某个变…

Linux中如何理解线程?线程ID到底是什么?

朋友们好&#xff0c;这里简要介绍了进程和线程的区别以及对LINUX中线程ID的理解&#xff0c;本人目前理解尚浅&#xff0c;若文中有表述不当的地方还望理解并指正&#xff0c;谢谢大家&#xff01; 文章目录一&#xff1a;进程和线程二&#xff1a;线程ID和进程地址空间布局一…

5 项目部署

5.1 Linux-项目部署 5.1.1 环境 5.1.1.1 开发环境&#xff08;dev&#xff09; 外部用户无法访问&#xff0c;开发人员使用&#xff0c;版本变动很大 平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发. 在开发环境中安装大量的软件&#xff0c;这样会导致环境的稳…

2022 年度盘点 | 更成熟的 AI,更破圈的技术狂欢

By 超神经内容一览&#xff1a;2022 年 AI 领域发展不断提速&#xff0c;新技术成果纷纷落地&#xff0c;模型迭代加速升级。本文总结了 2022 年 AI 领域各大公司的技术成就。关键词&#xff1a;年终盘点 大厂 技术创新2022 年在此起彼伏的咳嗽声中接近尾声&#xff0c;这一…

onCreate、onSaveInstanceState、onRestoreInstance一个参数和两个参数

Android Studio移动应用开发——onCreate、onSaveInstanceState、onRestoreInstance一个参数和两个参数_dear_jing的博客-程序员宅基地 - 程序员宅基地 在做Android生命周期实验过程中&#xff0c;把 Log.i(TAG, "(1) onCreate()") 写到了含有两个参数的函数 onSave…

HTML5 元素拖放

文章目录HTML5 元素拖放概述触发事件实现元素拖放功能dataTransfer元素拖动效果垃圾箱效果HTML5 元素拖放 概述 在HTML5中&#xff0c;我们只需要给元素添加一个draggable属性&#xff0c;然后设置该属性值为true&#xff0c;就能实现元素的拖放。 拖放&#xff0c;指的是“…

【Python】Numpy分布函数总结

文章目录总表均匀分布和三角分布幂分布与正态分布相关的分布与Gamma相关的分布极值分布总表 np.random中提供了一系列的分布函数&#xff0c;用以生成符合某种分布的随机数。下表中&#xff0c;如未作特殊说明&#xff0c;均有一个size参数&#xff0c;用以描述生成数组的尺寸…