操作系统实验七设备管理实验(广西师大)

操作系统实验七设备管理实验(广西师大)
操作系统实验七设备管理实验(广西师大)

操作系统课程实验

年级2012级

专业计算机科学与技术(应用型)姓名

学号

指导教师黄玲

日期2013年12月26日

实验七、设备管理实验

一、关键问题

1、实验目的

观察Linux下U盘的访问;理解设备虚拟分配技术。

2、实验环境

Ubuntu8.0或者以上,Eclipse集成开发环境

3、实验内容

3.1观察Linux下的U盘访问

从键盘获得符号串,写入磁盘文件,然后读取该文件。

3.2设备管理模拟实验要求:设计一个SPOOLing输入模拟系统。提示:输入井设计成结构体数组,每块存放一个输入文件内容。三个用户进程与一个后台输入进程并发执行,后台输入进程接受用户键盘输入的文件到输入井,每个用户进程从输入井获取输入数据。

老师所给的例子为为利用内存SPOOLing输入模拟系统,而问题的关键就是如何参考spoolout()设计spoolin()以及修改用户进程usepro()和输入#进程spoolsever()。

二、设计修改思路

spoolout()进程:键入要输入的用户id,如果用户输入文件未完成则键入文件内容,将文件内容mybuf发到输入井。

spoolsever()输入#进程:登记输入请求块,将缓冲区mybuf的数据送入输入井well。若成功送入,返回TRUE,否则返回FALSE。

usepro()用户进程:遍历输入请求块如找到该用户的输入请求,将输入请求块的数据送入用户缓冲区userbuf,并在屏幕输出userbuf。

三、实现修改的关键代码

#include

#define WELLSIZE500//输入井的大小

#define FALSE0

#define TRUE1

//进程控制块

struct

{

int id;//进程标识数

char status;//进程状态,'e'为执行态,'c'为完成态。

int bufflag;//用户缓冲区userbuf空闲标志:FALSE为无数据,TRUE为有数据。

int filec;//本进程需要输出的文件数(用户指定)

}pcb[4];//pcb[0]为SPOOLing进程,pcb[1]、pcb[2]、pcb[3]为3个用户进程

//输出请求块,共10块。可循环使用。

struct

{

int reqid;//请求进程的标识数

int size;//输入文件长度

int addr;//输入文件在输出井well的指针

}reqblock[10];

int ebp=0;//输入请求块数组中的当前空闲块号。

int ebc=10;//输入请求块数组中的当前空闲块数

int cbp=0;//输入请求块数组的当前输出块号

char well[WELLSIZE];//输入井,可以循环使用。

int wellptr=0;//输入井当前指针,环形指针。

int wellsize=WELLSIZE;//输入井剩余空闲区域大小

char userbuf[3][50];//用户缓冲区

char mybuf[50];//输入区

int file[4];//4个进程输的文件数

int f[4];//4个进程输入的文件数

int n;//输入文件总数

void main();

void scheduler();

float random();

void userpro(int idnum);

int spoolserver(int idnum,int charnum);

void spoolin();

//------------------------------------------------------------------------------void main()

