关键词不能为空

当前您在: 大学查询网 > 高校介绍 >

西来大学华北电力大学操作系统实验报告..

作者:高考题库网
来源:https://bjmy2z.cn/daxue
2020-11-27 15:01
tags:

上海大学北门-上海大学北门

2020年11月27日发(作者:欧阳予倩)








综合实验报告


( 2013-- 2014

年度第

学期

)




称:计算机操作系统


目:计算机操作系统实验


系:计算机系


级:网络


号:


学生姓名:


指导教师:王平


设计周数:

2



绩:




日期:

2013

11




实验

1

实验环境的使用



一、实验目的


1

、熟悉操作系统集成实验环境

OS Lab

的基本使用方法。


2

、练习编 译、调试

EOS

操作系统内核以及

EOS

应用程序 。


二、

预备知识



阅读本书第

1

章,对< /p>

EOS

操作系统和

OS Lab

集成实验环境有一个 初步的了解。重点


学习第

1.3

节,掌握

EOS

操作系统内核和

EOS

应用程序的源代码是如何生成可执行 文件


的,以及

OS Lab

是如何将这些可执行文件写入软盘镜像文件并开始执行的。


三、

实验内容


1

、启动

OS Lab


1.

在安装有

OS Lab

的计算机上,可以使用两种不同的方法来启动

OS Lab


在桌面上双击“

Tevation OS Lab

”图标。


或者


点击“开始”菜单,在“程序”中的“

Tevation OS Lab

”中选择“

Tevation OS Lab


2.

OS

Lab

每次启动后都会首先弹出一个用于注册用户信息的对 话框(可以选择对话框标题栏上


的“帮助”按钮获得关于此对话框的帮助信息)

。在此对话框中填入学号和姓名后,点击“确定”按钮


完成本次注册。

< p>


3.

观察

OS

Lab

主窗口的布局。

OS

Lab

主要由下面的若干元素组成:菜单栏、工具栏以及停靠在


左侧和底部的各种工具窗口, 余下的区域用来放置编辑器窗口。



2

、学习

OS Lab

的基本使用方法


2.1

新建

Windows

控制台应用程序项目


新建一个

Windows

控制台应用程序项目的步骤如下:


1.

在“文件”菜单中选择“新建”

,然后单击“项目”

< p>


2.

在“新建项目”对话框中,选择项目模板“控制台应用程序

(c)


3.

在“名称”中输入新项目使用的文件夹名称“

oslab


4.

在“ 位置”中输入新项目保存在磁盘上的位置“

C:test


5.

点击“确定”按钮。



2.2

生成项目


使用

“生成项目”

功 能可以将程序的源代码文件编译为可执行的二进制文件,

方法十分简单:


在“生成”菜单中选择“生成项目”


在项目生成过程中,

“输出”窗口会实时显示生成的进度和结果。如果源代码中不 包含语法


错误,会在最后提示生成成功,如图:





2.3

执行项目


OS Lab

中选择“调试 ”菜单中的“开始执行

(

不调试

)

,可以执行刚刚生成的

Windows


制台应用程序 。启动执行后会弹出一个

Windows

控制台窗口,显示控制台应用程序输出的 内容。按任


意键即可关闭此

Windows

控制台窗口。


2.4

调试项目


在开始练习各种调试功能之前,

首先需 要对刚刚创建的例子程序进行必要的修改,

步骤如下:


1.

右键点击“项目管理器”窗口中的“源文件”文 件夹节点,在弹出的快捷菜单中选择“添


加”中的“添加新文件”


2.

在弹出的“添加新文件”对话框中选择“

C

源文件”模板。


3.

< p>在“名称”中输入文件名称“

func


4.

点击“添加”按钮,添加并自动打开文件

func.c

,此时的“项目管理器”窗口会如图:



2.4.1

使用断点中断执行


1.

main

函数中定义变量

n

的代码行

int

n

=

0;

< p>上点击鼠标右键,在弹出的快捷菜单中选


择“插入

/

