操作系统实验.docx
《操作系统实验.docx》由会员分享,可在线阅读,更多相关《操作系统实验.docx(22页珍藏版)》请在冰豆网上搜索。
操作系统实验
《操作系统》实验报告
(一)
Linux基本操作与编程 (验证性 2学时)
1、实验目的:
1)熟悉Linux操作系统的环境和使用。
2)*了解LINUX系统的安装过程。
(注:
*表示可选择)
3)掌握Linux环境下的命令操作。
2、实验内容:
(1)完成LINUX系统的登录,启动终端、进行下列操作并记录结果(要求:
结果以屏幕截图表示)、
1)运行pwd命令,确定您当前的工作目录。
2)利用以下命令显示当前工作目录的内容:
ls–l
3)运行以下命令:
ls–al
4)使用mkdir命令建立一个子目录subdir、
5)使用cd命令,将工作目录改到根目录(/)上。
6)使用ls-l命令列出/dev的内容。
7)使用不带参数的命令cd改变目录,然后用pwd命令确定您当前的工作目录是哪里?
8)使用命令cd 、、/。
、,您将工作目录移到什么地方?
(2)在LINUX下查看您的文件、
1)利用cd命令,将工作目录改到您的主目录上。
2)将工作目录改到您的子目录subdir,然后运行命令:
date>file1 将当前日期和时间存放到新建文件file1中。
3)使用cat命令查看file1文件的内容、
4)利用man命令显示date命令的用法:
mandate
5)将date命令的用法附加到文件file1的后面:
mandate >〉 file1
6)利用cat命令显示文件file1的内容。
7)利用ls —lfile1命令列出文件file1的较详细的信息。
运行ls—l/bin命令显示目录的内容。
8)利用ls—l/bin|more命令行分屏显示/bin目录的内容、
9)利用cpfile1fa命令生成文件file1的副本。
然后利用ls —l命令查看工作目录的内容。
10)用cd命令返回您的主目录,输入命令ls–l后,解释屏幕显示的第一列内容的含义
。
(3)编写能输出“Helloworld!
"问候语的C程序,并在终端中编译、执行。
要求记录所使用的命令及结果、
操作步骤:
1)在文本编辑器中,编写C程序a、c如下:
#include"stdio。
h"
main()
{printf("hello");}
ﻩ2)在终端中,用gcc命令进行编译,生成可执行文件a。
gcca、c–oa
ﻩ3) 在终端中执行a的命令如下:
、/a
(4)编写一个程序:
显示信息“TimeforPlay!
”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户。
要求记录所使用的命令及结果。
(提示:
使用sleep(s)函数)
3、实验结果分析:
(对上述实验内容中的各题结果,进行分析讨论。
并回答下列问题)
(1)进程包括哪些特征?
间断性,失去封闭性, 不可再现性,动态性,并发性,独立性
(2)在Linux中,如何设置前、后台命令和程序的执行?
命令后直截了当加 & ,这个命令就在后台执行; 正在运行的命令,使用 Ctrl+z ,就挂起; jobs命令,能够现实后台,包括挂起的命令;
使用 bg %作业号 就能够把挂起的命令在后台执行; 使用 fg %作业号 就能够把后台命令调到前台
(3)您所使用的Linux系统的内核版本是多少?
用什么命令查看内核版本?
目前您所了解的各发行版本的情况如何?
Linux version 2。
6。
32—358、el6、i686 (mockbuildx86-022、build、eng。
bos。
redhat。
) (gcc version 4。
4。
7 20120313 (Red Hat 4、4。
7—3) (GCC) ) #1 SMP Tue Jan 29 11:
48:
01 EST 2013
(4)您对Linux系统有什么认识?
linux是一款开放性的操作系统,也能够说成是开放的源代码系统,这些代码能够完全自由的修改能够再任何的计算机上去运行它,也就是“可移植性",其次大伙儿都明白,linux是由UNIX的概念所开发出来的,因此它也继承了UNIX的稳定和效率的特点!
4、总结:
您对本次实验有什么体会或看法。
《操作系统》实验报告
(二)
文件访问权限设置与输入输出重定向(2学时)
一、实验目的
1、掌握linux的文件访问权限设置。
2、熟悉输入输出重定向和管道操作、
二、实验内容
1、启动进入红帽linux系统
2、设置文件权限:
● 在用户主目录下创建目录test,进入test目录,用vi创建文件file1,并输入任意的文字内容。
●用ls-l显示文件信息,注意文件的权限和所属用户和组。
●对文件file1设置权限,使其他用户能够对此文件进行写操作:
#chmod o+wfile1、
●用ls-l查看设置结果。
●取消同组用户对此文件的读取权限:
#chmodg-r file1。
查看设置结果。
● 用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行的权限:
#chmod 755file1。
设置完成后查看设置结果。
3、输入、输出重定向和管道
(1) 输出重定向
● 用ls命令显示当前目录中的文件列表:
#ls –l。
● 使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中:
#ls–l〉list。
● 查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0、 这说明shell是首先创建了一个空文件,然后再运行ls命令:
#cat list。
● 再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中。
这次使用追加符号>>进行重定向:
#ls–l>〉list。
● 查看文件list的内容,能够看到用>>进行重定向是把新的输出内容附加在文件的末尾,注意其中两行list文件的信息中文件大小的区别:
catlist、
● 重复命令#ls–l > list。
● 再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小和创建时间的区别。
(2) 管道
● who|greproot命令的结果是?
● 命令ls–l|wc –l结果是?
4、退出linux系统
操作步骤:
在主菜单上选择“注销” —〉关闭计算机、
三、实验结果与讨论(依照实验结果回答下列问题)
1、 文件backup、tar的权限如下:
-rw-r—r-— 1rootroot19274 Jul1411:
00 backup、tar
回答:
—rw-r-r--的含义是什么?
答:
是LINUX/FTP的简易权限表示法:
ﻫ 对应于本用户—所在组-其他人的权限,每一个用执行(x)—读取(r)-写入(w)ﻫ 如本题若是说自己能够读取写入不能够执行,所在组和其他人只能读取、
2、文件backup、tar的所有者添加执行权限的命令是?
答:
chmod u+xbackup。
tar、gz
3、赋予所有用户读和写backup、tar文件权限的命令是?
答:
chmod a+w,a+rbackup、tar、gz
四、个人体会
(您对本次实验有什么体会或看法?
)
《操作系统》实验报告(三)
文件和目录管理
一、实验目的
1)掌握在Linux系统下的文件和文件系统的概念及命令;
2)掌握Linux系统下的目录操作。
二、实验内容
1。
进入linux终端后,用命令的操作结果回答下列问题:
1)vi的三种工作模式是?
其中不能进行直截了当转换的是什么模式到什么模式?
命令模式、文本输入模式、末行模式命令模式不能直截了当到末行模式
2)在vi中退出时,保存并退出的操作步骤是?
Ese:
wq
3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行。
请问执行命令:
catmyfile2后,myfile2中还有几行内容?
该命令的作用是?
用命令操作验证您的回答。
myfile2中还有1行内容 该命令的作用是替换myfile的内容
4)请用至少两种不同的命令创建一个文本文件(Myext、txt),在其中写入“我是2014级学生,我正在使用Linux系统。
”,记录命令及执行结果。
1、Vi创建
2、
5)用___pwd________命令可查看所创建文件Myext、txt的绝对路径,写出它的绝对路径__/root_________;用___ls-l________命令查看该文件的类型及访问权限,其访问权限(数字和字母)分别是多少__-rw—r--r-—644______________。
6)若将该文件的访问权限修改为:
所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果。
7)查找my开头的所有文件,可___find my*_________命令,写出命令并记录结果
8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1的内容是/root目录的详细信息;file2的内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果。
2。
文件及目录操作,写出操作所使用的命令,并记录结果。
●在终端中完成下列命令操作,并记录结果
●在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录、
●查看mydir和myfile的默认权限
●查看当前my的权限值是多少?
●将myfile文件分别复制到root和dd1的主目录中
●将root主目录中的myfile改为yourfile
●通过从键盘产生一个新文件text、txt并输入Iam astudent
●查找text、txt文件是否包含student字符串
三、实验结果与分析,回答下列问题:
1、能够创建文件的命令有哪些?
vi 和 cat>name
2、能够查看当前目录的绝对路径的命令是?
pwd
3、Linux中按用户属性将用户分成哪些类型?
依照文件的访问权限,用户又被分成哪些类型?
能够查看文件访问权限的命令是?
用户同组其他
可读可写可执行 catf1
四、小结
(本次实验的体会或小结)
《操作系统》实验报告(四)
作业调度算法模拟 (验证性2学时)
1、实验目的:
1)掌握作业调度的主要功能及算法。
2)通过模拟作业调度算法的设计加深对作业管理基本原理的理解。
3)熟悉Linux环境下应用程序的编程方法。
2、实验内容:
(1)作业调度算法(FCFS)编程模拟:
编制一段程序,对所输入的若干作业,输入、输出数据样例如下表所示。
按FCFS算法模拟调度,观察、记录并分析调度的输出结果情况、
【输入输出样例1:
FCFS算法】
输入
输出
A04
B1 3
C2 5
D3 2
E4 4
A 0 0 44
B14 7 6
C2 7 12 10
D 312 1411
E 4 141814
fcfs、c
#include
#include<stdlib、h>
#defineSIZE5
structJob_type
{
char no[2];//作业名
inttb; //作业到达时间(分)
int tr;//运行时间(分)
}x,job[5];
void load()
{inti;
printf("\nEntertheJobs’ datas:
\n”);
for(i=0;i〈SIZE;i++)
scanf("%s%d%d",&job[i]。
no,&job[i]。
tb,&job[i]。
tr);
printf("输入作业顺序:
\n");
for(i=0;i<SIZE;i++)
printf("\t%s\t%d\t%d\n",job[i]、no,job[i]、tb,job[i]、tr);
}
voidfcfs()
{inti,j,t=0,tw=0,tt=0;
for(i=0;i〈SIZE-1;i++)
for(j=i+1;j〈SIZE;j++)
if(job[i]、tb>job[j]。
tb)
{x=job[i];
job[i]=job[j];
job[j]=x;
}
printf("FCFS调度结果:
\n");
printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n”);
for(i=0;i〈SIZE;i++)
{
printf(”%d",t);
t=t+job[i]、tr;
tw=t—job[i]、tb—job[i]。
tr;//作业等待时间
tt=t—job[i]。
tb; //周转时间
printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",job[i]。
no,job[i]。
tb,job[i]。
tr,t,tw,tt);
}
}
void main()
{
load();
fcfs();
}
(2)作业调度算法(SJF)编程模拟:
编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果。
【输入输出样例2:
SJF算法】
输入
输出
A 04
B 03
C0 5
D02
E01
A06 1010
B 0 36 6
C 0 10 15 15
D0 13 3
E 0 01 1
#include〈stdio、h>
#include
h>
#defineSIZE5
structJob_type
{
charno[2]; //作业名
int tb; //作业开始时间(分)
inttr; //运行时间(分)
}x,job[5];
voidload()
{int i;
printf("\nEntertheJobs'datas:
\n");
for(i=0;iscanf("%s%d%d”,&job[i]。
no,&job[i]。
tb,&job[i]。
tr);
printf("输入作业顺序:
\n");
for(i=0;i printf("\t%s\t%d\t%d\n",job[i]、no,job[i]、tb,job[i]、tr);
}
void sjf() //短作业调度函数
{
}
voidmain()
{
load();
sjf();
}
3、实验结果分析:
(对上述实验各题所使用的原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析。
)
在进程调度中采纳FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。
该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
FCFS算法比较有利于长作业(进程),而不利于短作业(进程)、
短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
该算法对长作业不利,完全未考虑作业的紧迫程度。
4、总结:
您对本次实验有什么体会或看法、
《操作系统》实验报告(五)
内存管理算法模拟(验证性2学时)
一、实验目的:
4)掌握内存管理的主要技术与功能。
2)模拟内存管理算法的实现方法。
二、实验内容:
设计一个能模拟内存管理行为的系统程序,该系统至少应包括FIFO和LRU算法(Least Recently Used)(当需要置换一页时,选择最长时间未被使用的那一页淘汰掉。
)的实现、
阅读下列的参考程序,写出main()函数,输入下面的各组测试数据,运行并记录结果、
数据1:
7 0120 30423032120 17 01
数据2:
0,1,7,2,3,2,17,1,0,3,0,3,0,3,0,10
数据3:
24 15 18 23 241718241817171524 172418
数据4:
4321435 43215 72 348143 5231
参考程序page、c
#include #include<stdlib、h〉
#defineERR -1
#definepage_len 16//页序列总长
#definetotal_vp 18//作业的总页数+1,即序列中出现的最大页号+1,为了开pl[total_vp]数组所用
typedef struct{
intpn,pfn,counter,time;
}pl_type;
pl_type pl[total_vp];
structpfc_struct{
intpn,pfn;
structpfc_struct*next;
};
typedefstructpfc_structpfc_type;
pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;
intdiseffect;
int page[page_len];
void initialize(inttotal)
{ inti;
diseffect=0;
for(i=0;i〈total_vp;i++)
{pl[i]、pn=i;
pl[i]、pfn=ERR;
}
for(i=1;i{ pfc[i-1]、next=&pfc[i];
pfc[i—1]、pfn=i-1;}
pfc[total-1]、next=NULL;
pfc[total-1]、pfn=total—1;
freepf_head=&pfc[0];
}
void FIFO(int total)
{inti,j;
pfc_type *p,*t;
initialize(total);
busypf_head=busypf_tail=NULL;
for(i=0;i{
if(pl[page[i]]、pfn==ERR)
{diseffect+=1;
if(freepf_head==NULL)
{p=busypf_head—>next;
pl[busypf_head-〉pn]、pfn=ERR;
freepf_head=busypf_head;
freepf_head->next=NULL;
busypf_head=p;
}
p=freepf_head-〉next;
freepf_head—>next=NULL;
freepf_head-〉pn=page[i];
pl[page[i]]。
pfn=freepf_head—>pfn;
if(busypf_tail==NULL)
busypf_head=busypf_tail=freepf_head;
else
{busypf_tail->next=freepf_head;
busypf_tail=freepf_head;
}
freepf_head=p;
}}
printf(”FIFO:
%d”,diseffect);
}
main()
{int i;int k;
printf(“请输入页的引用序列:
\n");
for(k=0;k〈page_len;k++)
scanf("%d”,&page[k]);
for(i=4;i<=7;i++)
{
printf(”%2dpage frames”,i);
FIFO(i);}
参考程序LRU算法,略
三、实验结果分析:
(对上述实验各题所使用的原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析。
)
随着块数的增加,缺页数目也减少,4个实验中3个实验的块数增加到了5以后,即使块数再增加,缺页数目也是保持不变。
只有实验4,块数增加到7以后,缺页数目又再次减少了
四、总结:
您对本次实验有什么体会或看法。