操作系统实验0.docx

上传人:b****2 文档编号:23235689 上传时间:2023-05-15 格式:DOCX 页数:15 大小:20.05KB
下载 相关 举报
操作系统实验0.docx_第1页
第1页 / 共15页
操作系统实验0.docx_第2页
第2页 / 共15页
操作系统实验0.docx_第3页
第3页 / 共15页
操作系统实验0.docx_第4页
第4页 / 共15页
操作系统实验0.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

操作系统实验0.docx

《操作系统实验0.docx》由会员分享,可在线阅读,更多相关《操作系统实验0.docx(15页珍藏版)》请在冰豆网上搜索。

操作系统实验0.docx

操作系统实验0

操作系统实验

各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢

  并键入回车,则系统接收并记住新口令。

如果用户在登录时忘记了密码,则只能找系统管理员解决(取消用户密码:

passwd-d用户名)。

  2.退出、注销与关机

  当用户不再使用Linux时,在离开前,通常应键入“logout”命令或Ctrl+D来退出帐号。

在Linux下,涉及到关机或重启的命令有:

  

(1)halt命令。

这是最常用的关机方式。

  

(2)reboot命令。

用户只是想退出操作系统,并不想关机,还想再进入其他操作系统。

  (3)shutdown命令。

在多用户系统中,系统管理员在关机前,通知各用户即将关机,以便给各用户留下一定的时间作保存和退出工作。

  3.建立用户账号,设置相应密码

  在超级用户命令提示符#下,教师根据需要建立适当数量的账号,以便学生上机登录使用。

建立账号的命令:

  #adduser(如用户名:

B080101)

  #passwd(初始为空)

  4.远程登录命令telnet的使用

  telnet命令的使用形式如下:

  telnet如:

telnet

  从安装了Windows操作系统的机器登录到Linux服务器,telnet会话过程的具体操作如下:

  单击“开始”,选择“程序”,选择“MS-DOS”方式(或“附件”-“命令提示符”或“开始”,选择“运行”);

  在提示符C:

>下输入telnet;或“运行”中键入IP地址。

  如果连接成功,则会出现登录界面,通过用户账号和口令登录。

  5.Linux的基本使用命令

  使用passwd命令修改用户密码。

  使用who命令查看当前登录在系统中的用户列表。

  熟练使用帮助信息,使用man命令获得ls命令的使用手册。

  熟悉cat、ls、cd、pwd、rm、mv、cp、mkdir、rmdir、more等命令的使用。

  查看并记录所在机器Linux操作系统目录结构。

  Linux常用命令,如表1-1所示。

  表1-1Linux常用命令

  命令名

  功能

  使用举例

  adduser

  创建新用户

  #adduser↙

  cp

  复制文件

  $cp源文件目标文件↙

  rm

  删除文件

  $rm文件名

  mkdir

  创建新目录

  $mkdir目录名↙

  rmdir

  删除目录

  $rmdir目录名↙

  pwd

  显示当前目录

  $pwd↙

  ps

  显示进程状态

  $ps↙

  ls

  显示当前目录下内容

  $ls-l↙

  cat

  显示文件内容

  $cat文件名↙

  cd

  转换当前目录

  $cd路径名↙

  mv

  移动文件

  $mv源文件目标文件

  more

  分页显示

  $ls–l|more↙

  chmod

  改变文件权限

  $chmod777文件名↙

  clear

  清屏

  $clear↙

  输入的字符

  功能

  说明

  Esc

  进入命令模式

  i

  在光标前输入文字

  A

  在光标后输入文字

  X

  删除光标后输入的文字

  Dd

  删除当前行

  删除后内容自动进入剪贴板

  /abc

  向前查找字符字符串

  然后输入n,则继续向前查

  ?

abc

  向后查找字符字符串

  Yw

  将光标所在单词拷入剪贴板

  Yy

  将光标所在行拷入剪贴板

  P

  将剪贴板内容贴在光标后

  :

q

  不保存退出……..0

  :

q!

表示强制退出

  :

w

  保存

  :

w!

表示强制保存

  :

wq

  保存退出

  :

x

  保存退出

  :

3,7co9

  将第3行至第7行拷到第9行

  :

3,7m9

  将第3行至第7行移到第9行

  u

  取消前次命令

  :

g/abc/s//123/g

  将全部的abc替换成123

  7.编译工具gcc的使用

  RedHatLinux的编译器是gcc。

