《操作系统原理实验指导书new》由会员分享,可在线阅读,更多相关《操作系统原理实验指导书new(61页珍藏版)》请在金锄头文库上搜索。
1、目 录实验一 系统功能调用2实验二 熟悉Linux环境5实验三 shell脚本14实验四 进程控制18实验五 进程间通信22(一) 信号量机制实验22实验五 进程间通信28(二) 进程的管道通信实验28实验五 进程间通信32(三) 消息的发送与接收实验32实验五 进程间通信38(四) 共享存储区通信38实验六 死锁避免的算法38实验七 存储管理38 1. 常用页面置换算法38 2动态分区分配算法38实验八 文件操作38实验一 系统功能调用【实验目的】1熟悉操作系统的系统功能调用。2掌握用C语言实现系统功能调用的方法和步骤。3掌握利用10H号功能调用(BIOS的显示I/O功能调用)来实现对屏幕的
2、操作与控制。【预习内容】1预习DOS、BIOS系统功能调用。2预习C语言实现系统功能调用的方法。【实验内容】1在屏幕的指定区域内显示字符串。(必做题)2在屏幕的指定区域内画框,在框内显示字符串。(提高题)3. 在屏幕的指定区域内动画显示字符串。(附加题)【实验报告】1列出调试通过程序的清单,并加注释。2给出必要的程序设计思路和方法(或列出流程图)。3总结上机调试过程中所遇到的问题和解决方法及感想。【实验相关资料】int86(0X10, &r, &r)函数:对BIOS调用的标准函数其中0X10是BIOS调用类型号(相当于INT n调用的中断类型号n),是10H号中断调用,是一个显示I/O调用。B
3、IOS借助此中断产生的功能调用控制PC机屏幕上的文本和图形。通过给AH 寄存器设置适当的值选择想要的功能调用,然后发中断10H。 第一个&r是指向联合类型REGS的指针,用于接收调用的功能号及其它一些指定的入口参数,以便传给相应寄存器。第二个&r是指向联合类型REGS的指针,用于接收功能调用后的返回值,即出口参数。在dos.h中REGS定义如下:struct WORDREGSunsigned int ax,bx,cx,dx,si,di,cflag,flags;struct BYTEGEGS unsigned int al,ah,bl,bh,cl,ch,dl,dh;union REGSstruc
4、t WORDREGS x;struct BYTEGEGS h;10H号中断调用下所包含的部分功能调用:AH 功能调用 00H 置显示方式 01H 置光标类型 02H 置光标位置 06H 当前显示页上滚 07H 当前显示页下滚 09H 写字符和属性02H功能调用:入口参数:AH=02H DH 光标的行位置(行数),0行是顶行,24行是底行。 DL 光标的列位置(列数),0列是最左边一列。 BH 光标显示页数,40列方式,可用0到7,80列方式,可用0到3。 出口参数:无06H号功能调用:入口参数:AH=06H AL 指明滚动的文本行数。如放置0,则整个窗口为空白。 CH 指明窗口左上角的行位置(
5、从0到24)。 CL 指明窗口左上角的列位置(从0到79,80列)。 DH 指明窗口右下角的行位置(从0到24)。DL 指明窗口右下角的列位置(从0到79,80列)。BH 指明加到窗口底部的空行显示属性。对于彩色/图形适配器,属性字节如下所示:位 说 明7 置“1”用于字符闪烁,置“0”字符不闪烁。6-4 背景色。可用的是:6 5 4 颜色0 0 0 黑0 0 1 蓝0 1 0 绿0 1 1 青1 0 0 红1 0 1 绛1 1 0 褐1 1 1 浅灰3 前景字符的亮度,置“1”高亮度,置“0”正常亮度。2-0 前景色。可使用的彩色与背景色相同。出口参数:屏幕上窗口适当地上滚。09H号功能调用
6、:入口参数:AH=09H BH 在文本方式中,此寄存器指明正在写的显示页。在40列方式中,可以用0到7页,在80列方式中,可用0到3页。在图形方式中总是0。 AL 放要写字符的ASCII码。 BL 在文本方式中,为写字符的属性。 CX 将字符和属性写到屏幕上的次数。出口参数:一个字符或多个字符显示在屏幕上。清屏子程序:void cls(void) union REGS r; 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表示黑色*/ int8
7、6(0x10,&r,&r);/*系统功能调用*/ 定位子程序:void locate(int x, int y) union REGS r; r.h.ah=2;/*子功能号*/ r.h.dh=x;/*定位点坐标*/r.h.dl=y;r.h.bh=0;int86(0x10,&r,&r);在指定位置写参数:void writech(int x , int y, char ch ,int attr) union REGS r; locate(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);屏幕画框可
8、以用制表符来画。其主要方法是不断调用writech函数,在指定区域周围显示制表符,从而勾勒出一个窗口的轮廓。制表符 ASCII码 218 191 192217179196内容一参考程序:#include#include#include#define SCR 0x10void cls(void)union REGS r;r.h.ah=6;r.h.al=0;r.h.cl=0;r.h.ch=0;r.h.dh=24;r.h.dl=79;r.h.bh=7;int86(SCR,&r,&r);void locate(int x,int y)union REGS r;r.h.ah=2;r.h.dh=x;r.h
9、.dl=y;r.h.bh=0;int86(SCR,&r,&r);void writech(int x,int y,char ch,int attrib)union REGS r;locate(x,y);r.h.ah=9;r.h.bh=0;r.h.al=ch;r.h.bl=attrib;r.x.cx=1;int86(SCR,&r,&r);int main() int i,x=10,y=10; cls(); for(i=0;i26;i+) writech(x,y+i,65+i,7); getch(); return(0);实验二 熟悉Ubuntu环境【实验目的】1了解Ubuntu系统基本操作方法,
10、学会独立使用该系统。2熟悉Ubuntu下如何编辑、编译和运行一个C语言程序。3学会利用gcc、gdb编译、调试C程序。【预习内容】1预习Ubuntu下各种应用程序的使用。2预习常用的SHELL命令。3预习vim编辑器和emacs编辑器使用方法。4预习Ubuntu下C程序编辑、编译和运行过程。【实验内容】一、登陆LinuxLinux开机,选择 进入,再选择Ubuntu登陆窗口,输入用户名: students ,输入密码: 111111 ,进入Ubuntu图形桌面环境。二、熟悉Ubuntu图形桌面环境桌面包含上方的菜单栏和下方的任务栏。菜单栏包含“应用程序菜单”、“位置”、“系统”。通过主菜单可访
11、问应用程序。(1) “应用程序”菜单“应用程序”菜单包含“办公”、“附件”、“互联网”、“图形”、“游戏”等。“办公”包含了文字处理及电子表格等应用程序。“附件”下包含了“搜索工具”、“计算器”、“文本编辑器”和“终端”等应用程序。(2)“位置”菜单“位置”菜单包含“主文件夹”、“桌面”等信息。(3)“系统”菜单“系统”菜单包含“首选项”和“系统管理”等信息。(4)启动终端模拟器GNOME终端模拟器用一个窗口来模拟字符终端的行为。终端常常被称为命令行或者 shell,Linux 中绝大部分工作都可以用命令行完成。要启动一个终端,可以选择 应用程序 附件 终端。 三、练习常用的Shell命令。(
12、重点)当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信。当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作。这种动作可能是执行用户的应用程序,或者是调用一个编辑器、GNU/Linux实用程序或其他标准程序,或者是一条错误信息,告诉用户输入了错误的命令。1目录操作mkdir abc 创建一个目录abccd abc 将工作目录改变到abccd 改变当前目录到主目录ls 列出当前目录的内容ls -l 输出当前目录内容的长列表,每个目录或文件占一行pwd 显示当前目录的全路径2文件显示实用程序cat mx.c 显示mx.c文件内容more mx.c 分屏显示mx.c内容tail mx.c 显示文件后几行cat file1 file2 连接file1 和file2head filename 显示文件filename的开始10行wc filena