实  验  报  告
姓    名
学    号
专业班级
课程名称linux终端下载软件
操作系统实验
实验日期
成    绩
指导教师
批改日期
实验名称
实验一 VMware虚拟机与linux操作系统的安装和使用
一、实验目的:
1、了解主流虚拟机软件的功能和特点
2、熟练掌握VMware Workstation 虚拟机软件的使用过程
3、了解linux操作系统的各种发行版本
4、掌握Red Hat Enterprise Linux 5 的安装方法
5、安装 linux的其他版本
6、初步学习在linux下进行C语言程序编程与调试
二、实验要求:
1、 三种虚拟机软件各自的功能特点:
项目
VPC
VMW
VBX
所属
微软公司
VMware公司
innotek公司
系统启动
另开窗口,比较直观,界面简洁,不能更改大小(最大化,还原按钮无效)
默认在原窗口,在上面增加标签,像个单窗口多页面浏览器,未启动时显示的是对应虚拟主机的硬件基本配置情况,可以任意改变窗口大小
 
支持系统
主要有Windows,其他操作系统的都笼统地归为“其他”
几乎所有的常见操作系统,比如MS Windows,Linux,Novell NetWare,Sun Solaris,FreeBSD,MS-DOS等(没有看到苹果机Mac)
如Windows,Linux,DOS,OS/2 Warp,OpenBSD,FreeBSD,NetBSD,NetWare,Solaris,L4等
还原功能
还原磁盘功能不错,差分磁盘很有用
快照,多个快照文件比较大,另克隆功能也是很实用
 
网络
目前支持4个网卡
VMW6目前支持最大8G内存,2个CPU,10个网卡,带了远程连接
支持4个网卡,带了远程桌面
文件共享
在虚拟机的资源管理器中操作的
虚拟机的网上邻居的网络功能里实现的,有些复杂
与主机共享文件要用到命令行:net use x: \\vboxsvr\sharename,是通过网络实现的
支持接口
不支持USB
支持目前常见的所有接口
各种设备基本都支持
快速交换
不能实现(拖拽可以创建快捷方式,不可用)
安装完虚拟机的操作系统后,都有附加的虚拟机附件增强功能;安装附加工具后,VMW能通过复制粘贴或拖拽直接与物理主机的桌面交换文件
 
磁盘管理
虚拟硬盘不能改变大小,可以通过增加其他虚拟磁盘来挂接
虚拟磁盘可以随便更改大小,也可以通过映射挂接其他磁盘;在设置里VMW有整理磁盘碎片功能
虚拟磁盘可以设为固定大小,也可以动态调整,还可以挂接其他两个硬盘,虚拟存储管理器,管理虚拟磁盘、虚拟光盘、虚拟软盘
2、Linux的分区过程:
Linux系统分区
挂载点
主要功能
/
安装Linux的最基本的挂载点,是必须的。
/boot
记录系统启动的信息,在这个目录下存放的都是系统启动时要用到的程序。
/home
类似于Windows的‘我的文档’文件夹,保存个人设置的内容,例如有一个用户名是123的用户,那么就会有/home/123的文件夹,里面会有桌面,文档等。
/tmp
用来存放不同程序执行时产生的临时文件
/usr
储存所安装的程序和系统的配置等文件,不同的发行版里具体内容可能也有些不同。同时这也是Linux系统中占用硬盘空间最大的目录,用户的很多应用程序和文件都存放在这个目录下。
/root
如果以超级用户的身份登录的,这个就是超级用户的主目录。
/bin
bin是二进制binary英文缩写。在一般系统中,你都可以在这个目录下到Linux常用的命令。在有的版本中还可以到一些和根目录下相同的目录。是存放标准系统实用程序的。
/etc
这个目录是Linux系统中最重要的目录之一,在这个目录下存放了系统管理时要用到的各个配置文件和子目录。我们要用到的网络配置文件,文件系统,X系统配置文件,设备设置信息,设置用户信息等都在这个目录下。
/dev
dev是设备Device英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放外部设备的驱动程序。这一点和我们常用的WindowsDOS操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备和访问一个文件、一个目录没有任何区别。
/lib
lib是库Library英文缩写,这个目录是用来存放系统动态连接共享库的,几乎所有的应用程序都会用到这个目录下的共享库。因此,不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。
/opt
是给主机额外安装软件所摆放的目录。
/var
用来存放系统中经常变化大小的日期文件。系统的所有日志文件、PID文件、RPM数据文件等。这些大小经常发生变化的文件都放在这个目录下。所以这个目录是最容易产生碎片的。如果不能单独制定一个分区而和 / 混在一起的话,很容易弄乱 / 文件系统,使系统性能下降。
SWAP分区
是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为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文件,起初我发现会出现以下错误:
我查阅资料后得知上图程序中出现“程序中有游离的***”的原因:
1.程序中输入的字符: , ; " ' / 等符号,有可能是使用的中文输入输入的
2.程序中有使用全角拼音的现象
改正后得到如下代码:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
  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)
  {
  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 <stdio.h>
#include <malloc.h>
#include <string.h>
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)
  {
  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中,仅凭终端里的简单代码就能实现各种功能,确实让我们体会到了该系统的强大。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。