操作系统实验任务书(2010)1_第1页
操作系统实验任务书(2010)1_第2页
操作系统实验任务书(2010)1_第3页
操作系统实验任务书(2010)1_第4页
操作系统实验任务书(2010)1_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实验任务书实验成绩记入平时成绩。每次实验内容要求在上机之前预习,需要查找的资料事先查找,特别是对于常用的字符命令,要提前设计好练习用例。在上机过程中熟练掌握要求的内容。上机结束后,认真总结,并写出实验报告。希望提前预习、认真上机、认真总结,不允许出现实验报告的相互抄袭现象。发现抄袭现象,一律零分处理。实验报告由各班统一收齐,排序,在下次实验课上提交。实验1(2课时)实验题目:熟悉Linux操作系统环境实验目的:熟悉上机实验的操作系统环境Linux(FedoraCore熟练运用Linux的在线帮助系统。熟悉使用Linux字符界面、窗口系统,熟练掌握常用的字符命令,掌握一个C或C++程序编译链接生成可执行文件以及运行的过程。实验内容:一.认真阅读操作系统实验教程第一章的内容,练习常用的命令。二.完成下列练习1-“附件”-2.创建一个组账号:student(groupaddstudent)3.创建一个student组的用户test(useradd–gstudenttest)4.为testpasswdtest)5.显示/homels–l)会发现在/home目录下增加了一个testtest的主目录。6.当前用户身份为root#,切换用户身份到testsutest)注意命令行的提示符的变化。7pwd)8.进入用户test的主目录(cd~或cd/home/test,然后用pwd命令显示当前目录,为test用户的主目录)9.重新切换用户身份回到root用户(suroot)10.在文件系统的home目录下,创建os2010子目录。(cd/home切换到根目录下的home目录mkdiros2010在当前目录下创建os2010子目录)11.在该子目录下创建hw01mkdiros2010/hw01)12.进入hw01目录(cdos2010/hw01用pwd命令显示当前目录)13.用vim编辑器创建ex1.c程序文件。ex1.c程序文件的内容:{}(Vim编辑器有三种模式:命令模式、插入模式和底行模式。输入vimex1.c后,首先进入命令模式,在此模式下输入a(在光标后插入文本)或i(在光标前插入文本)ESC冒号进入底行模式,然后输入wq,将文件保存到当前目录下并退出vim,输入q!不保存退出。命令方式下的文件操作命令如下表所示:说明将编辑的内容写入原始文件,以保存编辑的中间结果将编辑的内容写入原始文件并退出编辑程序:wfile将编辑的内容写入file文件,原文件内容不变:abw将第a行到第b行的内容写入file文件:rfile读取file文件的内容,插入到光标所在行的后面:nfile编辑新文件file代替原有内容:ffile将当前文件重命名为file:f显示当前文件的名称、状态等)14.查看当前目录下的ex1.c文件(ls-l),编译ex1.c文件生成可执行文件ex1.(用gcc编译器。gccex1.c–oex1)15.执行可执行的程序文件ex1./ex1)16.用vim编辑器创建一个shell文件:test.sh#!/bin/bashprintchar=“helloworld”echo$printchar17.运行该脚本文件bashtest.sh18.直接运行test.sh文件./test.sh无法运行,为什么?用ls–l命令列出当前文件目录,记录下test.sh文件的目录内容)19.用chmod命令给test.sh文件加上可执行的权限,然后chmod+xtest.sh再用ls–l命令列出当前文件目录,记录下test.sh文件的目录内该文件。./test.sh)20.将当前目录下的三个文件ex1.cex1test.sh打包压缩到文件test.tar。(tar–czftest.tarex1.cex1test.sh用ls–l命令显示当前目录内容)21.将test.tar文件拷贝到/root目录。(cptest.tar/root)22.进入/rootcd/root,ls-l,将test.tar文件中包含的文件解压释放到当前目录中。(tar–xzftest.tar)查看当前目录内容(ls-l)23.练习使用帮助命令man(例如mantar,退出帮助文档,按下q,返回命令行)1.使用“ls-l”命令有以下输出:-rw-rw-r--1longkeylongkey16…………...chap1.txt解释各输出部分的含义2.命令chmod664test.txt的结果是什么?3.增加所有用户对test.txt文件的读权限应使用什么命令?4.网上有一软件包,下载后应如何解压处理?给出在上机过程中的收获。实验2(2课时)实验题目:进程创建实验目的:理解进程概念,了解Linux可执行文件结构;学会利用Linux系统的系统调用命令创建进程、实现进程之间并发执行的程序设计。实验内容:1.创建程序文件ex2.c,程序内容如下:#include<stdio.h>#include<stdlib.h>inta=0;char*p0;intmain(void){//a在全局已初始化数据区//p0在BSS区(未初始化全局变量)intb;//b在栈区chars[]=”abc”//s在栈区abc”在已初始化数据区char*p1,*p2;//p1,p2在栈区char*p3=”12345”;//12345\0字符串在已初始化数据区,p3在栈区staticintc=0;//c为全局静态变量,存在于已初始化数据区p1=(char*)malloc(10);//分配得来的10字节的区域在堆区p2=(char*)malloc(20);//分配得来的20字节的区域在堆区free(p1);free(p2);p1=NULL;p2=NULL;}用file命令列出可执行文件ex2size命令列出ex2文件结构情况,从而理解Linux可执行文件结构。2.在sched.h头文件中查看结构体structtask_struct的定义,理解进程控制块的定义及包含的主要内容。3.编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'parent',子进程分别显示字符串'son'和字符串'daughter'。试观察记录屏幕上的显示结果,并分析原因。4.修改上述程序,每一个进程循环显示一句话。子进程显示'daughter„'及'son„„',父进程显示'parent„„',观察结果,分析原因。5.修改上述程序,用wait系统调用控制三个进程的输出顺序,比如,先输出若干个'daughter„',然后'son„„',最后是父进程的信息。6.用fork()创建一个进程,再调用exec函数用新的程序(可以用系统程序比如ls,也可以是自己生成的程序)替换该子进程的内容。实验总结:实验3(2课时)实验题目:Linux信号机制Linux系统的信号机制,掌握LINUX系统中进程之间软中断通信的基本原理。实验内容:1SIGUSR1序的运行过程中,打开另一SHELL窗口,用kill命令向该进程发送SIGUSR1信号。20和1之间挑选一个随机数xsin(x)的值添1ctrl+c结束,然后打印平均值。提示:要用到三角函数,需在程序开始加进#include<math.h>#include<stdlib.h>产生0—1之间的随机数,可以这样实现:x=(rand()+0.5)/(RAND_MAX+1.0)编译时加上参数–lm实验总结:实验4(2课时)实验题目:Linux管道程序设计实验目的:了解Linux系统的管道通信机制,掌握LINUX系统中创建管道,对管道读和写的系统调用,学会编写简单的管道通信程序。实验内容:编写程序实现进程的管道通信。用系统调用pipe()建立一管道,二个子进程P1和P2分别向管道各写一句话:Child1issendingamessage!Child2issendingamessage!父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2实验总结:实验5(2课时)实验题目:消息队列通信Linux系统的消息队列通信机制,掌握相关的系统调用的使用。实验内容:-100到100之间的随机数,将其写入队列,另一进程从队列中读出,并显示出来。提示:产生-100到100之间的随机数#include<math.h>#include<stdlib.h>intrandom_range(unsignedconstlow,unsignedconsthigh){unsignedconstrange=high-low+1;returnlow+(int)(((double)range)*rand()/(RAND_MAX+1.0));}Intmain(){inti;„„..srand(time(NULL));i=random_range(-100,100);„„..„„..}涉及的系统调用:msgget()、msgsnd()、msgrcv()、msgctl()。实验总结:实验6(2课时)实验题目:多线程编程实验目的:了解Linux系统的线程机制,学会简单的多线程程序设计。实验内容:创建5intglobalNum0,在线程函数中定义int静态变量staticNum初始值为0。每个线程运行时,输出“第i(1、25然后输出当前globalNum的值,格式是“第i(1、2、……5)个线程,globalNum=globalNum+1,然后输出当前staticNum的值,格式是“第i(1、2、……5)个线程,staticNum=staticNum+1。主线程每创建完5个线程后,输出“parent:globalNum=globalNum+1最后主线程等待5个线程退出后退出。编写并编译运行程序,分析程序的运行结果。实验7(2课时)实验题目:文件系统编程实验目的:了解Linux系统的文件I/O操作,了解Linux的特殊的文件系统/proc,学会简单的文件操作的程序设计。实验内容:(1一个文件中,最后再从文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论