gcc软件包支持C、C++。

gcc的可执行文件在/usr/bin/gcc下,/lib和/usr/lib目录下是库文件。

/usr/include目录下是头文件。

  gcc编译常用格式为:

$gcc源文件名↙

  例如:

$gcc↙,将生成默认可执行文件

  或者$gcc-o目标文件名源文件名↙

  例如:

$gcc–oaaa或$cc–o

  8.程序的运行

  $./可执行文件名↙

  三、实验内容

  1.熟悉开机后登录Linux系统和退出系统的过程。

  2.熟悉Linux字符界面,练习并掌握常用的Linux操作命令。

  3.学习使用Linux的在线求助系统,如man和help命令等。

  例程:

  #include

  intmain()

  {

  inti=getuid();

  printf(‘Helloworld!

Thisismyuid:

%d\n’,i);

  }

  6.使用搜索引擎、、回答下列问题。

  什么是操作系统?

你买回一台新计算机后,要装的第一个软件是什么?

为什么必须在计算机上安装操作系统?

  目前市场上常见的操作系统有哪些类型?

有哪些应用?

  请尽可能多地罗列出目前市场上已有的操作系统产品,分别给出这些操作系统所取得的成就,采用的新技术,以及这些操作系统的特点、特色和不足,指明它们的开发公司和开发年代。

  推动操作系统发展的主要动因有哪些?

列举出保证操作系统每次革命性发展的支撑技术。

  Linux与Windows系统的主要区别是什么?

  四、实验报告

  1.实验目的与实验内容。

  2.实验主要步骤。

  3.实验结果。

  实验2进程控制

  一、实验目的

  1.了解和熟悉Linux进程控制常用的系统调用。

  2.掌握系统调用的简单编程。

  3.进一步掌握C语言程序的开发方法,阅读、调试C程序并编写简单的进程创建程序。

  4.通过有关进程控制的应用实例,深刻理解进程的管理过程。

  二、相关知识准备

  1.进程状态命令

  表2-1Linux中的进程状态命令

  ps命令

  ps输出中的标题

  命令

  作用

  字段

  解释

  ps

  显示所有正在执行的进程

  PID

  进程标识号

  ps-x

  列出当前正在运行的进程的基本信息

  TTY

  开始这个进程的终端

  ps-au

  列出所有用户的基本信息

  TIME

  进程的累计执行时间,以分和秒表示

  COMMAND

  正在执行的命令名

  2.进程控制命令

  kill,向进程发送终止信号,撤消进程。

  nice命令用于改变进程的优先级,使用格式为:

$nicen。

  创建后台进程:

在命令后输入后台命令符&,如$sleep50&,表示要创建一个睡眠时间为50秒的进程。

  3.进程控制相关的系统调用

  fork()。

创建一个子进程,用它创建的子进程是fork调用者进程的复制品,即进程映象。

除了进程标识符以及与进程特性有关的一些参数外,其它与父进程相同,与父进程共享文本段和打开的文件,并都受进程调度程序的调度。

  如果创建进程失败,则fork()返回值为-1;如果创建进程成功,则在父进程中返回值是子进程号,子进程中返回的值是0。

m=fork()。

  wait()。

父进程处于阻塞状态,等待子进程执行完成终止后继续工作。

其返回值为子进程号。

n=wait()。

  exit()。

子进程自我终止,释放所占资源,通知父进程可以删除自己。

此时它的状态变成P_state=SZOMB。

  getpid()。

获得进程的进程号,为正整数。

p=getpid()。

  Linux中与进程控制相关的几个主要系统调用如表2-2所示。

  表2-2Linux中与进程控制相关的几个主要系统调用

  使用形式

  功能

  返回值的解释

  fork()

  创建一个子进程

  对父进程:

返回子进程号

  对子进程:

返回0

  错误:

返回-1

  #include

  execve(char*file,char**argv,char**envp)

  用指定程序覆盖当前程序代码

  正确:

0

  错误:

-1

  #include

  #include

  pid_twait(int*statloc)

  等待进程终止

  正确:

子进程的ID

  错误:

