操作系统实验七设备管理实验(广西师大)
操作系统-实验报告-设备管理
空闲块号 6 一、 实验目的
磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实验使学生掌握磁盘存储空间的分配和回收算法
二、实验内容
模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收
第一题:连续的磁盘存储空间的分配和回收
[提示]:
(1) 要在磁盘上建立顺序文件时,必须把按序排列的逻辑记录依次存放在磁盘的连续存储空间中。可假定磁盘初始化时,已把磁盘存储空间划分成若干等长的块(扇区),按柱面号和盘面号的顺序给每一块确定一个编号。随着文件的建立、删除、磁盘存储空间被分成许多区(每一区包含若干块),有的区存放着文件,而有的区是空闲的。当要建立顺序文件时必须找到一个合适的空闲区来存放文件记录,当一个文件被删除时,则该文件占用的区应成为空闲区。为此可用一张空闲区表来记录磁盘存储空间中尚未占用的部分,格式如下:
序 号
起始空闲块号 空闲块个数 状 态 1
5 6 未 分 配 2
14 3 未 分 配 3
21 30 未 分 配 4
空 表 目
(2) 要建立文件时,先查找空闲区表,从状态为“未分配”的登记栏目中找出一个块数能满足要求的区,由起始空闲块号能依次推得可使用的其它块号。若不需要占用该区的所有块时,则剩余的块仍应为未分配的空闲块,这时要修改起始空闲块号和空闲块数。若占用了该区的所有块,则相应登记栏中的状态修改成“空表目”。删除一个文件时,从空闲区表中找一个状态为“空表目”的登记栏目,把归还的起始块号和块数填入对应的位置。
操作系统设备管理实验报告
实验报告
课程名称:操作系统Array
实验项目名称:设备管理实验时间:
班级:计算091 姓名:学号:
实验目的:
1.对理论课中学习的设备管理中的概念作进一步的理解;
2.明白设备管理的主要任务;
3.了解设备管理任务的主要实现方法;
4.通过编程,学会独占设备的分配、回收等主要算法的原理。
实验环境:winTC
实验内容及过程:
1. 独占设备分配
设备申请某台设备时,系统先查“设备类表”,如果该类设备的现存可使用数量可以满足申请要求,则从“设备类表”中得到该类设备的设备表起始地址,然后找到“设备表”中该类设备的起始地址,依次查询该类设备的每个登记项,找出“好的且未分配”的设备分配给该作业。分配后要修改设备类表中的现存设备数量(减1),把分配给该作业的设备状态更改为“已分配”,且填上占用该设备的作业的作业名和程序中定义的相对号,最后将设备的绝对号与相对号的对应关系通知用户。
2. 独占设备回收
作业运行完成,释放设备时,根据该设备的类型查找设备类表,根据其中的地址,找到该类设备在设备表中的地址,找到作业名相同且已分配的表项,将其已分配改为未分配,然后将设备表中对应设备类的可使用数量增加1。
实验过程:
1.编写程序,由必要的数据结构,主函数、设备分配函数及设备回收函数构成,实现对
独占设备的分配与回收的模拟。
2. 在上机环境中输入程序,调试,编译。
3.设计输入数据,写出程序的执行结果。根据具体实验要求,填写好实验报告。
实验结果及分析:
初始状态:
J1请求input设备相对地址为2的分配情况:
实验心得:
陈少琼:
附录:
操作系统实验7
//寻找回收分区的上下邻空闲区,上邻表目K,下邻表目J while(i<m&&(j==-1||k==-1)) {if(free_table[i].flag==0) { if(free_table[i].address+free_table[i].length==0) k=i; //找到上邻 {if(free_table[i].address==S+L) j=1; //找到下邻 } i++; } if (k!=-1) if(j!=-1) //上邻空闲区,下邻空闲区,三项合并 { free_table[k].length=free_table[j].length+free_table[k].length+L; free_table[j].flag+0; } else //上邻空闲区,下邻非空闲区,与上邻合并 free_table[k].length=free_table[k].length+L; else if(j!=-1) //上邻非空闲区,下邻空闲区,与下邻合并 { free_table[j].address=S; free_table[j].length=free_table[j].length+L; }
//找到可用空闲区,开始分配;若空闲区大小与要求分配的空间差小于 minisize大小,则空闲区全部分配; //若空闲区大小与要求分配的空间差大于minisize大小,则从空闲区划 分一部分分配 if(free_table[k].length-xk<=minisize) { free_table[k].flag=0; ad=free_table[k].address; xk=free_table[k].length; } else { free_table[k].length=free_table[k].length-xk; ad=free_table[k].address+free_table[k].length; }
实训7_操作系统安装和磁盘管理实训报告
实训7_操作系统安装和磁盘管理实训报告
一、实训目的
本次实训的主要目的是让我们熟悉操作系统的安装过程以及掌握磁盘管理的基本技能。通过实际操作,深入了解计算机系统的底层运作原理,提高我们对计算机硬件和软件的综合应用能力,为今后解决计算机相关问题打下坚实的基础。
二、实训环境
1、硬件环境
计算机主机:具备足够的性能来支持操作系统的安装和运行。
存储设备:如硬盘、U盘等,用于存储操作系统安装文件和数据。
显示器、键盘、鼠标等外设,以方便进行操作和监控。
2、软件环境
操作系统安装光盘或镜像文件:如 Windows 操作系统、Linux 操作系统等。
磁盘管理工具:如 Windows 系统中的磁盘管理工具、第三方磁盘分区软件等。
三、实训内容及步骤
(一)操作系统安装
1、准备工作
备份重要数据:在安装操作系统之前,首先需要备份计算机中的重要数据,以免在安装过程中丢失。
制作安装介质:可以通过下载操作系统镜像文件,并将其刻录到光盘或制作成启动 U 盘。
进入 BIOS 设置:重启计算机,在开机过程中按下相应的按键(通
常是 Del、F2 等)进入 BIOS 设置界面,将启动顺序设置为首先从安装介质启动。
2、安装操作系统
插入安装介质,重启计算机,按照提示进入操作系统安装界面。
选择安装语言、时区、键盘布局等基本设置。
选择安装类型,如全新安装、升级安装等。
对磁盘进行分区和格式化:可以根据需要创建系统分区、数据分区等,并选择合适的文件系统(如 NTFS、FAT32 等)进行格式化。
等待操作系统安装完成:安装过程中,计算机会自动进行文件复制、系统配置等操作,需要耐心等待。
操作系统实验七设备管理实验(广西师大)
操作系统课程实验
年级2012 级
专业计算机科学与技术(应用型)姓名
学号
指导教师黄玲
日期2013年12月26日
实验七、设备管理实验
一、关键问题
1、实验目的
观察Linux下U盘的访问;理解设备虚拟分配技术。
2、实验环境
Ubuntu 8.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 <stdio.h>
#define WELLSIZE 500 //输入井的大小
2022年广西科技师范学院软件工程专业《操作系统》科目期末试卷A(有答案)
2022年广西科技师范学院软件工程专业《操作系统》科目期末试卷A
(有答案)
一、选择题
1、下列选项中,操作系统提供给应用程序的接口是()。
A.系统调用
B.中断
C.库函数
D.原语
2、执行系统调用的过程包括如下主要操作:
①返回用户态
②执行陷入(trap)指令
③传递系统调用参数
④执行相应的服务程序
正确的执行顺序是()
A.②->③->①->④
B.②->④->③->①
C.③->②->④->①
D.③->④->②->①
3、进程P1和P2均包含并发执行的线程,部分伪代码描述如下所
//进程P1 //进程P2
int x=0; int x=0;
Thread1() Thread3()
{int a; {int a:
a=1; a=x;
x+=1; x+=3;
Thread2() Thread4()
{ {
int a: int b, a
a=2; b=x;
x+=2; x1=4;
} }
下列选项中,需要互斥执行的操作是()。
A. a=l与a=2
B. a=x与b=x
C. x+=1与x+=2
D. x+=1与x+=3
4、采用时间片轮转调度算法分配CPU时,当处于执行状态的进程用完一个时间片后,它的状态是()
A.阻塞
B.运行
C.就绪
D.消亡
5、在个交通繁忙的十字路口,每个方向只有一个车道,如果车辆只能向前直行,而不允许转弯和后退,并未采用任何方式进行交通管理。下列叙述正确的是()。
A.该十字路口不会发生死锁,
B.该十字路口定会发生死锁
C.该上字路口可能会发生死锁,规定同时最多3个方向的车使用该十字路是最有效的方法
操作系统实验七
#include"windows.h"#include"stdio.h"//#include"stdafx.h"//#include"Disk_information_Get.h"#include"winioctl.h"DISK_GEOMETRY disk_info;HANDLE GetDiskInformation(char drivername);BOOL SectorRead(HANDLE Handle);BOOL SectorWrite(HANDLE Handle);int main(int argc,TCHAR*argv[],TCHAR*envp[]){int nRetCode=0;HANDLE Handle;char Choice;Handle=GetDiskInformation('A');while(TRUE){printf("Please Select Read or Write! Input 'R' to read,'W' to Write,'Q' to quit!\n");Choice=getchar();printf("\n");switch(TRUE){case'W':{if(!SectorWrite(Handle)) printf("Write Sector Fail!\n");getchar();break;}case'R':{if(!SectorRead(Handle)) printf("Read Sector Fail!\n");getchar();break;}case'Q':{exit(0);break;}default:{printf("Input Error!,Try again please!\n");getchar();}}}return nRetCode;}HANDLE GetDiskInformation(char drivername){char device[]="\\\\.\\:";device[4]=drivername;HANDLE FloopyDisk;DWORD ReturnSize;DWORD Sector;double DiskSize;FloopyDisk=CreateFile(device,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS|FILE_FLAG_NO_BUFFERING,NULL);if(FloopyDisk==INVALID_HANDLE_VALUE)printf("INVALID_HANDLE_VALUE!\n");if(GetLastError()==ERROR_ALREADY_EXISTS)printf("Can not Open Disk!%d\n",GetLastError());if(!DeviceIoControl(FloopyDisk,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&disk_info,50,&ReturnSize,(LPOVERLAPPED)NULL))printf("Open Disk Error! %d\n",GetLastError());printf("Disk Information:\n");printf("\t BytesPerSector: %d\n",disk_info.BytesPerSector);printf("\t SectorPerTrack: %d\n",disk_info.SectorsPerTrack);printf("\t TracksPerCylinder:%d\n",disk_info.TracksPerCylinder);printf("\t Cylinder: %d\n",disk_info.Cylinders);Sector=disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;printf("\t There is %d Sectors!\n",Sector);DiskSize=Sector*disk_info.BytesPerSector;printf("\t Size of Disk; %4.2f KB\n",(DiskSize)/(1024*1024));return FloopyDisk;}BOOL SectorRead(HANDLE Handle){char ReadBuffer[1024*16];DWORD SectorNumber;DWORD BytestoRead;DWORD Sector;DWORD rc;int i;if (Handle==NULL){printf("There is No disk!\n");return FALSE;}printf("Please Input the Sector Number to Read From:\n");scanf("%d",&SectorNumber);printf("\n");Sector = disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;if(SectorNumber>Sector)printf("There is not this Sector!\n");printf("Content:\n");BytestoRead=SectorNumber*(disk_info.BytesPerSector);rc=SetFilePointer
操作系统实验报告1
《操作系统》实验报告
实验序号:01 实验项目名称:操作系统环境
学号1107xxx 姓名xxx 专业、班级软件工程1103 实验地点计—502 指导教师徐冬时间2013.9.23 实验目的
1) 了解和学习Windows系统管理工具及其使用;
2) 熟悉Windows系统工具的内容和应用;
由此,进一步熟悉Windows操作系统的应用环境。
工具/准备工作
在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行Windows 操作系统的计算机。
实验内容与步骤
1. 计算机管理
2. 事件查看器
3. 性能监视
4. 服务
5. 数据库 (ODBC)
为了帮助用户管理和监视系统,Windows提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。如图2所示。
图2 基于虚拟机的操作系统计算环境管理
步骤1:登录进入Windows。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:
1) Internet 信息服务;管理IIS,Internet 和Intranet站点的WEB服务器。
2) Server Extensions 管理器;Server Extensions管理器。
3)计算机管理;管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4)性能;显示系统性能图表以及配置数据日志和警报。
5)本地安全策略;查看和修改本地安全策略,如用户权限和审核策略。
6)事件查看器;显示来自于Windows和其他程序的监视与排错消息。
操作系统实验及答案
操作系统实验及答案
一、实验目的
通过本次实验,旨在让学生深入理解操作系统的基本概念、原理和功能,掌握常见操作系统的使用与配置,提高学生对操作系统问题的分析和解决能力。
二、实验内容
实验1:Windows操作系统的基本操作与文件管理
实验2:Linux操作系统的安装与基本命令
实验3:Unix操作系统的进程管理与系统监控
实验4:Windows与Linux的双系统安装及切换
实验5:操作系统安全与权限设置
三、实验步骤及答案
实验1:Windows操作系统的基本操作与文件管理
1、打开Windows操作系统,熟悉桌面环境。
2、使用鼠标和键盘进行文件和文件夹的操作,包括创建、复制、移动、删除等。
3、学习使用Windows资源管理器进行文件和文件夹的管理。
4、学习使用回收站恢复和永久删除文件。
5、掌握Windows操作系统的文件搜索功能。
实验答案:完成以上步骤,并回答以下问题:
1、简述Windows操作系统的桌面组成。
2、列举Windows资源管理器的五大功能。
3、说明回收站的作用以及如何恢复和永久删除文件。
4、如何使用Windows操作系统的文件搜索功能?
实验2:Linux操作系统的安装与基本命令
1、准备一张Linux操作系统安装盘或安装程序。
2、学习使用光驱或U盘引导安装Linux操作系统。
3、学习Linux操作系统的基本命令,如ls、cd、mkdir、rm等。
4、学习使用vi编辑器进行文件编辑。
5、掌握Linux操作系统的常用配置文件和目录结构。
实验答案:完成以上步骤,并回答以下问题:
1、简述Linux操作系统的特点。
计算机导论-实验7计算机系统管理报告
实验7—计算机系统管理实验报告我的计算机配置:
我的网络配置:
注册表:
注册表是Windows操作系统的核心数据库,存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行。简单的说系统、软件等信息全在注册表中,可以通过对注册表的修改可以改变系统信息和设置,因此可以说注册表是电脑的神经中枢是很重要的,注册表的破坏可以
引起系统的崩溃。Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的树型目录结构信息表,叫做注册表。用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。
1.注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动成为可能。
2.注册表中登录的硬件部分数据可以支持高版本Windows的即插即用特性。当Windows检测到机器上的新设备时,就把有关数据保存到注册表中,另外,还可以避免新设备与原有设备之间的资源冲突。
3.管理人员和用户通过注册表可以在网络上检查系统的配置和设置,使得远程管理得以实现。
把计算机配置得更安全,可以通过以下方法:
1.修改Windows 系统注册表的安全配置,防范I PC$(Internet Process Connection)攻击。
2. 修改Windows 系统的安全服务设置,命令:gpedit.msc, secpol.msc。
3. 修改IE 浏览器安全设置:
(1)在Internet 选项中自定义安全级别;
(2)设置添加受信任和受限制的站点。
操作系统原理实验
操作系统原理实验
操作系统是计算机系统中最核心的部分之一,它负责管理和控制计算机的硬件和软件资源,为用户提供一个良好的工作环境。操作系统原理实验是计算机相关专业的学生必修课程之一,通过实验学习,可以更深入地理解操作系统的原理和工作机制,提高对操作系统的理解和应用能力。
实验一,进程管理。
进程是操作系统中最基本的概念之一,它是程序执行的基本单位。在进程管理实验中,我们可以学习到进程的创建、调度、同步和通信等内容。通过编写程序模拟进程的创建和调度过程,可以更直观地理解操作系统是如何管理进程的。
实验二,内存管理。
内存管理是操作系统中的重要内容之一,它负责管理计算机的内存资源,包括内存的分配与回收、内存的保护和共享等。在内存管理实验中,我们可以学习到内存分配算法、地址转换技术以及虚拟内存的实现原理。通过编写程序模拟内存分配和回收的过程,可
以更好地理解操作系统是如何管理内存的。
实验三,文件系统。
文件系统是操作系统中负责管理存储设备上的文件和目录的部分,它提供了对文件的读写和管理功能。在文件系统实验中,我们可以学习到文件的组织结构、文件的存储管理和文件的访问控制等内容。通过编写程序模拟文件的创建、读写和删除过程,可以更深入地理解操作系统是如何管理文件系统的。
实验四,设备管理。
设备管理是操作系统中负责管理计算机硬件设备的部分,它包括对设备的初始化、分配和释放等功能。在设备管理实验中,我们可以学习到设备的管理方法、设备的中断处理和设备的驱动程序设计等内容。通过编写程序模拟设备的初始化和中断处理过程,可以更好地理解操作系统是如何管理设备的。
《Linux操作系统》实验七-系统管理与设备管理
《Linux操作系统》
实验报告
实验七:系统管理与设备管理
一、实验目的
(1) 掌握Linux系统的启动过程控制方法;
(2) 掌握Linux系统打印机的安装、管理与使用方法;
(3) 掌握软件包的管理与使用方法;
(4) 了解日志的结构与阅读方法。
二、实验环境
虚拟机
三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果)实验步骤及结果图为:
l)启动过程控制方法
(1) Grub启动参数的修改
使用指令init(运行级别)
0:关机
1:单用户[找回丢失密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
修改/boot/grub/grub.conf文件使得等待超时时间为3秒
vi /boot/grub/grub.conf
将timeout=10
改为:timeout=3
存盘退出(ESC:x),重启系统,观察grub的启动等待时间变化情况。
(2) 操作系统启动参数的修改
通过grub引导界面,修改系统启动参数,使用系统启动时进入单用户
参见P141示例1)。
键盘点击”e”,进入编辑模式在”scsi”后面输入”quiet 1”进入单用户。
问题:如果root密码遗忘了,应该如何处理?
重置root用户密码
(3) 切换系统的运行级别
系统启动后,按ALT+F1键,以root用户登录系统,在提示符下输入命令
init 1
执行完毕后,系统已经被切换到了单用户级运行。使用终端切换方法,看一看X-终端(默认在F7上)和从F1~F6上的其它终端是否还可以使用,为什么?
不能使用单用户模式只允许一个用户登录系统
实训7 操作系统安装和磁盘管理实训报告
实训7 操作系统安装和磁盘管理实训报
告
实训7:操作系统安装和磁盘管理实训报告
本次实训内容包括操作系统的安装和利用操作系统自带工具进行磁盘分区、格式化。实训要求是熟悉操作系统安装方法,熟练利用操作系统自带工具进行磁盘分区和格式化,了解操作系统安装过程中各项设置的含义。
实训数据记录:
操作系统版本为windows xp。
一、安装操作系统
1.设置BIOS,将CD-ROM设为第一启动设备。
步骤简述:开机,按DEL进入BIOS,点击BOOT,进入后,选择第一启动项为CDROM,按F10,保存,确定后,重启。
2.安装过程(复制文件、安装设置等)
步骤及安装过程中的设置项目记录:
1.进入后先进入磁盘软件进行磁盘全盘格式化,分区,分第一主分区为10G,设置为活动盘。设置扩展分区为剩下的所有容量。再进行分区。
2.点击进行自动安装。按着提示进行操作,包括复制安装文件、输入语言中文、填写个人信息、填写产品密钥、设置计算机名和密码、选择日期、时间和所在时区、选择典型设置、设置工作组。
3.安装组件等待安装程序进行各种组件、控制面板等项目的安装,各组件安装完成后,电脑重启。
4.设置系统自动调整屏幕分辨率确认后单击确定。
5.完成安装。
二、利用操作系统磁盘管理功能对硬盘进行分区和格式化
1.硬盘分区
分区规划:分四个区。
步骤简述:进入磁盘管理程序,进行磁盘全盘格式化,分区,分第一主分区为10G,设置为活动盘。设置扩展分区为剩下的所有容量,再进行分区。
删除原硬盘分区重新规划分区:
1.右击D盘分区,选择删除逻辑驱动器命令,单击是。
操作系统-第七章 设备管理习题(有答案)
第七章设备管理习题
一. 选择最合适的答案
1.在下面的I/O控制方式中,需要CPU干预最少的方式是()。
(A)程序I/O方式
(B)中断驱动I/O控制方式
(C)直接存储器访问DMA控制方式
(D)I/O通道控制方式
2.某操作系统中,采用中断驱动I/O控制方式,设中断时,CPU用1ms来处理中断请求,其它时间CPU完全用来计算,若系统时钟中断频率为100H Z,则,CPU的利用率为()。
(A)60% (B)70%
(C)80% (D)90%
3.下列哪一条不是磁盘设备的特点()。
(A)传输速率较高,以数据块为传输单位
(B)一段时间内只允许一个用户(进程)访问
(C)I/O控制方式常采用DMA方式
(D)可以寻址,随机地读/写任意数据块
4.利用通道实现了()之间数据的快速传输。
(A)CPU和外设(B)内存和CPU
(C)内存和外设(D)外设和外设
5.假脱机技术中,对打印机的操作实际上是用对磁盘存储实现的,用以替代打印机的部分是指()。
(A)共享设备(B)独占设备
(C)虚拟设备(D)物理设备
6.设从磁盘将一块数据传送到缓冲区所用时间为80μs,将缓冲区中数据传送到用户区所用时间为40μs,CPU处理数据所用时间为30μs,则处理该数据,采用单缓冲传送某磁盘数据,系统所用总时间为()。
(A)120μs (B)110μs
(C)150μs (D)70μs
7.对于速率为9.6KB/s的数据通信来说,如果说设置一个具有8位的缓冲寄存器,则CPU中断时间和响应时间大约分别为()。
(A)0.8ms,0.8ms (B)8ms,1ms
操作系统:实验7 操作系统的安全(实验报告)
实验7
操作系统的安全
7.1Windows的安全机制
1) 通过本实验,了解和熟悉Windows的网络安全特性和Windows提供的安全措施;
2) 学习和掌握Windows安全特性的设置方法。
1. 工具/准备工作
在开始本实验之前,请回顾教材的相关内容。
需要准备一台运行Windows系统的计算机。
2. 实验内容与步骤
本次实验机器环境安装的操作系统是:___________________________________
在“Windows资源管理器”中,右键单击机器中各个硬盘标志,选择“属性”命令,在“常规”选项卡中分别了解各个硬盘设置的“文件系统”:
C盘:_______________________________________________________________
D盘:_______________________________________________________________
E盘:_______________________________________________________________
Windows的安全机制包括哪几个方面?
____________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________
实验七设备管理指南
实验七设备管理(四课时)
一实验目的:
模拟实现包括设备的添加和删除,设备的分配和回收,体现设备分配中的设备独立性。
二内容要求:
1、设备管理模拟计算机系统的外围设备的系统结构,可以创建2个通道、3个控制器和四个外设(键盘、鼠标、显示器、打印机),键盘和鼠标使用一个控制器。
2、设备管理有添加和删除设备的功能,同时完成控制器的维护功能。
3、设备管理还包括设备的分配和回收。使学生掌握外围设备的体系结构和管理方法。成功分配的时候,用户进程使用设备,否则将被阻塞到一个级别的控制表上,等待被唤醒。设备分配必须满足设备的独立性要求。为了实现设备独立性,要求在驱动程序之上设计一层设备无关软件,其主要功能可分为执行所有设备的公有操作,主要包括:(a)独占设备的分配与回收;(b)将逻辑设备名映射为物理设备,进一步可以找到相应物理设备的驱动程序。
三实现功能:
1、增加设备
2、删除设备
3、申请设备
4、回收设备
5、显示当前所有设备的状态
四实现过程:
[cpp] view plaincopy
01.#include
02.#include<>
03.#include<>
namespace std;
BLOCK /*阻塞*/
06.{
07. char name[100]; /*阻塞态进程名称*/
08. char from[100];
09. BLOCK *next;
10.};
DCT /*设备控制表*/
12.{
13. char name[100]; /*设备名称*/
14. char type; /*设备类型:I/O*/
15. int stage; /*设备状态:1/0*/
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
广西师范大学计算机科学与信息工程学院操作系统实验书
//输出请求块,共 10 块。可循环使用。 struct {
int reqid; //请求进程的标识数 int size; //输入文件长度 int addr; //输入文件在输出井 well 的指针 }reqblock[10];
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')
f[i]=0; for (i=0;i<4;i++)
file[i]=0;
//调度进程执行 scheduler(); printf("所有文件已经输入。结束!\n"); }
//-----------------------------------------------------------------------------------//调度进程执行,直到所有数据输入完毕。
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<charnum;++k) {
k=0; while(userbuf[id][k]!=0&&k<size)
5
广西师范大学计算机科学与信息工程学院操作系统实验书
{
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) {
广西师范大学计算机科学与信息工程学院操作系统实验书
操作系统课程实验
年级
2012 级
专业 计算机科学与技术(应用型)
姓名
学号
指导教师
黄玲
日期
2013 年 12 月 26 日
1
广西师范大学计算机科学与信息工程学院操作系统实验书
实验七、设备管理实验
一、 关键问题
1、实验目的 观察 Linux 下 U 盘的访问;理解设备虚拟分配技术。
符:",id,++f[id],size);
address=address%WELLSIZE;
//真正向设备输出数据。这里是向屏幕输出。
k=0;
while((c=well[address++])!=0&&k<size) {
userbuf[id][k]=c;
address=address%WELLSIZE; k++; }
三、实现修改的关键代码
#include <stdio.h> #define WELLSIZE 500 #define FALSE 0 #define TRUE 1
//输入井的大小
//进程控制块 struct {
int id; //进程标识数 char status; //进程状态,'e'为执行态,'c'为完成态。 int bufflag; //用户缓冲区 userbuf 空闲标志:FALSE 为无数据,TRUE 为有数 据。
int x1,j,i; printf("输入到哪个用户?(1,2,3)"); scanf("%d",&x1); if(file[x1]<pcb[x1].filec) { printf("请输入内容?"); getchar(); gets(mybuf); j=strlen(mybuf); printf("输入"); puts(mybuf); printf("给用户"); printf("%d 大小为%d",x1,j); printf("\n");
void main(); void scheduler(); float random() ; void userpro(int idnum); int spoolserver(int idnum,int charnum); void spoolin();
//-----------------------------------------------------------------------------void main() {
int m; static int seed; if ((m=seed)<0)
4
广西师范大学计算机科学与信息工程学院操作系统实验书
m=-m; seed=(25173*seed+13849)%65536; return (m/32767.0); }
//------------------------------------------------------------------------------------void userpro(int idnum) { int i,k;
7
广西师范大学计算机科学与信息工程学院操作系统实验书 8
广西师范大学计算机科学与信息工程学院操作系统实验书
五、实验总结及进一步改善建议
1、通过今天的实验操作 Linux 下 U 盘的访问和模拟 spooling 系统,自己初 步熟悉理解了设备虚拟分配技术原理,特别是对 spooling 系统的输入和输出有了 更深刻的理解。
//输出缓冲区数据到输入井 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';
}
四、程序运行结果截图
if(flag)
{
id=reqblock[cbp].reqid;
size=reqblock[cbp].size;
address=reqblock[cbp].addr;//数据在输入井的起始位置
//
cbp=(++cbp)%10;//指向下一个输出块(下一个可输出的块)
printf("\n");
printf(" 用 户 %d 得 到 输 入 的 第 %d 个 文 件 , 大 小 =%d 个 字
userpro(3); else if (x>=0.95 && pcb[0].status=='e')
spoolin();//执行 SPOOLing 进程 if (n==0) //所有文件输入完毕
break; } }
//---------------------wenku.baidu.com------------------------------------------------------------float random() //产生随机数 {
2、实验环境 Ubuntu 8.0 或者以上,Eclipse 集成开发环境
3、实验内容 3.1 观察 Linux 下的 U 盘访问
从键盘获得符号串,写入磁盘文件,然后读取该文件。
3.2 设备管理模拟实验要求:设计一个 SPOOLing 输入模拟系统。提示:输入井
设计成结构体数组,每块存放一个输入文件内容。三个用户进程与一个后台输
well[wellptr++]=mybuf[k]; wellptr=wellptr%WELLSIZE; } wellsize=wellsize-charnum;
6
广西师范大学计算机科学与信息工程学院操作系统实验书
return (TRUE); }
//--------------------------------------------------------------------//SPOOLing 进程的程序 void spoolin() {
2、这次实验过程中数据结构有了更深刻的理解,特别是对 pcb 和输入请求 块链表的各项操作,以及链表等数据结构在操作系统中的应用,每次的对我的思 考能力也是不小的锻炼。
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; //输入文件总数
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; } }
二、设计修改思路
spoolout()进程:键入要输入的用户 id,如果用户输入文件未完成则键入 文件内容,将文件内容 mybuf 发到输入井。
spoolsever()输入#进程:登记输入请求块,将缓冲区 mybuf 的数据送入输入 井 well。若成功送入,返回 TRUE,否则返回 FALSE。
usepro()用户进程:遍历输入请求块如找到该用户的输入请求,将输入请 求块的数据送入用户缓冲区 userbuf,并在屏幕输出 userbuf。
pcb[i].id=i; pcb[i].status='e';//所有进程初始为可执行态 if (i) //对于用户进程 {
3
广西师范大学计算机科学与信息工程学院操作系统实验书
pcb[i].bufflag=FALSE; printf("用户%d 的输入文件数?\n",i); scanf("%d",&pcb[i].filec); n+=pcb[i].filec; } } for (i=0;i<4;i++)
入进程并发执行,后台输入进程接受用户键盘输入的文件到输入井,每个用户
进程从输入井获取输入数据。
老师所给的例子为为利用内存 SPOOLing 输入模拟系统,而问题的关键就 是如何参考 spoolout()设计 spoolin()以及修改用户进程 usepro()和输入# 进程 spoolsever()。
int i,j; printf("SPOOLing 系统\n"); //初始化 for (i=0;i<WELLSIZE;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++) //初始化进程控制块 {