删除断点”

,会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一


个断点,如图:



2.

在“调试”菜单中选择“启动调试”

Windows

控制台应用程序开始执行,随后

OS

Lab

窗口被自


动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此 行代码处中


断执行(也就是说下一个要执行的就是此行代码)

,如图:< /p>



2.4.2

单步调试


按照下面的步骤练习使用“逐过程”功能:




1.

OS Lab

的 “调试”菜单中选择“逐过程”

“逐过程”功能会执行黄色箭头当前指向的代< /p>


码行,并将黄色箭头指向下一个要执行的代码行。


2.

F10

“逐过程”

功能的快捷键)

黄色箭头就指向了调用

printf

函数的代码行。查看控制


台应用程序窗口,仍然 没有任何输出。


3.

再次按

F10

执行

printf

函数,查看控制台应用程序窗口 ,可以看到已经打印出了内容。


4.

在“调试”菜单中选择“停止调试”

,结束此次调试。


2.4.3

查看变量的值


在调试的过程中,

OS Lab

提供了三种查看变量值的方法,按照下面的步骤练习这些方法:


1.

F5

启动调 试,仍然会在之前设置的断点处中断。


2. < /p>

将鼠标移动到源代码编辑器中变量

n

的名称上,此时会弹出一个窗口 显示出变量

n

当前的


值(由于此时还没有给变量

n

赋值,所以是一个随机值)


3.

在源代码编辑器中变量

n

的名称上点击鼠标右键,

在弹出的快捷菜单中选择

“快速监视”


可以使用

“快速监视”

对话框查看变量

n

的值。

然后,

可以点击

“关闭”

按钮关闭

“快速监视”

对话框。


4.

在源代码编辑器中变量

n

的名称上点击鼠标右键,

在弹出的快捷菜单中选择

“添加监视”


变量

n

就被添加到了“监视”窗口中。使用“ 监视”窗口可以随时查看变量的值和类型。此时按

F10


行一次单步调试,可以看到“监视”窗口中变量

n

的值会变为

0

,如图



2.4.4

调用堆栈


1.

F5

启动调试 ,仍然会在之前设置的断点处中断。


2.

选择“调试”菜单“窗口”中的“调用堆栈”

,激活“调用堆栈”窗口。可以看到当前“ 调


用堆栈”窗口中只有一个

main

函数(显示的内容还 包括了参数值和函数地址)


3.

F11

“逐语句”功能的快捷键)调试,直到 进入

Func

函数,查看“调用堆栈”窗口可以


发现在堆 栈上有两个函数

Func

main

。其中当前正 在调试的

Func

函数在栈顶位置,

main

函数 在栈底位


置。说明是在

main

函数中调用了

< p>Func

函数。


3

EOS

内核项目的生成和调试


3.1

新建

EOS

内核项目


新建一个

EOS

内核项目的步骤如下:


1.

在“文件”菜单中选择“新建”,然后单击“项目”。


2.

在“新建项目”对话框中,选择项目模板“

EOS Kernel

”。


3.

在“名称”中输入新项目使用的文件夹名称“

eos

”。


4.

在“位置”中输入新项目保存在磁盘上的位置“

C:

”。


5.

点击“确定”按钮。


3.2

生成项目



1.

F7

生成项目,同时查看“输出”窗口中的内容,确认生 成成功。


2.

打开

C:eosdebug

文件夹,

查看生成的对象文件和目标文件。

找到


三个二进制文件,这三个文件就是

EOS

操作系统在运行时需要的可执行文件。


3.3

调试项目





1.

在“项目管理器”窗口的

ke

文件夹中找到

start.c

文件节点,

双击此文件节 点使用源代码编


辑器打开

start.c

文件。


2.

start.c

文件中

KiSystemStartup

函数的“

Ki InitializePic();

”语句所在行(第

61

行)< /p>


添加一个断点,如图

9-7

EOS

启动时执行的第一个内核函数就是

KiSystemStartup

函数 。



3.4

查看软盘镜像文件中的内容