{

int i,j;

printf("SPOOLing系统\n");

//初始化

for(i=0;i

well[i]=0;

for(i=0;i<3;i++)//初始化用户缓冲区

for(j=0;j<50;j++)userbuf[i][j]=0;

for(i=0;i<4;i++)//初始化进程控制块

{

pcb[i].id=i;

pcb[i].status='e';//所有进程初始为可执行态

if(i)//对于用户进程

{

pcb[i].bufflag=FALSE;

printf("用户%d的输入文件数?\n",i);

scanf("%d",&pcb[i].filec);

n+=pcb[i].filec;

}

}

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

f[i]=0;

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

file[i]=0;

//调度进程执行

scheduler();

printf("所有文件已经输入。结束!\n");

}

//------------------------------------------------------------------------------------//调度进程执行,直到所有数据输入完毕。

void scheduler()

{

float x;

for(;;)

{

x=random();

if(x<0.4&&pcb[1].status=='e')

userpro(1);

else if(x>=0.4&&x<0.65&&pcb[2].status=='e')

userpro(2);

else if(x>=0.65&&x<0.95&&pcb[3].status=='e')

userpro(3);

else if(x>=0.95&&pcb[0].status=='e')

spoolin();//执行SPOOLing进程

if(n==0)//所有文件输入完毕

break;

}

}

//-----------------------------------------------------------------------------------float random()//产生随机数

{

int m;

static int seed;

if((m=seed)<0)

m=-m;

seed=(25173*seed+13849)%65536;

return(m/32767.0);

}

//-------------------------------------------------------------------------------------

void userpro(int idnum)

{int i,k;

int id,address,size,c,flag;

flag=0;

if(ebc<10)//有输出请求

{//取出当前输出请求块cbp的输出数据

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

{

if(reqblock[i].reqid==idnum)

{

flag=1;cbp=i;break;

}

}

if(flag)

{

id=reqblock[cbp].reqid;

size=reqblock[cbp].size;

address=reqblock[cbp].addr;//数据在输入井的起始位置

//cbp=(++cbp)%10;//指向下一个输出块(下一个可输出的块)

printf("\n");

printf("用户%d得到输入的第%d个文件,大小=%d个字符:",id,++f[id],size);

address=address%WELLSIZE;

//真正向设备输出数据。这里是向屏幕输出。

k=0;

while((c=well[address++])!=0&&k

{

userbuf[id][k]=c;

address=address%WELLSIZE;

k++;

}

k=0;

while(userbuf[id][k]!=0&&k

{

printf("%c",userbuf[id][k]);//屏幕输出

k++;

}

printf("\n");

reqblock[cbp].reqid=0;

reqblock[cbp].size=0;

n--;//输入文件数减一

wellsize+=size;//增加输入井剩余空间

ebc++;//输入请求块组的空闲块增一

}

}

}

//--------------------------------------------------------------------------------

//登记输入请求块,将用户缓冲区mybuf的数据送入输入井well。若成功送入,返回TRUE,否则返回FALSE.

//idnum为进程号,charnum为输出的字符个数.

int spoolserver(int idnum,int charnum)

{

int k;

if(charnum>wellsize||ebc==0)//字符数超过输入井剩余空间的大小或输出请求块的空闲块数为0

return(FALSE);//无法输出

//登记输出请求块

reqblock[ebp].reqid=idnum;

reqblock[ebp].size=charnum;

reqblock[ebp].addr=wellptr;//字符在输入井中的起始位置

ebc--;//空闲输出请求块数减一

ebp=(++ebp)%10;//空闲块指针指向下一块

//把数据用户缓冲区传到输入井,起始位置由输出井当前指针决定

for(k=0;k

{

well[wellptr++]=mybuf[k];

wellptr=wellptr%WELLSIZE;

}

wellsize=wellsize-charnum;

return(TRUE);

}

//---------------------------------------------------------------------

//SPOOLing进程的程序

void spoolin()

{

int x1,j,i;

printf("输入到哪个用户?(1,2,3)");

scanf("%d",&x1);

if(file[x1]

{

printf("请输入内容?");

getchar();

gets(mybuf);

j=strlen(mybuf);

printf("输入");

puts(mybuf);

printf("给用户");

printf("%d大小为%d",x1,j);

printf("\n");

//输出缓冲区数据到输入井

if(spoolserver(x1,j))

file[x1]++;

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

mybuf[i]=0;

}

else

printf("该用户文件输入到输入#已达到数量\n");

if(n==0)pcb[0].status='c';

}

四、程序运行结果截图

五、实验总结及进一步改善建议

1、通过今天的实验操作Linux下U盘的访问和模拟spooling系统,自己初步熟悉理解了设备虚拟分配技术原理,特别是对spooling系统的输入和输出有了更深刻的理解。

2、这次实验过程中数据结构有了更深刻的理解,特别是对pcb和输入请求块链表的各项操作,以及链表等数据结构在操作系统中的应用,每次的对我的思考能力也是不小的锻炼。

3、要有坚信自己可以独立完成的信心,敢于攻坚,越是难的问题,越是要有挑战的心理,要迎难而上,不要半途放弃。

4、善于同学间的讨论,遇到问题,和自己班上同学讨论能够受益匪浅。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。

实验室设备管理系统用户手册

1. 引言 5.1编写目的 目前,实验室设备的管理复杂支出费用高。而此项目软件的设计旨在简易化,便捷化,用户通过软件的操作来管理实验室设备,将原本不便的检查、报修和记录过程简易化。实现对实验室设备快速便捷而有效的管理。 5.2项目背景 1)建议开发软件的名称:实验室设备管理系统 2)本项目的任务提出者:陈维默老师 3)开发者:李展辉周平 4)用户:面向使用实验室设备的管理员 5)实现软件的单位:福建农林大学东方学院 5.3参考资料 [1] 李芷,窦万峰,任满杰.软件工程方法与实践.北京:电子工业出版社,2004. [2] 贾铁军、甘泉.软件工程与实践.北京:清华大学出版社,2012. [3] 李芷,窦万峰,任满杰.软件工程方法与实践.北京:电子工业出版社,2004. [4] 李学相、梁恒、梁立新.JAVA软件工程与项目案例教程.北京:清华大学出版社,2012. 6.软件概述 2.1目标 本软件意通过简易软件操作选择来完成原本繁琐的人工管理过程。现对实验室设备快速管理目的化。 2.2功能 实现设备状态查看和操作,如:设备状态、使用记录、维修记录、报修等。

