东北大学-操作系统实验三分析报告

东北大学-操作系统实验三分析报告
东北大学-操作系统实验三分析报告

东北大学-操作系统实验三报告

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

操作系统实验报告

班级物联网1302班

学号

姓名

实验3 进程同步和通信-生产者和消费者问题模拟1. 目的:

调试、修改、运行模拟程序,通过形象化的状态显示,使学生理解进程的概念,了解同步和通信的过程,掌握进程通信和同步的机制,特别是利用缓冲区进行同步和通信的过程。通过补充新功能,使学生能灵活运用相关知识,培养创新能力。

2. 内容及要求:

1) 调试、运行模拟程序。

2) 发现并修改程序中不完善的地方。

3) 修改程序,使用随机数控制创建生产者和消费者的过程。

4) 在原来程序的基础上,加入缓冲区的写互斥控制功能,模拟多个进程存取一个公共缓冲区,当有进程正在写缓冲区时,其他要访问该缓冲区的进程必须等待,当有进程正在读取缓冲区时,其他要求读取的进程可以访问,而要求写的进程应该等待。

5) 完成1)、2)、3)功能的,得基本分,完成4)功能的加2分,有其它功能改进的再加2分

3. 程序说明:

本程序是模拟两个进程,生产者(producer)和消费者(Consumer)工作。生产者每次产生一个数据,送入缓冲区中。消费者每次从缓冲区中取走一个数据。缓冲区可以容纳8个数据。因为缓冲区是有限的,因此当其满了时生产者进程应该等待,而空时,消费者进程应该等待;当生产者向缓冲区放入了一个数据,应唤醒正在等待的消费者进程,同样,当消费者取走一个数据后,应唤醒正在等待的生产者进程。就是生产者和消费者之间的同步。

每次写入和读出数据时,都将读和写指针加一。当读写指针同样时,又一起退回起点。当写指针指向最后时,生产者就等待。当读指针为零时,再次要读取的消费者也应该等待。

为简单起见,每次产生的数据为0-99的整数,从0开始,顺序递增。两个进程的调度是通过运行者使用键盘来实现的。

4. 程序使用的数据结构

进程控制块:包括进程名,进程状态和执行次数。

缓冲区:一个整数数组。

缓冲区说明块:包括类型,读指针,写指针,读等待指针和写等待指针。

5. 程序使用说明

启动程序后,如果使用'p'键则运行一次生产者进程,使用'c'键则运行一次消费者进程。通过屏幕可以观察到两个进程的状态和缓冲区变化的情况。

6.实验流程图

开始

初始化进程控制块

初始化生产者进程

初始化消费者进程

进程调度

调度生产者进

程?

调度消费者进程?

n n

生产者处于阻塞状态

结束调度?结束n

y

y

n

结束y

缓存区已满?

生产者进程被阻

y

n 消费者处于阻塞

y

结束

y

缓冲区为空?

n

n

消费者被阻塞

往缓冲区添加一个

数据

生产者添加数据指针移到下一个位置

下一个位置>8

下一个位置值0

有消费者进程被阻塞

调用消费者进程

n

y

y

消费缓冲区里的一

个数据

有生产者进程被阻塞

调用生产者进程

消费者进程消费指针移到下一个位置

消费者进程指针与生产者进

程指针相同

两个指针均置0

y

下一位置置0

下一个位置>8

n

y

n

y

n

n

缓冲区可用?

y

阻塞该生产者

n

缓冲区可用?

阻塞该消费者

n

y

源程序

#include

#include

#include

#define PIPESIZE 8

enum Status { RUN, WAIT, READY };

#define NORMAL 0

#define SLEEP 1

#define AWAKE 2

struct PCB

{

char name[3];

enum Status status;

int time;

};

struct waitqueue

{

struct PCB pcb;

struct waitqueue *next;

};

struct PCB *producer; /* write wait point */

struct PCB *consumer; /* read wait point */ struct waitqueue *headerqueue, *tailqueue;

int writeptr;

int readptr;

int writein, readout;

int buffer[PIPESIZE];

int empty, full;

void runp(char in[3]), runc(char in[3]), print();

int main()

{

char in[3];

writeptr = 0;

readptr = 0;

writein = 0;

empty = PIPESIZE;

full = 0;

producer = (struct PCB *)malloc(sizeof(struct PCB));

consumer = (struct PCB *)malloc(sizeof(struct PCB));

headerqueue = (struct waitqueue *)malloc(sizeof(struct waitqueue));

headerqueue->next = NULL;

tailqueue = headerqueue;

producer->status = READY;

consumer->status = WAIT;

producer->time = consumer->time = 0;

printf("Now starting the program!\n");

printf("Press 'p1' to run PRODUCER1,Press 'p1' to run PRODUCER2 \n");

printf("Press 'c1' to run CONSUMER1,Press 'c2' to run CONSUMER2 \n");

printf("Press 'e' to exit from the program.\n");

while (1)

{

strcpy(in, "N");

while (!strcmp(in, "N"))

{

printf("\n");

scanf("%s", in);

if (strcmp(in, "e") && strcmp(in, "p1") && strcmp(in, "p2") && strcmp(in, "c1") && strcmp(in, "c2"))

{

printf("error,please input again!!!\n");

strcpy(in, "N");

}

}

if ('p' == in[0])

{

runp(in);

producer->time++;

}

else if ('c' == in[0])

{

runc(in);

consumer->time++;

}

else

{

//printf("PRODUCER product %d times\n", producer->time);

//printf("CONSUMER consumer %d times\n", consumer->time);

exit(0);

}

print();

printf("\n");

}

}

