Your SlideShare is downloading. ×
0
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
香港六合彩
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

香港六合彩

641

Published on

而我们香港六合彩中国很多人就没有这种认识,还以为把香港六合彩中国画叫做水墨画、彩墨画比较时髦。有人香港六合彩争辩说,这样提法本身是想使中国画能比较容易走向香港六合彩世界,赞成这种意见的人还不是少数。但我觉得这种说法首先在逻辑上就存在很大香港六合彩问题,而且持这种说法的人本身就没有仔细思考过。为什么这么讲呐,因为香港六合彩中国画在世界上本身就是一棵根深叶茂,历史悠久的艺术大树,在香港六合彩世界艺术之 …

而我们香港六合彩中国很多人就没有这种认识,还以为把香港六合彩中国画叫做水墨画、彩墨画比较时髦。有人香港六合彩争辩说,这样提法本身是想使中国画能比较容易走向香港六合彩世界,赞成这种意见的人还不是少数。但我觉得这种说法首先在逻辑上就存在很大香港六合彩问题,而且持这种说法的人本身就没有仔细思考过。为什么这么讲呐,因为香港六合彩中国画在世界上本身就是一棵根深叶茂,历史悠久的艺术大树,在香港六合彩世界艺术之林中,它是阿爷树,是最大的一棵树,世界上没有其它的树可以高过它。我们回顾一下历史,香港六合彩充其量也只是埃及的、印度的文化艺术和我们中华文化香港六合彩稍微的可以打上等号,其它的就差得太远了。我们最早就来到了这个世界上,香港六合彩世界最早就存在我们的文化,我们的艺术。为什么要现在才提出走向世界?难道以前我们不在这个香港六合彩世界上吗?所以提出走向世界这个说法在逻辑上就有问题。
有人说不能这样香港六合彩理解,所谓走向世界,是要让世界上的人都知道中国的文化,所以我们就主动去香港六合彩迎合他们,走上去。说这种话的人,本身就没有理解到文化艺术的重要性,也同时把文化香港六合彩艺术当作可以买卖的商品,把它商品化了,把它低级化,庸俗化了。文化艺术实际上是民族的精神的升华,也是一个香港六合彩民族在长期的历史上,几千年来,几亿人共同创造的,代表这个民族的特征,香港六合彩代表民族生命的特殊的语言形式,我们要明白这一点,这是要香港六合彩清楚了解的问题。

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
641
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. uClinux 简介 [email_address]
    • 2. μClinux <ul><li>uClinux 是应用于嵌入式设备的最著名、应用最广泛一个 Linux 发行版本,它也是一个开放源码的项目, uClinux 的源代码和开发工具可以免费从 http://www.uclinux.org 上下载得到。 </li></ul><ul><li>uClinux 的含义: Micro-Control-Linux :专门针对微控制器领域而设计的嵌入式 Linux 系统 </li></ul>
    • 3. 主要内容 <ul><li>uClinux 的特点 </li></ul><ul><li>uClinux 的开发环境 </li></ul><ul><li>uClinuc 的实时解决方案 </li></ul><ul><li>uClinux 的内存管理 </li></ul><ul><li>uClinux 的源代码结构和 Makefile </li></ul>
    • 4. uClinux 的特点( 1 ) <ul><li>和主流的 Linux 相比, uClinux 有以下的特点 </li></ul><ul><ul><li>1 .简化了内核加载方式 uClinux 的内核有两种可选的运行方式:可以在 flash 上直接运行,也可以加载到内存中运行。 ( 1 ) Flash 运行方式: 把内核的可执行映象烧写到 flash 上,系统启动时从 Flash 的某个地址开始逐句执行。这实际上是很多嵌入式系统采用的方法。 </li></ul></ul>
    • 5. uClinux 的特点( 1 ) <ul><ul><li>( 2 )内核加载方式: 把内核的压缩文件存放在 flash 上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快( ram 的存取速率要比 flash 高 )。同时这也是标准 Linux 系统采用的启动方式。 </li></ul></ul>
    • 6. uClinux 的特点( 2 ) <ul><ul><li>2 .采用了 romfs 文件系统作为 root 文件系统 romfs 文件系统相对于一般的 ext2 文件系统要求更少的空间。空间的节约主要来自两个方面: ( 1 )内核支持 romfs 文件系统比支持 ext2 文件系统需要更少的代码 ( 2 ) romfs 文件系统相对简单,建立文件系统的超级块需要更少的存储空间。 Romfs 文件系统不支持动态擦写,对于系统需要动态保存的数据采用 RAM 盘的方法处理, RAM 盘采用 ext2 文件系统。 </li></ul></ul>
    • 7. uClinux 的特点( 3 ) <ul><ul><li>3 .使用 Flat 可执行文件格式 elf 格式有很大的文件头, flat 文件对文件头和一些段信息做了简化。 gcc 的编译器不能直接形成这种文件格式,但是可以形成 coff 或 elf 格式的可执行文件,这两种文件需要 coff2flt 或 elf2flt 工具进行格式转化,形成 flat 文件。 </li></ul></ul>coff ( common object file format ): 一种通用的对象文件格式 elf ( excutive linked file ): 一种为 Linux 系统所采用的通用文件格式, 支持动态连接
    • 8. uClinux 的特点( 4 ) <ul><ul><li>4 .重写了应用程序库 uClinux 重写了应用程序库,相对于越来越大且越来越全的 glibc 库, uClibc 对 libc 做了精简。 uClinux 对用户程序采用静态连接的形式,这种做法会使应用程序变大,但是基于内存管理的问题,不得不这样做,同时这种做法也更接近于通常嵌入式系统的做法。 </li></ul></ul>
    • 9. uClinux 的开发环境 <ul><li>uClinux 源码包 </li></ul><ul><ul><li>http: //www.uclinux.org/pub/uClinux/dist/ </li></ul></ul><ul><ul><li>uClinux 、 uClibc 以及用户应用程序 </li></ul></ul><ul><li>交叉编译环境 </li></ul><ul><ul><li>http: //www.uclinux.org/pub/.../arm-elf-tools/ </li></ul></ul><ul><ul><li>交叉编译器、 Binutils 工具以及 Gdb 等 </li></ul></ul>
    • 10. uClinux 的实时解决方案 <ul><li>uClinux 本身并没有关注实时问题 ,它并不是为了 Linux 的实时性而提出的。 </li></ul><ul><li>uClinux 可以使用 Rt-linux 的 patch ,以增强其实时性,使得 uClinux 可以应用于工业控制、进程控制等一些实时要求较高的应用。 </li></ul><ul><ul><li>Rt-linux 在前面已经介绍过。它的执行管理器把普通 Linux 的内核当成一个任务运行,同时还管理了实时进程。而非实时进程则交给普通 Linux 内核处理。 </li></ul></ul>
    • 11. uClinux 的实时解决方案 <ul><ul><li>这种方法已经应用于很多的操作系统以增强操作系统的实时性,包括一些商用版 UNIX 系统, Windows NT 等等。 </li></ul></ul><ul><ul><li>这种方法优点: </li></ul></ul><ul><ul><ul><li>( 1 )实现简单,且实时性能容易检验。 </li></ul></ul></ul><ul><ul><ul><li>( 2 )由于非实时进程运行于标准 Linux 系统,同其它 Linux 商用版本之间保持了很大的 兼容性。 </li></ul></ul></ul><ul><ul><ul><li>( 3 )可以支持硬实时时钟的应用。 </li></ul></ul></ul>
    • 12. uClinux 的内存管理 <ul><li>uClinux 同标准 Linux 的 最大区别就在于 内存管理 </li></ul><ul><li>下面将把 uClinux 内存管理同标准 Linux 的那内存管理部分进行比较分析: </li></ul><ul><ul><li>1 、标准 Linux 使用的虚拟存储器技术 </li></ul></ul><ul><ul><li>2 、 uClinux 针对 NOMMU 的特殊处理 </li></ul></ul>
    • 13. 1 、标准 Linux 的虚拟存储器技术 <ul><li>标准 Linux 使用 虚拟存储器技术 </li></ul><ul><ul><li>用于提供比计算机系统中实际使用的物理内存大得多的内存空间。 </li></ul></ul><ul><ul><ul><li>使用者将感觉到好像程序可以使用非常大的内存空间,从而使得编程人员在写程序时不用考虑计算机中的物理内存的实际容量。 </li></ul></ul></ul><ul><ul><li>为了支持虚拟存储管理器的管理, Linux 系统采用 分页( paging ) 的方式来载入进程。 </li></ul></ul><ul><ul><ul><li>所谓分页即把实际的存储器分割为相同大小的段,例如每个段 1024 个字节,这样 1024 个字节大小的段便称为一个页面( page )。 </li></ul></ul></ul>
    • 14. 1 、标准 Linux 的虚拟存储器技术 <ul><li>虚拟存储器由存储器管理机制及一个大容量的快速硬盘存储器支持。它的实现 </li></ul><ul><ul><li>( 1 )基于局部性原理: </li></ul></ul><ul><ul><ul><li>当一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前要运行的那些部分页面或段装入内存运行( copy-on-write ), 其余暂时留在硬盘上。 </li></ul></ul></ul><ul><ul><li>( 2 )通过缺页中断将运行时所需的代码和数据加载到内存中: </li></ul></ul><ul><ul><ul><li>程序运行时如果它所要访问的页(段)已存在,则程序继续运行,如果发现不存在的页(段),操作系统将产生一个页错误( page fault ),这个错误导致操作系统把需要运行的部分加载到内存中。 </li></ul></ul></ul>
    • 15. 1 、标准 Linux 的虚拟存储器技术 <ul><ul><li>( 3 )使用交换技术在必要时把不需要的内存页(段)交换到磁盘上。 </li></ul></ul><ul><li>利用上述的方式管理存储器,便可把一个进程所需要用到的存储器以 化整为零 的方式,视需求分批载入,而核心程序则凭借属于每个页面的页码来完成寻址各个存储器区段的工作。 </li></ul>
    • 16. 1 、标准 Linux 的虚拟存储器技术 <ul><li>地址转换技术 </li></ul><ul><ul><li>标准 Linux 是 针对有内存管理单元的处理器 设计的。在这种处理器上,虚拟地址被送到内存管理单元( MMU ),把虚拟地址映射为物理地址。 </li></ul></ul><ul><ul><li>每个任务具有不同的虚拟  物理地址转换映射 ,可以支持不同任务之间的保护。 </li></ul></ul><ul><ul><ul><li>每个任务中都定义有一个地址转换表,用于将其虚拟地址空间映射到物理内存的一个部分 </li></ul></ul></ul>
    • 17. <ul><ul><li>计算机的存储管理单元( MMU )一般有一组 寄存器 来标识当前运行的进程的转换表。 </li></ul></ul><ul><ul><ul><li>在当前进程将 CPU 放弃给另一个进程时(一次上下文切换),内核通过指向新进程地址转换表的指针加载这些寄存器。 </li></ul></ul></ul><ul><ul><ul><li>MMU 寄存器是有特权的,只能在内核态才能访问。这就保证了一个进程只能访问自己用户空间内的地址,而不会访问和修改其它进程的空间。 </li></ul></ul></ul>
    • 18. 1 、标准 Linux 的虚拟存储器技术 <ul><ul><li>当可执行文件被加载时,加载器根据缺省的 ld 文件,把 程序加载 到虚拟内存的一个空间,因此实际上很多程序的虚拟地址空间是相同的,但是由于转换函数不同,所以实际所处的内存区域也不同。 </li></ul></ul>
    • 19. 1 、标准 Linux 的虚拟存储器技术 <ul><li>实现虚存系统的代价 </li></ul><ul><ul><li>( 1 )地址转换表和其他内存管理相关的 数据结构 ,占用系统中的内存。 </li></ul></ul><ul><ul><li>( 2 )地址转换增加了每一条指令的 执行时间 ,而对于有额外内存操作的指令会更严重。 </li></ul></ul><ul><ul><li>( 3 )当进程访问不在内存的页面时,系统发生 缺页失效 。系统处理失效极耗时间。 </li></ul></ul>
    • 20. Physical and virtual memory maps for the Compaq iPAQ
    • 21. 2 、 uClinux 对 NOMMU 的特殊处理 <ul><li>由于较多的嵌入式设备不带有 MMU , uClinux 就是专门针对没有 MMU 的处理器设计的 </li></ul><ul><li>因此, uClinux 不能使用处理器的虚拟内存管理技术,而采用了 实存管理 策略( real memory management ) </li></ul><ul><li>uClinux 仍采用存储器的 分页管理 技术 </li></ul><ul><ul><li>在系统启动时把实际存储器进行分页。 </li></ul></ul><ul><ul><li>在加载应用程序时程序分页加载。 </li></ul></ul>
    • 22. 2 、 uClinux 对 NOMMU 的特殊处理 <ul><li>uClinux 系统对于内存的访问是直接的,所有程序中访问的地址都是实际的 物理地址 。 </li></ul><ul><ul><li>它对地址的访问不需要经过 MMU ,而是直接送到地址线上输出 </li></ul></ul><ul><li>操作系统对内存空间没有保护,各个进程实际上 共享一个运行空间 </li></ul><ul><ul><li>这是因为 uClinux 的进程没有独立的地址转换表 </li></ul></ul><ul><ul><li>这实际上是很多嵌入式系统的特点。 </li></ul></ul>
    • 23. 2 、 uClinux 对 NOMMU 的特殊处理 <ul><li>一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。 </li></ul><ul><li>此外,程序加载地址与预期( ld 文件中指出的)通常都不相同,这样 relocation 过程就是必须的。 </li></ul><ul><li>另外,磁盘交换空间也是无法使用的, 系统执行时如果缺少内存将无法通过磁盘交换来得到改善。 </li></ul>
    • 24. 2 、 uClinux 对 NOMMU 的特殊处理: 关于 Relocation 的解释 <ul><li>由于 uClinux 直接使用物理地址,而链接好的用户应用程序中使用的是虚拟地址,因此当用户执行一个应用时,内核的执行文件加载器将对 flat 文件进行进一步处理,主要是对 reloc 段进行修正。 </li></ul><ul><li>需要 reloc 段的根本原因是,程序在连接时连接器所假定的程序运行空间(虚地址)与实际程序加载到的内存空间(物理地址)不同。 </li></ul>
    • 25. 2 、 uClinux 对 NOMMU 的特殊处理: 关于 Relocation 的解释 <ul><li>假如有这样一条指令: jsr app_start; </li></ul><ul><li>假设链接程序将根据 ld 文件计算出 app_start 的实际地址为 0x10000 。由于 操作系统无法保证程序将按 ld 文件加载 。如果程序仍然跳转到物理地址 0x10000 处执行,通常情况这是不正确的。 </li></ul>这一条指令采用直接寻址, 跳转到 app_start 地址处执行。
    • 26. 2 、 uClinux 对 NOMMU 的特殊处理: 关于 Relocation 的解释 <ul><li>一个解决办法是 增加一个变量 addr ,用于存储 app_start 的实际地址,并将上述语句改为: movl addr, a0; jsr (a0); 增加的变量 addr 将在数据段中占用一个 4 字节的空间,链接器将 app_start 的绝对地址存储到 addr 中。在可执行文件加载时,加载器计算出 app_start 在内存中的实际位置,写入 addr 变量 </li></ul>
    • 27. 2 、 uClinux 对 NOMMU 的特殊处理 <ul><li>uClinux 对在内存管理方面的减少使得对开发人员提出了更高的要求 </li></ul><ul><ul><li>从编译内核开始,开发人员必须告诉系统这个开发板上 内存的容量 </li></ul></ul><ul><ul><li>开发人员在开发应用程序时必须考虑内存的分配情况并关注应用程序需要 运行空间的大小 </li></ul></ul><ul><ul><li>由于采用实存储器管理策略,用户程序同内核以及其它用户程序在一个地址空间,程序开发时 要保证不侵犯其它程序的地址空间 ,以使得程序不至于破坏系统的正常工作,或导致其它程序的运行异常 </li></ul></ul>
    • 28. 2 、 uClinux 对 NOMMU 的特殊处理 <ul><li>u Clinux 的内存管理与标准 Linux 系统相比功能相差很多,但这是嵌入式设备的选择 </li></ul><ul><ul><li>由于成本等敏感因素的影响,普偏的采用不带有 MMU 的处理器,这决定了系统没有足够的硬件支持实现虚拟存储管理技术 </li></ul></ul><ul><li>由开发人员来维护系统的安全性 </li></ul><ul><li>目前应用最为广泛的 ARM7TDMI 芯片上很多跑的都是 uClinux </li></ul>
    • 29. 一个典型的无 MMU 的系统的 memory map
    • 30. uClinux 源代码目录树 <ul><li>参见文件 uClinux -dist/SOURCE </li></ul>
    • 31. uClinux 中的 Makefile <ul><li>使用命令: find . –name makefile 可以列出所有的 makefile </li></ul><ul><li>找到最上层的 makefile (例如: 20070130 的) </li></ul><ul><li>找到配置规则,例如 make config 使用的规则 </li></ul><ul><li>找到缺省规则 </li></ul>

    ×