7.运行环境 3.1 硬件 普通PC 2G内存 3.2 支持软件 运行环境:Windows 7 数据库:SQL Server 2005 8.使用说明 4.1安装和初始化 安装说明: 一.服务器安装:服务器推荐配置: Cpu: Intel Xeon四核 2.0GHz。内存:2.0GB 7 1 安装Microsoft Windows Server 2003 。 2 安装 Microsoft SQL Server 2005 : 盘内SQL2005.iso为SQL Server 2005安装镜像,可使用虚拟光驱载入安装。 安装中需选择混合身份验证模式(Windows用户身份验证,SQLServer用户身份验证)。 3 附加数据库文件: 点击开始-〉程序-〉Microsoft SQL Server 2005-〉SQL Server Management Studio。 选择SQL Server Authentication(SQL Server 验证),用户sa 密码卫空。点击连接。 右键点击database(数据库),菜单中点击Attach,(附加)在对话框中点击”Add(添加)”,进入光盘的“数据库文件”文件夹,选择FundManageSystemDB.mdf,确定。 Database下出现FundManageSystemDB即数据库文件附加成功。 4 安装系统支持环境: 运行光盘目录\系统支持环境\dotnetfx.exe,若安装不成功则先安装同目录下的WindowsInstaller-KB893803-v2-x86.exe再安装dotnetfx.exe。若安装成功则不需要安装WindowsInstaller-KB893803-v2-x86.exe。 5 运行光盘目录\安装文件\服务端安装文件.exe,安装服务端软件。 6 服务端软件安装完成后,双击桌面上的“服务端”快捷方式,整个系统运作需要服务端程序一直开启。可最小化到托盘。

14-15-2操作系统原理实验报告(计131、132)(新)资料

操作系统原理 实验报告 学院:信息与电子工程学院专业:计算机科学与技术班级:计算机130班 学号:1130299000 姓名:某某某 浙江科技学院 2014-2015学年第2学期

实验1 进程管理 一、实验目的 1. 弄清进程和程序的区别,加深对进程概念的理解。 2. 了解并发进程的执行过程,进一步认识并发执行的实质。 3. 掌握解决进程互斥使用资源的方法。 二、实验内容 1. 管道通信 使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。 2. 软中断通信 使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。 三、实验要求 1. 根据实验内容编写C程序。 2. 上机调试程序。 3. 记录并分析程序运行结果。

《实用操作系统》实验报告五linux设备管理

《实用操作系统》实验报告 实验报告: 5 实验项目名称:设备管理 班级:学号:姓名: 地点:时间:2013 年11 月13 日 一、实验内容 1、添加硬盘,创建二个主分区、一个扩展分区,二个逻辑分区 注意:ide、scsi 提示:分区、格式化、挂载(fdisk,mkfs,mount) 2、查看常见的设备文件有哪些?(ls /dev ) 常见的设备文件:/dev/hd* IDE接口的硬盘(IDE接口的设备) /dev/sd* SCSI/USB设备/dev/cua* 串口设备/dev/lp* 并口设备/dev/tty* 终端设备/dev/consol 控制台设备/dev/eth* 以太网设备/dev/cdrom IDE光驱/dev/fd* 软驱/dev/audio 音频设备/dev/scd SCSI的光驱/dev/ppp PPP设备/dev/isdn* ISDN设备 3、挂载光盘,查看光盘内容创建挂载点要求:以本人姓名缩写为目录mkdir / 目录/设备挂载mount 空格源设备空格挂载点 4、显示管理System-config-display 5、声卡管理System-config-soundcard 6、打印机管理System-config-printer 7、网卡管理System-config-network 二、实验步骤及结果 1.添加硬盘,创建分区; 在启动虚拟机前,在工具栏中点击“虚拟机”,找到“设置”选项,在左面的硬件中找到硬盘,进行硬盘设备添加,这里有IDE和SCSI两种硬盘类型可供选择添加。完成硬盘添加后即可启动虚拟机进入linux系统。在这我添加了容量相同的硬盘设备类型各一;

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

操作系统实验七设备管理实验(广西师大)

操作系统课程实验 年级2012级 专业计算机科学与技术(应用型)姓名 学号 指导教师黄玲 日期2013年12月26日