void runp(char in[3])

{

if (full >= 8)

{

struct waitqueue *search;

search = headerqueue->next;

while (search != NULL)

{

if (!strcmp(in, search->https://www.360docs.net/doc/2a15832037.html,))

{

printf("error!!!\n");

exit(1);

}

search = search->next;

}

producer->status = WAIT;

printf("PRODUCER %s process is waiting, can't be scheduled.\n", in);

struct waitqueue *p = (struct waitqueue *)malloc(sizeof(struct waitqueue));

strcpy(p->https://www.360docs.net/doc/2a15832037.html,, in);

p->pcb.status = WAIT;

p->pcb.time = producer->time + 1;

p->next = NULL;

tailqueue->next = p;

tailqueue = p;

full++;

}

else

{

writein = (writein + 1) % 100;

producer->status = RUN;

printf("run PRODUCER %s process . product %d ", in, writein);

buffer[writeptr] = writein;

if (empty>8)

{

struct waitqueue *p;

p = headerqueue->next;

printf("run CONSUMER %s process. use %d", p->https://www.360docs.net/doc/2a15832037.html,, buffer[writeptr]);

if (tailqueue == p)

{

tailqueue = headerqueue;

}

headerqueue->next = p->next;

free(p);

consumer->status = WAIT;

empty--;

}

else

{

if (writeptr > readptr)

{

writeptr++;

if (writeptr >= PIPESIZE)

{

writeptr = 0;

if (readptr == 0)

producer->status = WAIT;

else producer->status = READY;

}

}

else

{

writeptr++;

if (writeptr == readptr)

producer->status = WAIT;

else producer->status = READY;

}

consumer->status = READY;

empty--;

full++;

}

}

}

void runc(char in[3])

{

if (empty >= 8)

{

东北大学操作系统第一次实验报告

实验1:熟悉Linux系统 一、题目:熟悉Linux系统 二、目的: 熟悉与掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。 1、启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)… 2、C语言编辑、编译 三、内容及要求: 1、熟练掌握Linux基本文件命令; 2、掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程; 3、认真做好预习,书写预习报告; 4、实验完成后要认真总结、完成实验报告。 四、内容及要求: 在Linux环境下编制、调试源程序的实际过程(每一步的具体说明)。 实验2:进程状态 一、题目:进程状态 二、目的: 自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。 三、内容及要求 1、设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序; 2、独立设计、编写、调试程序; 3、程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB组织的变化。 4、进程的状态模型(三状态、五状态、七状态或其它)可自行选择, 5、代码书写要规范,要适当地加入注释; 6、鼓励在实验中加入新的观点或想法,并加以实现;

7、认真进行预习,完成预习报告; 8、实验完成后,要认真总结,完成实验报告。 四、程序流程图 图4、1 进程转换流程五、使用的数据结构及其说明 struct PCB //进程控制块PCB { char name; //名字标识 string state; //状态 int time; //执行时间 }; typedef struct PCB ElemType; struct QNode { ElemType data; struct QNode *next; }; //链式队列结点 typedef struct QNode QNode; //结点 typedef struct QNode *PNode;

东北大学秦皇岛分校操作系统课设报告

东北大学秦皇岛分校计算机与通信工程学院 计算机操作系统课程设计 设计题目:进程管理器 专业名称计算机科学与技术 班级学号xxxx 学生姓名xxxx 指导教师xxxxx 设计时间2014-12-29~2015-1-15

课程设计任务书 专业:计算机科学与技术学号:学生姓名(签名):设计题目 1、高优先权调度算法的模拟 2、进程管理器的模拟实现 二、主要内容 1、目的: 编程模拟实现进程管理器,加深对进程、程序概念掌握. 2、进程管理器 主界面如下: (1)源代码: <1> Form1.cs using System; using System.Collections.Generic; using https://www.360docs.net/doc/2a15832037.html,ponentModel; using System.Data; using System.Drawing;

using System.Text; using System.Windows.Forms; using System.Management; using System.Diagnostics; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.listProcesses.MultiSelect = false; this.listProcesses.View = View.Details; this.listProcesses.Columns.Add("pname",(int)CreateGraphics().MeasureString( "aaaaaaaaaaaaaaaaaaaaaa",Font).Width); this.listProcesses.Columns.Add("pID", (int)CreateGraphics().MeasureString( "000000000000", Font).Width); this.listProcesses.Columns.Add("username", (int)CreateGraphics().MeasureString( "aaaaaaaaaaaaaaaaaaaaa", Font).Width); this.listProcesses.Columns.Add("priority", (int)CreateGraphics().MeasureString( "aaaaaaaaa", Font).Width); this.listProcesses.Columns.Add("Memory usage", (int)CreateGraphics().MeasureString( "000000000000000",Font).Width); } private void Form1_Load(object sender, EventArgs e) { RefreshList(); } private void RefreshList() { Process[] processes; processes = Process.GetProcesses(); this.listProcesses.Items.Clear(); foreach (Process instance in processes) { ListViewItem lvi = new ListViewItem(instance.ProcessName); lvi.SubItems.Add(FormatProcessID(instance.Id)); lvi.SubItems.Add(GetProcessUserName(instance.Id)); lvi.SubItems.Add(instance.BasePriority.ToString());

答案 东大 20年7月 电力系统分析 (A)

学习中心: 院校学号: 姓名 课程名称: 电力系统分析 1 东 北 大 学 继 续 教 育 学 院 电力系统分析 试 卷(作业考核 线上2) A 卷( 共4页) 注:请您单面打印,使用黑色或蓝色笔,手写完成作业。杜绝打印,抄袭作业。 一、 选择题 (每题2分,共计30分) 1、下列故障形式中对称的短路故障为( C ) A.单相接地短路 B.两相短路 C.三相短路 D.两相接地短路 2、应用等面积定则分析简单电力系统暂态稳定性,系统稳定的条件是( C ) A.整步功率系数大于零 B.整步功率系数小于零 C.最大减速面积大于加速面积 D.最大减速面积小于加速面积 3、电力系统中一级负荷、二级负荷和三级负荷的划分依据是用户对供电的( A ) A.可靠性要求 B.经济性要求 C.灵活性要求 D.优质性要求 4、中性点不接地系统发生单相接地短路时,非故障相电压升高至( A ) A.线电压 B.1.5倍相电压 C.1.5倍线电压 D. 倍相电压 5、频率的一次调整是( B ) A.由发电机组的调频系统完成的 B.由发电机组的调速系统完成的 C.由负荷的频率特性完成的 D.由无功补偿设备完成的 6、潮流方程是( D ) A.线性方程组 B.微分方程组 C.线性方程 D.非线性方程组 7、分析简单电力系统的暂态稳定主要应用( B ) A.等耗量微增率原则 B.等面积定则 C.小干扰法 D.对称分量法 8、顺调压是指( B ) A.高峰负荷时,电压调高,低谷负荷时,电压调低 B.高峰负荷时,允许电压偏低,低谷负荷时,允许电压偏高 C.高峰负荷,低谷负荷,电压均调高 D.高峰负荷,低谷负荷,电压均调低 9、系统发生单接地短路故障时,复合序网的连接方式为( A ) A.正序、负序、零序串联 B.正序、负序并联、零序网开路 C.正序、零序并联、负序开路 D.零序、负序并联,正序开路 10、系统中无功功率不足,会造成( D )。 A.频率上升 B.频率下降 C.电压上升 D.电压下降 11、已知一节点所带负荷,有功功率为P ,视在功率为S ,则功率因数角 为( D ) A .arctan P S B .arcsin P S C .arccos S P D .arccos P S 12、减小输电线路有功损耗可通过( C ) A.增大线路有功功率 B.增大线路无功功率 C.提高线路两端电压 D.增大输电线路电阻 13、电力系统并列运行暂态稳定性分析中不考虑非周期分量、负序分量和零序分量的影响,

东北大学DIP实验一

实验一 一、插值和采样 1 (a)读入图像head.jpg并显示。 >> A=imread('C:\Documents and Settings\Administrator\桌面\head.jpg'); imshow(A) (b)计算图像维度。 >> size(A) ans = 256 256 (c)此图像大小为40cm*40cm,计算图像的采样距离。 x=40cm/256=0.15625cm=1.5625mm 同理,y=1.5625mm (d)逻辑坐标(图像坐标)为(22, 54)、(126, 241)的点,其空间坐标是多少? 逻辑坐标(图像坐标)为(22, 54)的点,空间坐标为

(22*1.5625mm,54*1.5625mm)=(34.375mm,84.375mm); 同理,逻辑坐标(图像坐标)为(126, 241)的点,空间坐标为(196.875mm,376.05625mm)。 (e)求空间坐标为(14.2188, 5.3125)、(21.4063,34.5313)处的像素值。>>b=40/256; b = 0.1563 >> x3=(14.2188/b)-1 x3 = 90.0003 >> y3=(5.3125/b)-1 y3 = 33 >> x4=floor(x3) x4 = 90 >> x5=ceil(x3) x5 = 91 >> C1=A([x4],[y3]) C1 = 115 >> C2=A([x5],[y3]) C2 = 108 >> C3=0.9997*C1+0.0003*C2 C3 = 115 >> x6=(21.4063/b)-1

[东北大学]20年7月考试《电力系统分析》考核作业100分答案

东北大学继续教育学院 电力系统分析试卷(作业考核线上2) A 卷(共 4 页) 1、下列故障形式中对称的短路故障为( C ) A.单相接地短路 B.两相短路 C.三相短路 D.两相接地短路 2、应用等面积定则分析简单电力系统暂态稳定性,系统稳定的条件是( C ) A.整步功率系数大于零 B.整步功率系数小于零 C.最大减速面积大于加速面积 D.最大减速面积小于加速面积 3、电力系统中一级负荷、二级负荷和三级负荷的划分依据是用户对供电的(A) A.可靠性要求 B.经济性要求 C.灵活性要求 D.优质性要求 4、中性点不接地系统发生单相接地短路时,非故障相电压升高至(A) A.线电压 B.1.5倍相电压 C.1.5倍线电压 D. 倍相电压 5、频率的一次调整是( B ) A.由发电机组的调频系统完成的 B.由发电机组的调速系统完成的 C.由负荷的频率特性完成的 D.由无功补偿设备完成的 6、潮流方程是( D ) A.线性方程组 B.微分方程组 C.线性方程 D.非线性方程组 7、分析简单电力系统的暂态稳定主要应用( B ) A.等耗量微增率原则 B.等面积定则 C.小干扰法 D.对称分量法 8、顺调压是指( B ) A.高峰负荷时,电压调高,低谷负荷时,电压调低 B.高峰负荷时,允许电压偏低,低谷负荷时,允许电压偏高 C.高峰负荷,低谷负荷,电压均调高 D.高峰负荷,低谷负荷,电压均调低 9、系统发生单接地短路故障时,复合序网的连接方式为(A) A.正序、负序、零序串联 B.正序、负序并联、零序网开路 C.正序、零序并联、负序开路 D.零序、负序并联,正序开路 10、系统中无功功率不足,会造成( D )。 A.频率上升 B.频率下降 C.电压上升 D.电压下降 11、已知一节点所带负荷,有功功率为P,视在功率为S,则功率因数角 为(D ) A.arctan P S B.arcsin P S C.arccos S P D.arccos P S 12、减小输电线路有功损耗可通过(C) A.增大线路有功功率 B.增大线路无功功率 C.提高线路两端电压 D.增大输电线路电阻 13、电力系统并列运行暂态稳定性分析中不考虑非周期分量、负序分量和零序分量的影响,原因是(C)。 A.认为非周期分量、负序分量和零序分量都已衰减到零;

2016年东北大学实验室安全考试 96分

1、[判断题]火灾对实验室构成的威胁最为严重,最为直接。应加强对火灾三要素(易燃物、助燃物、点火源)的控制。(分值1.0) 你的答案:正确 2、[判断题]同位素试剂是非密封型放射源。(分值1.0) 你的答案:正确 3、[判断题]内照射指放射性物质呼吸道吸入、消化道进入、皮肤伤口渗入等途径进入体内,造成 放出的射线及化学毒性对人体器官的双重损伤。(分值1.0) 你的答案:正确 4、[判断题]Ⅴ类放射源为极低危险源。不会对人造成永久性损伤。(分值1.0) 你的答案:正确 5、[判断题]辐射事故分为特别重大辐射事故、重大辐射事故、较大辐射事故和一般辐射事故四个 等级。(分值1.0) 你的答案:正确 6、[判断题]离开放射性实验室前必须洗手。(分值1.0) 你的答案:正确 7、[判断题]万用表电阻档可测量绝缘电阻。(分值1.0) 你的答案:错误 8、[判断题]50毫安的工频电流就可以使人遭到致命电击。(分值1.0) 你的答案:正确 9、[判断题]在进行电子线路板焊接后的剪脚工序时,剪脚面应背离身体特别是脸部,防止被剪下 引脚弹伤。(分值1.0) 你的答案:正确 10、[判断题]漏电保护器对两相触电(人体双手触及两相电源),不起保护作用。(分值1.0)你的答案:正确 11、[判断题]打开含有高压变压器或电容器的电子仪器的盖子是危险的。(分值1.0) 你的答案:正确 12、[判断题]声级计可放置在高温、潮湿、有污染的地方。(分值1.0) 你的答案:错误 13、[判断题]大型设备运行不需要两名以上工作人员在场。(分值1.0) 你的答案:错误 14、[判断题]高速设备和精密设备应在管理人员指导下使用。(分值1.0) 你的答案:正确 15、[判断题]消防队在扑救火灾时,有权根据灭火的需要,拆除或者破损临近火灾现场的建筑。(分值1.0)

东北大学操作系统实验三报告

操作系统实验报告班级物联网1302班 学号 姓名

实验 3 进程同步和通信-生产者和消费者问题模拟 1. 目的: 调试、修改、运行模拟程序,通过形象化的状态显示,使学生理解进程的概念,了解同步和通信的过程,掌握进程通信和同步的机制,特别是利用缓冲区进行同步和通信的过程。通过补充新功能,使学生能灵活运用相关知识,培养创新能力。 2. 内容及要求: 1) 调试、运行模拟程序。 2) 发现并修改程序中不完善的地方。 3) 修改程序,使用随机数控制创建生产者和消费者的过程。 4) 在原来程序的基础上,加入缓冲区的写互斥控制功能,模拟多个进程存取一个公共缓冲区,当有进程正在写缓冲区时,其他要访问该缓冲区的进程必须等待,当有进程正在读取缓冲区时,其他要求读取的进程可以访问,而要求写的进程应该等待。 5) 完成1) 、2) 、3)功能的,得基本分,完成4)功能的加2 分,有其它功能改进的再加2 分3. 程序说明: 本程序是模拟两个进程,生产者(producer)和消费者(Consumer)工作。生产者每次产生一个数据,送入缓冲区中。消费者每次从缓冲区中取走一个数据。缓冲区可以容纳8 个数据。因为缓冲区是有限的,因此当其满了时生产者进程应该等待,而空时,消费者进程应该等待;当生产者向缓冲区放入了一个数据,应唤醒正在等待的消费者进程,同样,当消费者取走一个数据后,应唤醒正在等待的生产者进程。就是生产者和消费者之间的同步。 每次写入和读出数据时,都将读和写指针加一。当读写指针同样时,又一起退回起点。当写指针指向最后时,生产者就等待。当读指针为零时,再次要读取的消费者也应该等待。 为简单起见,每次产生的数据为0-99 的整数,从0 开始,顺序递增。两个进程的调度是通过运行者使用键盘来实现的。 4. 程序使用的数据结构 进程控制块:包括进程名,进程状态和执行次数。缓冲区:一个整数数组。 缓冲区说明块:包括类型,读指针,写指针,读等待指针和写等待指针。 5. 程序使用说明 启动程序后,如果使用0键则运行一次生产者进程,使用'c'键则运行一次消费者进程。通过屏幕可以观察到两个进程的状态和缓冲区变化的情况。 6. 实验流程图 源程序 #include

