IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 实习准备——操作系统知识复习(一) -> 正文阅读

[嵌入式]实习准备——操作系统知识复习(一)

操作系统概述

操作系统是一种软件,这种软件通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求

在这里插入图片描述
大部分计算机有两种运行模式:内核态和用户态。软件中最基础的部分是操作系统,他运行在内核态中,内核态也称管态和核心态。操作系统有硬件的访问权,可以执行及其能够运行的任何指令,软件的其余部分运行在用户态下。

用户接口程序(Shell或GUI)处于用户态中的最底层,允许用户运行其他程序。

计算机硬件简介

在这里插入图片描述
一台简单的个人电脑可以抽象为以上模型,CPU、内存、IO设备都和总线串联并通过总线和其他设备进行通信。现代OS有更复杂的结构,会设计很多总线。目前暂以一条总线进行讨论

CPU

CPU的执行过程:从内存中取指令、解码并执行,然后再重复这一步骤来处理后续指令,直到程序运行完毕。

由于访问内存获取指令或数据比执行指令花费的时间长,因此所有CPU内部都会包含一些寄存器来保存关键变量和临时结果。

除了用于保存变量和临时结果的通用寄存器外,大多数计算机还有几个特殊的对程序员可见的寄存器,其一是程序计数器(PC),他会指向下一条需要从内存提取指令的地址。

其二是堆栈指针(stack pointer),包含输入过程的有关参数、局部变量以及没有保存在寄存器中的临时变量。

其三是程序状态字寄存器(Program Status Word, PSW),其会跟踪当前系统的状态。用户程序通常可以读取整个PSW,但只能写入其中某些字段。PSW在系统调用和IO中起重要作用。通常情况下,有一个二进制位会控制当前状态是内核态还是用户态。操作系统通常以内核态运行,从而可以访问完整的硬件;而用户应用程序通常运行在用户态下,CPU只能执行指令集/中的一部分并且只能访问硬件的一部分功能。一般情况下,在用户态中,有关IO和内存保护的所有指令是禁止执行的,设置PSS的二进制位为内核态也是禁止的。

为提升性能,现代很多CPU都采用流水线机制,一个CPU可能会有单独的访问、解码和执行单元,当CPU执行第N条指令时,可以对第N+1条指令解码,可以读取第N+2条指令。

为了获取操作系统的服务,用户程序必须进行系统调用,他会转换为内核态并调用操作系统。TRAP指令用于把用户态切换为内核态并启用操作系统。有关工作完成后,系统调用后面的指令会把控制权交给用户程序。

线程是一种轻量级的进程。多线程允许CPU保持不同的线程状态并在纳秒级的时间内完成切换

存储设备

理想情况下,内存应该速度快、空间大且便宜,然而目前无法实现,于是采用分层次架构
在这里插入图片描述
越上层的存储器速度越高,成本越高,容量越小

寄存器:和CPU一样材料制成,因此一样快

高速缓存:这是为了解决CPU和主存速度不匹配而设计的。Cache一般由**SRAM(静态随机存储器)**芯片实现,它的存取速度接近CPU,快于DRAM,存储容量小于DRAM。它比主存的优先级高,CPU存取信息时优先访问Cache,找不到的话再去主存DRAM中找,同时把信息周围的数据块从主存复制到Cache中。当应用程序需要从内存中读取关键词时,高速缓存的硬件会检查所需要的高速缓存行是否在高速缓存中,如果在,则高速缓存命中(cache hit);如果没有,通过总线将内存请求发送到主内存。高速缓存命中通常需要花费两个时钟周期,未命中则需要从内存中获取,耗费大量时间。

高速缓存造假昂贵,会限制容量大小,有些机器会有有两到三个高速缓存级别

第一级缓存(L1 cache)用来将已解码的指令调入CPU的执行引擎,典型的L1 cache大小为16KB;二级缓存(L2 cache)用来存放最近使用的关键字,一般以兆字节为单位。L1 cache和L2 cache的最大不同在于是否存在延迟。访问L1没延迟,而L2则有1-2个时钟周期

主存:一般是DRAM(动态随机存储器),不能在高速缓存中得到满足的内存访问请求都会转往主存中。

