操作系统实验报告18038
- 格式:doc
- 大小:493.50 KB
- 文档页数:14
福州大学数学与计算机科学(软件)学院
实验报告
课程名称:计算机操作系统
学号: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();