东北大学汇编实验

(附录二) 汇编语言程序设计 实验报告

实验1 数据传送指令 1、实验目的:了解和掌握 MOV、PUSH、POP、XCHG四条指令的作用和在编程中的用法。 2、实验要求: (Ⅰ)采用立即数寻址方式将19E0H,3F56H,0AF37H,9A81H 分别送给EAX、EBX、ECX、EDX四个寄存器。 记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 00000000 、 EDX= 01361005 操作后 EAX= 000019E0 、 EBX= 00003F56 、 ECX= 0000AF37 、 EDX= 00009A81 操作过程中所用到的指令: INCLUDE Irvine32.inc .code main PROC call DumpRegs mov eax,19E0H mov ebx,eax mov ecx,ebx mov edx,ecx call DumpRegs

exit main ENDP END main (Ⅱ)采用采用寄存器寻址方式将19E0H送给EBX、ECX、EDX 三个寄存器。 记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 000000000 、 EDX= 013C1005 操作后 EAX= 000019E0 、 EBX= 000019E0 、 ECX= 000019E0 、 EDX= 000019E0 操作过程中所用到的指令: INCLUDE Irvine32.inc .code main PROC call DumpRegs mov eax,19E0H mov ebx,eax mov ecx,ebx

东北大学操作系统第一次实验报告