与RAM对应的是ROM(Read Only Memory),ROM中的内容一旦确定就不会再被修改,其速度非常快且便宜。用于启动计算机的引导加载模块(bootstrap)就存放在ROM中,此外一些IO卡也采用ROM处理底层设备控制

EEPROM(Electrically Erasable PROM)和闪存(flash memory)也是非易失性的,但可以擦除和重写,只是重写需要时间比RAM多。闪存的速度介于RAM和磁盘之间,如果擦除次数太多,会出现磨损

还有CMOS也是易失性的,许多计算机都会使用CMOS存储器保存当前时间和日期。

磁盘:受限于磁盘构造,成本低,速度慢。磁盘构造如下
在这里插入图片描述
可以看到有一个或多个金属盘片,以5400rpm、7200rpm或更高速度旋转。有机械臂悬在盘面上。每个磁头可以读取一段环形区域,称为磁道(track),一个给定臂上所有磁道合并,组成一个柱面(cylinder)
在这里插入图片描述
在这里插入图片描述

固态硬盘(solid state disk,SSD)不是磁盘,数据存储在闪存中,断电数据不丢失

许多计算机支持虚拟内存机制,使得期望运行的存储空间大于实际的物理存储空间。其方法是把程序放在磁盘上,主存作为一部分缓存,保存最频繁使用的部分程序,这种机制需要快速映像内存地址,用来把程序生成的地址转换为有关字节在RAM中的物理地址。这种映像由CPU中的存储器管理单元(Memory Management Unit, MMU)的部件完成。

在多道程序系统中,从一个程序切换到另一个程序的机制称为上下文切换,对来自缓存中的资源进行修改并把其写回磁盘是很有必要的

I/O设备

专门与控制器进行信息交流,发出命令处理指令接收响应的软件,称为设备驱动程序。他必须安装在操作系统中,使其在内核态中运行。要将设备驱动程序装入操作系统,一般有三个途径:

  1. 一是将内核与设备启动程序重新连接,然后重启系统。这是UNIX系统采用的工作方式
  2. 二是在一个OS文件中设置一个入口,通知该文件需要一个设备驱动程序,然后重启系统,这时OS会寻找有关的设备启动程序并把他装载,这是Windows采用的工作方式
  3. 三是OS能在运行时接收新的设备驱动程序并立刻安装,无需重启OS。热插拔设备常用,比如USB

实现输入和输出的方式有三种:

  1. 在最简单的方式中,用户程序会发起系统调用,内核会将其转换为相应驱动程序的程序调用,然后设备驱动程序启动 I/O并循环检查该设备,看该设备是否完成了工作 (一般会有一些二进制位用来指示设备仍在忙碌中。当IO调用完成后、设备驱动程序把数据送到指定的地方并返回。然后操作系统会将控制权交给调用者。这种方式称为忙等待(busy watting),这种方式的缺点是要一直占据CPU,CPU 会一直轮询IO 设备直到IO 操作完成
  2. 第二种方式是设备驱动程序启动设备并且让该设备在操作完成时发生中断。设备驱动程序在这个时刻返回,操作系统接着在需要时阻塞调用者并安排其他工作进行,当设备驱动程序检测到该设备操作完成时,它发出一个中断通知操作完成

在这里插入图片描述
实现IO 的第三种方式是使用特殊的硬件:直接存储器访问(Direct Memory Access,DMA) 芯片。它可以控制内存和某些控制器之间的位流,而无需CPU的干预,CPU会对DMA芯片进行设 置,说明需要传送的字节数,有关的设备和内存地址以及操作方向,当DMA芯片完成后,会造成中断,中断过程就像上面描述的那样。我们会在后面具体讨论中断过程

当另一个中断处理程序正在运行时,中断可能(并且经常)发生在不合宜的时间。因此,CPU.可以禁 用中断,并且可以在之后重启中断。在CPU 关闭中断后,任何已经发出中断的设备,可以继续保持其中断信号处理,但是CPU 不会中断,直至中断再次启用为止。如果在关闭中断时,已经有多个设备发出了中断信号,中断控制器将决定优先处理哪个中断,通常这取决于事先赋予每个设备的优先级,最高优先级的设备优先高得中断权,其他设备则必须等待

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:36:52  更:2022-04-09 18:37:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:26:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码