自己整理的笔记自用,抄录老师给的课件,只是看没有印象,所以我就敲出来了,不算原创也不算翻译,考试复习用的,有需要的伙伴可以看看,个人觉得还是有逻辑的。
嵌入式系统对操作系统(OS)的要求:
(1)高度简练(2)质量可靠(3)界面友善(4)易开发(5)多任务(6)价格低
• 3.1 嵌入式Linux简介
3.1.1 μCLinux
-μ:Micro,微
-C:Control,控制
-μCLinux:用于微控制器(单片机)的Linux操作系统
μCLinux的特点(背)
- 针对微控制领域设计的Linux系统
- 编译后的目标文件可控制在几百KB大小
- 专门针对没有MMU(存储管理单元)的处理器设计的
- 无法使用虚拟内存管理技术,采用实存储器管理策略,所有程序访问的地址都是实际的物理地址。
MMU:Memory Management Unit内存管理单元
虚拟内存管理技术是一种利用虚拟存储器来逻辑扩充物理内存的管理方式,其基本思想是用软硬件技术 把内存与外存这两级存储器当成一级存储器来用,从而给用户提供了一个比内存也比任何应用程序大得 多的虚拟存储器,使得用户编程时再也不用考虑内存大小的限制了,给用户编程带来极大的方便。
3.1.2 RT-Linux(硬实时操作系统)
---RT-Linux(Real-Time Linux):具有硬实时特性的多任务操作系统,是美 国新墨西哥州立大学计算机科学系Victor Yodaiken和MicaeBrannanov开发 的。
---通过在Linux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把 标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的 Linux内核的优先级最低,可以被实时进程抢断。
---正常的Linux进程仍可以在Linux内核上运行,这样既可以使用标准分时操作系统(即Linux的各种服务),又能提供低延时的实时环境。
3.1.3 红旗嵌入式Linux
---北京红旗软件技术有限公司推出的,国内做得较好的嵌入式Linux 操作系统。
---红旗嵌入式Linux的特点
- 精简内核,适用于多种常见的嵌入式处理器。
- 提供完善的嵌入式GUI和嵌入式X-Windows。
- 提供嵌入式浏览器、邮件程序和多媒体播放程序。
- 提供完善的开发工具和平台。
• 3.2 内存管理
3.2.1 内存管理和MMU
1.内存管理(也称存储管理)包括
- 地址映射
- 内存空间的分配
- 地址访问的限制——保护机制
- I/O地址的映射
- 代码段、数据段、堆栈段空间的分配
2.MMU(Memory Management Unit)的主要作用
- 地址映射
- 对地址访问的保护和限制(访问保护、访问限制)
MMU就是提供一组寄存器,依靠这组寄存器来实现地址映射和访问保护;MMU可以做在CPU芯片中,也可以作为协处理器(以协处理器的形式出现)。
3.2.2 标准Linux的内存管理
---标准Linux使用虚拟存储器技术
---为了支持虚拟存储管理器的管理,标准Linux系统采用分页的方式来载入进程
---虚拟存储器由存储器管理机制(MMU)及一个大容量的快速硬盘存储器支持
---虚拟地址被送到MMU,由MMU将虚拟地址映射为物理地址
标准Linux的内存管理具有的功能(背)
- 运行比内存还要大的程序
- 先加载部分程序运行,缩短了程序启动的时间
- 可以使多个程序同时驻留在内存中,以提高CPU的利用率
- 可以运行重定位程序,即程序可以放在内存中的任何一处,且可以在执行过程中移动
- 写机器无关的代码,程序不必事先约定机器的配置情况
- 减轻程序员分配和管理内存资源的负担
- 可以进行内存共享,例如,如果两个进程运行同一个程序,它们应该可以共享程序代码的同一个副本
- 提供内存保护,,进程不能以非授权方式访问或修改页面,内核 保护单个进程的数据和代码以防止其它进程修改它们,否则, 用户程序可能会偶然(或恶意)的破坏内核或其它用户程序。
3.2.3 μCLinux的内存管理
---μCLinux:用于微控制器(单片机)的Linux操作系统。
---μCLinux没有MMU,而是采用实存储器管理(Real Memory Management)
---μLinux不能使用虚拟内存管理技术(虚拟存储器技术),但是仍然采用存储器的分页管理
---μLinux将整个物理内存划分成若干个4KB大小的页面
• 3.3 进程管理
3.3.1 进程和进程管理
1.进程
进程是一个运行程序并为其提供执行环境的实体,它包括一个地址空间和至少一 个控制点,进程在这个地址空间上执行单一指令序列。进程地址空间包括可以访问或引用的内存单元的集合,进程控制点通过程序计数器(PC)控制和跟踪进程 指令序列。
2.进程管理
---进程管理是操作系统的功能之一,特别是多任务处理的状况下,这是必要的功能。 操作系统将资源分配给各个进程,让进程间可以分享与交换信息,保护每个进程 拥有的资源,不会被其他进程抢走,以及使进程间能够同步。为了达到这些要求, 操作系统为每个进程分配了一个数据结构,用来描述进程的状态,以及进程拥有的资源。操作系统可以通过这个数据结构,来控制每个进程的运作。
---任务调度主要是协调任务对计算机系统内资源(如内存、I/O设备)的争夺使用。
---进程调度又称为CPU调度,其根本任务是按照某种原则为处于就绪状态的进程分配CPU。
---很多场合下,任务调度和进程调度的概念是一致的。
3.与进程管理相关的几个概念
- 上下文:进程运行的环境
- 上下文切换:CPU的控制权由运行进程转移到另外一个就绪 进程时所发生的事件,当前运行进程转为就绪(或者挂起、 删除)状态,另外一个被选定的就绪进程成为当前进程。
- 抢占:正在执行的进程被打断,让另外一个进程运行
- 优先抢占:每一个进程都有一个优先级,如果有进程优先级 高于当前的进程优先级,系统立即保存当前进程的上下文, 切换到优先级高的进程上下文。
- 轮转调度:使所有相同优先级、状态为就绪的进程,公平分 享CPU(分配一定的时间间隔,使各进程轮流享有CPU)。
4.进程调度策略(两种)
- 抢占式调度:一旦就绪状态中出现优先权更高的进程,或者 运行的进程已用满了规定的时间片时,便立即抢占当前进程 的运行(将其放回就绪状态),把CPU分配给其他进程。
- 非抢占式调度:一旦某个进程被调度执行,该进程一直执行 下去,直至该进程结束,或者由于某种原因自行放弃CPU进 入等待状态,才将CPU重新分配给其他进程。
3.3.2 RT-Linux的进程管理
---RT-Linux:硬实时Linux操作系统
---RT-Linux有两种中断
- 硬中断:是实现实时Linux内核的前提
- 软中断:是常规Linux中断
---RT-Linux的系统结构:在Linux内核和硬件中断之间增加了一个实时内核 (RT-Linux内核),该实时内核是一个高效的、可抢占的实时调度核心。
---RT-Linux的调度策略:默认的情况下采用优先级的调度策略,也支持其他 的调度策略(如RM、EDF)。
• RM(Rate Monotonic,速率单调调度):任务周期确定优先级。
• EDF(Earliest Deadline First,最早期限调度):截止期限确定优先级。
---RT-FIFO队列:为保证RT-Linux实时进程与非实时Linux进程进行数据交换, RT-Linux引入了RT-FIFO队列。
• FIFO(First In First Out):先进先出。
---RT-Linux程序运行于用户空间和内核态两个空间:
① 实时处理部分编写成内核模块,并装载到RT-Linux内核中,运行于RT-Linux 的内核态。
② 非实时部分的应用程序则在Linux下的用户空间中执行。
3.3.3 标准Linux的进程管理
1.Linux进程
• 进程的属性:
① 进程标识符(PID)。
② 父进程和父进程的ID(PPID)。
③ 启动进程的用户ID(UID)和所归属的组(GID)。
④ 进程状态:运行R、休眠S、僵尸Z。
⑤ 进程执行的优先级。
⑥ 进程所连接的终端名。
⑦ 进程资源占用:如占用资源大小(内存、CPU占用量等)。
• 父进程:已创建一个或多个子进程的进程。
• 子进程:子进程是父进程的副本,它将获得父进程数据空间、堆、栈等 资源的副本。
• fork函数(分叉函数):一个现有进程可以调用fork函数创建一个新进程。
• vfork函数: vfork函数和 fork函数一样都是在已有的进程中创建一个新的进程,但它们创建的子进程是有区别的。
• inode:索引节点(index node)。
2.Linux进程的调度
• Linux操作系统进程调度策略(三种):
① 分时调度策略:SCHED_OTHER
② 先到先服务的实时调度策略:SCHED_FIFO
③ 时间片轮转的实时调度策略:SCHED_RR
• 实时进程:将得到优先调用,并根据实时优先级决定调度权限。
• 分时进程:通过nice和counter值决定权值,nice越小、counter 越大,被调用的概率越大,即曾经使用CPU最少的进程将会得 到优先调度。
3.3.4 μCLinux的进程管理
μCLinux进程管理的特点:
① 由于没有MMU,在实现多个进程时需要实现数据保护。
② 由于没有MMU,系统虽然支持fork系统调用,但实际上是vfork系统调用。
③ 启动新的应用程序时,系统必须为应用程序分配存储空间,并立即将应用 程序加载到内存。
④ 必须在可执行文件加载阶段对可执行文件Relocation(重定位)处理,使得 程序执行时能够直接使用物理内存。
⑤ 操作系统对内存空间没有保护,各个进程实际上共享一个运行空间,会导 致用户程序使用的空间可能占用到系统内核空间,容易导致系统崩溃。
• 3.4 文件系统
3.4.1 文件系统定义
– 包含在磁盘驱动器或者磁盘分区的目录结构,整个磁盘空间可以 给一个或者多个文件系统使用。
– 在对某个文件系统做挂载(mount)操作后,就可以使用该文件 系统了。
3.4.2 Linux文件系统
1、常见的Linux文件系统
① ext(Extended File System):扩展文件系统。
② ext2(Extended File System 2):扩展文件系统(版本2)。
③ ext3(Extended File System 3):扩展文件系统(版本3)。
④ JFS2(Journal File System 2):日志文件系统(版本2)。
⑤ XFS:一种高性能的日志文件系统,是 Silicon Graphics公司于 90 年代初开 发的文件系统。
⑥ ReiserFS:一种新型的文件系统,它支持海量磁盘和磁盘阵列,并能在上面 继续保持很快的搜索速度和很高的效率。
⑦ CFS:加密文件系统。
⑧ VFS:虚拟文件系统。
2、ext2文件系统(扩展文件系统版本2)
• 是Linux事实上的标准文件系统。
• ext2的优点:
① 支持达4TB的内存
② 文件名称最长可达1012个字符
③ 可以选择逻辑块的大小(1024、2048、4096字节)
④ 实现快速符号链接
⑤ 具有稳定性、可靠性和健壮性
⑥ 是为像IDE设备那样的块设备设计的
⑦ 没有提供对基于扇区的擦除/写操作的良好管理
⑧ 在出现电源故障时,不是防崩溃的
⑨ 不支持损耗平衡
⑩ 没有特别完美的扇区管理
3、ext3文件系统(扩展文件系统版本3)
• 是一种日志式文件系统,它会将整个磁盘的写入动作完整记录在磁盘的某个 区域上,以便需要时可以回溯追踪。
• ext3的优点:
① 具有高可靠性
② 具有很好的数据完整性
③ 访问速度快
④ 兼容性好
⑤ 多种日志模式
3.4.3 嵌入式Linux文件系统
– 嵌入式系统很少使用IDE硬盘,而是选用Flash ROM(闪存)代替 硬盘。
1、Flash ROM(闪存)简介
• 属于Non-Volatile内存(非挥发性内存,即断电信息不丢失)。
2、Flash ROM上的两种技术NOR和NAND
① NOR Flash:Intel于1988年首先开发出NOR Flash技术(采用或非门),彻底改 变了原先由EPROM和EEPROM一统天下的局面。
② NAND Flash:1989年,东芝公司发表了NAND Flash结构(采用与非门),强 调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。
3、嵌入式文件系统分类
• 嵌入式系统主要的存储设备为:
① Flash ROM:闪存(IMX6实验箱采用8GB NAND的Flash ROM)
② SDRAM:Synchronous Dynamic Random Access Memory,同步动态RAM(IMX6实 验箱采用4片256MB的DDR 3 SDRAM,共1GB)
• 嵌入式系统主要的文件系统类型:
① JFFS2
② YAFFS2
③ Cramfs
④ Romfs
⑤ RamDisk
⑥ Ramfs/Tmpfs
4、基于Flash ROM的文件系统(NAND Flash)
① JFFS2文件系统
– Journalling Flash File System 2(闪存日志型文件系统第2版)
– 主要用于NOR Flash
② YAFFS2文件系统
– Yet Another Flash File System 2,是一种和JFFS类似的闪存文件系统
– 主要用于NAND Flash
③ Cramfs文件系统
– Compressed ROM File System ,一种只读的压缩文件系统
④ Romfs文件系统
– ROM File System,一种简单的只读文件系统
⑤ 其他文件系统
– FAT/FTA32:主要是为了与Windows系统兼容
– ext2:是GNU/Linux系统中的标准文件系统,特点是存取文件的性能好,具有存取文件的性 能极好,但是用于Flash上会有很多弊端
5、基于RAM的文件系统(SDRAM)
① RamDisk
– RamDisk(虚拟内存盘),是通过软件将一部分内存(RAM)模拟为硬盘来使用的一 种技术。相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行 的文件访问的速度。但是RAM的易失性也意味着当关闭电源后这部分数据将会丢 失。但是在一般情况下,传递到RAM盘上的数据都是在硬盘或别处永久贮存的文 件的一个拷贝。经由适当的配置,可以实现当系统重启后重新建立虚拟盘。
② Ramfs/Tmpfs
– Ramfs(基于RAM的文件系统)是Linus Torvalds开发的一种基于内存的文件系统, 工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其 最大能使用的内存大小。
– Tmpfs(临时文件系统),是一种基于内存的文件系统,它和虚拟磁盘RamDisk比 较类似像,但不完全相同,和RamDisk一样,Tmpfs可以使用RAM,但它也可以使 用swap分区来存储,而且传统的RamDisk是个块设备,要用mkfs来格式化它,才 能真正地使用它;而Tmpfs是一个文件系统,并不是块设备,只是安装它,就可 以使用了。Tmpfs是最好的基于RAM的文件系统。
6、网络文件系统(NFS)
NFS:Network File System(网络文件系统)
– 是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网 络共享资源。
– 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的 文件,就像访问本地文件一样。
• NFS至少包括两个主要部分:
① 1台服务器 ② 1台(或多台)客户机
标签:操作系统,Flash,文件系统,嵌入式,---,内存,Linux,进程 From: https://blog.csdn.net/m0_74313796/article/details/144620294