< p>在“项目管理器”窗口中双击软盘镜像文件

,就会使用

Flo ppyImageEditor

工具


打开此文件

(

FloppyImageEditor

工具中按

F1< /p>

可以查看此工具的帮助文件

)

F loppyImageEditor


工具的文件列表中可以找到

文件和

文件,这两个文件都是在启动调试时被写


入 软盘镜像文件的(可以查看这两个文件的修改日期)

文件在启动 调试时被写入了软盘镜



FloppyImageEditor

工具。


3.5

查看

EOS SDK

Software Development Kit

)文件夹



1.

点击

OS Lab

工具栏上的“项目配置”下拉列表,选择 下拉列表中的“

Release

”项目配


置,“

Release

”项目配置被设置为新的活动项目配置(原来的活动项目配置是“

Debug

”)

。如图:



4

EOS

应用程序项目的生成和调试



4.1

新建

EOS

应用程序项目



1.

在“文件”菜单中选择“新建”,然后单击“项目”。


2.

在“新建项目”对话框中,选择项目模板“

EOS

应用程序”。


3.

在“名称”中输入新项目使用的文件夹名称“

eosapp

”。


4.

在“位置”中输入新项目保存在磁盘上的位置“< /p>

C:

”。


5.

点击“确定”按钮。


4.2

生成项目



1.

F7

生成项目,同时查看“输出”窗口中的内容,确认生成成功。< /p>


2.

打开

C:eos appdebug

文件夹,

查看生成的对象文件和目标文件。

其中 的

就是

EOS


应用程序的可执行文件。< /p>


4.3

调试项目


4.4

查看软盘镜像文件中的内容


4.5

修改

EOS

应用程序项目名称



5

、退出

OS Lab


1.

在“文件”菜单中选择“退出”。


2.

OS

Lab

关闭前会弹出一个保存数据 对话框

(可以选择对话框标题栏上的“帮助”按钮获得


帮助信息)

,核对学号和姓名无误后点击“保存”按钮,

OS Lab

关闭。


3.

OS Lab

关闭后默认会自动使用

Windo ws

资源管理器打开数据文件所在的文件夹,并且选中


刚刚保存的数据文 件(

OUD

文件)

。将数据文件备份保存在自己的文件中。





实验

2

操作系统的启动



一、实验目的


1

跟踪调试

EOS

< p>在

PC

机上从加电复位到成功启动的全过程,

了解操作系统的 启动过程。


2

、查看

EOS

启动后的状态和行为,理解操作系统启动后的工作方式。


二、预备知识


阅读 本书第

3

章,

了解

EOS

操作系统 的启动过程。

阅读第

2

章中的第

2.4

< p>节,

复习汇编语


言的相关知识,并掌握

NASM

汇编代码的特点。阅读附录

A

,了解

Bochs

Virtual

PC

这两款


虚拟机软件的特点,重点熟悉

Bochs

的调试命令。


三、实验内容


3.1

准备实验


1.

启动

OS Lab


2.

新建一个

EOS Kernel

项目。


3.

在“项目管理器”窗口中打开

boot

文件夹中的

两个汇编文件。


是软盘引导扇区程序的源文件,

< p>loader

程序的源文件。简单阅读一下这两个文


件中的

NASM

汇编代码和注释。


4.

F7

生成项目。



3.2

调试

EOS

操作系统的启动过程


3.2.1

使用

Bochs

做为远程目标机



1.

在“项目管理器”窗口中,右键点击项目节点,在弹 出的快捷菜单中选择“属性”。


2.

在弹出的“属性页”对话框右侧的属性列表中找到“远程目标机”属性,

将此属性值修改为


Bochs Debug

”(此时按

F1

可以获得关于此属性的帮助)


3.

点击“确定”按钮关闭“属性页”对话框。接下来就可以使用

Bochs< /p>

模拟器调试

BIOS

程序和


软盘引导扇区程 序了。


3.2.2

调试

BIOS

程序



1.

Console

