驱动开发——嵌入式(驱动)软开基础(十)

news2024/12/25 9:25:10

1. 64位的计算机有哪些优点?

(1)可以进行更大范围的整数计算。

(2)可以支持更大的内存,虚拟内存空间大小一般为2^48(256TB)。64位的Linux一般使用48位表示虚拟内存空间地址,40位表示物理内存地址。

2. 中断分为哪两种?

(1)异步中断:也叫外部中断,由CPU外设产生的电信号,其发生时间不可预估。其引入是为了支持CPU和设备之间的并行操作。

(2)同步中断:也叫内部中断、异常,由CPU内部产生的电信号,其特点是当前指令执行完才产生中断。其引入是为了表示CPU执行时本身出现的问题。

3. Linux系统的挂起、待机、休眠

(1)挂起:CPU、内存工作,而硬盘、显示器等外部设备停止工作。

(2)待机:只对内存供电,CPU、外设停止工作。

(3)休眠:CPU、内存停止工作,内存中的数据保存在硬盘中,外部设备也停止工作。

4. Linux关机、重启的命令有哪些?

(1)关机命令:halt、shutdown -h 时间、init0、poweroff

(2)重启命令:reboot、shutdown -r 时间、init6

注意:shutdown可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上所有登录用户提示一条警告信息,还允许用户设置一个缓冲时间。

5. Linux目录结构,/usr、/tmp、/etc目录的作用?

(1)Linux目录结构
在这里插入图片描述

(2)/usr:是Unix Software Resource的缩写,也就是Unix操作系统软件资源所放置的目录,而不是用户数据。

(3)/tmp:让一般使用者或者是正在执行的程序暂时放置档案的地方。

(4)/etc:系统主要的设定档案几乎都放置于这个目录,例如人员的账号密码档案、各种服务器的起始档案。一般是供给使用者查阅的,只有root用户有权限修改。FHS建议不要放置可执行档案在这个目录中。

6. 简述实时操作系统和非实时操作系统的区别?

(1)实时操作系统:是可抢占式内核,响应外部事件尽可能快且响应时间具有确定性。有硬实时操作系统和软实时操作系统,硬实时操作系统的抖动(时间偏差)比软实时操作系统小。

(2)非实时操作系统:非可抢占式内核,响应外部事的时间没有保证。

7. 常用的实时操作系统有哪些?非实时呢?

(1)实时:Vxworks、μCOS、eCOS、QNX、MQX、Nucleus、FREERTOS、RTLinux、RTEMS、RT-Thread。

(2)软实时或非实时:WinCE、Linux

7 Linux内核的调度策略有哪些?

(1)SCHED_OTHER分时调度策略;

(2)SCHED_FIFO实时调度策略,先到先服务。

(3)SCHED_RR实时调度策略,时间片轮转。

8. 块与页有什么关系?

操作系统经常与硬盘和内存这两种存储设备进行通信,块是操作系统读写硬盘的最小单位页是操作系统读写内存的最小单位

9. 简述处理器在读内存过程中,CPU、MMU、cache、内存如何协同工作?

(1)CPU内核发出VA向TLB请求页表项,它缓存最近查找过的VA对应的页表项,如果TLB中刚好缓存了该VA对应的页表项则直接返回给CPU;否则就由MMU去物理内存中读出页表项保存在TLB中,同时返回给CPU内核。(TLB可以减少访问物理内存的次数)

(2)MMU首先检查页表项中的权限位,如果没有访问权限,就引发一个异常给CPU内核;有权限则检查是否允许缓存(页表项中不仅保存着物理页面的基地址,还保存着权限和是否允许cache的标志)。

(3)如果不允许cache,则MMU直接发出PA从物理内存中读取数据到CPU内核。

(4)如果允许cache,则MMU以VA为索引到cache中查找是否缓存了要读取的数据,如果是则直接返回给CPU内核;如果不是则MMU发出PA从物理内存中读取数据并缓存到cache中,同时返回给CPU内核。

10. ARM CPU上的地址转换涉及哪三个概念?

(1)虚拟地址(VA):CPU内核对外发出VA。

(2)变换后的虚拟地址MVA, Modified Virtual Address):VA被变换为MVA供cache和MMU使用,由硬件自动完成。如果VA < 32M,则需要使用PID来转换为MVA(VA | (PID << 25)),目的是当两个进程的虚拟地址空间有重叠时,把重叠的VA映射到不同的PA上去,减少切换进程的代价,

(3)物理地址(PA):最后使用PA读写实际设备。

11. MMU的和不用MMU的操作系统有哪些?带MMU的和不带MMU的CPU有哪些?

