文档库 最新最全的文档下载
当前位置:文档库 › 南昌大学操作系统实验报告

南昌大学操作系统实验报告

南昌大学操作系统实验报告
南昌大学操作系统实验报告

南昌大学实验报告

---(3)进程调度算法的实现

学生姓名:张皓然学号:5501215001 专业班级:本硕151

实验类型:□验证□综合■设计□创新实验日期:2017.5.31 实验成绩:一、实验目的

通过实验加强对进程调度算法的理解和掌握。

二、实验内容

编写程序实现进程调度算法,具体可以编写程序实现优先度高者调度算法或先来先服务算法。

三、实验要求

1、需写出设计说明;

2、设计实现代码及说明

3、运行结果;

四、主要实验步骤

○1优先度高者调度算法实验代码:

#include

#include

#include

#include

#include

#define runtime 2

#define overflow -2

#define null 0

enum sta { run, wait, finished };//枚举类型sta,标志三种状态

time_t t; //system clock

struct block

{

int time_used;

int prior;

};//定义结构体,使用时间,优先级

typedef struct pro

{

char name[20];

enum sta status;

int time_required;

int arrive_time;

struct block switch_block;

struct pro *next;

}*pcb;//定义pcb块

pcb ready;

void menu();

void insertpcb(pcb newp) //插入至就绪队列

{

pcb p;

p = (pcb)malloc(sizeof(struct pro));

if (!p)exit(overflow);

p = ready;

if (p->next == null)

{

newp->next = ready->next;

ready->next = newp;

}

else

{

while (newp->switch_block.priornext->switch_block.prior&&p->next != null)

p = p->next;

newp->next = p->next;

p->next = newp;

}

}

void creat_pcb() //创建一个进程

{

pcb newp;

newp = (pcb)malloc(sizeof(struct pro));

if (!newp) exit(overflow);

newp->status = wait;

time(&t);

newp->arrive_time = t;

printf("process name:");

scanf("%s", newp->name);

printf("priority:");

scanf("%d", &newp->switch_block.prior);

printf("arrive time:");

scanf("%d", &newp->arrive_time);

printf("cputime_required:");

scanf("%d", &newp->time_required);

newp->switch_block.time_used = 0;

insertpcb(newp);

menu();

}

void printpcb() //打印现状

{

pcb p;

if (ready->next) {

printf("name status priority server_time arrive_time cputime_used\n");

for (p = ready->next; p != null; p = p->next)

{

printf("%s", p->name);

switch (p->status)

{

case wait:printf(" wait"); break;

case run:printf(" run"); break;

case finished:printf(" finished"); break;

}

printf("%7d", p->switch_block.prior);

printf("%15d", p->time_required);

printf("%20d", p->arrive_time);

printf("%13d", p->switch_block.time_used);

putchar('\n');

}

}

else printf("queue is empty!\n");

}

void switchprocess() //将内存中的进程切换至外存

{

char temp[20];

pcb p, q;

if (ready->next)

{

printf("input process name:");

scanf("%s", temp);

for (p = ready; p != null&&strcmp(temp, p->next->name) != 0; p = p->next);

if (p != null)

{

q = p->next;

p->next = q->next;

printf("remove %s successfully!\n", q->name);

free(q);

printpcb();

}

else printf("found no process\n");

}

else printf("queue empty!\n");

menu();

}

void runprocess() //进程调度

{

pcb p = ready->next;

if (p)

{

printf("%s is running.....\n", p->name);

p->status = run;

p->switch_block.prior--;

p->switch_block.time_used += runtime;

if (p->switch_block.time_used >= p->time_required)

{

p->status = finished;

printpcb();

ready->next = p->next;

printf("%s have been removed from the ready_queue....\n", p->name);

free(p);

}

else

{

printpcb();

printf("%s have used up the run_time\n", p->name);

p->status = wait;

ready->next = p->next;

insertpcb(p);

}

}

else printf("queue empty!\n");

menu();

}

void menu()//选择菜单

{

int coos;

printf("1.creat a process\n");

printf("2.run a process\n");

printf("3.remove a process\n");

printf("4.exit\n");

printf("choose(1-4):");

scanf("%d", &coos);

switch (coos)

{

case 1:creat_pcb(); break;

case 2:runprocess(); break;

case 3:switchprocess(); break;

case 4:exit(0); break;

}

}

int main()

