基于源码分析的多核操作系统研究与人才培养实践.docVIP

基于源码分析的多核操作系统研究与人才培养实践.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于源码分析的多核操作系统研究与人才培养实践   文章编号:1672-5913(2011)21-0081-03 中图分类号:G642 文献标识码:A   基金项目:2010年“国家大学生创新性实验计划项目”资助(101002827);“2011年首都师范大学课程建设立项项目”资助。   作者简介:徐远超,男,讲师,研究方向为多核操作系统、并行与分布式计算。      摘 要:多核已成为处理器的主流,在传统的操作系统教学中引入操作系统如何支持多核的内容十分必要。本文从多核操作系统启动流程分析和多核操作系统调度两方面介绍基于源码分析的研究方法,借助现有的文献资料,学生不仅加深了对操作系统抽象概念的理解,也可以优化和修改内核。该方法目标准确,避免了盲目性。实践经验表明,经过几个月的高强度训练,学生的能力提升明显。   关键词:操作系统;调度;多核;人才培养;源码分析      “操作系统”是计算机系统的核心,是计算机系统结构领域最重要的基础课程。世界著名大学都把操作系统的教学和研究摆在极其重要的位置,通常由资深教授担纲主讲,如美国UCSD大学主讲“Principles of Computer Operating Systems”的Yuanyuan Zhou教授就是系统结构领域世界著名的学者。国家重大科技专项“核心电子器件、高端通用芯片及基础软件产品”也对国产操作系统研发和应用提出了更高的要求,且急需大量高端人才。   然而,操作系统的学习和研究相对其他课程而言略显困难,原因在于概念比较抽象不容易理解、实践内容较为复杂不容易自学,内核不容易调试,缺少友好的人机界面,显得枯燥。因此,愿意从事操作系统研究的人很少。有些同学对Linux内核表现出兴趣,但缺少教师指导,深陷在无穷无尽的代码阅读中,始终找不到成就感或遇到困难没有人交流指导而不得不放弃。   笔者主讲“嵌入式操作系统”,除教学与科研外,每年指导几名本科生课外科研活动,如“校级学生科学研究项目”、“全国大学生创新性实验计划”等,课外实践是学生能力有效提升的最佳手段[1]。在选题时,“实用性、原创性、前瞻性、挑战性、延续性” 是考虑的重点,即研究的内容要有意义,必须对教学或科研有直接或间接的促进作用,如果通过大量的中英文文献检索确定研究的问题还没有满意的解决方案,那么,我们就需要寻找和设计新的方法,坚持高起点,不做纯粹的工程。另外,每年研究的问题要相对聚焦,在某一个方面做得尽可能深入,而不是浅尝辄止。   多核已成为处理器的主流,然而,操作系统教学中对操作系统如何支持多核的介绍却显得不足,如多核的启动流程、多核操作系统调度,等等[2]。本文将从这两个方面阐述如何引导学生开展这方面的研究,从而加深对操作系统的理解。   1 多核操作系统启动流程分析   由于多核与多处理器(SMP)十分相似,使得现有的多处理器操作系统基本不用修改就可以用在多核上。然而,很多讲解Linux内核的书都提到了Linux的启动流程,但很少详细阐述多核环境下的启动流程,网上的文献资料也都比较简单。   了解Linux的启动流程对深入了解操作系统的启动过程以及优化操作系统的快速启动很有帮助,于是,我们组织学生从阅读源码入手,借助相关文献,熟悉启动流程,陈莉君老师也十分认同此种做法[3]。   Linux中SMP启动主要流程如下。   1) BIOS初始化(屏蔽AP-Application Processor,建立系统配置表格)。   2) MBR里面的引导程序(Grub,Lilo等)将内核加载到内存。   3) 执行head.S中的startup_32函数(最后将调用start_kernel)。   4) 执行start_kernel(),这个函数相当于应用程序里面的main。   5) start_kernel()进行一系列初始化,最后将执行smp_init() 启动各个AP。   6) rest_init(),调用init()创建1号进程,自身执行 cpu_idle()成为0号进程。   7) 1号进程即init进程完成余下的工作。   由于BIOS代码并不是支持多线程的,所以在SMP中,系统必须让所有AP进入中断屏蔽状态,不与BP一起执行BIOS代码。BIOS要同时完成对APIC以及其他与MP相关的系统组件初始化过程,并建立相应的系统配置表格,以便操作系统使用。到了启动的第2步,BIOS开始调入执行启动引导区程序,录入Linux操作系统的启动部分。因此我们可以看到,在系统加电启动过程中,实际上只有一个CPU(BP-bootstrap processor)负责启动工作,而其他的CPU则处于中断屏蔽状态,等待着操作系统的激活。   在初始化阶段,BP先完成自身的初始

您可能关注的文档

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档