山东大学计算机学院操作系统课程设计作业: 分析linux0.11源代码,并选择喜欢的部分,对代码运行过程进行可视化。
同组者:2016级宋振华、陈宇翔
可通过http://123.207.166.164:23333/ 使用此可视化界面.
该实验以Linux0.11为例帮助学生探索操作系统的结构、方法和运行过程, 理解计算机软件和硬件协同工作的机制. 学生需要完成4项任务:
- 分析Linux0.11系统源代码, 了解操作系统的结构和方法.
- 通过调试、输出运行过程中关键状态数据等方式, 观察、探究Linux系统的运行过程.
- 建立合适的数据结构, 描述Linux0.11系统运行过程中的关键状态和操作, 记录系统中的这些关键运行数据, 形成系统运行日志.
- 用图形表示计算机系统中的各种软、硬件对象, 如内存、CPU、驱动程序、键盘、中断事件等等. 根据已经产生的系统运行日志, 以动画的动态演示系统的运行过程.
文件夹 | 功能 |
---|---|
graph | 绘制的思维导图、运行时截图 |
html | 可视化部分代码 |
other | 其他部分(包括提取的数据等) |
presentation | 展示PPT、实验报告等 |
vm_env | 用于运行linux 0.11 lab的虚拟机环境配置 |
-
提取数据方案
借助https://github.com/tinyclub/linux-0.11-lab 中的环境, 通过gdb脚本, 进行调试
-
可视化方案
实现如下功能:
- 介绍每个源文件的用途;
- 统计启动过程调用信息, 以柱状图形式展现;
- 实现字符输出过程的动画, 包括在终端执行echo hello与a.out.
-
提取什么数据
- 对于开机启动过程, 当每个C语言函数被执行到时, 输出调用栈, 以观察调用、被调用情况.
- 对于字符设备, 当每个C语言函数被执行到时, 输出调用栈, 以观察调用、被调用情况; 同时当屏幕被修改时, 输出屏幕内容.