(1)用MMU的操作系统有:Windows、MacOS、Linux、Android;不用MMU的操作系统有:FreeRTOS、VxWorks、UCOS。

(2)带MMU的CPU有:Cortex-A系列、ARM9、ARM11系列;不带MMU的CPU有:Cortex-M系列(STM32就是使用M系列内核)。

12. 为什么uboot要关掉cache?

cache主要用来加快CPU读取内存中指令的速度,但在CPU初始化时,内存并未准备就绪,直接进行数据读取,势必导致指令取址异常。

13. 内核函数mmap的实现原理?

mmap函数能够实现把一个文件映射到一个内存区域,使得我们可以像读写内存一样读写文件,比单纯地调用read/write函数要快上许多。我们可以把内存中的内容拷贝到一个文件中实现内存备份,也可以把文件映射到内存来恢复某些服务。

解读:实现共享内存是mmap函数的主要应用之一,mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存,是一种进程间通信方式。

  1. 缺省的Linux系统中,从后台启动进程,应在命令的结尾加上**&**。

15. ps跟top有什么区别?

(1)ps看到的是命令执行瞬间的进程信息;而top可以实时地持续监视,不断更新进程状态。

(2)ps只是查看进程信息,而top还可以监视系统性能,如CPU负载、内存消耗。

(3)另外top还可以操作进程,如改变优先级(命令r)和关闭进程(命令k)。

  1. 写出下列常用命令:

Linux查看线程ID: ①ps -T -p 进程号; ②top -H -p 进程号; ③pstree -Aup -h 进程号

Linux设置文件目录权限: chmod

uboot查看环境变量:printenv

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

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

相关文章

esp8266 OTA远程无线升级

第一步、编译生成.bin升级固件 本教程需要用到 arduino IDE的esp8266开发环境,关于arduino IDE 的ESP8266环境配置可参考:环境配置: 点击跳转 如果已安装好esp8266 开发环境,继续: 使用arduino IDE软件,打开随便一个需要升级的程序,点击「项目」-「导出已编译的二进制…

【Bug 全解决】 Java、Spring boot 后端项目 Bug 总结

Bug 收集与总结 本文记录的是 SpringBoot 后端项目使用和运行代码时所遇到的各种问题&#xff0c;全部都已解决&#xff0c;欢迎在评论区补充你遇到的 Bug 哦&#xff01;仅以本文记录学习社区项目时&#xff0c;所遇到的奇奇怪怪的 bug&#xff0c;以及一些很愚蠢的错误&…

Golang每日一练(leetDay0080) 矩形面积、翻转二叉树

目录 223. 矩形面积 Rectangle Area &#x1f31f;&#x1f31f; 226. 翻转二叉树 Invert Binary Tree &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

RPC原理与实现

rpc叫做远程过程调用&#xff0c;是指一台机器上的服务通过通信协议调用网络中另一台机器上的程序&#xff0c;并拿到结果。 1、基本流程 基本流程为&#xff1a; 客户端程序通过Client Stub调度rpc函数Client Stub将调用方法、参数按照通信协议序列化成网络二进制数据&#…

koa2中HTTP错误处理

HTTP错误 访问 Web 服务器或应用程序时&#xff0c;服务器收到的每个 HTTP 请求都会以 HTTP 状态代码进行响应。 HTTP 状态代码是三位数代码&#xff0c;分为五个不同的类别。 状态代码的类别可以通过它的第一个数字快速识别&#xff1a; 1xx&#xff1a;信息2xx&#xff1a…

“大娘,你听说过ChatGPT吗?”,“你说的那个什么鸡皮蹄,我这饼里加不了!”

最近看到一个有意思的段子&#xff0c;大概意思是&#xff1a; 年轻人去买煎饼&#xff0c;问摊煎饼的大娘知不知道什么是ChatGPT。 大娘摇了摇头&#xff1a;“你说的那个什么鸡皮蹄&#xff0c;我这饼里加不了”。 年轻人尝试跟大娘解释ChatGPT是什么东西&#xff0c;大娘…

快速上手kettle(二)小试牛刀

快速上手kettle二 小试牛刀 一 、前言二 、两个小目标三、 kettle核心概念介绍3.1 转换3.1.1 步骤(Step)3.1.2 跳&#xff08;Hop&#xff09;3.1.3 元素据3.1.4 数据类型3.1.5 并发执行 3.2 作业 四、实践操作4.1 案例1 将csv文件转换成excel文件4.1.1 在kettle中新建一个转换…

在Node.js中接受来自命令行的输入

