您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 新操作系统原理实验指导书
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY操作系统原理实验指导书苗暹撰写王晓东审核电气与信息工程学院计算机工程系2013年12月操作系统原理实验指导书1目录实验一系统功能调用实验………………………………………………………………2实验二熟悉Linux环境实验……………………………………………………………8实验三进程控制实验……………………………………………………………………12实验四进程间通信………………………………………………………………………16实验五文件操作实验……………………………………………………………………21操作系统原理实验指导书2湖北汽车工业学院实验报告班号学号姓名选课班中的序号完成日期年月日至节实验一系统功能调用实验一、实验目的1、熟悉操作系统的系统功能调用。2、掌握用C语言实现系统功能调用的方法和步骤。3、掌握利用10H号功能调用(BIOS的显示I/O功能调用)来实现对屏幕的操作与控制。二、实验内容1、在屏幕的指定区域内显示字符串。(必做题)2、在屏幕的制定区域内画框,在框内显示字符串。(提高题)3、在屏幕上指定区域内画框并以动画形式显示字符串。(选做题)清屏子程序:voidcls(void){unionREGSr;r.h.ah=6;/*子功能号*/r.h.al=0;r.h.ch=0;/*左上角坐标*/r.h.cl=0;r.h.dh=24;/*右下角坐标*/r.h.dl=79;r.h.bh=7;/*7表示黑色*/int86(0x10,&r,&r);/*系统功能调用*/}定位子程序:voidlocate(intx,inty){unionREGSr;r.h.ah=2;/*子功能号*/r.h.dh=x;/*定位点坐标*/r.h.dl=y;r.h.bh=0;int86(0x10,&r,&r);}在指定位置写参数:voidwritech(intx,inty,charch,intattr){unionREGSr;操作系统原理实验指导书3locate(x,y);r.h.ah=9;r.h.bh=0;r.h.al=ch;r.h.bl=attrr.x.cx=1;int86(0x10,&r,&r);}屏幕画框可以用制表符来画。其主要方法是不断调用writech函数,在指定区域周围显示制表符,从而勾勒出一个窗口的轮廓。制表符ASCII码┛217┏218┓191┗192┃179━196三、实验程序和结果操作系统原理实验指导书4操作系统原理实验指导书5四、实验总结和体会操作系统原理实验指导书6湖北汽车工业学院实验报告班号学号姓名选课班中的序号完成日期年月日至节实验二熟悉Linux环境实验一、实验目的1.了解Ubuntu系统基本操作方法,学会独立使用该系统。2.熟悉Ubuntu下如何编辑、编译和运行一个C语言程序。3.学会利用gcc、gdb编译、调试C程序。二、实验内容1、登陆Linux开机,选择进入,再选择Ubuntu登陆窗口,输入用户名:students,输入密码:111111,进入Ubuntu图形桌面环境。2、熟悉Ubuntu图形桌面环境桌面包含上方的菜单栏和下方的任务栏。菜单栏包含“应用程序菜单”、“位置”、“系统”。通过主菜单可访问应用程序。(1)“应用程序”菜单“应用程序”菜单包含“办公”、“附件”、“互联网”、“图形”、“游戏”等。“办公”包含了文字处理及电子表格等应用程序。“附件”下包含了“搜索工具”、“计算器”、“文本编辑器”和“终端”等应用程序。(2)“位置”菜单“位置”菜单包含“主文件夹”、“桌面”等信息。(3)“系统”菜单“系统”菜单包含“首选项”和“系统管理”等信息。(4)启动终端模拟器GNOME终端模拟器用一个窗口来模拟字符终端的行为。终端常常被称为命令行或者shell,Linux中绝大部分工作都可以用命令行完成。要启动一个终端,可以选择应用程序→附件→终端。3、练习常用的Shell命令当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信。当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作。这种动作可能是执行用户的应用程序,或者是调用一个编辑器、GNU/Linux实用程序或其他标准程序,或者是一条错误信息,告诉用户输入了错误的命令。Linux操作系统原理实验指导书71.目录操作mkdirabc创建一个目录abccdabc将工作目录改变到abccd改变当前目录到主目录ls列出当前目录的内容ls-l输出当前目录内容的长列表,每个目录或文件占一行pwd显示当前目录的全路径2.文件显示实用程序catmx.c显示mx.c文件内容moremx.c分屏显示mx.c内容tailmx.c显示文件后几行catfile1file2连接file1和file2headfilename显示文件filename的开始10行wcfilename统计文件filename中的行数、单词数和字符数od文件查看非文本文件3.文件管理实用程序cpfile1file2将文件1复制到文件2mvfile1file2将文件重命名为file2rmfilename删除文件filenamerm-ifilename请求用户确认删除4.数据操作实用程序tty显示当前终端的路径和文件名who显示当前登录用户的列表sortfilename显示文件filename中的行的排序结果spellfilename检查文件filename中的拼写错误5.其他实用程序date输出系统日期和时间cal显示本月的日历。cal2002显示2002年的日历clear清除终端屏幕history显示你以前执行过的命令的列表man显示实用程序的有用信息,并提供该实用程序的基本用法echo读取参数并把它写到输出4、熟悉gcc编译器GNU/Linux中通常使用的C编译器是GNUgcc。编译器把源程序编译生成目标代码的任务分为以下4步:a.预处理,把预处理命令扫描处理完毕;b.编译,把预处理后的结果编译成汇编或者目标模块;c.汇编,把编译出来的结果汇编成具体CPU上的目标代码模块;d.连接,把多个目标代码模块连接生成一个大的目标模块;1.使用语法:gcc[option|filename]...其中option为gcc使用时的选项,而filename为gcc要处理的文件。操作系统原理实验指导书82.GCC选项GCC的选项有很多类,这类选项控制着GCC程序的运行,以达到特定的编译目的。⑴全局选项(OVERALLOPTIONS)全局开关用来控制在“GCC功能介绍”中的GCC的4个步骤的运行,在缺省的情况下,这4个步骤都是要执行的,但是当给定一些全局开关后,这些步骤就会在某一步停止执行,这产生中间结果,例如可能你只是需要中间生成的预处理的结果或者是汇编文件(比如你的目的是为了看某个CPU上的汇编语言怎么写)。①–xlanguage对于源文件是用什么语言编写的,可以通过文件名的后缀来标示,也可以用这开关。指定输入文件是什么语言编写的,language可以是如下的内容a.cb.objective-cc.c-headerd.c++e.cpp-outputf.assemblerg.assembler-with-cpp②–xnone把-x开关都给关掉了。③–c编译成把源文件目标代码,不做连接的动作。④–S把源文件编译成汇编代码,不做汇编和连接的动作。⑤–E只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。⑥–ofile(常用)指明输出文件名是file。⑦–v把整个编译过程的输出信息都给打印出来。⑧–pipe由于gcc的工作分为好几步才完成,所以需要在过程中生成临时文件,使用-pipe就是用管道替换临时文件。⑵语言相关选项(LanguageOptions)用来处理和语言相关的选项。①–ansi这个开关让GCC编译器把所有的GNU的编译器特性都给关掉,让你的程序可以和ansi标准兼容。②–includefile在编译之前,把file包含进去,相当于在所有编译的源文件最前面加入了一个#includefile语句,③–C同-E参数配合使用。让预处理后的结果,把注释保留,让人能够比较好读它。⑶连接开关(LinkerOptions)用来控制连接过程的开关选项。操作系统原理实验指导书9①–llibrary连接库文件开关。例如-lugl,则是把程序同libugl.a文件进行连接。②–lobjc这个开关用在面向对象的C语言文件的库文件处理中。③–nostartfiles在连接的时候不把系统相关的启动代码连接进来。④–nostdlib在连接的时候不把系统相关的启动文件和系统相关的库连接进来。⑤–static在一些系统上支持动态连接,这个开关则不允许动态连接。⑥shared生成可共享的被其他程序连接的目标模块。⑷目录相关开关(DirectoryOptions)用于定义与目录操作相关的开关。–Ldir搜寻库文件(*.a)的路径。⑸调试开关(DebuggingOptions)–g把调试开关打开,让编译的目标文件有调试信息。–Vversion用来告诉编译器使用它的多少版本的功能,version参数用来表示版本。5、掌握Linux下C程序编辑运行过程Linux下编写C程序要经过以下几个步骤:⑴启动常用的编辑器,键入C源程序代码。例如,点击应用程序/附件/文本编辑器,进入编辑环境,输入C源程序,保存并命名为hello.c#includestdio.hvoidmain(void){Printf(“Helloworld!\n”);}⑵编译源程序点击应用程序/附件/终端,进入命令行。用gcc编译器对C源程序进行编译,以生成一个可执行文件。方法:gcc-ohello.outhello.c↙⑶运行可执行文件·/hello.out↙注:命令行中-o选项表示要求编译器输出可执行文件名为hello.out文件,hello.c是源程序文件。操作系统原理实验指导书10三、实验总结和体会操作系统原理实验指导书11湖北汽车工业学院实验报告班号学号姓名选课班中的序号完成日期年月日至节实验三进程控制实验一、实验目的1、掌握进程的概念,明确进程和程序的区别。2、认识和了解并发执行的实质。3、分析进程争用资源的现象,学习解决进程互斥的方法。二、实验内容1、进程的创建(必做题)编写一段程序,使用系统调用fork()创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。参考程序#includestdio.hmain(){intp1,p2;while((p1=fork())==-1);if(p1==0)putchar(‘b’);else{while((p2=fork())==-1);if(p2==0)putchar(‘c’);elseputchar(‘a’);}}2、修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。(必做题)参考程序#includestdio.hmain(){intp1,p2,i;while((p1=fork())==-1);if(p1==0)for(i=0;i500;i++)操作系统原理实验指导书12printf(“child%d\n”,i);else{while((p2=fork())==-1);If(p2==0)for(i=0;i500;i++)printf(“son%d\n”,i);elsefor(i=0;i500;i++)printf(“daughter%d\n”,i);}}3、编写程序创建进程树如图1和图2所示,在每个进程中显示当前进程识别码和父进程识别码。(必做题)三、实验程序和结果a父进程子进程图1进程树bcdadbce图2进程树操作系统原理实验指导书13四、实验总结和体会操作系统原理实验指导书14湖北汽车工业学院实验报告班
本文标题:新操作系统原理实验指导书
链接地址:https://www.777doc.com/doc-2351425 .html