手把手教你做北邮操作系统小学期实验一——Linux启动过程优化1

1.实验环境:

硬件:Intel i5
操作系统:Windows 8.1
虚拟机:VMware Workstation 12.5.0
软件:Red Hat Enterprise Linux 9 (Linux 内核 2.4.20-8)

这里写图片描述

这里写图片描述

2.实验目的:

Linux系统从启动到登陆shell界面需要花费较长的时间,在普通微机上的启动过程需要十几秒或更长。如果要启动X界面,那花费的时间更多了。启动时间过长对嵌入式系统而言,如信息家电产品(机顶盒),是无法接受的。、
Linux系统的启动由内核态下的启动和用户态下的启动组成。利用本实验中采取的多种方法,可以简化Linux系统启动过程,提高Linux系统启动速度,适应嵌入式系统快速启动和实时应用的需要。
3.实验内容:
a. 分析源码,理解启动流程。
b. 在内核态下,利用do_gettimeofday()函数测试时钟初始化完成后,系统启动过程中的几个主要部分的启动时间。如start_kernel()中的控制台console_init(),init()函数过程中的文件系统初始化和文件系统加载,寻找初始化时间较长的内核部分。
c. 至少选取启动过程中的5处较大的代码模块,测量其执行时间,保证测出的执行时间可观测。
d. 内核态进程启动过程优化——IDE检测修改

  • 修改linux/include/asm-I386/ide.h中宏定义#define MAX_HWIFS 10,
  • 减少内核启动时检测的端口数目,提高启动速度。
  • 编写测试函数,测试实验前后IDE接口检测时间。
    e. 用户进程启动过程优化——开机画面字符隐藏技术
    f. 用户进程启动过程优化——开机画面隐藏/调出
    g. 用户进程启动过程化——开机画面更换
    h. 经过上述内核态和用户态优化后,测试系统总的启动时间
    综上所述,实验分为内核态启动优化和用户态启动优化
    内核态启动优化

  • 测量几个较大代码模块的启动时间

  • 更改MAX_HWIFS,减少检测IDE过程的启动时间
    用户态启动优化
  • 开机画面字符隐藏技术
  • 开机画面隐藏/调出
  • 开机画面更换

3.实验原理:

struct timeval { 
time_t tv_sec; /* seconds */ 
suseconds_t tv_usec; /* microseconds */
 };

结构纪录的是系统时间(距1970年1月1日0点)
其中tv_sec纪录的是秒,tv_usec纪录的是该秒内的微妙;

void do_gettimeofday(struct timeval *tv);

函数把当前系统的时间传递给tv所指向的结构。

通过使用do_gettimeofday()函数计算各个系统启动初始化函数所用的时间。

通过修改内核源代码和系统的默些配置文件可以加快启动速度,隐藏启动字符,开机画面显示与隐藏,更换开机画面等。

PS:这只是做实验前的过程,实验过程在后面。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/XiaoyYidiaodiao/article/details/76087584