-1

  getpid()

  获得进程号

  #include

  voidexit(intstatus)

  进程正常结束

  三、实验内容

  1.在Windows下,使用性能监视器来观察进程运行情况和CPU工作情况。

  2.在Linux下,用top命令显示进程动态执行时的系统变化情况。

  3.在Linux下,熟悉进程状态命令的使用;用pstree观察系统进程层次、分析进程状态。

  4.在Linux下,熟悉进程的控制命令的使用。

  5.在Linux下,分析程序的功能与运行结果,熟悉Linux进程控制常用的系统调用。

  分析下列程序的功能与程序的运行结果。

  #include

  main()

  {intp1,p2;

  while((p1=fork())==-1);

  if(p1==0)

  putchar(‘b’);

  else

  {while((p2=fork())==-1);

  if(p2==0)putchar(‘c’);

  elseputchar(‘a’);

  }

  }

  分析使用wait()和exit()控制进程的程序功能与运行结果。

  #include

  #include

  #include

  main()

  {intpid;

  if(pid=fork())

  {wait();

  printf(‘itisparentprocessn’);}

  else

  {printf(‘itischildprocessn’);

  exit();}

  printf(‘itisendn’);

  }

  写出下列程序的功能,并分析程序的运行结果。

  #include

  main()

  {intp1,p2,i;

  while((p1=fork())==-1);

  if(p1==0)

  for(i=0;i即可。

  mesg命令:

设定是否允许其他用户用write命令给自己发送信息。

如果允许别人给自己发送信息,输入命令:

#mesgy,否则,输入:

#mesgn。

  对于超级用户,系统的默认值为n;而对于一般用户系统的默认值为y。

如果mesg后不带任何参数,则显示当前的状态是y还是n。

  2.进程的“软中断”通信

  它可用于同一用户的进程之间通信。

其方式是:

一个进程通过系统调用kill(pid,sig)向同一用户的其它进程pid发送一个软中断信号:

另一进程通过系统调用signal(sig,func)捕捉到信号sig后,执行予先约定的动作func,从而实现这两个进程间的通信。

  发送信号kill(pid,sig),本进程将指定信号sig发送给指定进程pid,其中参数为pid进程号,pid与sig均为整数值。

  接收信号signal(sig,func),本进程接收到其它进程发送给它的信号后,完成指定的功能func,其中参数func一般是函数。

  3.进程管道的通信

  建立进程间的管道,格式为:

  pipe(fd);

  intfd;

  其中,fd是写端,向管道中写入;fd是读端,从管道中读出。

  本质上将其当作文件处理。

进程间可通过管道,用write与read来传递数据,但write与read不可以同时进行,在管道中只能有4096字节的数据被缓冲。

  三、实验内容

  1.分析程序的功能,并写出程序的运行结果。

  #include

  #include

  intfunc();

  main()

  {inti,j;

  signal(17,func);

  if(i=fork())

  {printf(‘Parent:

Signal17willbesendtoChild!

n’);

  kill(i,17);

  wait(0);

  printf(‘Parent:

finished!

n’);}

  else

  {sleep(10);

  printf(‘Child:

AsignalfrommyParentisreceived!

n’)

  exit(0);}

  }

  func()

  {printf(‘Itissignal17processingfunction!

n’;)

  }

  2.分析程序的功能,并写出程序的运行结果。

  #include

  #include

  main()

  {intp1,p2,i;

  while((p1=fork())==-1);

  if(p1==0)

  {lockf(1,1,0);

  for(i=0;i0)

  for(;;)

  {printf(‘thisis‘);

  sleep

(1);}

  if(iUid0;leave--)

  {_put_user(1,buf,1);

  buf++;

  }

  returncount;

  }

  函数

  write()

  intwrite(structinode*inode,structfile*filp,constchar*buf,intcount)

  {

  returncount;

  }

  4.模块的测试

  在该模块程序编译加载后,再在/dev目录下创建模块设备文件moduledev,使用命令:

  #mknod/dev/moduledevcmajorminor

  其中“c”表示moduledev是字符设备,“major”是moduledev的主设备号。

  使用如下程序可对加载模块进行测试

  #include

  #include

  #include

  #include

  main()

  {inti,testmoduledev;

  charbuf;

  testmoduledev=open(‘/dev/moduledev’,O_RDWR);

  if(testmoduledev==-1)

  {

  printf(‘Can’topenthefile!

n’);

  exit(0);

  }

  read(testmoduledev,buf,10);

  for(i=0;i<10;i++)

  printf(“%dn”,buf);

  close(testmoduledev);

  return0;

  }

  四、实验报告

  1.实验目的与实验内容。

  2.实验主要步骤。

  3.实验程序的功能与结果分析。

各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1