操作系统实验报告18038

  • 格式:doc
  • 大小:493.50 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福州大学数学与计算机科学(软件)学院

实验报告

课程名称:计算机操作系统

学号:221100218

姓名:

专业:软件工程

年级:2011级

学期:2012学年第2学期

2013年10 月24 日

实验一 Linux操作系统的使用和分析

一、实验目的

本实验主要学习和掌握Linux操作系统的基本应用。通过本实验,学生能够熟练掌握Linux环境下各种基本操作命令接口的应用。从系统安全角度出发,学习掌握系统的基本安全优化和配置,在操作系统层次进行有效安全加固,提高Linux系统的安全性能。通过本次实验,有助于学生进一步理解操作系统原理中的相关内容,加深认识。

二、实验要求

1、熟练掌握Linux系统的基本操作命令。

2、熟悉Linux 系统的基本配置。

3、实现Linux系统的安全加固。

4、掌握一种以上的网络应用软件的安装、配置与应用。

三、实验内容

系统的启动,如图:

关闭使用shutdowm

还有列出文件夹内的信息ls,cp复制拷贝,touch创建文件命令等等

①下载文件压缩包pro.gz,解压如图:

②然后修改安装路径:

③之后用make编译文件

④在安装路径/home/liaoenrui/11里的etc中修改文件的组名和用户名:

将groud 命名也命名为ftp,然后用groudadd和useradd命令将这两个添加在该目录的sbin目录下:

⑤最后运行文件,./profile即可

四、实验总结

通过本次的操作系统的上机实验,我熟练了Linux系统的基本操作命令,并且对安装文件有更深入的了解,比如在上述安装过程中对于通过froftpd来架构linux的ftp,由于之前都是用window系统,所以对于这些非常的生疏,因此在请教了多人和上网查询之后,终于有所了解,并且成功的将此实验顺利完成。在本次实验中,我发现自己的动手能力又有很大的提高,相信以后继续努力的话会有更大的进步,当然这也要归功于老师的教导。

参考文献

[1] Neil Maththew Richard Stones Linux 程序设计第四版人民邮电出版社

[2] 周茜,赵明生.中文文本分类中的特征选择研究[J].中文信息学报,2003,Vol.18 No.3

实验二 Linux进程通信

一、实验目的

1)了解有关Linux系统调用;

2)学习有关Linux的进程创建,理解进程创建后两个并发进程的执行。

二、实验内容

在Linux环境下,用C/C++语言编程,使用系统调用fork创建进程多个子进程。

(1) 调试并完成下列程序,完成实验要求:

#include "stdio.h"

#include "sys/types.h"

#include "unistd.h"

int main()

{

pid_t pid1;

pid_t pid2;

pid1 = fork();

pid2 = fork();

printf("pid1:%d, pid2:%d\n", pid1, pid2);

}

要求:

A.请说出执行这个程序后,将一共运行几个进程。

B.观察运行结果,并给出分析与解释。

答:A.执行这个程序后,将一共运行4个进程。

A.运行结果如下:

分析与解释:

fork()函数能够建立子进程,且使得子进程得到父进程地址空间的一个复制;而且,当创建成功时,如果是父进程则返回0,子进程则返回子进程的ID,但是,fork()

创建的进程并不是从该程序开头开始执行,它只是和父进程一样继续执行后续代码,因此在之后的语句中,父子进程同时创建一个进程,就形成了四个进程,如图上所示。所以,,在上面的截图中,第一次fork()函数时成功产生了父子进程pid分别为2775和0,第二次使用fork()函数时父子进程又各产生了一对父子进程父进程产生的父子进程

的pid分别为2776和0,子进程产生的父子进程的pid分别为0和2777。因为进程是并

发的,他的调度我们无法干预,所以出现的结果并非都是一成不变的,执行多次后,输出的顺序有可能不一样。

(2)参考下面的相关程序实例,编写一个管道实验程序,实现两个进程之间的数据通信。要求:父进程顺序写入若干个字符串,子进程顺序读出内容,并写入文件piple.txt,并显示出来。

(写出设计步骤、数据结构、关键代码、实验结果及其分析说明)

答:

①设计步骤:用pipe()创建一个管道fd,用fork调用产生两个进程(父进程和子进程);将父进程将要传输给子进程的信息写在readbuffer;然后使子进程通过读端用write

函数从缓存中读取父进程传输的消息。

②数据结构:定义一个字符数组string用于存放父进程将要传输给子进程的消息,使

用read函数和write函数配对实现管道的运行。

③关键代码:

#include

#include

#include

#include

#include

int main(void)

{

int fd[2], out;

pid_t childpid;

char string[]={"abcdefghijklmnopqrstuvwxyz"};

char readbuffer[27];

pipe(fd);

childpid=fork();