姓 名 课程名称 成 绩 实验名称 学 号 操作系统实验 指导教师 专业班级 实验日期 批改日期 实验一 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: \\\\vboxsvr\\sharename,操作的 有些复杂 是通过网络实现的 支持接口 不支持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 { 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\ } 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 } void my_print (char *string) { printf (\"The string is %s \ } 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\ } 四、实验总结与心得: 在linux系统下的C语言编程和调试技术与windows系统下类似。同样地,在编写源代码时,要注意写全必要的头文件(比如本实验中的malloc.h);在引用函数时,要注意先声明;在对字符串进行操作时要注意对应元素次序与标号的关系;调试程序时,要选择适当的位置设立断点,分析变量值,从而达到纠错的目的。 此次试验中,由于第一次接触linux系统,对于习惯了windows图形化界面的我们来说,确实有些不适应。但是,linux中,仅凭终端里的简单代码就能实现各种功能,确实让我们体会到了该系统的强大。 6 因篇幅问题不能全部显示,请点此查看更多更全内容