{

//clrscr();

ready = (pcb)malloc(sizeof(struct pro));

if (!ready) exit(overflow);

ready->next = null;

menu();

return 0;

实验过程:

○1优先度高者调度算法实验结果截图:

先创建进程a、b、c,

设a进程优先级为2,到达时间为2,cpu处理时间为1;

设b进程优先级为5,到达时间为0,cpu处理时间为6;

设c进程优先级为4,到达时间为2,cpu处理时间为2;

设定进程a、b、c

开始运行进程,首先运行0时刻到达的优先级最高的进程b

进程b在

运行

运行结束后,进程b的优先级变为4,cpu使用时间为2,此时进程b和c优先级相同,系统仍然调用进程b;

还是进程b

再次运行进程b以后,b的优先级掉为3,而且进程b还差2个时间单位才能运行结束,此时c为优先级最高的进程,系统调用进程c

调度进程c

因为进程c的cpu需要时间仅为2个时间单位,所以进程c运行结束,finished,c被移除就绪序列;

进程c结束

进程b回归

然后系统重新调用进程b,b运行结束;

最后系统调度优先级最低的进程a,结束进程调度过程,队列空。

○2先来先服务算法:

调度进程a 进程b结束

WEB编程实验报告---南昌大学

实验报告 实验课程:JA V A WEB编程技术 学生姓名: 学号: 专业班级:物流101班 2013年 06 月 12 日 目录

实验一WEB编程环境......................... 错误!未定义书签。实验二HTML和CSS编程技术 (7) 实验三JA V ASCRIPT编程技术 (10) 实验四SERVLET编程技术 (13) 实验五JSP编程技术 (16) 实验六JA V ABEAN编程技术 (21) 实验七基于MVC模式构建系统 (25) 南昌大学实验报告 学生姓名:学号:专业班级:物流101班

实验类型:□验证□综合■设计□创新实验日期:实验成绩: 一、实验项目一Web编程环境 二、实验目的 第1章搭建Web编程环境,能正确安装配置java运行环境、WEB服务器和数据库服务器 第2章熟悉WEB编程集成环境MYEclipse. 第3章熟练掌握WEB工程的创建、发布、运行流程。 三、实验内容 1.安装并配置java运行环境JDK和JRE 2.安装Web服务器tomcat, 配置Tomcat服务器 3.安装并配置数据库MySQL. 4.安装MyEclispe,熟悉各项菜单项 5.为MyEclispe集成配置JDK和Tomcat 6.创建、发布、运行一个WEB工程。 四、实验仪器及耗材 计算机,JDK,TOMCA T, MySQL, MyEclipse等软件。 五、实验步骤 1.先安装jdk1.6,选择自定义安装,安装到C:\JDK 2.配置环境变量,class:.;C:\JDK\bin , classpath:.;C:\JDK\lib ,java_home: C:\JDK 安装tomcat,安装在C:\ Tomcat 下,配置tomcat_home环境变量,CATALINA_HOME: C: \Tomcat,CATALINA_BASE: C: \Tomcat,TOMCAT_HOME: C:\Tomcat 然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar 追加到classpath中去,修改后的classpath如下: classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\c ommon\lib\servlet.jar;

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

操作系统实验报告

操作系统实验报告 ' 学号: 姓名: 指导老师: 完成日期: ~

目录 实验一 (1) 实验二 (2) 实验三 (7) 实验四 (10) 实验五 (15) 实验六 (18) 实验七 (22) \

实验一 UNIX/LINUX入门 一、实验目的 了解 UNIX/LINUX 运行环境,熟悉UNIX/LINUX 的常用基本命令,熟悉和掌握UNIX/LINUX 下c 语言程序的编写、编译、调试和运行方法。 二、实验内容 熟悉 UNIX/LINUX 的常用基本命令如ls、who、pwd、ps 等。 练习 UNIX/LINUX的文本行编辑器vi 的使用方法 熟悉 UNIX/LINUX 下c 语言编译器cc/gcc 的使用方法。用vi 编写一个简单的显示“Hello,World!”c 语言程序,用gcc 编译并观察编译后的结果,然后运行它。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验程序 #include <> #include <> int main() { printf ("Hello World!\n"); return 0; } 五、实验感想 通过第一次室验,我了解 UNIX/LINUX 运行环境,熟悉了UNIX/LINUX 的常用基本命令,熟悉和掌握了UNIX/LINUX 下c 语言程序的编写、编译、调试和运行方法。

实验二进程管理 一、实验目的 加深对进程概念的理解,明确进程与程序的区别;进一步认识并发执行的实质。 二、实验内容 (1)进程创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a“;子进程分别显示字符”b“和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程控制 修改已编写的程序,将每一个进程输出一个字符改为每一个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 (3)进程的管道通信 编写程序实现进程的管道通信。使用系统调用pipe()建立一个管道,二个子进程P1 和P2 分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,再接收P2)。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验设计 1、功能设计 (1)进程创建 使用fork()创建两个子进程,父进程等待两个子进程执行完再运行。 (2)进程控制 使用fork()创建两个子进程,父进程等待两个子进程分别输出一句话再运行。 (3)进程的管道通信 先创建子进程1,向管道写入一句话,子进程1结束后创建子进程2,向管道写入一句话,最后父进程从管道中读出。 2、数据结构 子进程和管道。 3、程序框图

