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

华北电力大学操作系统实验报告

华北电力大学操作系统实验报告
华北电力大学操作系统实验报告

华北电力大学

实验报告

|

|

实验名称____ 操作系统综合实验

课程名称______ 操作系统

|

|

专业班级:网络学生姓名:

学号:成绩:

指导教师:王德文/姜丽梅实验日期:2015年11月4日

实验一实验环境的使用

一、 实验目的 1. 熟悉操作系统集成实验环境 OS Lab 的基本使用方法。 2.

练习编译、调试EOS 操作系统内核以及EOS 应用程序。

二、 实验内容 1. 启动 OS Lab;

2.

学习OS Lab 的基本使用方法:练习使用 OS Lab 编写一个 Windows 控制台应用程 序,熟悉

OS Lab 的基本使用方法(主要包括新建项目、生成项目、调试项目等);

3. EOS 内核项目的生成和调试:对 EOS 内核项目的各种操作(包括新建、生成和各 种调试功能等)与对 Windows 控制台项目的操作是完全一致的;

4. EOS 应用程序项目的生成和调试;

5.

退出 OS Labo

三、 实验内容问题及解答 1.

练习使用单步调试功能(逐过程、逐语句),体会在哪些情况下应该使用“逐过 程”调试,

在哪些情况下应该使用“逐语句”调试。练习使用各种调试工具(包括“监 视”窗口、“调用堆栈”窗口等)。

答:逐语句,就是每次执行一行语句,如果碰到函数调用,它就会进入到函数里面。 而逐过程,碰到函数时,不进入函数,把函数调用当成一条语句执行。因此,在需要进 入函数体时用逐语句调试,而不需要进入函数体时用逐过程调试。 四、实验过程 1.

新建Windows 控制台应用程序 生成项目: 执行项目: 调试项目:

int Func (Int 口〕,// 芦明F UEK 函数

i. nx n - 0, n = FunjcdO);

print f CHello World

查看 EOS SDK( Software Development Kit )文件夹: 修改EOS 应用程序项目名称:

pflMSni-E-l (Prftss Ctrl+FVFR switcli corisnlfi uiitdnu...) Ucleone to EOS shell

五、实验心得

这次是验证性试验,具体步骤和操作方法都是与实验教程参考书上一致, 实验很顺利, 实验过程没有遇到困难。通过这次实验,我掌握了 OS Lab 启动和退出操作;练习使用 OS Lab 编写一个Windows 控制台应用程序,熟悉 OS Lab 的基本使用方法新建项目、生 成项目、调试项目等。

2. 使用断点终端执行:

13

实验2操作系统的启动

一、实验目的

1.跟踪调试EOS在 PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。

2.查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。

二、使用仪器

二、实验内容

1.准备实验。

2.调试EOS操作系统的启动过程。

3.调试加载程序。Loader程序的主要任务是将操作系统内核(kernel.dll 文件)加

载到内存中,然后让CPU S入保护模式并且启用分页机制,最后进入操作系统内核开始执行(跳转到kernel.dll 的入口点执行)。

4.调试内核。

5.EOS启动后的状态和行为。查看EOS的版本号:

1)在控制台中输入命令“ ver ”后按回车。

2)输出EOS版本后的控制台如下图所示。

6.查看有应用程序运行时进程和线程的信息:

1)待EOS启动完毕,在EOS控制台中输入命令“hello ”后按回车。此时Hello.exe 应用程序就开始执行。

2)迅速按Ctrl+F2切换到控制台2,并输入命令“ pt ”后按回车。输出的进程和线程信息如下图所示

三、实验内容问题及解答

1.为什么EOS操作系统从软盘启动时要使用 boot.bin和loader.bin 两个程序?使用一个可以吗?它们各自的主要功能是什么?如果将 loader.b in的功能移动到 boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于 512字节?

答:在IDE环境启动执行 EOS操作系统时,会将boot.bin、loader.bin 和kernel.dll 三个二进制写入软盘镜像文件中,然后让虚拟机来执行软盘中的EOS操作系统。仅使用