实验1:熟悉Linux系统 一、题目:熟悉Linux系统 二、目的: 熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。 1、启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)… 2、C语言编辑、编译 三、内容及要求: 1、熟练掌握Linux基本文件命令; 2、掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程; 3、认真做好预习,书写预习报告; 4、实验完成后要认真总结、完成实验报告。 四、内容及要求: 在Linux环境下编制、调试源程序的实际过程(每一步的具体说明)。 实验2:进程状态 一、题目:进程状态

二、目的: 自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。 三、内容及要求 1、设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序; 2、独立设计、编写、调试程序; 3、程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB 组织的变化。 4、进程的状态模型(三状态、五状态、七状态或其它)可自行选择, 5、代码书写要规范,要适当地加入注释; 6、鼓励在实验中加入新的观点或想法,并加以实现; 7、认真进行预习,完成预习报告; 8、实验完成后,要认真总结,完成实验报告。 四、程序流程图

图4.1 进程转换流程五、使用的数据结构及其说明 struct PCB //进程控制块PCB { char name; //名字标识 string state; //状态 int time; //执行时间 }; typedefstruct PCB ElemType; structQNode { ElemType data; structQNode *next; }; //链式队列结点 typedefstructQNodeQNode; //结点 typedefstructQNode *PNode; typedefstruct { PNodefrnt; PNode rear;