实验七、设备管理实验 一、关键问题 1、实验目的 观察Linux下U盘的访问;理解设备虚拟分配技术。 2、实验环境 Ubuntu8.0或者以上,Eclipse集成开发环境 3、实验内容 3.1观察Linux下的U盘访问 从键盘获得符号串,写入磁盘文件,然后读取该文件。 3.2设备管理模拟实验要求:设计一个SPOOLing输入模拟系统。提示:输入井设计成结构体数组,每块存放一个输入文件内容。三个用户进程与一个后台输入进程并发执行,后台输入进程接受用户键盘输入的文件到输入井,每个用户进程从输入井获取输入数据。 老师所给的例子为为利用内存SPOOLing输入模拟系统,而问题的关键就是如何参考spoolout()设计spoolin()以及修改用户进程usepro()和输入#进程spoolsever()。 二、设计修改思路 spoolout()进程:键入要输入的用户id,如果用户输入文件未完成则键入文件内容,将文件内容mybuf发到输入井。 spoolsever()输入#进程:登记输入请求块,将缓冲区mybuf的数据送入输入井well。若成功送入,返回TRUE,否则返回FALSE。 usepro()用户进程:遍历输入请求块如找到该用户的输入请求,将输入请求块的数据送入用户缓冲区userbuf,并在屏幕输出userbuf。 三、实现修改的关键代码 #include #define WELLSIZE500//输入井的大小 #define FALSE0 #define TRUE1 //进程控制块 struct { int id;//进程标识数 char status;//进程状态,'e'为执行态,'c'为完成态。 int bufflag;//用户缓冲区userbuf空闲标志:FALSE为无数据,TRUE为有数据。 int filec;//本进程需要输出的文件数(用户指定) }pcb[4];//pcb[0]为SPOOLing进程,pcb[1]、pcb[2]、pcb[3]为3个用户进程

操作系统实验六_设备管理

操作系统课程报告实验六设备管理 学号 姓名 班级 教师 华侨大学电子工程系

实验目的 1、理解设备管理的概念和任务。 2、掌握独占设备的分配、回收等主要算法的原理并编程实现。 实验内容与基本要求 1、在Windows系统中,编写程序实现对独占设备的分配和回收的模拟, 该程序中包括:建立设备类表和设备表、分配设备和回收设备的函数。实验报告内容 1、独占设备的分配、回收等主要算法的原理。 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。 (1)数据结构 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图: (2)设备分配 当进程申请某类设备时,系统先查“设备类表”如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。然后,

把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。 (3)设备回收 当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。

操作系统原理实验-系统内存使用统计5

上海电力学院 计算机操作系统原理 实验报告 题目:动态链接库的建立与调用 院系:计算机科学与技术学院 专业年级:信息安全2010级 学生姓名:李鑫学号:20103277 同组姓名:无 2012年11 月28 日上海电力学院

实验报告 课程名称计算机操作系统原理实验项目线程的同步 姓名李鑫学号20103277 班级2010251班专业信息安全 同组人姓名无指导教师姓名徐曼实验日期2012/11/28 实验目的和要求: (l)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 实验原理与内容 使用Windows系统提供的函数和数据结构显示系统存储空间的使用情况,当内存和虚拟存储空间变化时,观察系统显示变化情况。 实验平台与要求 能正确使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS了解系统内存和虚拟空间使用情况,会使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟存储空间。 操作系统:Windows 2000或Windows XP 实验平台:Visual Studio C++ 6.0 实验步骤与记录 1、启动安装好的Visual C++ 6.0。 2、选择File->New,新建Win32 Console Application程序, 由于内存分配、释放及系统存储 空间使用情况均是Microsoft Windows操作系统的系统调用,因此选择An application that support MFC。单击确定按钮,完成本次创建。 3、创建一个支持MFC的工程,单击完成。

教学设施设备管理制度

中所小学2007学年教学设施设备管理制度 1.多媒体课室管理规定 一、多媒体教室是为了改善我校教学手段,提高办学水平而建,主要为教学服务,由教导主任负责统一管理。 二、教务科每学期根据教学需要统一安排多媒体教室的使用。 三、需要使用多媒体教室上课的教师需提前提出申请,由教导主任根据实际情况作出安排。 四、多媒体教室配备专职管理人员一名,负责日常管理、设备定期维护及维修。 学生应爱护多媒体教室的设备,不得随意摆弄多媒体设备,严禁在桌椅、板凳上乱画,一经发现除照价赔偿外,按照破坏公物严肃处理。 五、学生进入教室不得高声喧哗,保持教室安静。 六、学生进入教室不得带饮料、食品,应自觉保持教室的卫生。 七、学生不服从管理者,任课教师和管理人员有权取消其在多媒体教室上课的资格,情节严重者受相应纪律处分。 2.实验室规则 一、实验室是教学的重要基地之一,学生必须听从教师指导,认真进行实验实习,按时完成实验任务,按时缴交实验报告。 二、不带实验指导书(或相关的实验教材)者不能参加实验。

三、实验室必须保持安静,不得高声谈笑或嬉戏打闹,进入机房必须更换工作鞋。 四、注意安全,凡带电实验,未经老师检查和示范允许,不准私自通电,必须遵守有关安全规定。 五、爱护公物、遵守纪律,未经教师许可,不得乱动乱拆仪器设备,不得擅自拿其他同学的工具材料,不得私自带走实验室的物品,不得在实验室内安装或调测私人的东西。 六、若发现仪器设备损坏,丢失或其他事故,应及时据实向教师报告,根据情节轻重及认识错误程度,给当事者批评教育,责令赔偿,情节严重的给予纪律处分。 七、严格遵守操作规程,对运转中的设备不得乱摸乱动,若引起事故,须负事故责任。 八、实验室内不得接待客人,外单位前来参观,须经校长、实验指导老师批准。 九、学生做完实验,应关闭电源,整理工具,打扫卫生,关好门窗电灯,教师下班前要检查好门窗,切断电源。 3.实验室仪器设备管理 一、仪器设备管理 (一)实验员负责实行常规管理保养,技术业务指导及督促、检查工作,通电检查和维护每两周一次,使仪器设备处于正常状态。 (二)仪器设备由实验员负责分类编号、定位,设立仪器设备档案卡,建立明细帐本,统一收存仪器说明书。