其中一个是不能运行的。

实验3进程的创建

一、实验目的

1.练习使用EOS API函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。

2.调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。

二.实验内容

1.准备实验。启动OS Labo

2.练习使用控制台命令创建EOS应用程序的进程。使用控制台命令创建EO阪用程

序的进程如图:

9 OS L^b PC - Microsoft Virtual PC 2007 巳

3.练习通过编程的方式让应用程序创建另一个应用程序的进程。应用程序创建另一个应用程序的进程的执行结果如图:

5? OS Lab PC - Microsoft Virtual PC 2007

4.调试 CreateProcess 函数。

5.调试 PsCreateProcess 函数”。

6.练习通过编程的方式创建应用程序的多个进程

三.实验内容问题及解答

1.在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe

同时创建10个进程。提示:可以使用PROCESS_INFORMATI类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。

答:修改代码为:

STARTUPINFO StartupI nfo;

PROCESS」NF ORMATION ProcI nfo[10];

ULONG ulExitCode;

INT nResult=0;。

int i,j;//#ifdef_DEBUG__asm("i nt $3\n nop");#e ndif

prin tf("Create10p//rocessesa nd wait for the processes exit...\n\n");

StartupI nfo.Stdl nput = GetStdHa ndle(STD_INPUT_HANDLE);

Startup In fo.StdOutput = GetStdHa ndle(STD OUTPUT HANDLE);

「、实验目的和要求

1.调试线程在各种状态间的转换过程,熟悉线程的状态和转换

2.通过为线程增加挂起状态,加深对线程状态的理解。

[、实验内容及步骤

1.准备实验。启动OS Labo

2.调试线程状态的转换过程。

3.线程由阻塞状态进入就绪状态

4.线程由运行状态进入就绪状态

5.线程由就绪状态进入运行状态

6.线程由运行状态进入阻塞状态

7.为线程增加挂起状态。

8.完成Resume原语后,可以先使用suspend命令挂起loop线程,然后在控制台2 中输入命令“ Resume 31'(如果loop线程的ID是31)后按回车。命令执行成功的结果如下图所示。如果切换回控制台1后,发现loop线程的执行计数恢复增长就说明 Resume原语可以正常工作。

三、实验内容问题及解答

1.思考一下,在本实验中,当loop线程处于运行状态时,EOS^还有哪些线程,它们分别处于什么状态。可以使用控制台命令 pt查看线程的状态。

头验5进程的同步

一、实验目的和要求

1.使用EOS的信号量,编程解决生产者一消费者问题,理解进程同步的意义。

2.通过为线程增加挂起状态,加深对线程状态的理解。

2.调试跟踪EOS信号量的工作过程,理解进程同步的原理。

3.修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。

二、实验内容及步骤

1.实验准备

1)启动 OS Labb

2)新建一个EOS Kernel项目。

3)生成EOS Kernel项目,从而在该项目文件夹中生成 SDK文件夹。

4)新建一个EOS应用程序项目。

5)使用在第3步生成的SDK文件夹覆盖EO阪用程序项目文件夹中的SDK文件夹。

2.使用EOS的信号量解决生产者-消费者问题

1)使用pc.c文件中的源代码,替换之前创建的EOS应用程序项目中EOSApp.c文件内的源代码。

2)按F7生成修改后的EOS应用程序项目。

3)按F5启动调试。OS Lab会首先弹出一个调试异常对话框。

4)在调试异常对话框中选择“否”,继续执行。

5)立即激活虚拟机窗口查看生产者—消费者同步执行的过程,如图1b 6)待应用程序执行完毕后,结束此次调试。

56 78

图1

3.调试EOS信号量的工作过程。

「、实验目的及要求

1?调试EOS的线程调度程序,熟悉基于优先级的抢先式调度2?为EOS添加时间片轮转调度,了解其它常用的调度算法。[、实验内容及步骤

1. 准备实验

3. 调试线程调度程序

a )调试当前线程不被抢先的情况

b )调试当前线程被抢先的情况 4.

为EOS 添加时间片轮转调度