江苏大学 计算机图形学第三次实验报告 二维图形变换

计算机科学与通信工程学院 实验报告 课程计算机图形学 实验题目二维图形变换 学生姓名 学号 专业班级 指导教师 日期

成绩评定表

二维图形变换 1. 实验内容 完成对北极星图案的缩放、平移、旋转、对称等二维变换。 首先要建好图示的北极星图案的数据模型(顶点表、边表)。另外,可重复调用“清屏”和“暂停”等函数,使整个变换过程具有动态效果。 2. 实验环境 操作系统:Windows XP 开发工具:visual studio 2008 3. 问题分析 为了建立北极星图形,首先在二维空间中根据坐标绘制出北极星图形。并且在此坐标系中确定好走笔顺序以便于进行连线操作。 同时需要好好的使用清屏函数以使得显示正常。 1. 放大缩小变换 放大缩小变换公式为:x’=x.a, y’=y.d; 其中a,d分别为x,y方向的放缩比例系数。 可通过不同的比例系数来显示程序运行结果。当a=d时为等比例放缩操作。可令变换矩阵为T。 2. 对称变换 包括以x轴对称、y轴对称和原点O对称三种。由于屏幕坐标只有第一象限,我们可以将原点平移到(500,240)处。在第一象限画出一个三角形,然后分别求出三个对称图形。 3. 旋转变换 将图形上的点(x,y)旋转θ角度,得到新的坐标(x’,y’)为: x’=xcosθ-ysinθ, y’=xsinθ+ycosθ;

旋转矩阵T为4.平移变换 4. 算法设计 5. 源代码

//北极星 void hzbjx(CDC* pDC,long x[18],long y[18]) { CPen newPen1,*oldPen; newPen1.CreatePen(PS_SOLID,2,RGB(255,0,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex1[11]={{x[1],y[1]},{x[2],y[2]},{x[3],y[3]},{x[4],y[4]},{x[5],y[5]},{x[3],y[3]},{x[1],y[1]},{ x[6],y[6]},{x[3],y[3]},{x[7],y[7]},{x[5],y[5]}}; pDC->Polyline(vertex1, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,255,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex2[5]={{x[6],y[6]},{x[8],y[8]},{x[9],y[9]},{x[3],y[3]},{x[8],y[8]}}; pDC->Polyline(vertex2, 5); POINT vertex3[5]={{x[4],y[4]},{x[10],y[10]},{x[11],y[11]},{x[3],y[3]},{x[10],y[10]}}; pDC->Polyline(vertex3, 5); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(255,0,90)); oldPen = pDC->SelectObject(&newPen1); POINT vertex4[11]={{x[12],y[12]},{x[13],y[13]},{x[3],y[3]},{x[9],y[9]},{x[14],y[14]},{x[15],y[15]},{x[ 3],y[3]},{x[11],y[11]},{x[12],y[12]},{x[3],y[3]},{x[14],y[14]}}; pDC->Polyline(vertex4, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,100,255)); oldPen = pDC->SelectObject(&newPen1); POINT vertex5[5]={{x[15],y[15]},{x[16],y[16]},{x[3],y[3]},{x[16],y[16]},{x[7],y[7]}}; pDC->Polyline(vertex5, 5); POINT vertex6[5]={{x[2],y[2]},{x[17],y[17]},{x[3],y[3]},{x[17],y[17]},{x[13],y[13]}};

