Skip to content

sfd158/oldlinux-homework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

oldlinux-homework

山东大学计算机学院操作系统课程设计作业: 分析linux0.11源代码,并选择喜欢的部分,对代码运行过程进行可视化。

同组者:2016级宋振华、陈宇翔

可通过http://123.207.166.164:23333/ 使用此可视化界面.

实验要求

该实验以Linux0.11为例帮助学生探索操作系统的结构、方法和运行过程, 理解计算机软件和硬件协同工作的机制. 学生需要完成4项任务:

  1. 分析Linux0.11系统源代码, 了解操作系统的结构和方法.
  2. 通过调试、输出运行过程中关键状态数据等方式, 观察、探究Linux系统的运行过程.
  3. 建立合适的数据结构, 描述Linux0.11系统运行过程中的关键状态和操作, 记录系统中的这些关键运行数据, 形成系统运行日志.
  4. 用图形表示计算机系统中的各种软、硬件对象, 如内存、CPU、驱动程序、键盘、中断事件等等. 根据已经产生的系统运行日志, 以动画的动态演示系统的运行过程.

文件说明

文件夹 功能
graph 绘制的思维导图、运行时截图
html 可视化部分代码
other 其他部分(包括提取的数据等)
presentation 展示PPT、实验报告等
vm_env 用于运行linux 0.11 lab的虚拟机环境配置

实现细节

  1. 提取数据方案

    借助https://github.com/tinyclub/linux-0.11-lab 中的环境, 通过gdb脚本, 进行调试

  2. 可视化方案

    实现如下功能:

    • 介绍每个源文件的用途;
    • 统计启动过程调用信息, 以柱状图形式展现;
    • 实现字符输出过程的动画, 包括在终端执行echo hello与a.out.
  3. 提取什么数据

    • 对于开机启动过程, 当每个C语言函数被执行到时, 输出调用栈, 以观察调用、被调用情况.
    • 对于字符设备, 当每个C语言函数被执行到时, 输出调用栈, 以观察调用、被调用情况; 同时当屏幕被修改时, 输出屏幕内容.