操作系统实验三(题目四)实验报告_李旦兰_20083308

操作系统实验三 实验报告 姓名李旦兰学号20083308 班级软件0802 指导教师那俊 实验名称存储管理 开设学期2010 – 2011第一学期 评定成绩 评定人签字 评定日期 东北大学软件学院2010年11月

实验三_B 一.实验题目 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。(题目四)二.实验目的 (1)进一步认识虚拟存储器的工作原理; (2)进一步认识文件系统的内部功能以及内部实现; (3)深入理解操作系统中文件系统的理论知识,加深对教材中的重要算法的理解; (4)掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 三.实验内容以及要求 (1)设计一个支持n个用户的简单二级文件系统,每个用户可保存m个文件,用户在一次运行中只能打开一个文件; (2)采用二级或二级以上的多级文件目录管理; (3)对文件应设置存取控制保护方式,如“只能执行”、“允许读”、“允许写等”;(4)系统的外部特征应接近于真实系统,可设置下述文件操作命令:Login 用户登录;Dir 列出文件目录; Create 建立文件;Delete 删除文件; Read 读文件;Write 写文件;Open 打开文件; Close 关闭文件。 (5)通过键盘使用该文件系统,系统应显示操作命令的执行结果。 四.实验环境 操作系统:Windows 7 开发语言:VC++ 开发工具:Microsoft Visual C++ 2008 Express Edition 五.程序设计思想 通过阅读实验指导书,整理出实验大体的思路,确定实体以及它们之间的关系。实体关系有三张表(主文件目录,用户文件目录以及打开文件目录)、命令服务和用户构成。用户负责输入命令。命令服务实现命令检查以及调用相关模块执行相应的命令功能。 (1)主文件目录(MFD),包括用户名和文件目录指针; struct user MFD[1]={{"0",0}};//MFD(用户名文件目录指针) (2)用户文件目录(UFD),包括文件名、保护码以及文件长度; struct file UFD[10];//用户文件目录(UFD-文件名保护码文件长度) (3)打开文件目录(AFD),包括打开文件名、打开保护码以及读写指针。采用数组形式存储打开的文件,数组每个元素保存一个打开文件的信息 struct file AFD[5]={{"0",0,0,0},{"0",0,0,0},{"0",0,0,0},{"0",0,0,0},{"0",0,0,0}};//运行文件目录(AFD)——一次运行用户可以打开个文件 在此模拟文件管理系统中可以实现的操作有: (1)用户登录:login,用户通过登录从而使用系统功能; (2)创建文件:create,创建一个指定名字的新文件,即在目录中增加一项,不考虑