窗口中 输入调试命令

sreg

后按回车



2.

输入调试命令

r

后按回车





3.2.3

调试软盘引导扇区程序


3.2.4

调试加载程序


3.2.5

调试内核


3.2.6 EOS

启动后的状态和行为


在控制台中输入命令

ver

后按回车



在控制台中输入命令

pt< /p>

后按回车






实验

3

进程的创建



一、实验目的


1

、练习使用

EOS API

函数

CreateP rocess

创建一个进程,掌握创建进程的方法,理解


进程和程序的区 别。


2

调试跟踪

CreateProcess

函数的执行过程,

了解进程的创建过程,

理解进程是资源


分配的单位。


二、预备知识


阅读 本书第

5.1

节,重点理解程序和进程的关系,熟悉进程控制块结构体以及进程创


建的过程。仔细学习

CreateProcess

函数和 其它与创建进程相关的函数的说明,注意理解


这些函数的参数和返回值的意义。


三、实验内容


3.1

准备实验


按照下面的步骤准备本次实验:


1.

启动

OS Lab


2.

新建一个

EOS Kernel

项目。


3.

分别使用

Debug

配置和

Release

配置生成此项目 ,从而在该项目文件夹中生成完全版本的

EOS SDK


件夹。


4.

新建一个

EOS

应用程序项目。


5.

使用在第

3

步生成的

SDK

文件夹覆盖

EOS

应用程序项目文件夹中的

SDK

文件夹。


3.2

练习使用控制台命令创建

EOS

应用程序的进程


1.

EOS

应用程 序项目的“项目管理器”窗口中双击

文件,

使用

F loppyImageEditor

工具打


开此软盘镜像文件。


2.

将本实验文件夹中的

文 件拖动到

FloppyImageEditor

工具窗口的文件列表中释放,


文件即被添加到软盘镜像文件中。

一个

EOS

应用程序,

其源代码可以参见本实验文


件 夹中的

Hello.c

源文件。


3.

FloppyImageEditor

中选择“文件”菜单中的 “保存”后关闭

FloppyImageEditor


4.

F7

生成

EOS

应用项目。





3.3

练习通过编程的方式让应用程序创建另一个应用程序的进程


1.

使用

NewProc.c

文件中的 源代码替换之前创建的

EOS

应用程序项目中的

EOSApp.c

文件内的源代码。


2.

F7

生成修改后的

EOS

应用程序项目。


3.

F5

启动调试。

OS Lab

会首先弹出一个调试异常对话框。


4.

在调试异常对话框中选择“否”,继续执行。




3.4

调试

CreateProcess

函数


1.

F5

启动调试

E OS

应用程序,

OS Lab

会首先弹出一个调试异常对话框。


2.

选择“是”调试异常,调试会中断。


3.

main

函数中调用

CreateProcess

函数的代码行(第

57

行)添加一个断点。


4.

F5

继续调试,在断点处中断。


5.

F11

调试进入

CreateProcess

函数。此时已经开始进入

EOS

内核 进行调试。



3.5

调试

PsCreateProcess

函数


1.


PsCreatePr ocess

函数中找到调用

PspCreateProcessEnvironm ent

函数的代码行

create.c

文件的< /p>


163

行)

,并在此行添加一个断点。< /p>



2.

F5

继续调试,到此断点处中断。


3.

F11

调试进入

PspCreateProcessEnvironment

函数。


3.6

练习通过编程的方式创建应用程序的多个进程


使用

OS Lab

打开本实验文件夹中的参考源代码文件

NewTwoProc.c

,仔细阅读此文件中的源代码。使

NewTwoProc.c

文件中的源代码替换

EOS

应用程序项目中

EOSApp.c

文件内的源代码,生成后启动调


试,查看多个进程并发执行的结果。









实验

4

线程的状态和转换


一、实验目的


1

、调试线程在各种状态间的转换过程,熟悉线程的状态和转换。


2

、通过为线程增加挂起状态,加深对线程状态的理解。


二、预备知识