操作系统原理实验四

实验4 进程控制 1、实验目的 (1)通过对WindowsXP进行编程,来熟悉和了解系统。 (2)通过分析程序,来了解进程的创建、终止。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 (3)·CreateProcess()调用:创建一个进程。 (4)·ExitProcess()调用:终止一个进程。 4、实验编程 (1)编程一利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下: # include < stdio.h > # include < windows.h > int main(VOID) ﹛STARTUPINFO si; PROCESS INFORMA TION pi; ZeroMemory(&si,sizeof(si)); Si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, “c: \ WINDOWS\system32\ mspaint.exe”, NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) ﹛fprintf(stderr,”Creat Process Failed”); return—1; ﹜ WaitForSingleObject(pi.hProcess,INFINITE); Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜

操作系统实验 设备管理汇总

操作系统实验 名称实验六设备管理 姓名 专业 学号 日期 2015年12月01日指导老师

一、实验目的 1.理解设备管理的概念和任务。 2.掌握独占设备的分配、回收等主要算法的原理并编程实现。 二、实验内容与要求 1.在Windows系统中,编写程序实现对独占设备的分配和回收的模拟,该程序中包括:建立设备类表和设备表、分配设备和回收设备的函数。 三、实验原理 1.独占设备的分配、回收等主要算法的原理。 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。 为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。 (1)数据结构 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下 设备类表设备表 控制器表通道表 设备队列队首指针。凡因请求本设备而未得到满足的进程,其PCB都应按照一定的策略排成一个队列,称该队列为设备请求队列或简称设备队列。其队首指针指向队首PCB。在有的系统中还设置了队尾指针。 设备状态。当设备自身正处于使用状态时,应将设备的忙/闲标志置“1”。若与该设备相连接的控制器或通道正忙,也不能启动该设备,此时则应将设备的等待标志置“1”。

与设备连接的控制器表指针。该指针指向该设备所连接的控制器的控制表。在设备到主机之间具有多条通路的情况下,一个设备将与多个控制器相连接。此时,在DCT中还应设置多个控制器表指针。 (2)设备分配 1)当进程申请某类设备时,系统先查“设备类表”。 2)如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未分配”的设备分配给进程。 3)分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。 4)然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。 (3)设备回收 当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。 设备分配程序的改进 增加设备的独立性:为了获得设备的独立性,进程应使用逻辑设备名I/O。这样,系统首先从SDT中找出第一个该类设备的DCT。若该设备忙,又查找第二个该类设备的DCT,仅当所有该类设备都忙时,才把进程挂在该类设备的等待队列上,而只要有一个该类设备可用,系统便进一歩计算分配该设备的安全性。 四、程序流程图

操作系统实验六设备管理

操作系统课程报告 实验六设备管理 学号 姓名 班级 教师 华侨大学电子工程系

实验目的 1、理解设备管理的概念和任务。 2、掌握独占设备的分配、回收等主要算法的原理并编程实现。 实验内容与基本要求 1、在Windows系统中,编写程序实现对独占设备的分配和回收的模拟,该程序中包括: 建立设备类表和设备表、分配设备和回收设备的函数。 实验报告内容 1、独占设备的分配、回收等主要算法的原理。 为了提高操作系统的可适应性和可扩展性,现代操作系统中都毫无例外地实现了设备独立性,又叫做设备无关性。设备独立性的含义是:应用程序独立于具体使用的物理设备。为了实现独占设备的分配,系统设置数据表格的方式也不相同,在实验中只要设计合理即可。这里仅仅是一种方案,采用设备类表和设备表。 (1)数据结构 操作系统设置“设备分配表”,用来记录计算机系统所配置的独占设备类型、台数以及分配情况。设备分配表可由“设备类表”和“设备表”两部分组成,如下图:(2)设备分配 当进程申请某类设备时,系统先查“设备类表”如果该类设备的现存台数可以满足申请要求,则从该类设备的“设备表”始址开始依次查该类设备在设备表中的登记项,找出“未

分配”的设备分配给进程。分配后要修改设备类表中的现存台数,把分配给进程的设备标志改为“已分配”且填上占用设备的进程名。然后,把设备的绝对号与相对号的对应关系通知用户,以便用户在分配到的设备上装上存储介质。 (3)设备回收 当进程执行结束撤离时应归还所占设备,系统根据进程名查设备表,找出进程占用设备的登记栏,把标志修改为“未分配”,清除进程名。同时把回收的设备台数加到设备类表中的现存台数中。 2、程序流程图。 主程序流程图: 设备分配: 设备回收: 3、程序及注释。 #include #include #include #define false 0 #define true 1