南昌大学化学实验报告

南昌大学化学实验报告 篇一:南昌大学实验报告 南昌大学实验报告 学号:6100512094 专业班级:信息管理与信息系统122班 实验类型:□验证□综合□设计□创新实验日期:XX/4/3 实验成绩: 实验一实验环境的建立 一、实验目的: 1.了解SQL Server XX常用版本和对操作系统的不同要求 2.熟悉SQL Server XX的基本性能 3.正确安装和配置SQL Server XX 二、实验基本原理 SQL即结构化查询语言,是关系数据库的标准语言,SQL 是一个综合的、功能极强同时又简洁易学的语言。它集数据查询、数据操纵、数据定义和数据控制功能于一体。自SQL 成为国际标准语言之后,各个数据库厂家纷纷推出各自的SQL软件或与SQL的接口软件。这就使大多数 数据库均用SQL作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作有了共同的基础。

三、主要仪器设备及耗材 相互连成LAN的计算机2台以上,windows XX server 操作系统,SQL Server XX安装标准版安装软件。 四、实验步骤 安SQL Server XX:将安装光盘放入CD-ROM,将自动弹出“SQL Server自动菜单”界面,如果没有自动弹出则选择光盘根目录下的autorun.exe,双击运行: 选择运行“安装SQL Server XX组件”进入安装组件界面,选择“安装数据库服务器”。进入安装界面后,按照安装提示进行安装;一般需要人工进行干预的有: 选择安装类型和安装路径:安装类型有:典型安装、最小安装、和自定义安装。安装路径是指SQL Server的系统文件和数据文件的安装位置。默认情况下“安装类型”是典型安装,“安装路径”是操作系统设定的“Program Files”文件夹。你可以自行改变,初次安装最好不要改变他,按默认情况使用; 配置启动服务的帐号:有两类用户帐号:一类是与Windows操作系统的集成帐号,一类是混合帐号。选择第一类帐号进行安装;配置服务器端网络库:SQL Server支持多种网络库,这些网络库必须与操作系统的网络协议共同工作,才能实现客户机与数据库服务器的通信。安装完成后,可以通过操作系统的开始菜单操作:“开始”―>SQL Server”->

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

电大操作系统本科实验报告

中央广播电视大学计算机科学与技术专业操作系统(本科) 实验报告 院系:_______________ 班级:________ 学生姓名:_____________ 学号:______ 指导教师:________ 完成日期2015年月日

一、实验题目: Linux应用及shell编程 二、实验目的和要求: 目的 1.掌握Linux一般命令格式和常用命令。 2.学会使用vi编辑器建立、编辑文本文件。 3.了解shell的作用和主要分类。 4.学会bash脚本的建立和执行方式。 5.理解bash的基本语法。 6.学会编写简单的shell脚本。 要求 1.登录进入系统,修改个人密码。 2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。 3.进入vi。建立一个文件,如。进入插入方式,输入一个C语言程序的各行内容,故意制造几处错误。最后,将该文件存盘。回到shell状态下。 4.运行,编译该文件,会发现错误提示。理解其含义。 5.利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行该脚本。 6.对主教材第2章中的适当例题进行编辑,然后执行。从而体会通配符、引号、输入输出重定向符、成组命令的作用;能正确使用自定义变量、位置参数、环境变量、输入/输出命令;能利用if语句、while语句、for语句和函数编写简单的脚本。 三、实验内容: 1.正确地登录和退出系统。 2.熟悉使用ls,cp,cat,等常用命令。 3.进入和退出vi。利用文本插入方式建立一个文件。

5.建立简单shell脚本并执行它。 四、实验技术和方法: Linux中各种脚本语言 五、实验环境: 虚拟机,ubuntuserver版,shell 六、实验步骤和结果: 1.正确地登录和退出系统。 使用exit命令退出系统 2.熟悉使用cat,cd,cp,ls,mor,rm,vi,who等常用命令。 2.使用vi编写 按:wq存储,并退出 5.建立shell脚本并执行它。 使用VI创建ex1文件,内容含三条命令date/pwd/cd.. 七、实验结果分析: 无 实训3 一、实验题目: 进程管理 二、实验目的和要求: 目的 1.加深对进程概念的理解,明确它与程序的区别,突出理解其动态性特征。

江苏大学物理实验考试题库和答案完整版

