操作系统实验报告1Vi编辑器的学习和使用

/*文件名请使用“班号+学号+姓名+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-系统内存使用统计

《操作系统 》实验报告

实验序号:11         实验项目名称:系统内存使用统计

相关推荐