a )要求:修改ps/sched.c 文件中的PspRoundRobin 函数(第337行),在其中实现 时间片轮转调度算法。

b )测试:

三、实验内容问题及解答

1. 结合线程调度执行的时机,说明在ThreadFunction 函数中,为什么可以使用“关 中断”和“开中断”的方法来保护控制台这种临界资源。一般情况下,应该使用互斥信 号量(MUTE )来保护临界资源,但是在ThreadFunction 函数中却不能使用互斥信号量, 而只能使用“关中断”和“开中断”的方法,结合线程调度的对象说明这样做的原因。

答:关中断后CPU 就不会响应任何由外部设备发出的硬中断 (包括定时计数器中断和 键盘中断等)了,也就不会发生线程调度了,从而保证各个线程可以互 斥的访问控制台。 这里绝对不能使用互斥信号量(MUTE X 保护临界资源的原因:如果使用互斥信号量,则 那些由于访问临界区而被阻塞的线程,就会被放入互斥信号量的等待队列,就不会在相 应优先级的就绪队列中了,而时间片轮转调度算法是对就绪队列的线程进行轮转调度, 而不是对这些被阻塞的线程进行调度,也就无法进行实验了。使用“关中断”和“开中 断”进行同步就不会改变线程的状态,可以保证那些没有获得处理器的线程都在处于就 绪队列中。

C0NS0LE-1 Thread 0 Tliread 1 Thread Z Thread 3 Thread 4 Thread 5 Thread 6 Thread 7 Thread 8 Thread 9 Thread 10 Thread 11 Thread 12 Thread 13 Thread 14 Thread 15 Thread 16 Thread 17 Tliread 16 Tliread 19

F8 to suitch console uindou,..

□ ))))88 8 88888800 88 8 88((((((_((((

7G4 9 7Z4Z15 3960146769059 9 853485 4Z90343798Z9 2 6 586710 61Z7O 7 63 3 9434 3 333333 34444-44 443

实验八分页存储器管理

、实验目的与要求

1.学习i386处理器的二级页表硬件机制,理解分页存储器管理原理。

2.查看EOS^用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管理方式。

3.编程修改页目录和页表的映射关系,理解分页地址变换原理。

二、实验内容及步骤

1.准备实验。

2.查看EOS^用程序进程的页目录和页表。

3.查看应用程序进程和系统进程并发时的页目录和页表。

4.查看应用程序进程并发时的页目录和页表。

5.在二级页表中映射新申请的物理页。

三、实验代码

设计代码:

PRIVATE

VOID

Co nsoleCmdMemoryM ap(IN HANDLE StdHa ndle){ BOOL In tState;

五、实验心得与体会

通过操作系统试验,了解了操作系统的启动过程和运行方式,加深了对计算机操作系统的理

解。

实验10磁盘调度算法

」、实验目的

1. 通过学习EOS实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机。

2.观察EOS实现的FCFS SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法。

3.编写CSCA和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。二、实验内容

二、实验内容及步骤

1.准备实验

1)新建一个EOS Kernel项目。

2.验证先来先服务(FCFS磁盘调度算法

1)打开ke文件夹中的sysproc.c 文件。

2)打开 io/block.c 文件。

3)按F7生成,然后按F5调试。

4)在控制台中输入命令“ ds”后按回车。

5)将输出复制到一个文本文件中,然后结束此次调试。

3.验证最短寻道时间优先(SSTF磁盘调度算法

1)打开sstf.c 文件使用sstf.c 文件中lopDiskSchedule函数的函数体,替换 block.c 文件中IopDiskSchedule函数的函数体。

2)按F7生成,然后按F5调试。3.在控制台中输入命令“ ds”后按回车。

3)将输出复制到一个文本文件中,结束此次调试。

4.验证SSTF算法造成的线程“饥饿”现象

1)修改sysproc.c 文件ConsoleCmdDiskSchedule函数中的源代码,仍然使磁头初始停留在磁道10,而让其它线程依次访问磁道 78、21、9、& 11、41、10、67、12、10。

2)按F7生成,然后按F5调试。

3)在控制台中输入命令“ds”后按回车。将输出复制到一个文本文件中,结束此次

调试。

5.验证扫描(SCAN磁盘调度算法

1)打开文件夹中的scan.c文件,使用scan.c文件中IopDiskSchedule函数的函数体,替换block.c 文件中IopDiskSchedule 函数的函数体。

2)按F7生成,按F5调试。