东北大学 操作系统实验四报告

操作系统实验报告 班级物联网1302班 学号 姓名

实验4 进程的管道通信 1. 实验目的 1)加深对进程概念的理解,明确进程和程序的区别。 2)进一步认识并发执行的实质。 3)分析进程争用资源的现象,学习解决进程互斥的方法。 4)学习解决进程同步的方法。 5)了解Linux系统中进程通信的基本原理。 进程是操作系统中最重要的概念,贯穿始终,也是学习现代操作系统的关键。通过本次实验,要求理解进程的实质和进程管理的机制。在Linux系统下实现进程从创建到终止的全过程,从中体会进程的创建过程、父进程和子进程之间的关系、进程状态的变化、进程之间的互斥、同步机制、进程调度的原理和以管道为代表的进程间的通信方式的实现。 2. 内容及要求: 这是一个设计型实验,要求自行编制程序。 使用系统调用pipe()建立一条管道,两个子进程分别向管道写一句话: Child process1 is sending a message! Child process2 is sending a message! 父进程从管道读出来自两个子进程的信息,显示在屏幕上。 要求: 1)父进程先接收子进程1发来的消息,然后再接收子进程2发来的消息。 2)实现管道的互斥使用,当一个子进程正在对管道进行写操作时,另一子进程必须等待。使用系统调用lockf(fd[1],1,0)实现对管道的加锁操作,用lockf(fd[1],0,0)解除对管道的锁定。 3)实现父子进程的同步,当子进程把数据写入管道后,便去睡眠等待;当父进程试图从一空管道中读取数据时,也应等待,直到子进程将数据写入管道后,才将其唤醒。 3.相关的系统调用 1) fork() 用于创一个子进程。 格式:int fork(); 返回值:在子进程中返回0;在父进程中返回所创建的子进程的ID值;当返回-1时,创建失败。 2) wait() 常用来控制父进程与子进程的同步。 在父进程中调用wait(),则父进程被阻塞,进入等待队列,等待子进程结束。当子进程结束时,父进程从wait()返回继续执行原来的程序。 返回值:大于0时,为子进程的ID值;等于-1时,调用失败。 3) exit() 是进程结束时最常调用的。 格式:void exit( int status); 其中,status为进程结束状态。

月测验考试《电力系统分析》考核答案

东 北 大 学 继 续 教 育 学 院 电力系统分析 试 卷(作业考核 线下) B 卷(共 5 页) 1、对电力系统的基本要求是( A )。 A 、保证对用户的供电可靠性和电能质量,提高电力系统运行的经济性,减少对环境的不良影响; B 、保证对用户的供电可靠性和电能质量; C 、保证对用户的供电可靠性,提高系统运行的经济性; D 、保证对用户的供电可靠性。 2、停电有可能导致人员伤亡或主要生产设备损坏的用户的用电设备属于( A )。 A 、一级负荷; B 、二级负荷; C 、三级负荷; D 、特级负荷。 3、对于供电可靠性,下述说法中正确的是( D )。 A 、所有负荷都应当做到在任何情况下不中断供电; B 、一级和二级负荷应当在任何情况下不中断供电; C 、除一级负荷不允许中断供电外,其它负荷随时可以中断供电; D 、一级负荷在任何情况下都不允许中断供电、二级负荷应尽可能不停电、三级负荷可以根据系统运行情况随时停电。 4、在输电线路参数中属于耗能参数的是( D )。 A 、电抗、电阻; B 、电纳、电阻; C 、电导、电抗; D 、电阻、电导。 5、 在既有水电厂、火电厂和核电厂的电力系统中,洪水季节调频电厂通常选择( B ) A 、大型水电厂; B 、中温中压火力发电厂; C 、核电厂; D 、高温高压火力发电厂。 6、某发电厂有三台机组并列运行,其耗量特性分别为: 21110015.026.08.2G G P P F ++= (h T /) 22220015.029.05.3G G P P F ++= (h T /) 2 3330015.017.00.4G G P P F ++= (h T /) 机组功率约束条件为: MW P MW G 50201≤≤ MW P MW G 100202≤≤ MW P MW G 100203≤≤ 当负荷功率为200MW 时机组间负荷的最优分配为( A )。 A 、MW P G 501=、MW P G 552=、MW P G 953=; B 、MW P G 401=、MW P G 802=、MW P G 803=; C 、MW P G 501=、MW P G 752=、MW P G 753=; D 、MW P G 601=、MW P G 502=、MW P G 903=。

东北大学c++实验报告