大学物理实验A(II)考试复习题 1.有一个角游标尺,主尺的分度值是°,主尺上29个分度与游标上30个分度等弧长,则这个角游标尺的最小分度值是多少? 30和29格差1格,所以相当于把这1格分成30份。这1格为°=30′,分成30份,每份1′。 2.电表量程为:0~75mA 的电流表,0~15V 的电压表,它们皆为级,面板刻度均为150小格,每格代表多少?测量时记录有效数字位数应到小数点后第几位(分别以mA 、V 为记录单位)?为什么? 电流表一格小数点后一位 因为误差, 电压表一格小数点后两位,因为误差,估读一位 ***3.用示波器来测量一正弦信号的电压和频率,当“Y轴衰减旋钮”放在“2V/div”档,“时基扫描旋钮”放在“div”档时,测得波形在垂直方向“峰-峰”值之间的间隔为格,横向一个周期的间隔为格,试求该正弦信号的有效电压和频率的值。 f=1/T=1÷×= U 有效=÷根号2= ***4.一只电流表的量程为10mA ,准确度等级为级;另一只电流表量程为15mA ,准确度等级为级。现要测量9mA 左右的电流,请分析选用哪只电流表较好。 量程为10mA ,准确度等级为级的电流表最大误差,量程为15mA ,准确度等级为级,最大误差,所以选用量程为15mA ,准确度等级为级 5. 测定不规则固体密度 时,,其中为0℃时水的密度,为被测物在空气中的称量质量,为被测物完全浸没于水中的称量质量,若被测物完全浸没于水中时表面附 有气泡,试分析实验结果 将偏大还是偏小?写出分析过程。 若被测物浸没在水中时附有气泡,则物体排开水的体积变大,物体所受到的浮力变大,则在水中称重结果将偏小,即m 比标准值稍小,可知0ρρm M M -=将偏小 6.放大法是一种基本的实验测量方法。试写出常用的四种放大法,并任意选择其中的两种方法,结合你所做过的大学物理实验,各举一例加以说明。 累计放大法 劈尖干涉测金属丝直径的实验中,为了测出相邻干涉条纹的间距 l ,不是仅对某一条纹测量,而是测量若干个条纹的总间距 Lnl ,这样可减少实验的误差。 机械放大法 螺旋测微器,迈克尔孙干涉仪读数系统

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

南昌大学《MATLAB与控制系统仿真》实验报告综述

实验报告 实验课程: MATLAB与控制系统仿真 姓名: 学号: 专业班级: 2016年 6月

目录实验一 MATLAB的环境与基本运算(一) 实验二 MATLAB的环境与基本运算(二) 实验三 MATLAB语言的程序设计 实验四 MATLAB的图形绘制 实验五基于SIMULINK的系统仿真 实验六控制系统的频域与时域分析 实验七控制系统PID校正器设计法 实验八线性方程组求解及函数求极值

实验一 MATLAB的环境与基本运算(一) 一、实验目的 1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算 二、实验基本原理 1.熟悉MATLAB环境: MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。 2.掌握MA TLAB常用命令 表1 MA TLAB常用命令 3.MATLAB变量与运算符 3.1变量命名规则 3.2 MATLAB的各种常用运算符 表2 MA TLAB算术运算符 表4 MATLAB逻辑运算符