3)在控制台中输入命令“ ds”后按回车。将输出保存到一个文本文件中。最后将ConsoleCmdDiskSchedule函数中线程访问的磁道号恢复到本实验3.2中的样子。

6.改写 SCAN算法

使用本实验3.2中的数据进行测试,确保调度的结果与图18-5中显示的一致,也可以多准备几组测试数据,保证改写的SCANT法是正确的。测试成功后,将改写的SCAN 算法源代码备份。

7.编写循环扫描(CSCAN磁盘调度算法

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

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 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;

电力系统自动化试卷及思考题答案2014年(华北电力大学)

1.那些实验是在EMS平台下进行?那些实验是在DTS平台下进行? EMS:1)电力系统有功功率分布及分析;2)电力系统无功功率分布及分析;3)电力系统综合调压措施分析;4)电力系统有功-频率分布;5)电力系统潮流控制分析;6)电力系统对称故障计算及分析;7)电力系统不对称故障及计算分析 DTS:1)电力系统继电保护动作特性分析;2)电力系统稳定性计算及分析;3)电力系统继电保护动作情况与系统稳定性关系分析 2.欲调节电压幅值,调有功P有效还是无功Q有效?为什么? 1)电压对无功变化更敏感,有功虽然对电压也有影响但是比较小 2)只考虑电压降落的纵分量:△U=(PR+QX)/U,从公式看出,电压降落跟有功P和无功Q 都有关系,只不过在高压输电系统中,电抗X>>R,这样,QX在△U的分量更大,调节电压幅值就是在调节无功。 3.重合闸有什么好处?若电气故障设为三相短路,故障分别持续t1和t2时长,则两个实验结果有什么不同? 重合闸好处:1)在线路发生暂时性故障时,迅速恢复供电,从而提高供电可靠性;2)对于有双侧电源的高压输电线路,可以提高系统并列运行的稳定性,从而提高线路的输送容量;3)可以纠正由于断路器机构不良,或继电器误动作引起的误跳闸 故障延时长的接地距离一段动作次数,相间距离一段动作次数,三相跳开次数比故障延时短的多,开关三相跳开的次数多。 4,.以实验为例,举例说明继电保护对暂态稳定的影响? 实验八中,实验项目一体现出选保护具有选择性,当其故障范围内出现故障时,有相应的断路器动作跳闸。实验项目二体现出保护是相互配合的。当本段拒动时,由上一级出口动作跳闸。实验项目三做的是自动重合闸的“前加速”和“后加速”保护。继电保护快速切除故障和自动重合闸装置就是使故障对系统的影响降到最低,尽早的将故障切除能避免故障电流对设备的冲击减小对系统的扰动,有利于暂态稳定的实现。 5.·在电力系统潮流控制分析试验中,可以通过改变发电机的无功进行潮流调整,也可以通过改变发电机所连升压变压器的分接头进行潮流调整,实验过程中这两项调整对发电机的设置有何不同?为什么? 改变发电机无功:设置发电机无功时以10MV AR增长。不能保证发电机有功功率和发电机电压恒定,他们可能会随着无功功率的改变有微小的变化。 改变变压器分接头:设置此时发电机相当于一个PV节点,即恒定的有功P和不变的电压U。原因:发电机是无功电源,也是有功电源,是电能发生元件;变压器是电能转换元件,不产生功率。 7在实验中考虑了哪些调压措施?若某节点电压(kv)/无功……电压升高3kv,则应补偿多少电容? 【实验】调节发电机端电压(调节有功,调节无功),调整变压器分接头 【百度】电力系统的调压措施主要有: 1靠调节发电机机端电压调压 2靠改变变压器分接头调压 3靠无功补偿调压 4靠线路串连电容改变线路参数调压 我的实验灵敏度系数为0.075,所以若电压升高3kv,应补偿3/0.075=40Mvar的电容 8在调频实验中。对单机单负荷系统,若发电机的额定功率……频率怎么变化?当负荷功率大于发电机功率的额定功率…… 通过K=△p/△f来判断f如何变化 9、几个实验步骤 实验九试探法求故障切除实验的实验步骤

