8中间件:层次嵌入式操作系统《嵌入式系统原理》
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微 内 核 插 插 插 件 件 件 1 2 3
微内核
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
微 内 核
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统 二进制代码重用简化系统测试 更高的研发资源回报率 微 内 核 特 点 并行开发,缩短周期 快速原型制造 运行时的优势
Complement to *next_hash. */ Buffer maps us to a disk block. */
mem_map是所有page组成的数组,系统启动时自动分配生成 18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.2.2 管理区
举例 Linux
理想状态的物理页面管理与实际的硬件上的限制 特别地,linux必须处理80X86体系的2个限制: 老式ISA总线上DMA处理器(Direct Memory Access Processor)仅仅能存取内存的前16MB地址 现代32-bit计算机可能会拥有大量的内存,超过 4GB,这样CPU无法直接访问,因为线性地址空 间太小了
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
1.2 相关讨论 相关讨论
举例 Linux
• MicroKernel/MacroKernel or Monolithic • NT - Modified Microkernel Structure,fs、 mm甚至GUI都是在内核模式运行 • VxWorks,QNX等是微内核 • 收费软件,免费软件,开放软件和自由软 件 嵌入式系统原理
__PAGE_OFFSET (0xC0000000) PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) __pa(x) ((unsigned long)(x)-PAGE_OFFSET) __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) virt_to_page(kaddr) (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
三层地址映射图
举例 Linux
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.2 物理内存管理
Fra Baidu bibliotek• 物理页面的管理是三层逻辑的形式
– 最低层是物理页面(Page) – 中间层管理区(Zone) – 最高层抽象节点(Node)
举例 Linux
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
Linux系统结构
应用程序 SUI 文件系统 进程调度 存储管理 驱动程序 硬件
18/5/2007
举例 Linux
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
Lecture8: 层次嵌入式操作系统
2.3.2 虚拟空间管理 (mm)
举例 Linux
• mm_struct数据结构 • 比vm_area_struct更高层次抽象的数据结构, 代表着进程全部的用户空间 • 每个进程都有且只有一个mm_struct结构, 但可以有多个VM area • 在每个进程的“进程控制块”,即 task_struct结构中,有一个指针指向该进程 的mm_struct结构
举例 Linux
1. 2. 3. 4. 5. 6.
linux简介 简介 存储管理 进程管理 文件与外设 代码结构 嵌入式GUI 嵌入式
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
1. Linux简介 简介
1.1 起源 • Andrew S. Tanenbaum编写了PC上的Minix, Minix采用的是微内核,主要目的是教学, 功能很简单。 • Linus Torvalds开发了Linux,成为自由软件 基金会(FSF)主要项目之一。 • FSF的奠基人Richard M. Stallmam开发了 GCC,GDB,EMACS.
• 32-bit计算机的虚拟空间有4GB大小,大概没有一 个进程真的需要全部的4GB空间。 • 同时,一个进程所需的虚拟空间中的各个部分未 必是连续的,这通常会形成若干离散的虚存“区 间”(VM area)。一个虚拟“区间”是进程虚拟空 间的一部分,这部分的虚拟空间是连续的并且有 相同的一些属性。在linux内核中, vm_area_struct就是描述这种虚存“区间”的数 据结构 • 组织方式:红黑树而不是平衡二叉树AVL 嵌入式系统原理 18/5/2007
18/5/2007
Lecture8: 层次嵌入式操作系统
2.存储管理
2.1 2.2 2.3 2.4 地址映射 物理内存管理 虚拟内存管理 内核缓冲区
举例 Linux
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.1 地址映射
举例 Linux
• Intel体系中的虚拟地址到物理地址映射
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.4 内核缓冲区
举例 Linux
linux采用了一种称为“slab”的缓冲区分配和管理方法,下面 是一些术语:
Virtual Address Segmentation Unit Linear Address Paging Unit Physical Address
虚拟地址到物理地址的映射图
• Linux采用的是页式存储管理方式,2层页式 的地址映射机制。
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
当给内核空间分配页面时,其虚拟地址是此页面的物理地址加上 3GB。当给定内核空间的虚拟地址,其物理地址是虚拟地址减去3GB。 显然,当分配给内核的物理内存超过1GB后,这种方法就不试用了。
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.3.1 VM area
举例 Linux
举例 Linux
每一个物理页面在linux内核中都有一个对应的数据结构struct page
->mapping has some page lists. */ The inode (or ...) we belong to. */ Our offset within mapping. */ 页面使用计数*/
第五章 中间件:嵌入式操作系统与数据库 5.1 层次嵌入式操作系统 1. 机理与结构 2.举例:嵌入式Linux/WinCE 5.2 微内核嵌入式操作系统 1.机理与结构 2.举例:µ C/OS /QNX 5.3 实时嵌入式操作系统 1.机理与结构 2.举例: Vx Work 5.4 本质安全嵌入式操作系统 1. 本质安全内涵 2 .安全策略 3 .Wolf OS与Wolf Linux 5.5 操作系统评测 5.6 嵌入式数据库 5.7 发展趋势
Memeory 2#
Memeory n#
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
举例 Linux
管理区数据结构如下:
typedef struct zone_struct { unsigned long free_pages; struct page *zone_mem_map; char *name; unsigned long zone_start_paddr; unsigned long zone_start_mapnr; ... } zone_t;
18/5/2007
嵌入式系统原理
举例 为了处理这2种限制,linux将物理内存分为3个区: Linux
ZONE_DMA 包含地址小于16MB的页面 ZONE_NORMAL 包含地址在16MB和896MB之间的页面 ZONE_HIGHMEM 包含地址大于896MB的页面
Lecture8: 层次嵌入式操作系统
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.2.3 NUMA
UMA Architecture
CPU 1# CPU 2# CPU n# CPU 1#
举例 Linux
NUMA Architecture
CPU 2# CPU n#
Memeory 1# Memeory 1# Memeory m#
进程虚拟空间示意图
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
内核空间的地址映射
#define #define #define #define #define
举例 Linux
在内核空间中的虚拟内存和物理内存的转换很简单,二者仅仅相 差3GB。每个进程的内核空间都是一样的。
节点数据结构如下:
typedef struct pglist_data { zone_t node_zones[MAX_NR_ZONES]; struct pglist_data *node_next; struct page *node_mem_map; ... } pg_data_t;
18/5/2007
Lecture8: 层次嵌入式操作系统
嵌入式系统原理
第五章 中间件
嵌入式操作系统与数据库
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统 目 录 (9学时)
c
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统 管 理 机 制 进 程 与 内 存 内 核 结 构 组 织 结 构 代 码 尺 寸 编 程 效 率 测 试 与 维 护 性 能 指 标
嵌入式操作系统 • • • • • • • OEM
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
2.3 虚拟内存管理
虚 拟 地 址 空 间 之 系 统 空 间 部 分 1GB
举例 Linux
进 程 1# 的 虚 拟地址空间 之用户空间 部 分 3GB
进 程 2# 的 虚拟地址空 间之用户空 间 部 分 3GB
……
进 程 n# 的 虚拟地址空 间之用户空 间 部 分 3GB
的 的
系统更 缩
用
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
应用集成层(IE Office Windows Media SQL sever) 分 层 结 构 应用支持层(COMM GWES Storage) 层(CoreDLL Schedule Memory Device) OAL(BSPs CSPx Drivers) 应用开发层(MFC ATL .NET)
2.2.1 物理页面
typedef struct page { struct list_head list; /* struct address_space *mapping; /* unsigned long index; /* struct page *next_hash; atomic_t count; /* unsigned long flags; struct list_head lru; struct page **pprev_hash; /* struct buffer_head * buffers; /* } mem_map_t;
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
• 实时性 • 存储空间 • 任务调度方式 • 内存管理方式
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
5.1 1.
平 板 结 构
软件
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
平 板 结 构
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
单 一 内 核
应用
内核
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统
单 一 内 核
18/5/2007
嵌入式系统原理
Lecture8: 层次嵌入式操作系统