实验10 操作系统设备管理

实验10 操作系统设备管理 一、按课本第139页【实例分析4-7】内容熟悉设备管理器界面。(若课本没带,打开我的电脑-右键-管理-设备管理-查看相应设备。)记录你使用的电脑的处理器、磁盘存储器等的型号分别是什么。二、学习如何在Microsoft Windows XP 中如何使用设备管理器管 理设备。 使用设备管理器管理设备 设备管理器提供一个图形视图,可显示计算机上安装的硬件以及与硬件关联的设备驱动程序和资源。在设备管理器上,可以集中更改配置硬件的方式以及更改硬件与计算机微处理器交互的方式。 使用设备管理器管理设备及其驱动程序需要拥有下列权限,系统管理员被授予了所有这些权限:?加载/卸载驱动程序权限。 ?向system32\drivers 目录复制文件所需的权限。 ?向注册表写入设置所需的权限。 设备管理器具有下列功能: ?确定计算机上的硬件是否工作正常。 ?更改硬件配置设置。 ?标识为每个设备加载的设备驱动程序,并获取每个设备驱动程序的有关信息。 ?更改设备的高级设置和属性。 ?安装更新的设备驱动程序。 ?禁用、启用和卸载设备。 ?重新安装驱动程序的前一版本。 ?找出设备冲突并手动配置资源设置。 ?打印计算机上所安装设备的概要信息。 通常,设备管理器用于检查计算机硬件的状态以及更新计算机上的设备驱动程序。如果您是高级用户并且通晓计算机硬件知识,则可以使用设备管理器的诊断功能来消除设备冲突和更改资源设置。 要访问设备管理器,请使用下列任一方法: ?单击开始,单击运行,然后键入devmgmt.msc。 ?右键单击我的电脑,单击管理,然后单击设备管理器。 ?右键单击我的电脑,单击属性,单击硬件选项卡,然后单击设备管理器。

实验室设备管理系统详细设计

实验室设备管理系统详细设计 1引言 (2) 1.1编写目的 (2) 1.2背景 (2) 1.3定义 (2) 1.4参考资料 (2) 2程序系统的结构 (2) 3程序1(标识符)设计说明 (4) 3.1程序描述 (4) 3.2功能 (4) 3.3性能 (5) 3.4输人项 (5) 3.5输出项 (6) 3.6算法 (6) 3.7流程逻辑 (6) 3.8接口 (8) 3.9存储分配 (8) 3.10注释设计 (8) 3.11限制条件 (8) 3.12测试计划 (8) 3.13尚未解决的问题 (9) 4程序2(标识符)设计说明 (9)

1引言 1.1编写目的 对软件需求的全面、深入的理解是软件开发工作获得成功的前提条件,作为软件定义时期的最后一个阶段,需求分析的任务是明确用户对目标系统的需求,主要是确定对系统的综合要求,同时分析系统的数据要求。它能提高软件开发过程的能见度,便于实现软件开发人员对开发过程的工程化管理与控制,便于项目管理人员、开发人员、测试人员、维护人员之间更好地交流与协作。 1.2背景 a.开发软件系统的名称:实验室设备管理系统 1.3定义 报废:管理人员发现设备因某些原因损坏而导致设备不能使用时,就将该设备记录下来,并记录报废原因。 维修:管理人员发现设备因某些原因损坏需要维修时,就将该设备记录下来,并提出维修意见。 查询:随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询 1.4参考资料 《软件工程导论》张海藩清华大学出版社 2程序系统的结构 用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间的层次结构关系。 设备管理员操作模块如下图所示:

JAVAEE课程设计 之实验室设备管理系统

软件学院 课程设计报告书 课程名称 Java高级框架应用开发 设计题目实验室设备管理系统 专业班级软件工程10-6班 学号1020010627 姓名萧翎 指导教师郭鹏飞 2013 年 1 月

目录 1 设计时间.............................................................. 错误!未定义书签。 2 设计目的.............................................................. 错误!未定义书签。3设计任务............................................................... 错误!未定义书签。 4 设计内容.............................................................. 错误!未定义书签。 4.1需求分析............................................................ 错误!未定义书签。 4.1.1总体目标 ...................................................... 错误!未定义书签。 4.1.2具体目标 ...................................................... 错误!未定义书签。 4.1.3系统数据建模 .............................................. 错误!未定义书签。 4.1.4系统功能建模 .............................................. 错误!未定义书签。 4.1.5数据字典 ...................................................... 错误!未定义书签。 4.2总体设计............................................................ 错误!未定义书签。 4.3详细设计........................................................... 错误!未定义书签。 4.4运行与测试 ...................................................... 错误!未定义书签。 5 总结与展望.......................................................... 错误!未定义书签。附:系统程序主要代码 ......................................... 错误!未定义书签。参考文献.................................................................. 错误!未定义书签。成绩评定.................................................................. 错误!未定义书签。

