- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                系统 5 ARMLinux内核
                    实验一创建和使用一个新的系统调用(2) 然后执行   启动开发板,将应用程序test通过zmodem协议下载到开发板的文件系统目录下,在板子上运行test程序所得结果如下: # arm-linux-gcc test.c -o test # ./test start hello hello world end hello * 5. 系统的启动和初始化  使用bootloader将内核映像载入  内核数据结构初始化(内核引导第一部分) :start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置 ,启动init过程,创建第一个内核线程  start_kernel()函数中各个主要初始化函数的功能   * 外设初始化--内核引导第二部分:init()函数作为内核线程,首先锁定内核,然后调用do_basic_setup()完成外设及其驱动程序的加载和初始化 外设初始化的主要过程   * init进程和inittab脚本 init进程是系统所有进程的起点,它的进程号是1  inittab是以行为为单位的描述性(非执行性)文本,每一个指令行都具有以下格式:   id:runlevel:action:process * rc启动脚本:rc.sysinit中最常见的动作就是激活交换分区,检查磁盘,加载硬件模块 Shell的启动  * 6 ARM-Linux进程管理和调度  Linux进程有5种状态,分别是: TASK_RUNNING  TASK_INTERRUPTIBLE  TASK_UNINTERRUPTIBLE  TASK_ZOMBIE  TASK_STOPPED  * 6.1 Linux进程的创建、执行和消亡  1. Linux进程的创建  系统的第一个真正的进程,init内核线程(或进程)的标志符为1  新进程通过克隆老进程或当前进程来创建,系统调用fork或clone可以创建新任务  复制完成后,Linux允许两个进程共享资源而不是复制各自的拷贝  * 2. Linux进程的执行  要让若干新进程按照需要处理不同的事情,就必须通过系统调用exec  函数sys_execve将可执行文件的名字从用户空间取入内核空间以后就调用do_execve( )执行具体的操作  * do_execve( )执行的流程:  打开可执行文件,获取该文件的 file结构。 获取参数区长度,将存放参数的页面清零。 对linux_binprm结构的其它项作初始化  通过对参数和环境个数的计算来检查是否在这方面有错误  调用prepare_binprm() 对数据结构linux_binprm作进一步准备  把一些参数(文件名、环境变量、文件参数)从用户空间复制到内核空间  调用search_binary_handler(),搜寻目标文件的处理模块并执行  * 3. Linux进程的消亡  进程终止由可终止进程的系统调用通过调用do_exit()实现  do_exit(long code)带一个参数code,用于传递终止进程的原因  * 以下情况要调用do_exit()函数: 具体对应的系统调用出错,不得不终止进程 ,如: do_page_fault()  sys_sigreturn()  setup_frame() save_v86_state() 其他终止进程的情况,通过调用以下函数实现终止:sys_exit() sys_reboot() do_signal()     * LINUX系统进程的切换包括三个层次: 用户数据的保存  寄存器数据的保存  系统层次的保存  * 6.2 ARM-Linux进程的调度  Linux进程调度由函数schedule()实现的,其基本流程可以概括为五步: 清理当前运行中的进程 选择下一个投入运行的进程 设置新进程的运行环境 执行进程上下文切换 后期整理 Linux调度的时机有两种: 在内核应用中直接调用schedule()  被动调用schedule()  * 提纲 1. ARM系统结构简介  2. ARM-Linux内存管理  3. ARM-Linux 的中断响应和处理  4. ARM-Linux系统调用 5. 系统的启动和初始化  6. ARM-Linux进程管理和调度  7. Linux的模块机制  * 1. ARM系统结构简介 ARM有7种运行状态: 用户状态(User)  中断状态(IRQ, Imterrupt Request)  快中断状态(FIQ,Fast Imterrupt Request)  监管状态(Supervisor)  终止状态(Abort)  无定义状态(Undefined)  系统状态(System)   * ARM系统结构中各个寄存器的使用方式  寄存器 使用方式 程
                您可能关注的文档
最近下载
- 消防管道(设备)强度、严密性试验记录.docx VIP
 - 耳穴比赛题库二维码公布附有答案.docx VIP
 - 现代控制理论基础.docx VIP
 - (高清版)DB4406∕T 45-2024 《中药废弃物无害化处理规范》.pdf VIP
 - 《住宅工程质量常见问题防治技术标准》.pdf VIP
 - 2025年事业单位招聘考试公共基础知识题库及答案(共500题).pdf VIP
 - 《汉尚华莲汉服公司SWOT分析及营销策略研究》20000字.docx VIP
 - 家庭中医保健按摩.pptx
 - DNVGL-ST-0126-2018 国外国际标准.pdf
 - QJ 10004-2008 半导体器件总剂量辐照试验方法.docx VIP
 
原创力文档
                        

文档评论(0)