操作系统实验心得

1-1:通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。 1-2:在实验过程中,使用VI编辑器虽然不能像window操作系统那样对文本进行熟练度编辑,但是,VI编辑器使用命令来操作,将可以锻炼我的记忆力、对键盘的熟练读,还能帮助我们尽快适应linux操作系统的操作。 1-3:原本对liunx下的编译和调试环境不是很熟悉,但通过这次的实验,让我熟悉了linux 下的编译器和调试器的使用。 实验中使用了gcc命令,gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析。 当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是链接。在链接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的库中链接到合适的地方。 1-4:API 接口属于一种操作系统或程序接口。通过实验,我了解了Windows的这种机制,加深了对API函数的理解。 2-1:通过本次实验了解了一些常用进程管理命令的使用,例如ps、kill命令,了解到换个kill与killall的不同,对于linux操作系统下的进程的学习打下基础,更好的学习进程。 2-2:本次实验是熟悉掌握Linux 系统常用进程创建与管理的系统调用,linux下使用fork()创建子进程,与windows下CreateProcess()创建子进程完全不同,通过比较小组更好的理解和掌握了进程的创建,对于进程的管理的理解也有了清晰地认识。 实验中遇到fork函数返回2次结果,经过分析结果如下: 由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。 调用fork之后,数据、堆栈有两份,代码仍然为一份但是这个代码段成为两个进程的共享代码段都从fork函数中返回,箭头表示各自的执行处。当父子进程有一个想要修改数据或者堆栈时,两个进程真正分裂。 2-3:通过这次实验对熟悉掌握和了解windows平台常用进线程控制API,有了更深刻的认识,认识到API函数对windows编程的重要性,了解进程线程在内存中的执行,特别认识互斥体Mutex对象,API函数一定要多用,才能记得。 3-1:该程序的输入变量具有限制,若输入除0和1的数据,则将视为0处理.改进的方法为修改if 语句中的条件为:1,即只要输入为非零,则有效。即逻辑表达式的值为真。(在逻辑数学里非零则表示为真!) 为了能较好的实现进程的同步,可以另外设一个标志量,标志临界资源是否正被访问,当a,b,c

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科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个部分。如下图:

实时操作系统报告

实时操作系统课程实验报告 专业:通信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];

华北电力大学电力系统分析复试面试问题

保定校区电力系统及其自动化(电自) 面试:1。在线路保护中,什么情况下三段动作了,而一段二段都没有动作。 2、线路中的零序电流怎么测得。3、变压器Y-D11接线,正序负序零序电流的相位幅值怎么变化。4、零序电流保护有么有可能存在相继动作,为什么?5、隔离开关和断路器哪个先断开,为什么?6、电厂发电过程。 英语面试问题:先自我介绍,然后问问题1、为什么选择这个专业? 2、大学里最喜欢的课? 3、家庭成员介绍 笔试继电保护:差不多忘记了。。。记得几个大题1、一个环网的最大最小分支系数分析2、消除变压器不平衡电流的方法3、高频相差保护判断4、给一个阻抗继电器动作方程,让你画两个圆5、有零序电流保护计算题6、距离保护计算是被配合段有两条分支(即外汲),记得公式就行。7、振荡考的是大圆套小圆的,让你判断两个启动元件哪个是大圆,阐述短路与振荡的动作原理,及问有可能什么时候振荡是误动。 前面小题都考的很细。 英语听力,笔试很简单,不用准备。 保定校区电力系统及其自动化(电自) 英语面试老师直接叫我翻译学校的名字还有我学的专业课是什么初是的专业课成绩还有专业英语翻译 专业面试 1 船上的频率是多少 2你知道主要有那几中频率,分别是那些国家的 3两种不同的频率是通过什么连接起来的 4什么是

