admin 管理员组

文章数量: 887032


2023年12月17日发(作者:好慕课免费课程)

实 验 报 告

姓 名

课程名称

成 绩

实验名称

学 号

操作系统实验

指导教师

专业班级

实验日期

批改日期

实验一 VMware虚拟机与linux操作系统的安装和使用

一、实验目的:

1、了解主流虚拟机软件的功能和特点

2、熟练掌握VMware Workstation 虚拟机软件的使用过程

3、了解linux操作系统的各种发行版本

4、掌握Red Hat Enterprise Linux 5 的安装方法

5、安装 linux的其他版本

6、初步学习在linux下进行C语言程序编程与调试

二、实验要求:

1、 三种虚拟机软件各自的功能特点:

项目

所属

VPC

微软公司

VMW

VMware公司

VBX

innotek公司

默认在原窗口,在上面增加标签,像个单窗另开窗口,比较直观,界面口多页面浏览器,未启动时显示的是对应系统启动 简洁,不能更改大小(最大

虚拟主机的硬件基本配置情况,可以任意化,还原按钮无效)

改变窗口大小

几乎所有的常见操作系统,比如MS 如Windows,Linux,DOS,OS/2

主要有Windows,其他操Windows,Linux,Novell NetWare,Sun Warp,OpenBSD,FreeBSD,支持系统 作系统的都笼统地归为Solaris,FreeBSD,MS-DOS等(没有看到NetBSD,NetWare,Solaris,L4“其他”

苹果机Mac) 等

还原功能

还原磁盘功能不错,差分快照,多个快照文件比较大,另克隆功能也

磁盘很有用 是很实用

目前支持4个网卡

VMW6目前支持最大8G内存,2个CPU,支持4个网卡,带了远程桌面

10个网卡,带了远程连接

网络

与主机共享文件要用到命令行:在虚拟机的资源管理器中虚拟机的网上邻居的网络功能里实现的,文件共享 net use x: vboxsvrsharename,操作的 有些复杂

是通过网络实现的

支持接口 不支持USB 支持目前常见的所有接口 各种设备基本都支持

1

安装完虚拟机的操作系统后,都有附加的不能实现(拖拽可以创建虚拟机附件增强功能;安装附加工具后,快速交换

快捷方式,不可用) VMW能通过复制粘贴或拖拽直接与物理主机的桌面交换文件

虚拟磁盘可以设为固定大小,也虚拟硬盘不能改变大小,虚拟磁盘可以随便更改大小,也可以通过可以动态调整,还可以挂接其他磁盘管理 可以通过增加其他虚拟磁映射挂接其他磁盘;在设置里VMW有整两个硬盘,虚拟存储管理器,管盘来挂接 理磁盘碎片功能 理虚拟磁盘、虚拟光盘、虚拟软盘

2、Linux的分区过程:

Linux系统分区

挂载点

/

/boot

/home

/tmp

/usr

/root

主要功能

安装Linux的最基本的挂载点,是必须的。

记录系统启动的信息,在这个目录下存放的都是系统启动时要用到的程序。

类似于Windows的‘我的文档’文件夹,保存个人设置的内容,例如有一个用户名是123的用户,那么就会有/home/123的文件夹,里面会有桌面,文档等。

用来存放不同程序执行时产生的临时文件。

储存所安装的程序和系统的配置等文件,不同的发行版里具体内容可能也有些不同。同时这也是Linux系统中占用硬盘空间最大的目录,用户的很多应用程序和文件都存放在这个目录下。

如果以超级用户的身份登录的,这个就是超级用户的主目录。

bin是二进制binary英文缩写。在一般系统中,你都可以在这个目录下找到Linux常用的命令。在有的版本中还可以找到一些和根目录下相同的目录。是存放标准系统实用程序的。

这个目录是Linux系统中最重要的目录之一,在这个目录下存放了系统管理时要用到的各个配置文件和子目录。我们要用到的网络配置文件,文件系统,X系统配置文件,设备设置信息,设置用户信息等都在这个目录下。

dev是设备Device英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放外部设备的驱动程序。这一点和我们常用的Windows、DOS操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备和访问一个文件、一个目录没有任何区别。

