网站大量收购闲置独家精品文档,联系QQ:2885784924

(嵌入式Linux开发入门)第5章内核移植与编译.ppt

(嵌入式Linux开发入门)第5章内核移植与编译.ppt

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  进程一般由程序段、数据段和进程控制块(PCB)三部分组成。系统利用PCB来控制和管理进程,PCB是系统感知进程存在的唯一标志,它记录了管理进程所必需的信息,包括标识信息,说明信息、现场信息、管理调度信息。   Linux能让多个进程并发执行,由此必然会产生资源争夺的情况,而CPU是系统最重要的资源。进程调度就是进程调度程序按一定的策略,动态地把CPU分配给处于就绪队列中的某一个进程,使之执行。进程调度使得处理机资源得到了最高效的利用。   进程通信是指进程之间的信息交换。进程的互斥和同步可归结为低级通信。进程的高级通信是指用户可直接利用系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。   Linux操作系统支持以下几种进程间通信的机制:信号(Signals)、管道(Pipe)和命名管道(Named Pipe)、System V的IPC机制(包括信号量(Semaphore)、消息队列机制(Message Queues Mechanism)和共享内存(Shared Memory))、用于网络通信的套节字机制(Sockets Mechanism)和全双工管道机制。   信号是在软件层次上对中断机制的一种模拟。信号的出现表示某种事件的发生,它类似于硬件中断,所以也叫软中断。   管道是一个先进先出、大小固定的缓冲区,容量为1页(4?KB),用于两个进程之间的单向数据传递。   消息是按一定格式封装起来的信息。每个进程都有一个与之关联的消息队列,接收进程按时间顺序或消息类型从消息队列取走消息。   信号量是用一个整数表示系统当前资源的使用情况,当信号量大于或等于0时,其值表示可用的资源数量,当它小于0时,表示等待该资源的进程数。   共享存储区是指被多个进程共享的虚存中的一个数据块,进程利用它来实现通信。   Linux将存储管理分为物理内存管理、内核内存管理、虚拟内存管理、内核虚拟内存管理和用户级内存管理。   Linux操作系统采用了请求式分页存储管理方法。系统为每个进程提供了4?GB的虚拟内存空间,各个进程的虚拟内存彼此独立。   分页存储管理是一种离散分配存储管理方案,其基本出发点是打破存储分配的连续性。分页存储管理把系统的地址空间分为两种。提供给用户程序使用的是基本逻辑地址的连续的地址空间,系统使用的是真实物理地址;由系统负责将连续的逻辑地址映射到物理上并不连续的实内存地址。   进程运行时能访问的存储空间只是它的虚拟内存空间。对当前该进程而言只有属于它的虚拟内存是可见的。在进程的虚拟内存中包含着进程本身的程序代码和数据。进程在运行中还必须得到操作系统的支持。进程的虚拟内存中还包含着操作系统内核。Linux把进程的虚拟内存分成两部分,即内核区和用户区。操作系统内核的代码和数据等被映射到内核区。进程的可执行映像(代码和数据)映射到虚拟内存的用户区。进程虚拟内存的内核区的访问权限设置为0级,用户区为3级。内核访问虚存的权限为0级,而进程的访问权限为3级。   Linux的存储管理主要是管理进程虚拟内存的用户区。进程虚拟内存的用户区分成代码段、数据段、堆栈以及进程运行的环境变量,参数传递区域等。每一个进程用一个mm-struct结构体来定义它的虚存用户区。mm-struct结构体首地址在任务结构体task-struct成员项mm中(struct mm-struct *mm)。   一个虚存区域是虚存空间中一个连续的区域,在这个区域中的信息具有相同的操作和访问特性。每个虚拟区域用一个vm-area-struct结构体进行描述,它定义在/include/Linux/mm.h中。   在多进程操作系统中,同时运行多个用户的程序,系统分配给用户的物理地址空间放不下代码和数据等。为了解决这个矛盾而出现了虚拟存储技术,在虚拟存储技术中,用户的代码和数据(可执行映像)等并不是完整地装入物理内存,而是全部映射到虚拟内存空间。在进程需要访问内存时,在虚拟内存中“找到”要访问的程序代码和数据等,系统再把虚拟空间的地址转换成物理内存的物理地址。   在对Linux内核移植之前,首先要明确内核源代码的基本组织情况,只有了解了各目录及代码的功能后才能准确地找到需要修改和改进的地方。   Linux内核源代码包括多个目录。   (1) arch:包括硬件特定的内核代码,如arm、mips、i386等,其中每一个目录包代表一种硬件平台。对于任何平台都至少包括以下几个目录。   ● ?boot:包括启动内核所使用的部分或全部平台特有代码。   ● ?kernel:存放支持体系结构特有的(如信号处理和SMP)特征的实现。   ● ?lib:存放高速体

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档