操作系统原理实验五

实验五线程的同步 1、实验目的 (1)进一步掌握Windows系统环境下线程的创建与撤销。 (2)熟悉Windows系统提供的线程同步API。 (3)使用Windows系统提供的线程同步API解决实际问题。 2、实验准备知识:相关API函数介绍 ①等待对象 等待对象(wait functions)函数包括等待一个对象(WaitForSingleObject ())和等待多个对象(WaitForMultipleObject())两个API函数。 1)等待一个对象 WaitForSingleObject()用于等待一个对象。它等待的对象可以为以下对象 之一。 ·Change ontification:变化通知。 ·Console input: 控制台输入。 ·Event:事件。 ·Job:作业。 ·Mutex:互斥信号量。 ·Process:进程。 ·Semaphore:计数信号量。 ·Thread:线程。 ·Waitable timer:定时器。 原型: DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 等待时间 ); 参数说明: (1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访问。 (2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒,如表2-1所示。 返回值: 如果成功返回,其返回值说明是何种事件导致函数返回。

Static HANDLE hHandlel = NULL; DWORD dRes; dRes = WaitForSingleObject(hHandlel,10); //等待对象的句柄为hHandlel,等待时间为10ms 2)等待对个对象 WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与 WaitForSingleObject()相同。 原型: DWORD WaitForMultipleObjects( DWORD nCount, //句柄数组中的句柄数 CONST HANDLE * lpHandles, //指向对象句柄数组的指针 BOOL fWaitAll, //等待类型 DWORD dwMilliseconds //等待时间 ); 参数说明: (1)nCount:由指针 * lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUM WAIT OBJECTS。 (2)* lpHandles:指向对象句柄数组的指针。 (3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个 对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数 返回。 (4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒。 返回值:、 如果成功返回,其返回值说明是何种事件导致函数返回。 各参数的描述如表2-2所示。

操作系统原理实验报告(终版)

操作系统原理实验报告(终版)

————————————————————————————————作者:————————————————————————————————日期:

[键入文字] XX学校 实验报告 课程名称: 学院: 专业班: 姓名: 学号: 指导教师: 2011 年3 月

目录 实验1 进程管理 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验要求 (3) 四、程序说明和程序流程图 (4) 五、程序代码 (5) 六、程序运行结果及分析 (7) 七.指导教师评议 (8) 实验2 进程通信 (9) 一、实验目的 (9) 二、实验内容 (9) 三、实验要求 (9) 四、程序说明和程序流程图 (9) 五、程序代码 (11) 七.指导教师评议 (14) 实验3 存储管理 (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验要求 (15) 四、程序说明和程序流程图 (16) 六、程序运行结果及分析 (23)

七.指导教师评议 (23) 实验4 文件系统 (24) 一、实验目的 (24) 二、实验内容 (24) 三、实验要求 (24) 四、程序说明和程序流程图 (24) 五、程序代码 (26) 六、程序运行结果及分析 (26) 七.指导教师评议 (27)

实验1 进程管理 一、实验目的 1. 弄清进程和程序的区别,加深对进程概念的理解。 2. 了解并发进程的执行过程,进一步认识并发执行的实质。 3. 掌握解决进程互斥使用资源的方法。 二、实验内容 1. 管道通信 使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。 2. 软中断通信 使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。 三、实验要求 1. 根据实验内容编写C程序。 2. 上机调试程序。 3. 记录并分析程序运行结果。

《操作系统原理实验》试卷A及答案

《中山大学授予学士学位工作细则》第六条 考试作弊不授予学士学位 计算机科学系2012第二学期 《操作系统原理实验》期末考试试题(A) 任课教师:李才伟考试形式:开卷考试时间:2小时年级:11 班别:3 专业:计科姓名:________ 学号:___ _ 成绩___ _ 注意:答案一定要写在答卷中,写在本试题卷中不给分。本试卷要和答卷一起交回。 一.填空题(每小题2分,共30分) 1.在我们的操作系统实验中,C与汇编语言混合编程的操作系统环境为___,其所用的虚拟机为___。2.测试用软盘映像文件的大小为___MB,使用的文件系统格式为___。 3.Intel 80386新增加的两个段寄存器分别为___和___。 4.Intel处理器实模式下的中断向量表包含___个中断向量,每个中断向量有___位。 5.Linux中挂载磁盘映像的命令为___,C语言的编译器为___。 6.将程序的入口安排在指定位置的汇编操作符为___、LD的链接选项为___。 7.ELF的英文原文是___,中文译文为___。 8.在FAT的文件条目中,普通文件和子目录的文件属性值分别为___和___。 9.在IA-32的保护模式下,分段用于___,分页用于___。 10.IA-32处理器的4个系统地址寄存器分别为___。 11.IA-32中的描述符和选择符大小分别为___位和___位。 12.TSS的主要功用为___,TSS描述符只能位于___描述符表中。 13.控制保护模式的寄存器为___,激活保护标志位于其___位。 14.IA-32的三种特权级类型分别为___、___和___。 15.在Make文件中,$@ 和$< 分别表示___和___。 二.问答题(每小题5分,共30分) 1.在实模式下的进程调度中是如何实现堆栈切换的? 2.IA-32的保护模式相比实模式的主要优点有哪些? 3.给出IA-32保护模式下的段寄存器的内容、组成和功用。 4.给出GDT和LDT的英文原文和中文译文,它们有哪些主要功用和区别? 5.启动分页机制的主要步骤有哪些? 6.给出IA-32段页式保护模式下(采用4KB页面大小与两级分页方式的)逻辑地址和线性地址的构成及转 换成物理地址的方法。

测量及试验仪器设备管理制度

测量及试验仪器设备管理制度 一、测量仪器是工程技术人员实施工程定位、放样的工具,测量仪器价值高、使用范围广泛,使用条件环境差,为加强管理,确保正常有效使用,特制定本制度。 二、由xxx负责测量仪器的使用、维修、保养等管理工作,掌握主要测量仪器动态,制定、修订测量仪器设备的购置、使用、保养、报废制度。 三、由xxx负责检验、试验设备的使用、维修、保养等管理工作,掌握主要检验、试验设备动态,制定、修订测量仪器设备的购置、使用、保养、报废制度。 四、购置的各种检验、测量和试验设备应在市场调研的基础上,选购具有权威部门颁发许可证的产品。对新购置的检验、测量和试验设备,采购部门应与接收部门共同验收,并做好记录。 五、根据设备的使用规定,经指定的权威检验部门检测校准合格后,加以合格标识方可使用。 六、检验、测量设备包括计量器具,按A、B、C级别分别控制和校准并按规定填写《计量器具检测记录》、《试验设备检测记录》; 七、建立检验、测量和试验设备台帐,做到帐物相符,原始资料和技术档案完整。 八、在岗计量人员、试验人员应经专业培训合格后持证上岗。 九、保证检验、测量和试验在适宜的环境条件下工作,如因温度、湿度、振动、隔音等环境影响,要采取措施,消除和减少环境对测试结果的影响到允许的范围内。 十、各种检验、测量和试验设备在使用前,应由操作人员自检,无异常情况方可使用,如

有异常不准使用。自检情况应填写《检验、测量和试验设备校准记录》。 十一、对特殊、关键工序使用检测设备时,必须按规定自检,并填写《特殊、关键工序检验、测量、试验设备自检记录》。 十二、所有在帐的检验、测量和试验设备,包括计量设备均应加以明显标识。 1.绿色标签表示设备处于良好状态,并注明有效期; 2.黄色标签表示自检合格的工具类设备和因部分功能下降而降级使用的设备; 3.红色标签表示不合格或暂停使用的设备(包括封存、报废)。 西安地铁四号线TJSG-2标段工程项目部 2014年12月8日

操作系统实验五文件和设备管理

宁德师范学院计算机系 实验报告 (2014—2015 学年第二学期) 课程名称操作系统 实验名称实验五文件和设备管理专业计算机科学与技术(非师)年级2012 级 学号B2012102147 姓名王秋 指导教师王远帆 实验日期2015-06-9

实验目的与要求: 通过对Windows 2000 提供的文件与文件夹加密、磁盘配额管理、进行磁盘清理、执行备份操作、使用CHKDSK维护文件完整性和整理磁盘碎片等功能进行操作: (1)熟悉Windows 2000 的文件系统。 (2)明确应用NTFS文件系统的积极意义。 (3) 掌握优化Windows 2000 磁盘子系统的基本方法。 (4) 进一步理解现代操作系统文件管理知识。 实验设备(环境): (1)一台安装有Cygwin Terminal 的计算机 (2)Windows XP 操作系统 (3)VC++6.0 实验内容: (1)文件系统的了解和管理操作 (2)磁盘设备的了解和管理操作 实验步骤、实验结果及分析: 步骤1:阅读“背景知识”,请回答: 1) Windows 2000 支持哪三种主要的文件系统: a. 文件分配表(File Allocation Table ,FAT) 文件系统(FAT16) b. 保护模式FAT文件系统(FAT32) c. Windows NT 文件系统(NTFS) 2) NTFS文件系统只能用于哪些操作系统环境: NTFS卷标只能为Windows NT 、2000 和XP操作系统所访问。 步骤2:登录进入Windows 2000 Professional 。 步骤3:加密文件或文件夹。 为加密文件或文件夹,可按照以下步骤进行: 1) 在“Windows 资源管理器”中,右键单击想要加密的文件或文件夹,然后单击“属性”命令。 2) 在“常规”选项卡上,单击“高级”按钮。

相关文档
最新文档