wiki:Linux2013

2013年春Linux操作系统分析

  • 课程目标:
    • 掌握 Linux 操作系统基本概念,进一步加深对操作系统原理的理解
    • 掌握一种典型的操作系统——Linux 的内核构造、系统调用机制、标准库、Shell等,从代码和实践的角度理解操作系统软件架构及相关原理
    • 了解 Linux 内核中的进程管理、中断处理、内存管理、文件系统、设备驱动、网络体系结构等内容
  • 主讲教师:孟宁、李春杰

重要通知

  • 实验报告提交后要浏览确认一下,因为有可能几个人同时提交,那么也就只保留了最后一个提交的信息。另外也有可能个别同学误操作删除他人的链接,总之做完事情要确认一下结果做个稳妥周全的工程师,提交作业本身也是团队协作。
  • 实验课时间地点安排如下:
    • 15-18周周四晚上7:00-9:30,地点:明德楼103实验室。
    • 要求实验内容以课后完成为主,实验课上以现场检查和疑难问题讨论为主。
    • 15周实验课以检查讨论实验二介绍实验三,提前完成实验三的童鞋可以获得额外加分。
  • 上课时间11-12周周三下午(2点到4点)周四上午(8点-10点),13-18周周二上午(8点-10点)周三下午(2点到4点)

课程内容及课时安排

如果您之前从来没有接触过Linux系统或者不熟悉Linux Shell的基本命令,请您参考Linux GetStarted

请浏览https://www.kernel.org/ 网站了解相关信息,并下载最新版Linux内核代码了解代码目录结构。

实验及课后作业

  • 【可选】如果您之前从来没有接触过Linux系统或者不熟悉Linux Shell的基本命令,请您参考Linux GetStarted
  • 请浏览https://www.kernel.org/ 网站了解相关信息,并下载最新版Linux内核代码了解代码目录结构。
  • 练习使用GNU Tools(参考GNUTools.pdf
  • 【实验一】计算机是怎样工作的?
    • 请使用Example的c代码分别生成.cpp,.s,.o和ELF可执行文件,并加载运行,分析.s汇编代码在CPU上的执行过程
    • 实验报告要求:通过实验解释单任务计算机是怎样工作的,并在此基础上讨论分析多任务计算机是怎样工作的。
    • 实验报告以博客URL方式提交,提交地址 实验一提交入口
    • 提交截至日期5月17日24:00
  • 实际编译运行C代码中嵌入汇编代码示例并理解其中C语言中变量与汇编语言中的寄存器之间的数据传递方式
  • 【实验二】进程的创建与可执行程序的加载
    • 参考进程初探 编程实现fork(创建一个进程实体) -> exec(将ELF可执行文件内容加载到进程实体) -> running program
    • 参照C代码中嵌入汇编代码示例及用汇编代码使用系统调用time示例分析fork和exec系统调用在内核中的执行过程
    • 注意task_struct进程控制块,ELF文件格式与进程地址空间的联系,注意Exec系统调用返回到用户态时EIP指向的位置。
    • 动态链接库在ELF文件格式中与进程地址空间中的表现形式
    • 通过300-500字总结以上实验和分析所得,实验情况和分析的关键代码可以作为总结后面的附录以提供详细信息。
    • 实验报告以博客URL方式提交,提交地址 实验二提交入口
    • 提交截至日期5月30日24:00
  • 【实验三】给系统添加一个新的系统调用
    • 为了循序渐进,减少难度我们在构造整个Linux系统前先完成内核修改和内核升级的操作训练。
    • 1、下载新版内核源码3.9.x编译,然后用它给您的Linux系统进行内核升级,参考http://blog.csdn.net/instruction_number21/article/details/7922783
    • 2、如何添加新的系统调用(3.5.x),要求在系统调用内核处理函数中输出(如用printk)您的学号。
    • 实验检查方式为实验课现场检查Demo + Q&A,Demo方式:1)显示当前系统内核版本(如用uname);2)执行用户程序调用新添加的系统调用;3)查看新系统调用的输出信息(如用dmesg)。
    • 6月13日(周四)前完成以上实验,请大家提前做好准备。
  • 【实验四】掌握Linux系统的构建和调试方法
    • 按照Build & Run Linux System Based on VMware&Ubuntu10.04熟练掌握Linux系统调试环境
    • 【可选】学有余力的同学可以进一步学习http://www.linuxfromscratch.org ,甚至分析Android系统中linux内核、根文件系统和上层软件堆栈。
    • 现场检查要点:
      • 在模拟器中运行Linux系统,并用gdb工具设置断点查看源代码
        • 晋级点1:能实现系统启动完成后进入磁盘文件系统
        • 晋级点2:能实现系统启动完成后进入磁盘文件系统并且系统支持libc,也就是非静态链接编译的程序可以通过调用libc的动态链接库顺利执行。
    • 请在6月20日(周四)前完成以上实验
  • 【实验五】Linux操作系统是如何工作的?破解操作系统的奥秘
    • 操作系统工作的基础:存储程序计算机、堆栈(函数调用堆栈)机制和中断机制;
    • 在操作系统工作的基础之上,请您简述操作系统(内核)是如何工作,宏观概述结合关键点的微观(CS:EIP、EBP/ESP等的变化)分析。
    • 完成500字左右的一段总结文字(务必是自己写的),附上学习研究笔记,另外请大家养成尊重知识产权的习惯引用或参考别人的资料注明出处URL。
    • 实验报告以博客URL方式提交,提交地址 实验五提交入口
    • 请于本周四实验课前提交,最迟提交日期6月30日24:00.
  • 附加实验:写一个自己的OS Kernel(进程管理和进程调度)

参考资料

Last modified 4 years ago Last modified on 06/26/13 16:23:10

Attachments (14)