实验六 1?实验要求 (1)定义Point类,有坐标_x, _y两个成员变量;对Point类重载牛+ ”(自增)、“一-(自减)运算符,实现对坐标值的改变。 (2)定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。 2.实验容及实验步骤 (1)编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operato叶+() ; Point operato叶+(int);以实现对Point 类重载++ ”(自增)运算符,定义成员函数Point& operator ------------------------------ ();Point operator -------- (int);以实现对Point类重载(自减)运算符,实现对坐标值的改变。程序名:1ab8_1. cpp。 ⑵编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派 生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle 的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2. cpp。 3.源程序 Lab8 1 #in clude using n amespace std;

操作系统实验报告1

操作系统实验一 姓名: 学号: 专业:计算机科学与技术 第一步:目录和文件组织 在您的home目录下有一系列的文件,您决定到时间整理一下了.您计划生成一些新的子目录,然后根据您的计划拷贝和移动这些文件到适当的目录;另外,这些文件不是都有用的,有一些是要删除掉的。 任务: 1.以用户名root密码123456配额的在tty1上登陆。 2.在您登陆系统以后,你将进入您的home目录.你可以使用"打印工作目录"检查这一情况 $ pwd /home/root 3.使用如下每条命令检查您是否还有文件在您的home目录下: $ ls$ ls -a$ ls –al 为什么第一和第二条命令返回不同的文件数? 第三条命令返回的在您当前的home目录下最大的文件是多少?46996

您的home目录下有子目录吗?没有 4.您现在使用touch为以后的步骤建立文件。这种扩展在接下来的命令中是如何工作的,在以后的章节中进行讨论。现在,仅仅按照下面的行键入就行了(在集合与集合之间使用包括花括号{}和下划线的字符) $ touch {report,memo,graph}_{sep,oct,nov,dec}_{a,b,c}{1,2,3}

5.使用命令ls检查最后一条命令的结果,你会发现它在您的home目录下生成了108个新的空文件(您不必数)。这些文件代表了您将使用的在这个步骤中的代表的数据文件。如果没有这些文件,该试验后面的步骤就无法进行。 6.为了组织您的文件,您必须先建立一些新目录,使用mkdir在您的home 目录中直接 建立一些子目录: $ mkdir a_reports $ mkdir september october november december 再使用ls 检查您的工作。

东北大学图像处理实验报告

计算机图像处理实验报告 哈哈哈哈哈哈实验台31 1.应用MATLAB语言编写显示一幅灰度图像、二值图像、索引图像及 彩色图像的程序,并进行相互之间的转换 1)彩色图像转换为灰度图像、索引图像、二值图像 A=imread('F:\colorful.jpg'); subplot(221);imshow(A);title('彩色图像'); I1=rgb2gray(A); subplot(222);imshow(I1);title('灰度图像'); [X1,map]=rgb2ind(A,256); subplot(223);imshow(X1);title('索引图像'); BW=im2bw(A); subplot(224);imshow(BW);title('二值图像'); 彩色图像灰度图像 索引图像二值图像

2)灰度图像转换为索引图像、二值图像 clear A=imread('F:\colorful.jpg'); B=rgb2gray(A); subplot(131);imshow(B);title('灰度图像'); [X2,map]=gray2ind(B,128); subplot(132);imshow(X2);title('索引图像'); BW2=im2bw(B); subplot(133);imshow(BW2);title('二值图像'); 灰度图像索引图像二值图像 3)索引图像转为灰度图像、二值图像、彩色图像 clear A=imread('F:\colorful.jpg'); [X,map]=rgb2ind(A,256); subplot(221);imshow(X);title('索引图像'); I3=ind2gray(X,map); subplot(222);imshow(I3);title('灰度图像'); BW3=im2bw(X,map,0.5); subplot(223);imshow(BW3);title('二值图像'); RGB=ind2rgb(X,map); subplot(24);imshow(RGB);title('还原彩色图像'); 索引图像灰度图像 二值图像还原彩色图像

东北大学-操作系统实验三分析报告

东北大学-操作系统实验三报告

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

操作系统实验报告 班级物联网1302班 学号 姓名

实验3 进程同步和通信-生产者和消费者问题模拟1. 目的: 调试、修改、运行模拟程序,通过形象化的状态显示,使学生理解进程的概念,了解同步和通信的过程,掌握进程通信和同步的机制,特别是利用缓冲区进行同步和通信的过程。通过补充新功能,使学生能灵活运用相关知识,培养创新能力。 2. 内容及要求: 1) 调试、运行模拟程序。 2) 发现并修改程序中不完善的地方。 3) 修改程序,使用随机数控制创建生产者和消费者的过程。 4) 在原来程序的基础上,加入缓冲区的写互斥控制功能,模拟多个进程存取一个公共缓冲区,当有进程正在写缓冲区时,其他要访问该缓冲区的进程必须等待,当有进程正在读取缓冲区时,其他要求读取的进程可以访问,而要求写的进程应该等待。 5) 完成1)、2)、3)功能的,得基本分,完成4)功能的加2分,有其它功能改进的再加2分 3. 程序说明: 本程序是模拟两个进程,生产者(producer)和消费者(Consumer)工作。生产者每次产生一个数据,送入缓冲区中。消费者每次从缓冲区中取走一个数据。缓冲区可以容纳8个数据。因为缓冲区是有限的,因此当其满了时生产者进程应该等待,而空时,消费者进程应该等待;当生产者向缓冲区放入了一个数据,应唤醒正在等待的消费者进程,同样,当消费者取走一个数据后,应唤醒正在等待的生产者进程。就是生产者和消费者之间的同步。 每次写入和读出数据时,都将读和写指针加一。当读写指针同样时,又一起退回起点。当写指针指向最后时,生产者就等待。当读指针为零时,再次要读取的消费者也应该等待。 为简单起见,每次产生的数据为0-99的整数,从0开始,顺序递增。两个进程的调度是通过运行者使用键盘来实现的。 4. 程序使用的数据结构 进程控制块:包括进程名,进程状态和执行次数。 缓冲区:一个整数数组。 缓冲区说明块:包括类型,读指针,写指针,读等待指针和写等待指针。 5. 程序使用说明 启动程序后,如果使用'p'键则运行一次生产者进程,使用'c'键则运行一次消费者进程。通过屏幕可以观察到两个进程的状态和缓冲区变化的情况。