目录 1、简介 2、readlineSync 3、列表选择一个项目&#xff1a; 4、类似滑块范围的UI: 1、简介 如何制作一个Node.js CLI程序使用内置的readline Node.js模块进行交互 如何制作一个节点js CLI程序交互&#xff1f; Node.js 从版本7起开始提供了readline模块来执行以下操…

styleFlow数学推导

如果 w 和 z 的变换是线性的&#xff0c;即 w az b&#xff0c;那么 dw a dz&#xff0c; 所以 p(w) dw p(z) dz 等价于 p(w) a p(z) 即 w 的概率密度函数是 z 的概率密度函数乘以一个常数因子。 如果 w 和 z 是通过一个可逆的函数 ϕ 相互转换的&#xff0c;即 w ϕ(…

5.29今日黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;上周五(5月26日)美市尾盘&#xff0c;现货黄金收报1946.01美元/盎司&#xff0c;上升4.76美元或0.25%&#xff0c;日内最高触及1957.31美元/盎司&#xff0c;最低触…

1.3 eBPF的工作原理初探 --- 更新中

写在前面 上一节提到过,eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。 我们用一张原理图来看下eBPF程序的编译,加载,验证,钩子,映射等结点。 如上是…

Java学习路线(16)——异常

一、异常 1、概念&#xff1a; 程序在“编译”或“执行”时可能出现的问题。&#xff08;语法错误不算异常&#xff09; 2、常见的异常 数组索引越界空指针日期格式化… 3、作用&#xff1a; 触发异常后&#xff0c;如果没有提前处理&#xff0c;JVM将终止&#xff0c;提高…

chatgpt赋能python:Python中None的使用详解

Python中None的使用详解 在Python语言中&#xff0c;None是一个非常常见的值&#xff0c;它在代码中用来表示空值或未定义的值。本文将介绍Python中None的使用方式&#xff0c;包括创建和比较None对象&#xff0c;以及在函数和类中使用None的方法。 创建和比较None对象 在Py…

chatgpt赋能python:Python中Key的作用及使用方法

Python中Key的作用及使用方法 在Python中&#xff0c;key是一个十分重要的概念。它在数据结构中经常被使用&#xff0c;例如list、dict、set、tuple等等。本文将重点介绍Python中key的作用和使用方法&#xff0c;帮助读者更好地理解和应用它。 什么是Key 首先&#xff0c;我…

返回数组中非零元素的索引np.flatnonzero()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 返回数组中非零元素的索引 np.flatnonzero() 选择题 以下程序的运行结果是? import numpy as np anp.array([0,1,2,3]) print("【显示】a:");print(a) print("【执行】print(n…

JLabel默认是透明的,所以JLabel设置背景色setBackground之前要setOpaque(true);

JLabel默认是透明的,所以JLabel设置背景色setBackground之前要setOpaque(true); 将不透明设为true,再setBackground jlabel.setOpaque(true); jlabel.setBackground(new Color(0, 0, 0, 100)); //将不透明设为true,再setBackgroundjlabel.setOpaque(true); jlabel.setBackgro…

chatgpt赋能python:Python中n次方的介绍

Python中n次方的介绍 Python中的n次方是指将一个数值或变量的值提高到某个指定的指数值。这在数据科学、计算机科学和科学计算等领域中非常常见。 在Python中&#xff0c;我们可以使用内置函数**或pow函数来实现n次方。 通过**进行n次方运算 使用**运算符时&#xff0c;将要…

哨兵3号(Sentinel 3)卫星数据处理

李国春 本文介绍使用RSD处理欧空局哨兵3号&#xff08;Sentinel 3&#xff09;卫星数据的具体方法。 气象数据多用NetCDF格式交换和存储&#xff0c;气象卫星数据也是如此。气象业内认为HDF5也是NetCDF的一部分&#xff0c;虽然文件扩展名使用的是.nc&#xff0c;但是实际上就…

数据在内存中的存储(1)

目录 一.C语言中数据类型的介绍 1.c语言的内置类型及大小&#xff08;单位字节&#xff09; 2.整型家族 3.浮点数家族 4.自定义类型&#xff08;构造类型&#xff09; 5.指针类型 6.空类型 二.整型数据在内存中的存储 1.二进制 2.整型数据在内存中的存储&#xff08;…

读数据压缩入门笔记01_数据压缩导读

1. 建立在数据压缩上的世界 1.1. 数据压缩技术最让人惊异之处在于&#xff0c;它与过去40年里个人计算的很多重大改变有关&#xff0c;但很少有人知道这一点 1.2. 我们当下生活在其中的这个计算世界&#xff0c;完全建立在数据压缩算法之上 1.3. 图像的压缩 1.3.1. 1978年 …