表5 MATLAB特殊运算 4.MATLAB的一维、二维数组的寻访 表6 子数组访问与赋值常用的相关指令格式 三、主要仪器设备及耗材 计算机 四、实验内容 1.新建一个文件夹(自己的名字命名,在机器的最后一个盘符) 2.启动MATLAB,将该文件夹添加到MATLAB路径管理器中。 3.学习使用help命令。 4.窗口命令 ● close ● close all ● clc ● hold on ● hold off 了解其功能和作用,观察command window、command history和workspace等窗口的变化结果。5.工作空间管理命令 ● who ● whos ● clear 6.随机生成一个2×6的矩阵,写出实现矩阵左旋(以第1行第1列为中心逆时针)90°或右旋(顺

操作系统实验报告-中南大学

操作系统原理试验报告 班级: 学号: 姓名:

实验一:CPU调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 四、实验要求 PCB内容: 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度 4、最好采用图形界面; 5、可随时增加进程; 6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备 队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。 7、每次调度后,显示各进程状态。 实验二:内存管理 一、实验内容 主存储器空间的分配和回收 二、实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 三、实验题目 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验要求 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并 .1、Vo类说明(数据存储结构) 进程控制块PCB的结构: Public class PCB{ //进程控制块PCB,代表一个进程 //进程名,作为进程的标识; private String name; //要求运行时间,假设进程运行的单位时间数; private int time; //赋予进程的优先权,调度时总是选取优先数小的进程先执行; private int priority; //状态,假设有“就绪”状态(ready)、“运行”状态(running)、 //“后备”状态(waiting)、“挂起”状态(handup) private String state; //进程存放在table中的位置 private int start; //进程的大小 private int length; //进程是否进入内存,1为进入,0为未进入 private int isIn; //进程在内存中的起始位置 private int base; //进程的大小 private int limit; //一些get和set方法以及构造器省略… };

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

操作系统实验报告

《操作系统原理》实验报告 实验项目名称:模拟使用银行家算法判断系统的状态 一、实验目的 银行家算法是操作系统中避免死锁的算法,本实验通过对银行家算法的模拟,加强对操作系统中死锁的认识,以及如何寻找到一个安全序列解除死锁。 二、实验环境 1、硬件:笔记本。 2、软件:Windows 7 , Eclipse。 三、实验内容 1.把输入资源初始化,形成资源分配表; 2.设计银行家算法,输入一个进程的资源请求,按银行家算法步骤进行检查; 3.设计安全性算法,检查某时刻系统是否安全; 4.设计显示函数,显示资源分配表,安全分配序列。 四、数据处理与实验结果 1.资源分配表由进程数组,Max,Allocation,Need,Available 5个数组组成; 实验采用数据为下表: 2.系统总体结构,即菜单选项,如下图

实验的流程图。如下图 3.实验过程及结果如下图所示

1.首先输入进程数和资源类型及各进程的最大需求量 2.输入各进程的占有量及目前系统的可用资源数量 3.初始化后,系统资源的需求和分配表 4.判断线程是否安全

5.对线程进行死锁判断 五、实验过程分析 在实验过程中,遇到了不少问题,比如算法无法回滚操作,程序一旦执行,必须直接运行到单个任务结束为止,即使产生了错误,也必须等到该项任务结束才可以去选择别的操作。但总之,实验还是完满的完成了。 六、实验总结 通过实验使我对以前所学过的基础知识加以巩固,也对操作系统中抽象理论知识加以理解,例如使用Java语言来实现银行家算法,在这个过程中更进一步了解了银行家算法,通过清晰字符界面能进行操作。不过不足之处就是界面略显简洁,对于一个没有操作过计算机的人来说,用起来可能还是有些难懂。所以,以后会对界面以及功能进行完善,做到人人都可以看懂的算法。

操作系统实验报告

实验报告 实验课程名称:操作系统 实验地点:南主楼七楼机房 2018—2019学年(一)学期 2018年 9月至 2019 年 1 月 专业: 班级: 学号: 姓名: 指导老师:刘一男

实验一 实验项目:分时系统模拟 实验学时:2实验日期: 2018-10-25 成绩: 实验目的利用程序设计语言模拟分时系统中多个进程按时间片轮转调度算法进行进程调度的过程; 假设有五个进程A,B,C,D,E,它们的到达时间及要求服务的时间分别为:进程名 A B C D E 到达时间0 1 2 3 4 服务时间 4 3 4 2 4 时间片大小为1,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。 执行过程并计算各进程的周转时间及带权周转时间。 轮转调度:BDACE

(1)修改时间片大小为2,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间。 轮转调度:ADBCE (2)修改时间片大小为4,利用程序模拟A,B,C,D,E五个进程按时间片轮转的调度及执行过程并计算各进程的周转时间及带权周转时间.

顺序:ABCDE 1、思考 时间片的大小对调度算法产生什么影响?对计算机的性能产生什么影响?答:通过对时间片轮转调度算法中进程最后一次执行时间片分配的优化,提出了一种改进的时间片轮转调度算法,该算法具有更好的实时性,同时减少了任务调度次数和进程切换次数,降低了系统开销,提升了CPU的运行效率,使操作系统的性能得到了一定的提高。 A B C D E 时间片为1 周转时间12 9 14 8 13 3 3 3.5 4 3.25 带权周转 时间 时间片为2 周转时间8 12 13 7 13 2 4 3.25 3.5 3.25 带权周转 时间 时间片为4 周转时间 4 6 9 10 13 1 2 2.25 5 3.25 带权周转 时间

操作系统实验报告

操作系统实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

许昌学院 《操作系统》实验报告书学号: 姓名:闫金科 班级:14物联网工程 成绩: 2016年02月

实验一Linux的安装与配置 一、实验目的 1.熟悉Linux系统的基本概念,比如Linux发行版、宏内核、微内核等。 2.掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方 法。 3.熟悉Linux系统的文件系统结构,了解Linux常用文件夹的作用。 二、实验内容 1.从网络上下载VMware软件和两个不同Linux发行版镜像文件。 2.安装VMware虚拟机软件。 3.在VMware中利用第一个镜像文件完成第一个Linux的安装,期间完成网络 信息、用户信息、文件系统和硬盘分区等配置。 4.在VMware中利用第二个镜像文件完成第二个Linux的安装,并通过LILO或 者GRUB解决两个操作系统选择启动的问题。 5.启动Linux系统,打开文件浏览器查看Linux系统的文件结构,并列举出 Linux常用目录的作用。 三、实验过程及结果 1、启动VMware,点击新建Linux虚拟机,如图所示: 2、点击下一步,选择经典型,点击下一步在选择客户机页面选择 Linux,版本选择RedHatEnterpriseLinux5,如图所示: 3、点击下一步创建虚拟机名称以及所要安装的位置,如图所示: 4、点击下一步,磁盘容量填一个合适大小,此处选择默认值大小 10GB,如图所示: 5、点击完成,点击编辑虚拟机设置,选择硬件选项中的CD-ROM (IDE...)选项,在右侧连接中选择“使用ISO镜像(I)”选项,点 击“浏览”,找到Linux的镜像文件,如图所示:

(完整版)江苏大学物理实验考试题库和答案完整版

WORD 格式 整理 大学物理实验A(II)考试复习题 1.有一个角游标尺,主尺的分度值是0.5°,主尺上29个分度与游标上30个分度等弧长,则这个角游标尺的最小分度值是多少? 30和29格差1格,所以相当于把这1格分成30份。这1格为0.5°=30′,分成30份,每份1′。 2.电表量程为:0~75mA 的电流表,0~15V 的电压表,它们皆为0.5级,面板刻度均为150小格,每格代表多少?测量时记录有效数字位数应到小数点后第几位(分别以mA 、V 为记录单位)?为什么? 电流表一格0.5mA 小数点后一位 因为误差0.4mA, 电压表一格0.1V 小数点后两位,因为误差0.08V ,估读一位 ***3.用示波器来测量一正弦信号的电压和频率,当“Y 轴衰减旋钮”放在“2V/div ”档,“时基扫描旋钮”放在“0.2ms/div ”档时,测得波形在垂直方向“峰-峰”值之间的间隔为8.6格,横向一个周期的间隔为9.8格,试求该正弦信号的有效电压和频率的值。 f=1/T=1÷(9.8×0.0002)=510.2 U 有效=8.6÷根号2=6.08V ***4.一只电流表的量程为10mA ,准确度等级为1.0级;另一只电流表量程为15mA ,准确度等级为0.5级。现要测量9mA 左右的电流,请分析选用哪只电流表较好。 量程为10mA ,准确度等级为1.0级的电流表最大误差0.1mA,量程为15mA ,准确度等级为0.5级,最大误差0.075mA,所以选用量程为15mA ,准确度等级为0.5级 5. 测定不规则固体密度 时,,其中为0℃时水的密度,为被测物在空气中的称量质量,为被测物完全浸没于水中的称量质量,若被测物完全浸没于水中时表面附 有气泡,试分析实验结果 将偏大还是偏小?写出分析过程。 若被测物浸没在水中时附有气泡,则物体排开水的体积变大,物体所受到的浮力变大,则在水中称重结果将偏小,即m 比标准值稍小,可知0ρρm M M -=将偏小 6.放大法是一种基本的实验测量方法。试写出常用的四种放大法,并任意选择其中的两种方法,结合你所做过的大学物理实验,各举一例加以说明。 累计放大法 劈尖干涉测金属丝直径的实验中,为了测出相邻干涉条纹的间距 l ,不是仅对某一条纹测量,而是测量若干个条纹的总间距 Lnl ,这样可减少实验的误差。

相关文档