网上资源操作系统实验报告
年级专 业计算机科学与技术班级组号实验室日期 实验名称操作系统实验实验内容分项内容实验级别实验一 操作系统实验环境熟悉(Linux操作命令、Linux/Windows平台编程工具)实验二 进程控制实验三 进程同步与通信管理实验四 虚拟内存管理实验五 文件系统与磁盘管理小 组 成 员姓名学号组内分工自我评分教师评分实验1,4 10 10实验3,4 10 10实验4,5 10小组成绩评定教师签名: 年 月 日实验分项1 操作系统实验环境熟悉(Linux操作命令、Linux/Windows平台编程工具)实验目的熟悉操作系统实验环境实验要求具体题目: Linux 常用命令的使用(操作系统使用级)Linux 系统基本操作(启动与退出、文件和目录操作、文档备份与压缩、联机帮助等)Vi / Emacs等编辑软件的使用(操作系统使用级)cc 、gcc 、g+、 gdb 命令的使用(开发调试环境)(操作系统使用级)系统平台: Linux实验原理步骤(算法流程)login1.作用login的作用是登录系统,它的使用权限是所有用户。2.格式login namep h 主机名称3.主要参数p:通知login保持现在的环境参数。h:用来向远程登录的之间传输用户名。mkdir options 目录名 3.options主要参数 m, mode=模式:设定权限<模式>,与chmod类似。 p, parents:需要时创建上层目录;如果目录早已存在,则不当作错误。 v, verbose:每次创建新目录都显示信息。 version:显示版本信息后离开。 $ mkdir m 777 tsk grep 1.作用 grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式 grep options dd 1.作用 dd命令用来复制文件,并根据参数将数据转换和格式化。 2.格式 dd options find命令的作用是在目录中搜索文件,它的使用权限是所有用户。 2.格式 find pathoptionsexpression path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。 find命令查找文件的几种方法: (1)根据文件名查找 例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令: find / name lilo.conf find命令后的“/”表示搜索整个硬盘。 (3)根据部分文件名查找方法 find / name '*abvd*' (4) 使用混合查找方式查找文件 find /etc -size +500000c -and -mtime +1 mv 1.作用 mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。 2.格式 mvoptions 源文件或目录 目标文件或目录 3.options主要参数 i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答“y”或“n”,这样可以避免误覆盖文件。 f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。 4.应用实例 (1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中: $ mv /usr/cbu/ * . (2)将文件cjh.txt重命名为wjz.txt: $ mv cjh.txt wjz.txt ls 1.作用 ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户。 2.格式 ls optionsfilename Diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。 cmp 1.作用 cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。 2.格式 cmpoptions 文件名 3.options主要参数 cat 1.作用 cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。 2.格式 cat options 文件1 文件2 3.options主要参数 n:由第一行开始对所有输出的行数编号。 b:和n相似,只不过对于空白行不编号。 s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。 $ cat -b /etc/named.conf ln 1.作用 ln命令用来在文件之间创建链接,它的使用权限是所有用户。 2.格式 ln options 源文件 链接名 实验结果及分析部分实验截图如下:心得体会通过本次试验熟悉了linux下的常用的命令,了解了基本的shell命令的用法和作用,能够在linux下操作文件,目录。了解了VI的基本命令,插入,粘贴 ,复制等命令。了解了linux下文件目录的基本结构,文件的属性,用户的属性,能够较熟练的操作图形界面。总之算是对linux有个基本的了解。实验分项2 实验二 进程控制实验目的 熟悉linux和windows下进程的管理,包括创建,睡眠,销毁等。实验要求具体题目1 Linux 系统常用进程管理命令的使用(操作系统观察级)2 Linux 系统常用进程创建与管理的系统调用(原码阅读与系统编程级)3 Windows平台常用进线程控制API(原码阅读与系统编程级)系统平台 Linux Windows实验原理步骤(算法流程)1.exec系列系统调用exec系统调用(实际上是一系列系统调用)可以将二进制文件的程序映像载入内存,替换原来进程的地址空间,并开始运行它。#include<unistd.h>int execl(const char *path,const char *arg,)对execl()的调用会将path所指路径的映像载入内存,替换当前进程的映像。注意:参数列表必须以NULL结尾2.fork()系统调用fork()系统调用可以创建一个和当前进程映像一样的进程。#include<sys/types.h>#include<unistd.h>pid_t fork(void)成功调用fork()会创建一个新的进程,它几乎与调用fork()的进程一模一样。这两个进程都会同时运行,调用者从fork()返回以后,就好像没有什么特别的事情发生过。新进程称为原来进程的子进程,原来进程自然就是父进程,在子进程中,成功的fork()调用会返回0,在父进程中fork()返回子进程的pid.3.wait()函数调用#include <sys/types.h>#include<sys/wait.h>pid_t wait(int *status)进程一旦调用了wait,就立即阻塞了自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样的一个子进程,wait就会一直阻塞在这里,直到一个出现为止。参数status用来保存被收集的进程退出时的一些状态,它是一个指向int类型的指针4.sleep()函数调用#include<unistd.h>unsigned int sleep(unsigned int second)该函数使得进程挂起一个指定的时间,直到知道时间用完或收到信号。如果挂起时间到了,就返回0;如果该函数被信号打断,则返回剩余挂起的时间数Fork3.c#include <stdlib.h>#include <sys/wait.h>#include <sys/types.h>void main()int p1;while (p1=fork()=-1);if(p1>0) /如果是从父进程返回wait(0); /等待子进程结束printf("here is parent, the fork return p1 is %dn",p1);else printf("here is the son the the fork return p1 is %d",p1); exit(0); /结束子进程Fork4.c#include <stdio.h>#include <stdlib.h>#include <sys/wait.h>#include <sys/types.h>void main()int p1=-1;int p2=-1;int son1=0,son2=0; /分别标识两个子进程while (p1=fork()=-1); if(p1=0) son1=1 ; /标识第一个子进程 if (p1>0)while (p2=fork()=-1); if(p2=0)son2=1;/标识第二个子进程if(p1>0&&p2>0) /父进程执行wait(0);printf("here is parent, the fork return p1 and p2 is %d ,%d",p1,p2); printf("son1 %d,son2 %dn",son1,son2);else if(son1) /第一个子进程执行的代码 /获得进程ID 打印出子进程ID printf("here is the first son the the pid is %d ",ge