lib是库Library英文缩写,这个目录是用来存放系统动态连接共享库的,几乎所有的应用程序都会用到这个目录下的共享库。因此,不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。

是给主机额外安装软件所摆放的目录。

用来存放系统中经常变化大小的日期文件。系统的所有日志文件、PID文件、RPM数据文件等。这些大小经常发生变化的文件都放在这个目录下。所以这个目录是最容易产生碎片的。如果不能单独制定一个分区而和 / 混在一起的话,很容易弄乱 / 文件系统,使系统性能下降。

是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定载入点/,既然它作为交换分区,我们理所当然应给它指定大小,它至少要等于系统上实际内存的量,一般来说它的大小是内存的两倍。

2

/bin

/etc

/dev

/lib

/opt

/var

SWAP分区

三、实验内容与步骤:

1、使用VMware workstation 7.0创建一个虚拟机

2、在虚拟机上安装linux操作系统Red Hat Enterprise Linux 5

3、在RHEL5上安装VMware Tools for linux,增强GuestOS 的现实、鼠标功能,包括方便在真实机和虚拟机之间copy文件之类的操作

4、linux下的C语言编程与调试:

1)用编辑器创建一个greeting.c文件,起初我发现会出现以下错误:

3

我查阅资料后得知上图程序中出现“程序中有游离的***”的原因:

1.程序中输入的字符: , ; " ' / 等符号,有可能是使用的中文输入法输入的

2.程序中有使用全角拼音的现象

改正后得到如下代码:

#include

#include

#include

main ()

{

void my_print (char *string);

void my_print2 (char *string);

char my_string[] = "hello there";

my_print (my_string);

my_print2 (my_string);

}

void my_print (char *string)

{

printf ("The string is %s ", string);

}

void my_print2 (char *string)

4

{

char *string2;

int size, i;

size = strlen (string);

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size - i] = string[i];

string2[size+1] = ’0’;

printf ("The string printed backward is %s n", string2);

}

1)gcc命令编译程序gcc -o greeting -g greeting.c执行后显示结果如下:

The string is hello there

The string printed backward is

输出第一行是正确的,但第二行是不正确的,所设想的输出应该是:

The string printed backward is ereht olleh

2)进入调试器,输入gdb ./greeting

如果在输入命令时忘记吧要调试的程序作为参数传递给gdb。可以再gdb提示符下用file命令来载入它:

(gdb)file greeting

(gdb) run

3)为了找见症结所在,可以在my_print2函数的for语句后设置一个断点,具体做法是在gdb

提示符下键入list命令三次,列出源代码,查看行号。

(gdb)list

(gdb)list

(gdb)list

假设断点的地方是在第24行,

(gdb)break 24

4)再次输入run命令,程序挂起在设置断点的位置。

5)设置一个观察string2[size-i]变量值的观察点来看出错误是怎么样产生的,输入命令(gdb)watch

string2[size-i]

6)用next命令来一步步的执行for循环

(gdb)next

记录每次循环后string2[size-i]的值是多少,是否和期望值相同。确定程序出错的位置,并分析其原因。

7)找出问题出在哪里后,退出gdb,然后修正程序并重新编译。

#include

#include

#include

main ()

{

void my_print (char *string);

void my_print2 (char *string);

char my_string[] = "hello there";

my_print (my_string);

my_print2 (my_string);

5

}

void my_print (char *string)

{

printf ("The string is %s ", string);

}

void my_print2 (char *string)

{

char *string2;

int size,i;

size = strlen (string);

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size - i-1] = string[i];

string2[size] =‘0’;

printf ("The string printed backward is %s n", string2);

}

四、实验总结与心得:

在linux系统下的C语言编程和调试技术与windows系统下类似。同样地,在编写源代码时,要注意写全必要的头文件(比如本实验中的malloc.h);在引用函数时,要注意先声明;在对字符串进行操作时要注意对应元素次序与标号的关系;调试程序时,要选择适当的位置设立断点,分析变量值,从而达到纠错的目的。

此次试验中,由于第一次接触linux系统,对于习惯了windows图形化界面的我们来说,确实有些不适应。但是,linux中,仅凭终端里的简单代码就能实现各种功能,确实让我们体会到了该系统的强大。

6


本文标签: 系统 程序 目录 设置 文件