svc hv 5二机管的单向导通原理 6外面高压线路和地压线路的区别7变电站的无功补偿 笔试比较难我都不会那有零序电流保护镇定保护范围距离镇定 我强烈建议把继电保护学好专业课笔试好难 趁还有印象,先回忆一下 北京校区电气与电子工程学院电力系统及自动化 面试题目: 1.变压器中性点为何要接CT? 2.三相线路,a相短路,c相非短路点的电压、电流怎么求? 3.发电机机械时间常数增大,有什么影响? 4.影响无功潮流的因素有哪些? 还有就是电能质量指标等基础问题,当时一慌,回答的都很差 口试: 自我介绍 家乡介绍,说四种电力设备,读一篇科技短文(我读完是基本没什么感觉,英语平时没学好啊) 分在同一组的,大家的问题也都不一样,不过老师们会很和蔼,到了面试时,基本没有太紧张的感觉,希望对准备考研的有所帮助啊!

操作系统实验报告心得体会

操作系统实验报告心得体会 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。 不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,

慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

操作系统实验报告

操作系统实验报告 集团企业公司编码:(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队列队尾指 针

操作系统实验报告

操作系统实验报告 实验名称: 系统的引导 所在班级: 指导老师: 老师 实验日期: 2014年3 月29 日

一、实验目的 ◆熟悉hit-oslab实验环境; ◆建立对操作系统引导过程的深入认识; ◆掌握操作系统的基本开发过程; ◆能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 二、实验容 1. 阅读《Linux核完全注释》的第6章引导启动程序,对计算机和Linux 0.11的引导过程进行初步的了解。 2. 按照下面的要求改写0.11的引导程序bootsect.s。 3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。 4. 修改build.c,以便可以使用make BootImage命令 5. 改写bootsect.s主要完成如下功能: bootsect.s能在屏幕上打印一段提示信息XXX is booting...,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等。 6. 改写setup.s主要完成如下功能: bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s 向屏幕输出一行"Now we are in SETUP"。setup.s能获取至少一个基本的硬件参数(如存参数、显卡参数、硬盘参数等),将其存放在存的特定地址,并输出到屏幕上。setup.s不再加载Linux核,保持上述信息显示在屏幕上即可。 三、实验环境

本实验使用的系统是windows系统或者是Linux系统,需要的材料是osexp。 四、实验步骤 1. 修改bootsect.s中的提示信息及相关代码; 到osexp\Linux-0.11\boot目录下会看到图1所示的三个文件夹,使用UtraEdit 打开该文件。将文档中的98行的mov cx,#24修改为mov cx,#80。同时修改文档中的第246行为图2所示的情形。 图1图2 图3 2. 在目录linux-0.11\boot下,分别用命令as86 -0 -a -o bootsect.obootsect.s和 ld86 -0 -s -obootsectbootsect.o编译和bootsect.s,生成bootsect文件; 在\osexp目录下点击MinGW32.bat依此输入下面的命令: cd linux-0.11 cd boot as86 -0 -a -o bootsect.obootsect.s ld86 -0 -s -o bootsectbootsect.o

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

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 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、现代电网有哪些特点? 答:1、由较强的超高压系统构成主网架。2、各电网之间联系较强,电压等级相对简化。3、具有足够的调峰、调频、调压容量,能够实现自动发电控制,有较高的供电可靠性。4、具有相应的安全稳定控制系统,高度自动化的监控系统和高度现代化的通信系统。5、具有适应电力市场运营的技术支持系统,有利于合理利用能源。 3、区域电网互联的意义与作用是什么? 答:1、可以合理利用能源,加强环境保护,有利于电力工业的可持续发展。 2、可安装大容量、高效能火电机组、水电机组和核电机组,有利于降低造价,节约能源,加快电力建设速度。 3、可以利用时差、温差,错开用电高峰,利用各地区用电的非同时性进行负荷调整,减少备用容量和装机容量。 4、可以在各地区之间互供电力、互通有无、互为备用,可减少事故备用容量,增强抵御事故能力,提高电网安全水平和供电可靠性。 5、能承受较大的冲击负荷,有利于改善电能质量。 6、可以跨流域调节水电,并在更大范围内进行水火电经济调度,取得更大的经济效益。 4、电网无功补偿的原则是什么? 答:电网无功补偿的原则是电网无功补偿应基本上按分层分区和就地平衡原则考虑,并应能随负荷或电压进行调整,保证系统各枢纽点的电压在正常和事故后均能满足规定的要求,避免经长距离线路或多级变压器传送无功功率。 5、简述电力系统电压特性与频率特性的区别是什么? 答:电力系统的频率特性取决于负荷的频率特性和发电机的频率特性(负荷随频率的变化而变化的特性叫负荷的频率特性。发电机组的出力随频率的变化而变化的特性叫发电机的频率特性),它是由系统的有功负荷平衡决定的,且与网络结构(网络阻抗)关系不大。在非振荡情况下,同一电力系统的稳态频率是相同的。因此,系统频率可以集中调整控制。 电力系统的电压特性与电力系统的频率特性则不相同。电力系统各节点的电压通常情况下是不完全相同的,主要取决于各区的有功和无功供需平衡情况,也与网络结构(网络阻抗)有较大关系。因此,电压不能全网集中统一调整,只能分区调整控制。

操作系统实验报告

操作系统实验报告 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的镜像文件,如图所示:

操作系统实验报告16487

西安邮电大学 (计算机学院) 课实验报告 实验名称:进程管理 专业名称:计算机科学与技术 班级: 学生: 学号(8位): 指导教师: 实验日期:*****年**月**日

一. 实验目的及实验环境 目的:(1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)分析进程竞争资源现象,学习解决进程互斥的方法。 (4)了解Linux系统中进程通信的基本原理。 环境:Linux操作系统环境: 二. 实验容 (1)阅读Linux的sched.h源文件,加深对进程管理概念的理解。 (2)阅读Linux的fork.c源文件,分析进程的创建过程。 三.方案设计 (1)进程的创建 编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。(2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。 如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 (3)①编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child Processll is Killed by Parent! Child Processl2 is Killed by Parent! 父进程等待两个子进程终止后,输出如下的信息后终止 Parent Process is Killed! 程序流程图如下:

操作系统实验报告

实验报告 实验课程名称:操作系统 实验地点:南主楼七楼机房 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 带权周转 时间

最新华北电力大学电力系统分析

华北电力大学电力系 统分析

课程编号:811 课程名称:电力系统分析基础 一、考试的总体要求 掌握电力系统的基本概念和特点,掌握电力系统各元件的参数和数学模型,掌握电力系统潮流计算的基本原理,掌握电力系统有功和无功优化运行及其调整方法,掌握短路电流计算的基本方法。 二、考试的内容 1. 电力系统的基本概念:电力系统的基本概念及系统运行的基本要求;电力系统中性点运行方式;电力系统主要的电压等级与我国电力系统的发展情况。 2. 电力系统各元件特性和数学模型:发电机组的运行特性与数学模型;输电线路、变压器、负荷的数学模型及参数计算;标幺值计算原理,理想变压器数学模型及多电压级电力网络等效电路的形成。 3. 简单电力网络的计算和分析:基于有名值与标幺值的简单电力网络(环型网、辐射型网)的潮流计算方法;有功、无功的基本电力网络潮流控制方法。 4. 复杂电力系统潮流的计算机算法:节点电压方程和电力网络方程的建立;节点导纳矩阵的形成和修改方法;功率方程及变量、节点的分类;牛顿-拉夫逊迭代法潮流计算的基本原理、数学模型和计算步骤;P-Q分解法潮流计算原理和计算步骤。 5. 电力系统的有功功率和频率调整:电力系统各种有功功率电源及各种有功备用;有功功率的平衡与最优分配方法;电力系统频

率调整的概念,自动调速系统工作原理,发电机和负荷的功频特性及其调速特性,频率的一次调整、二次调整和调频厂的选择,负荷频率控制的基本原理;联合系统调频计算。 6.电力系统的无功功率和电压调整:电力系统中无功功率的平衡和无功电源特点;电力系统中无功功率的最优分布;电力系统中枢点电压管理方式;借发电机、变压器、补偿设备调压和组合调压的原理及特点。 7.电力系统三相短路的分析与计算:电力系统故障的基本概念与危害;各种短路故障的成因;无限大功率电源供电的系统三相短路电流分析;电力系统三相短路电流的实用计算;短路电流交流分量的初始值及任意时刻值的确定方法。 8.电力系统不对称故障的分析与计算:对称分量法的原理及其在不对称故障分析中的应用;电力系统元件的序参数和等效电路;零序网络的构成方法;各种不对称短路时故障处的短路电流和电压的计算;非故障处电流、电压的计算;正序等效定则。 三、考试的题型 判断题、选择题、简答题、计算题。

操作系统实验报告

操作系统实验报告 银行家算法 班级:计算机()班 姓名:李君益 学号:(号) 提交日期: 指导老师: 林穗 一、设计题目 加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。 二、设计要求

内容: 编制银行家算法通用程序,并检测思考题中所给状态的安全性。 要求: (1)下列状态是否安全?(三个进程共享个同类资源) 进程已分配资源数最大需求数 (状态) (状态) (2)考虑下列系统状态 分配矩阵最大需求矩阵可用资源矩阵 问系统是否安全?若安全就给出所有的安全序列。若进程请求(),可否立即分配? 三、设计分析 一.关于操作系统的死锁 .死锁的产生 计算机系统中有许多独占资源,他们在任一时刻只能被一个进程使用,如磁带机,绘图仪等独占型外围设备,或进程表,临界区等软件资源。两个进程同时向一台打印机输出将导致一片混乱,两个进程同时进入临界区将导致数据库错误乃至程序崩溃。正因为这些原因,所有操作系统都具有授权一个进程独立访问某一辞源的能力。一个进程需要使用独占型资源必须通过以下的次序: ●申请资源 ●使用资源 ●归还资源 若申请施资源不可用,则申请进程进入等待状态。对于不同的独占资源,进程等待的方式是有差别的,如申请打印机资源、临界区资源时,申请失败将一位这阻塞申请进程;而申请打开文件文件资源时,申请失败将返回一个错误码,由申请进程等待一段时间之后重试。只得指出的是,不同的操作系统对于同一种资源采取的等待方式也是有差异的。 在许多应用中,一个进程需要独占访问多个资源,而操作系统允许多个进程并发执行共享系统资源时,此时可能会出现进程永远被阻塞的现象。这种现象称为“死锁”。 2.死锁的定义 一组进程处于死锁状态是指:如果在一个进程集合中的每个进程都在等待只能由该集合中的其他一个进程才能引发的时间,则称一组进程或系统此时发生了死锁。 .死锁的防止 .死锁产生的条件: ●互斥条件

操作系统实验报告(进程的创建)

实验题目进程的创建小组合作否姓名班级学号 一、实验目的 1、了解进程的创建。 2、了解进程间的调用以及实现。 3、分析进程竞争资源的现象,学习解决互斥的方法。 4、加深对进程概念的理解,认识并发执行的本质。 二.实验环境 Windows 系统的计算机一台,安装了Linux虚拟机 三、实验内容与步骤 1、fork()系统调用的使用例子 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid;int loc=3; printf("before fork();glod=%d,loc=%d.\n",glob,loc); if((pid=fork())<0) { printf("fork() error. \n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes glob and loc: \n"); } else

wait(0); printf("parent process doesn't change the glob and loc:\n"); printf("glob=%d,loc=%d\n",glob,loc); exit(0); } 运行结果: 2、理解vofork()调用: 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid; int loc=3; if((pid=vfork())<0) { printf("vfork() error\n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes the glob and loc\n"); exit(0); } else printf ("parent process doesn't change the glob and loc\n"); printf("glob=%d,val=%d\n",glob,loc);

相关文档
相关文档 最新文档