阅读 本书第

5.2.3

节,了解线程都有哪些状态以及

EOS

是如何定义这些状态的。了解线程是如何在


这些状态之间进行转换的,特别是要阅 读一下

EOS

中用于线程转换的相关函数的源代码。阅读本书第

< br>5.2.4

节,

了解

EOS

为线程添加的挂 起状态,

以及

Suspend

Resume

原语操作。

线程状态的转换和线程的


同步、线程的调度是不可 分割的,所以建议读者简单学习一下第

5.3

5.4

< p>节中的内容。


三、实验内容


3.1

准备实验


按照下面的步骤准备实验:


1.

启动

OS Lab


2.

新建一个

EOS Kernel

项目。



3.2

调试线程状态的转换过程


1.

F7

生成在本实验

3.1

中创建的

EO S Kernel

项目。


2.

F5

启动调试。


3.

EOS

启动完毕,在

< p>EOS

控制台中输入命令“

loop

”后按回车。

< p>


4.

结束此次调试。


loop

命令执行的效果可以参见图:



3.2.1

线程由阻塞状态进入就绪状态


3.2.2

线程由运行状态进入就绪状态


3.2.3

线程由就绪状态进入运行状态


3.2.4

线程由运行状态进入阻塞状态


3.3

为线程增加挂起状态


1.

删除之前添加的所有断点。


2.

F5

启动调试。


3.

EOS

启动完毕,

EOS

控制台中输入命令“

loop

”后按回 车。

此时可以看到

loop

线程的执行计数在

不停增长,说明

loop

线程正在执行。记录下

loop

线程的

ID


4.

Ctrl+F2

切换到控制台

2

,输 入命令“

suspend

31

”(如果

loop

线程的

ID

31

)后按回车。命 令执


行成功的结果如图

12-2

所示。


5.

Ctrl+1

切换回控制台

1

,可以看到由于

loop

线程已经成功被挂起,其执 行计数已经停止增长了。


此时占用处理器的是

EOS

中的 空闲线程。






实验

5

进程的同步


一、实验目的


1

、 使用

EOS

的信号量,编程解决生产者—消费者问题,理解进程同步的意义。


2

、调试跟踪

EOS

< p>信号量的工作过程,理解进程同步的原理。


3

、修改

EOS

的信号量算法,使之支持等待超时唤醒功能(有限等待),加 深理解进程同步的原


理。


二、预备知识


阅读 本书第

5

章中的

5.3

节,

学习< /p>

EOS

内核提供的三种同步对象

(该实验没有涉及到

Event

同步对


象)。重点理解各种同步对象的状态与使用方式。同时 学习经典的生产者-消费者问题。


阅读

5.2

节,学习在

EOS

应用程序中调用

EOS API

函数

CreateThread

创建线程的方法。


三、实验内容



3.1

准备实验


1.

启动

OS Lab


2.

新建一个

EOS Kernel

项目。


3.

生成

EOS Kernel

项目,从而在该项目文件夹中生成

SDK

文件夹。


4.

新建一个

EOS

应用程序项目。


5.

使用在第

3

步生成的

SDK

文件夹覆盖

EOS

应用程序项目文件夹中的

SDK

文件夹。



3.2

使用

EOS

的信号量解决生产者-消费者问题


生产者-消费者同步执行的过程



3.3

调试

EOS

信号量的工作过程



3.3.1

创建信号量


西安交通大学英文地址-西安交通大学英文地址


上海大学英语老师-上海大学英语老师


大学生入伍几年-大学生入伍几年


中国最好的烹饪大学-中国最好的烹饪大学


河南哪个大学好-河南哪个大学好


纽约大学数学专业-纽约大学数学专业


国防大学徐焰-国防大学徐焰


湖南师范大学地图-湖南师范大学地图



本文更新与2020-11-27 15:01,由作者提供,不代表本网站立场,转载请注明出处:https://bjmy2z.cn/daxue/9353.html

华北电力大学操作系统实验报告..的相关文章