/*文件名请使用“班号+学号+姓名+os项目号”命名,如10010701班同学张**,学号2007302276,则其项目1实验报告的文件名是“10010701_2007302276_张**_os1.doc”。请大家严格遵守。实验报告提交时请删除本注释*/
1)使用“ESC”键在命令模式和插入模式之间进行切换。各项操作命令如下:
(1) 进入插入模式
a追加,I插入,o在当前行下插入一空行;A在行尾追加,I从行首插入,0在当
前行上插入一空行。
(2) 复制正文
yy复制当前行,nyy复制n行,yw复制一个词,y)复制从光标至句末的所有正文;
y}复制从光标至句首的所有正文,nyx复制类型为x。
(3) 删除正文
x删除一个字符,dd删除当前行,ndd删除n行,dw删除一个单词(从光标处开
始),nx删除n个字符,^gndd删除n行正文到缓冲区g中,^Gndd删除n行正文追
加到缓冲区g中,c$从当前光标处删至行尾,d^从当前光标处删至行首,ndw(或
dnw)删除n个词。
(4) 替换正文
p将缓冲区的内容粘贴到当前光标处,^gp将g缓冲区里的内容粘贴到当前行下,
^gP将g缓冲区的内容粘贴到当前行上,rn用字符n替换当前字符。
(5) 查找定位
nG将光标定位到第n行,^F向前一屏,^B向后一屏,^D向下半屏,^U向上半屏。
(6) 文件操作
:w写盘,:wq(或:ZZ)写盘退出,:q!不存盘退出,:e!不存盘不退出,u恢复前
一步的改变,:e filename编辑文件名,:w filename写文件名,:w! filename重写文
件名,:! cmd运行一个命令,然后返回,^G显示当前文件和行号。
2)进程的创建。
编制一段程序,使用系统调用fork()创建两个子进程,在此程序运行时,系统中就有一个父进程和两个子进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,两个子进程分别显示字符b和字符c。观察、记录并分析屏幕上进程调度和并发执行的情况: 此时,
在程序中使用系统调用nice()来改变各进程的优先级,观察、记录并分析屏幕上进程调度和并发执行的情况
4.1 流程图
1)创建子进程
2)修改优先级
4.2 添加函数的代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/resource.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{
pid_t pid1,pid2;
pid1=fork();
if(pid1<0)
{
printf("error!\n");
}
else if(pid1==0)
{
printf("b\n");
exit(1);
}
else
{
pid2=fork();
if(pid2<0)
{
printf("error\n");
}
else if(pid2==0)
{
printf("c\n");
exit(1);
}
else
printf("a\n");
}
}
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/resource.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{
pid_t pid1,pid2;
int oldpri1,oldpri2,newpri1,newpri2;
pid1=fork();
if(pid1<0)
{
printf("error!\n");
}
else if(pid1==0)
{
oldpri1=getpriority(PRIO_PROCESS,getpid());
printf("old priority is:%d\n",oldpri1);
newpri1=nice(2);
printf("new priority is:%d\n",newpri1);
printf("b\n");
exit(1);
}
else
{
pid2=fork();
if(pid2<0)
{
printf("error\n");
}
else if(pid2==0)
{
printf("c\n");
exit(1);
}
else
printf("a\n");
}
}
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/resource.h>
#include<sys/wait.h>
#include<stdlib.h>
int main()
{
pid_t pid1,pid2;
int oldpri1,oldpri2,newpri1,newpri2;
pid1=fork();
if(pid1<0)
{
printf("error!\n");
}
else if(pid1==0)
{
oldpri1=getpriority(PRIO_PROCESS,getpid());
printf("b's old priority is:%d\n",oldpri1);
newpri1=nice(2);
printf("b's new priority is:%d\n",newpri1);
printf("b\n");
exit(1);
}
else
{
pid2=fork();
if(pid2<0)
{
printf("error\n");
}
else if(pid2==0)
{
oldpri2=getpriority(PRIO_PROCESS,getpid());
printf("c's old priority is:%d\n",oldpri2);
newpri2=nice(4);
printf("c's new priority is:%d\n",newpri2);
printf("c\n");
exit(1);
}
else
printf("a\n");
}
}
4.3 修改原有函数部分代码
pid2=fork();
if(pid2<0)
{
printf("error\n");
}
else if(pid2==0)
{
oldpri2=getpriority(PRIO_PROCESS,getpid());
printf("c's old priority is:%d\n",oldpri2);
newpri2=nice(4);
printf("c's new priority is:%d\n",newpri2);
printf("c\n");
exit(1);
}
1)运行结果为b,c,a;
2)Pid1的优先级加2后的运行结果为c,a,b;
3)Pid2的优先级加4后的运行结果为a,b,c。
1)开始时,不知道什么是终端,结果打开了文本编辑器。后来经过自己的摸索,终于搞明白了,于是可以顺利的按照实验指导书所示内容进入VI进行操作。
2)在进行文件操作时,写盘和写文件名没有弄清楚,经过与同学的讨论和探索,最终成功的进行了写盘和写文件名操作。
3)nice()函数调用不会使用,后经请教助教老师和参考上网资料,弄明白了此函数的用法,顺利的完成了优先级设定的实验部分。
《操作系统 》实验报告
实验序号:11 实验项目名称:系统内存使用统计
操作系统实习报告题目基于shell的形式来模拟文件系统班级学号姓名11学年12学年第2学期操作系统实习报告书专业班级姓名学号实习地…
《计算机操作系统》实验报告班级:姓名:学号:实验一进程控制与描述一、实验目的通过对Windows2000编程,进一步熟悉操作系统的…
计算机操作系统实训报告册学期20xx20xx第二学期课程计算机操作系统实训专业计算机科学与技术班级学号姓名指导教师张治国实训习报告…
目录实习报告2一Linux流行版本的发展历史及简介21Fedora22redhat23centos34ubuntu45Debian…
操作系统实习报告日期附代码importjavautilconcurrentSemaphorepublicclassreaderfi…
操作系统实验题设计一若干并发进程的进程调度程序一实验目的无论是批处理系统分时系统还是实时系统用户进程数一般都大于处理机数这将导致用…
1实验目的通过优先权法和轮转算法的模拟加深对进程概念和进程调度过程的理解掌握进程状态之间的切换同时掌握进程调度算法的实现方法和技巧…
1实验目的通过优先权法和轮转算法的模拟加深对进程概念和进程调度过程的理解掌握进程状态之间的切换同时掌握进程调度算法的实现方法和技巧…
操作系统进程调度实验报告一实验目的用高级语言编写和调试一个进程调度程序以加深对进程的概念及进程调度算法的解进程调度时进程管理的主要…
实验一进程调度实验专业XXXXX学号XXXXX姓名XXX实验日期20XX年XX月XX日一实验目的通过对进程调度算法的模拟加深对进程…