东大《电力系统分析》离线作业

学习中心: 院校学号: 姓名 课程名称:电力系统分析 1 1. 东 北 大 学 继 续 教 育 学 院 电力系统分析 试 卷(作业考核 线上2) A 卷(共 4 页) 1、下列故障形式中对称的短路故障为( C ) A.单相接地短路 B.两相短路 C.三相短路 D.两相接地短路 2、应用等面积定则分析简单电力系统暂态稳定性,系统稳定的条件是( C ) A.整步功率系数大于零 B.整步功率系数小于零 C.最大减速面积大于加速面积 D.最大减速面积小于加速面积 3、电力系统中一级负荷、二级负荷和三级负荷的划分依据是用户对供电的( A ) A.可靠性要求 B.经济性要求 C.灵活性要求 D.优质性要求 4、中性点不接地系统发生单相接地短路时,非故障相电压升高至( A ) A.线电压 B.1.5倍相电压 C.1.5倍线电压 D. 倍相电压 5、频率的一次调整是( A ) A.由发电机组的调频系统完成的 B.由发电机组的调速系统完成的 C.由负荷的频率特性完成的 D.由无功补偿设备完成的 6、潮流方程是( D ) A.线性方程组 B.微分方程组 C.线性方程 D.非线性方程组 7、分析简单电力系统的暂态稳定主要应用( B ) A.等耗量微增率原则 B.等面积定则 C.小干扰法 D.对称分量法 8、顺调压是指( B ) A.高峰负荷时,电压调高,低谷负荷时,电压调低 B.高峰负荷时,允许电压偏低,低谷负荷时,允许电压偏高 C.高峰负荷,低谷负荷,电压均调高 D.高峰负荷,低谷负荷,电压均调低 9、系统发生单接地短路故障时,复合序网的连接方式为( A ) A.正序、负序、零序串联 B.正序、负序并联、零序网开路 C.正序、零序并联、负序开路 D.零序、负序并联,正序开路 10、系统中无功功率不足,会造成( D )。 A.频率上升 B.频率下降 C.电压上升 D.电压下降 11、已知一节点所带负荷,有功功率为P ,视在功率为S ,则功率因数角 为( D ) A .arctan P S B .arcsin P S C .arccos S P D .arccos P S 12、减小输电线路有功损耗可通过( C ) A.增大线路有功功率 B.增大线路无功功率 C.提高线路两端电压 D.增大输电线路电阻 13、电力系统并列运行暂态稳定性分析中不考虑非周期分量、负序分量和零序分量的影响,原因是( C )。 A .认为非周期分量、负序分量和零序分量都已衰减到零;

东北大学C++实验报告6

实验六 1.实验要求 (1)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。 (2)定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。 2. 实验内容及实验步骤 (1) 编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point&operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1.cpp。 (2) 编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。 3. 源程序 Lab8_1 #include using namespace std; class Point{ public: Point(int X,int Y): _x(X),_y(Y){} Point operator++(); Point operator++(int); Point operator--(); Point operator--(int); void Putout() const; private: int _x,_y; };

东北大学操作系统第二次实验报告

实验4:进程的管道通信 一、题目:进程的管道通信 二、目的: ●加深对进程概念的理解,明确进程和程序的区别; ●学习进程创建的过程,进一步认识并发执行的实质; ●分析进程争用资源的现象,学习解决进程互斥的方法; ●学习解决进程同步的方法; ●掌握Linux系统进程间通过管道通信的具体实现方法。 三、实验内容 ?使用系统调用pipe()建立一条管道线,两个子进程分别向管道写一句话(写 的内容自己定,但要有该进程的一些信息); ?父进程从管道中读出来自两个子进程的消息,显示在屏幕上; ?要求:父进程首先接收子进程p1发来的消息,然后再接收子进程p2发来的 消息。 四、实验要求 1、这是一个设计型实验,要求自行、独立编制程序; 2、两个子进程要并发执行; 3、实现管道的互斥使用。当一个子进程正在对管道进行写操作时,另一个欲写入管道的子进程必须等待。使用系统调用lockf(fd[1],1,0)实现对管道的加锁操作,用lockf(fd[1],0,0)解除对管道的锁定; 4、实现父子进程的同步,当父进程试图从一空管道中读取数据时,便进入等待状态,直到子进程将数据写入管道返回后,才将其唤醒。 五、程序流程图

图5.1 父进程流程图

图5.2子进程P1流程图图5.3子进程P2流程图 六、源程序 #include #include #include #include #include #include #include #include

相关文档
最新文档