武汉理工 操作系统 课程设计

武汉理工 操作系统 课程设计
武汉理工 操作系统 课程设计

课程设计

题目实现读者写者(Reader-Writer Problem)

问题

学院计算机科学与技术学院

专业软件工程

班级

姓名

指导教师刘军

2 0 1 2 ——2 0 1

3 学年第二学期

目录

一、设计题目与要求 (1)

二、总的设计思想及系统平台、语言、工具等 (1)

2、1问题简介 (1)

2、2初始条件 (1)

2、3总的设计思想 (2)

三、数据结构与模块说明(功能与流程图) (2)

3、1算法与数据结构 (2)

3、2功能模块描述 (4)

四、运行结果与运行情况 (7)

五、调试记录 (8)

六、自我评价与总结 (9)

七、参考文献 (9)

八、源程序 (10)

本科生课程设计成绩评定表 (17)

一、设计题目与要求

题目:通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并发控制。

要求:每人一台与Linux主机联网的Windows主机,普通用户权限。

二、总的设计思想及系统平台、语言、工具等

2、1问题简介

读者写者问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。

读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量S来当前是否可操作。

信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者则是这一机制的一个经典范例。

与记录型信号量解决读者—写者问题不同,信号量机制它增加了一个限制,即最多允许RN个读者同时读。为此,又引入了一个信号量L,并赋予初值为RN,通过执行wait(L,1,1)操作,来控制读者的数目,每当有一个读者进入时,就要执行wait(L,1,1)操作,使L的值减1。当有RN个读者进入读后,L便减为0,第RN+1 个读者要进入读时,必然会因wait(L,1,1)操作失败而堵塞。

2、2初始条件

操作系统:Windows

程序设计语言:C++语言

设有20个连续的存储单元,写入/读出的数据项按增设定为1-20这20个字

符。为每个读者/写者产生一个线程,设计正确的同步算法,使得每个读者/写者对该存储区进行操作后,即时显示该存储区的全部内容、当前指针位置和读者/写者线程的自定义标识符。同时,需满足读者应有3个以上,写者应有两个以上。多个读者/写者之间须共享对存储区进行操作的函数代码。

2、3总的设计思想

读者-写者的读写限制(包括读者优先和写者优先)

(1)写-写互斥,即不能有两个写者同时进行写操作;

(2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写;

(3)读读允许,即可以有2个以上的读者同时读。

将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读者队列释放一个或多个读者,当写允许时,释放第一个写者操作。读者写者问题的定义如下:有一个许多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间;有一些只读取这个数据区的进程(Reader)和一些只往数据区写数据的进程(Writer),此外还需要满足以下条件:

(1)任意多个读进程可以同时读这个文件;

(2)一次只有一个写进程可以往文件中写;

(3)如果一个写进程正在进行操作,禁止任何读进程度文件。

分两种情况实现该问题:

读优先:要求指一个读者试图进行读操作时,如果这时正有其他读者在进行操作,他可直接开始读操作,而不需要等待。

写优先:一个读者试图进行读操作时,如果有其他写者在等待进行写操作或正在进行写操作,他要等待该写者完成写操作后才开始读操作。

程序由三部分组成:

(1)读者模块:包括系统调用接口,读者活动描述主程序。系统接口主要功能是通过管道向父进程发送系统调用命令,并读取父进程送来的返回值。

(2)写者模块:包括系统调用接口,写者活动描述主程序。

读者-写者活动程序根据临界资源的共享,互斥原则编制。

(3)主控模块:主控模块实现系统初始化系统调用命令接收与解释执行,系统调用功能的实现(包括信号量机制),及读者-写者活动过程记录与显示。三、数据结构与模块说明(功能与流程图)

3、1算法与数据结构

创建Person结构体

typedef struct _Person

{

HANDLE m_hThread; //定义处理线程的句柄

int m_nType; //进程类型(读写)

int m_nStartTime; //开始时间

int m_nWorkTime; //运行时间

int m_nID; //进程号

}Person;

int g_PersonLists[] = { //进程队列

1, W, 4, 5, 2, W, 16, 4, 3, R, 5, 2,

4, W, 6, 5, 5, R, 4, 3,

END,

};

Var RN integer;L,mx:semaphore: =RN,1;

Begin

Parbegin

Reader :begin

Repeat

Swait(L,1,1);

Swait(mx,1,0);

.

Perform reader operation;

Ssignal(L,1);

Until false;

End

Writer :begin

Repeat

Swait(mx ,1,1,l,RN,0);

Perform writer operation;

Ssignal(mx,1);

Until false;

End

Parend

End

其中,Swait(mx,1,0)语句起着开关作用,只要无Writer进程进入些,mx=1,reader进程就都可以进入读。但是要一旦有Writer进程进入写时,其MX=0,则

任何reader进程就都无法进入读。Swait(mx ,1,1,l,RN,0)语句表示仅当既无Write进程在写(mx=1),又无reader进程在读(L=RN)时,writer进程才能进入临界区写。

3、2功能模块描述

void CreatePersonList(int *pPersonLists)

{

int i=0;

int*pList = pPersonLists;

bool Ret;

while(pList[0] != END)

{

switch(pList[1])

{

case R:

Ret = CreateReader(pList[2],pList[3],pList[0]);//351,w452,523,654

break; case W:

Ret = CreateWriter(pList[2],pList[3],pList[0]);

break;

}

DWORD WINAPI ReaderProc(LPVOID lpParam)//读过程{

Person *pPerson = (Person*)lpParam;

// wait for the start time

while(g_CurrentTime != pPerson->m_nStartTime)

{ }

WaitForSingleObject(g_hWriteSemaphore,INFINITE); // modify the writer's real start time

pPerson->m_nStartTime = g_CurrentTime;

DWORD WINAPI WriterProc(LPVOID lpParam) {

Person *pPerson = (Person*)lpParam;

// wait for the start time

while(g_CurrentTime != pPerson->m_nStartTime) {}

四、运行结果与运行情况

图1、写者6申请资源,读者5、3申请资源

图2、写者4申请资源而写者1退出

图3、读者3和5依次推出,写者2申请资源

图4、读者6申请资源,写者4退出

五、调试记录

虽然在做实验时已经练习过相关编程,但是在课程设计上还是犯了许多错误。现挑几条分享,其余错误犯得有点低级,在此不再赘述。

(1)在定义Person结构体时,有些变量没有考虑到,比如处理线程的句柄以及进程类型。

(2)问题:error C2501: 'HANDLE' : missing storage-class or type specifiers error C2146: syntax error : missing ';' before identifier 'g_hReadSemaphore'

解决:这是缺少了头文件而产生的错误,加入头文件#include 即可

(3)问题:error C2440: 'initializing' : cannot convert from 'void *' to 'struct

_Person *'

解决:可利用强制类型转换,加入(Person*)

(4)问题:error C2065: 'Waitforsingleobject' : undeclared identifier

解决:本来以为没有定义,可自己记得此函数已经封装好了。后来一想,

应该是大小写的问题。C++对大小写有严格的要求,事实上,在此过程中,这种错误犯了许多,引起了我的注意。

(5)问题:fatal error C1010: unexpected end of file while looking for precompiled header directive

解决:编译出错。右键单击项目工程中的cpp文件,在菜单

Project->Settings->C/C++->Precompile Header,设置为第一项:Not using precompile headers。

(6)在整个编程过程中,最让人头痛的就是理解各个调用函数的参数及用法,在上网准备了好几天之后,终于有所收获。最后编程时,参考了网上的相关程序并有所改进。

六、自我评价与总结

通过此次课程设计,使我更加扎实地掌握了有关“读者-写者问题”实现的方法,系统地理解和掌握C++语言的基本概念、语言特点和编程技巧,在应用C++语言在程序设计方面得到系统锻炼,为将来进行软件开发打下良好基础。。“读者-写者问题”的编写,花的时间很多,也学到很多东西。了解支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的信号量机制。在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,终于找出了原因之所在,也暴露出了前期我在这方面知识欠缺和经验不足。实践出真知,通过亲自查阅资料和动手设计,使我掌握的知识不再是纸上谈兵。过而能改,善莫大焉,在课程设计过程中我不断发现错误不断改正,不断领悟,不断获取。

这次课程设计终于顺利结束了,在设计过程中,我不仅巩固了以前所学过的知识,而且在实践的过程中学到了很多在书本上没有学到过的知识,更让我懂得了理论与实际相结合是很重要的,只有这样才能更好地提高自己的实际动手能力和独立思考的能力。

当然,要感谢在此过程中同学以及热心网友的帮助,他们帮我介绍了许多函数方面的应用知识。感谢!

七、参考文献

【1】Operating System Concepts(Sixth Edition)(操作系统概念)影印版,Abraham Silberschatz ,高等教育出版社,2003年10月

【2】计算机操作系统教程(第三版),张尧学主编,清华大学出版社,2001年7月

【3】操作系统原理(第三版),庞丽娟主编,华中科技大学出版社,2000年12月

八、源程序

#include

#include

#define MAX_PERSON 100

#define READER 0 //读者

#define WRITER 1 //写者

#define END -1

#define R READER

#define W WRITER

typedef struct _Person

{

HANDLE m_hThread; //定义处理线程的句柄int m_nType; //进程类型(读写)int m_nStartTime; //开始时间

int m_nWorkTime; //运行时间

int m_nID; //进程号

}Person;

Person g_Persons[MAX_PERSON];

int g_NumPerson = 0;

long g_CurrentTime= 0; //基本时间片数

int g_PersonLists[] = { //进程队列1, W, 3, 5,

2, W, 16, 5,

3, R, 5, 2,

4, W, 6, 5,

5, R, 4, 3,

6, R, 17,7,

END,

};

int g_NumOfReading = 0;

int g_NumOfWriteRequest = 0; //申请写进程的个数HANDLE g_hReadSemaphore; //读者信号

HANDLE g_hWriteSemaphore; //写者信号

bool finished = false; //所有的读完成

//bool wfinished = false; //所有的写完成

/*

void CreatePersonList(int *pPersonList);

bool CreateReader(int StartTime,int WorkTime,int ID);

bool CreateWriter(int StartTime,int WorkTime,int ID);

DWORD WINAPI ReaderProc(LPVOID lpParam);

DWORD WINAPI WriterProc(LPVOID lpParam);

*/

//读者线程执行过程

DWORD WINAPI ReaderProc(LPVOID lpParam)//读过程

{

Person *pPerson = (Person*)lpParam;

// wait for the start time

while(g_CurrentTime != pPerson->m_nStartTime)

{ }

printf("Reader %d is Requesting ...\n",pPerson->m_nID);

printf("\n\n************************************************\n");

// wait for the write request

WaitForSingleObject(g_hReadSemaphore,INFINITE); if(g_NumOfReading ==0)

{

WaitForSingleObject(g_hWriteSemaphore,INFINITE); }

g_NumOfReading++;

ReleaseSemaphore(g_hReadSemaphore,1,NULL);

pPerson->m_nStartTime = g_CurrentTime;

printf("Reader %d is Reading the Shared Buffer...\n",pPerson->m_nID);

printf("\n\n************************************************\n");

while(g_CurrentTime <= pPerson->m_nStartTime + pPerson->m_nWorkTime)

{}

printf("Reader %d is Exit...\n",pPerson->m_nID);

printf("\n\n************************************************\n");

WaitForSingleObject(g_hReadSemaphore,INFINITE);

g_NumOfReading--;

if(g_NumOfReading == 0)

{ReleaseSemaphore(g_hWriteSemaphore,1,NULL);//此时没有读者,可以写}

ReleaseSemaphore(g_hReadSemaphore,1,NULL);

if(pPerson->m_nID == 4) finished = true; //所有的读写完成

ExitThread(0);

return 0;

}

//创建读者线程

bool CreateReader(int StartTime,int WorkTime,int ID)

{

DWORD dwThreadID;

if(g_NumPerson >= MAX_PERSON)

return false;

Person *pPerson = &g_Persons[g_NumPerson];

pPerson->m_nID = ID;

pPerson->m_nStartTime = StartTime;

pPerson->m_nWorkTime = WorkTime;

pPerson->m_nType = READER;

g_NumPerson++;

// Create an New Thread

pPerson->m_hThread=

CreateThread(NULL,0,ReaderProc,(LPVOID)pPerson,0,&dwThreadID);

if(pPerson->m_hThread == NULL)

return false;

return true;

}

//写者线程执行过程

DWORD WINAPI WriterProc(LPVOID lpParam)

{

Person *pPerson = (Person*)lpParam;

// wait for the start time

while(g_CurrentTime != pPerson->m_nStartTime)

{}

printf("Writer %d is Requesting ...\n",pPerson->m_nID);

printf("\n\n************************************************\n");

WaitForSingleObject(g_hWriteSemaphore,INFINITE);

// modify the writer's real start time

pPerson->m_nStartTime = g_CurrentTime;

printf("Writer %d is Writting the Shared Buffer...\n",pPerson->m_nID);

while(g_CurrentTime <= pPerson->m_nStartTime + pPerson->m_nWorkTime)

{}

printf("Writer %d is Exit...\n",pPerson->m_nID);

printf("\n\n************************************************\n");

//g_NumOfWriteRequest--;

ReleaseSemaphore(g_hWriteSemaphore,1,NULL);

if(pPerson->m_nID == 4) finished = true;//所有的读写完成

ExitThread(0);

return 0;

}

//创建写者线程

bool CreateWriter(int StartTime,int WorkTime,int ID)

{

DWORD dwThreadID;

if(g_NumPerson >= MAX_PERSON)

return false;

Person *pPerson = &g_Persons[g_NumPerson];

pPerson->m_nID = ID;

pPerson->m_nStartTime = StartTime;

pPerson->m_nWorkTime = WorkTime;

pPerson->m_nType = WRITER;

g_NumPerson++;

// Create an New Thread

pPerson->m_hThread=

CreateThread(NULL,0,WriterProc,(LPVOID)pPerson,0,&dwThreadID);

if(pPerson->m_hThread == NULL)

return false;

return true;

}

// 创建线程队列

void CreatePersonList(int *pPersonLists)

{

int i=0;

int *pList = pPersonLists;

bool Ret;

while(pList[0] != END)

{

switch(pList[1])

{

case R:

Ret = CreateReader(pList[2],pList[3],pList[0]);//351,w452,523,654 break; case W:

Ret = CreateWriter(pList[2],pList[3],pList[0]);

break;

}

if(!Ret)

printf("Create Person %d is wrong\n",pList[0]);

pList += 4; // move to next person list

}

}

int main()

{

g_hReadSemaphore = CreateSemaphore(NULL,1,100,NULL);

//创建信号灯,当前可用的资源数为1,最大为100 g_hWriteSemaphore = CreateSemaphore(NULL,1,100,NULL);

//创建信号灯,当前可用的资源数为1,最大为100 CreatePersonList(g_PersonLists); // Create All the reader and writers printf("Created all the reader and writer\n...\n");

g_CurrentTime = 0;

while(true)

{

g_CurrentTime++;

Sleep(300); // 300 ms

printf("CurrentTime = %d\n",g_CurrentTime);

if(finished) return 0;

} // return 0;

}

本科生课程设计成绩评定表

班级:软件ZY11101班姓名:赵洪涛学号:0121110680225

及格(60-69分)、60分以下为不及格

指导教师签名:______________

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

操作系统课程设计题目

课程设计任务书 一、课程设计目的 《计算机操作系统》课程设计是计算机类专业的集中实践性环节之一,是学习完《计算机操作系统》课程后进行的一次全面的综合练习。其目的在于加深对操作系统课程的理解,使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,理解操作系统在计算机系统中的作用、地位和特点,具有分析实际操作系统,设计、构造和开发现代操作系统的基本能力,为今后从事的各种实际工作,如设计、分析和改进各种系统软件和应用软件提供必要的软件理论基础。 二、课程设计内容及要求 课程设计要求: 每位同学从下述设计任务中任选一个任务完成,上机验收运行结果,现场提问,并提交所完成该任务的课程设计报告。 实验要求: 1)上机前认真使用C语言编写好程序,采用Visual C++6.0作为编译环境; 2)上机时独立调试程序 3)上机验收运行结果,现场提问 4)根据具体任务要求,提交课程设计实验报告,报告内容包括:课程设计目的、内容、基本原理、模块划分、数据结构、算法设计、程序流程图(包括主程序流程图、模块详细设计流程图等)、以及算法源码(必须有相关注释,以有助于说明问题为宜,不得全盘打印而不加任何注释)、心得体会等。

设计内容一页式虚拟存储管理页面置换算法 1.目的和要求 在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础 2.实验内容 阅读教材《计算机操作系统》,掌握存储器管理相关概念和原理。 模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。 前提: (1)页面分配采用固定分配局部置换。 (2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。 (3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。 3.实验环境 Windows操作系统、VC++6.0、C语言 4.实验提示 (1)基础知识 存储管理是操作系统进行资源管理的一个重要功能。现代操作系统广泛采用虚

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

《操作系统课程设计》题目要求

操作系统课程设计要求 一.设计目的 熟悉Linux编程环境,加强对Linux命令的理解及函数的运用 二.设计内容 1. 在Linux环境下模拟实现简单命令解释器。 (1)要求实现的基本命令包括: pwd //显示当前所在目录的路径名 dir <目录名> //列出指定目录名中的所有目录及文件 cd <目录名或路径>//改变当前工作目录 newdir <目录名> //新建目录 deldir <目录名> //删除目录 exit //退出命令解释程序 (2)可选做的扩展命令包括: rename <旧文件名> <新文件名> //重命名一个文件或目录 find <目录> -name <待查找的文件名> //在指定的目录及其子目录中查找指定的文件date //显示当前日期 (3)提示:整个程序的大致框架可参考如下: while ( exit未被输入) { 接收键盘的一行输入 分析输入的命令 对输入的命令进行处理,调用系统函数实现功能 } 2. 设计要求 (1) 设计必须在Linux环境下进行。 (2) 命令解释程序的提示符为:姓名拼音@ (3) 程序编写中不得使用system()系统调用。 (4) 整个程序必须严格经过测试,完成所有基本功能。源程序应有较详尽的注释。 3.可能用到的系统调用: open(),close(),read(),write(),creat() chdir(), opendir(),readdir(),rewinddir(),closedir(),rmdir(),mkdir() getcwd(), ftw() time(), localtime(), asctime()

武汉理工大学模电课设温度控制系统设计

课程设计任务书 学生姓名:张亚男专业班级:通信1104班 指导教师:李政颖 工作单位:信息工程学院 题目: 温度控制系统的设计 初始条件:TEC半导体制冷器、UA741 运算放大器、LM339N电压比较器、稳压管、LM35温度传感器、继电器 要求完成的主要任务: 一、设计任务:利用温度传感器件、集成运算放大器和Tec(Thermoelectric Cooler, 即半导体致冷器)等设计一个温度控制器。 二、设计要求:(1)控制密闭容器内空气温度 (2)控制容器容积>5cm*5cm*5cm (3)测温和控温范围0℃~室温 (4)控温精度±1℃ 三、发挥部分:测温和控温范围:0℃~(室温+10℃) 时间安排:19周准备课设所需资料,弄清各元件的原理并设计电路。 20周在仿真软件multisim上画出电路图并进行仿真。 21周周五前进行电路的焊接与调试,周五答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

温度控制系统的设计 1.温度控制系统原理电路的设计 (3) 1.1 温度控制系统工作原理总述 (3) 1.2 方案设计 (3) 2.单元电路设计 (4) 2.1 温度信号的采集与转化单元——温度传感器 (4) 2.2 电压信号的处理单元——运算放大器 (5) 2.3 电压值表征温度单元——万用表 (7) 2.4 电压控制单元——迟滞比较器 (8) 2.5 驱动单元——继电器 (10) 2.6 TEC装置 (11) 2.7 整体电路图 (12) 3.电路仿真 (12) 3.1 multisim仿真 (12) 3.2 仿真分析 (14) 4.实物焊接 (15) 5.总结及体会 (16) 6.元件清单 (18) 7.参考文献 (19)

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 2.1 系统的主要功能 (1) 2.2系统模块功能结构 (1) 2.3运行环境要求 (2) 2.4数据结构设计 (2) 第3章详细设计 (3) 3.1模块设计 (3) 3.2算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 5.1运行结果及分析 (4) 5.2系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 2.1 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write写入文件 Delete 删除文件 Mkdir 建立目录

Cd 切换目录 Logout 退出登录 2.2系统模块功能结构 2.3运行环境要求 操作系统windows xp ,开发工具vc++6.0 2.4数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users;

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

操作系统-课程设计

课程设计说明书(操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13-2 学号:20133029xx 学生姓名:xx 指导教师:xx 2015年12月15日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。进程调度是进程管理过程的主要组成部分,是必然要发生的事件。 在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。 进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。 关键词:进程,调度,PCB,时间片轮转

目录 1.设计目的 (6) 2.设计思路 (6) 3.设计过程 (8) 3.1流程图 (8) 3.2算法 (8) 3.3数据结构 (10) 3.4源代码 (10) 4.实验结果及分析 (20) 4.1 使用说明 (20) 4.2程序演示 (20) 5.实验总结 (24) 6.参考文献 (24)

单片机课程设计-武汉理工大学单片机实训报告

第一章绪论 (2) 1.1概述 (2) 1.2课程设计任务 (2) 第二章硬件系统设计 (3) 2.1单片机最小系统 (3) 2.1.1 STC89C52的介绍 (3) 2.1.2 stc89c52系列单片机最小系统的介绍 (4) 2.2矩阵键盘模块 (5) 2.3数码管显示单元 (5) 2.4 LCD1602液晶显示电路 (6) 2.5蜂鸣器单元 (7) 第三章软件设计 (8) 3.1数码管实验 (8) 3.1.1循环数码管显示0—F程序设计结构图: (8) 3.1.2 59秒倒计数流程图 (9) 3.2 矩阵键盘流程图 (10) 3.3 LCD1602滚动显示年月日时分秒 (11) 3.4 AD转换, (12) 3.5家电遥控器 (13) 第四章调试结果分析 (14) 4.1数码管调试及分析 (14) 4.1.1循环数码管显示0—F (14) 4.1.2数码管59秒倒计数 (15) 4.2矩阵键盘 (15) 4.3 LCD1602滚动显示年月日时分秒 (16) 4.4 AD转换 (16) 4.5家电遥控器 (17) 第五章小结 (17) 参考文献: (18)

第一章绪论 1.1概述 随着我国工业技术和电子技术的发展和进步,自动控制技术也已经得到了极大的普及和应用,而这些自动控制技术的核心技术就是单片微型计算机,简称单片机。它以其高可靠性、高性价比、低电压、低功耗等一系列优点,被广泛应用于控制系统、数据采集等领域。而51单片机系列以其超高的性价比深受广大电子爱好者和开发者以及大学生群体的欢迎。故而本次课程设计采用STC89C52单片机。 1.2课程设计任务 必做项目(这是每个学生必做的任务): 1.基本系统:在51单片机开发系统PCB电路板上完成电子元器件的焊接、调试、程序下载,并实现数码管显示、矩阵键盘扫描、中断程序、定时器程序、串口通讯等基本功能; 2.显示功能:焊接电路并实现对1602液晶屏的显示功能,要求能滚动显示字符; 3.输出控制:焊接电路并实现对继电器的控制功能; 4.数据采集:焊接电路并实现对AD0832的数据采集功能; 选做项目(以下任选一): 1.家电遥控器:实现对红外接收管和发射管的控制功能,要求能够学习遥控器的红外码,并能发射相应的编码,实现红外遥控器的功能。 2.增强显示:实现光魔方的功能,要求搭建不少于8*8*4单元的光魔方,能够动态显示字符。 3.空气质量监测:实现对室外空气PM2.5浓度测量,要求能够实时读取PM2.5模块数据计算浓度,并将结果显示在屏幕中,或者通过无线方式发送到PC机中显示,或者超过设定值启动电机模拟开关窗。 4.入侵在线报警:要求通过采集远红外传感器数据,自动触发相机模块抓拍,照片发至PC或网络中。 5.穿戴式设备控制:对陀螺仪传感器的数据采集和处理,要求能根据采集到的数据计算出传感器加速度值,识别基本动作触发继电器开合,模拟启动外部设备。 6.智能台灯:根据环境光强度自动调节LED亮度,通过光敏元器件采集环境亮度,通过PWM方式控制LED灯亮度。定时自动开灯,设定开灯时间,到时间由暗逐渐变亮。通过门控检测夜晚有人回家时自动开启LED灯等功能。 7.火灾在线探测:采集烟感/异味传感器数据,并进行判断有无火情,继而控制继电器动作同时通过无线发送信息到PC或网络中。 8.智能门磁:设计门磁开关,一端安装门上,另一端安装在门框。读取霍尔传感器输出,确定门开合状态,并在门状态变化时发送提示信息到PC或者网络中。 9.智能窗帘:根据光强变化、夜晚休息、人离开等多种条件自动开闭窗帘。可以设计导轨及电机控制机构。 10.智能信息提示:每天早上自动搜集门户网站头条新闻、当天天气情况等,

【精选】操作系统课程设计(文件系统管理)文件

评定等级 操作系统课程设计 文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制

文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看, 加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了 解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete 等文件命令,对文件进行操作。以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计 4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录 UFD (User File Directory )。这些文件目录可以具有相似的结构,它由用户所有文件的文件 控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory );在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目 录的指针。

2017操作系统(含课程设计) - 随堂练习

随堂练习提交截止时间:2017-12-15 23:59:59 当前页有10题,你已做10题,已提交10题,其中答对10题。 1.(单选题) 操作系统是基本的特征是() A、并发 B、共享 C、虚拟 D、异步 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 2.(单选题) 下面不属于操作系统设计目标的是() A、提高资源利用率 B、提高系统吞吐量 C、用户操作计算机更方便 D、并行执行多个进程 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 3.(单选题) 历史上最早出现的操作系统是() A、单道批处理系统 B、多道批处理系统 C、分时系统 D、实时系统 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 4.(单选题) 实时操作系统必须在()内处理完来自外部的事件。 A、响应时间 B、周转时间 C、被控对象规定时间 D、调度时间 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 5.(单选题) 操作系统是对()进行管理的软件。 A、软件 B、硬件 C、计算机资源 D、应用程序 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 6.(单选题) 配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的一台计算机只是一台逻辑上的计算机,称为()计算机。 A、并行 B、真实 C、虚拟 D、共享 答题: A. B. C. D. (已提交)

问题解析: 7.(单选题) 操作系统中采用多道程序设计技术提高了CPU和外部设备的() A、利用率 B、可靠性 C、稳定性 D、兼容性 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 8.(单选题) 在操作系统中,并发性是指若干事件____发生( ) A、在同一时刻 B、在不同时刻 C、在某一时间间隔内 D、依次在不同时间间隔内 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 9.(单选题) ()操作系统允许在一台主机上同时联接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。 A、网络操作系统 B、批处理操作系统 C、实时操作系统 D、分时操作系统 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 10.(单选题) 下面关于操作系统的叙述中正确的是 ( ) A、批处理作业必须提交作业控制信息 B、分时系统不一定都具有人机交互功能 C、从响应时间的角度看,实时系统与分时系统差不多 D、由于采用了分时技术,用户可以独占计算机的资源 答题: A. B. C. D. (已提交) 参考答案:A 问题解析:

武汉理工大学混凝土结构设计原理课程设计上课讲义

学号:0121206120102 课程设计 课程:混凝土结构设计原理 学院:土建学院 班级:土木 zy1202 姓名: 学号: 0121206120102 指导老师: 2015年1月18日

目录 一、设计资料 (1) 二、设计荷载 (1) 三、主梁毛截面几何特性计算 (1) 四、预应力钢束面积的估算及钢束布置 (4) 五、主梁截面几何特性计算 (7) 六、截面强度计算 (9) 七、钢束预应力损失估算 (11) 八、预加应力阶段的正截面应力验算 (15) 九、使用阶段的正应力验算 (18) 十、使用阶段的主应力验算 (21) 十一、锚固区局部承压验算 (23) 十二、主梁变形(挠度)计算 (24)

贵州道真高速公路桥梁上部构件设计 一、设计资料 1、初始条件:贵州道真高速公路桥梁基本上都采用标准跨径,上部构造采用装配式后张法预应力混凝土空心板,20 m 空心板、1.25m 板宽,计算跨径19.5m ,预制长度19.96m 。参照《公路钢筋混凝土及预应力混凝土桥涵设计规范》按A类预应力混凝土构件设计此梁。 2、材料:(1)混凝土:C40混凝土,MPa Ec 41025.3?=,抗压强度标准值 MPa f ck 8.26=,抗压强度设计值MPa f cd 4.18=,抗拉强度标准值MPa f tk 40.2=,抗拉强度设计值MPa f td 65.1=。 (2)非预应力钢筋:普通钢筋主筋采用HRB335级钢筋,抗拉设计强度 a sd MP f 280=;箍筋采用R235级钢筋,抗拉设计强度a sd MP f 195=。 (3)预应力钢筋公称直径为15.24mm ,公称面积为140mm2,抗拉标准强度 a pk MP f 1860=,MPa f pd 1260=,弹性模量Ep =1.95×105Mpa ,低松弛级。 二、设计荷载 设计荷载为公路-I 级,结构重要性系数0γ取1.0。荷载组合设计值如下: kN Q 76=跨中m kN M .399=汽m kN M .710=恒m kN M .1395=跨中kN Q j 3720=00=j M m kN M .10254/1= 三、主梁毛截面几何特性计算

操作系统课程设计报告

; 一、概述 课程设计目的、意义: 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 主要任务: 模拟文件系统设计是设计和实现一个简单的文件系统。内容包括: 1.建立文件存储介质的管理机制 2.建立目录(采用一级目录结构) 3.文件系统功能(显示目录、创建、删除、打开、关闭、读、写) ~ 4.文件操作接口(显示目录、创建、删除、打开、关闭、读、写) 二、系统设计 课程设计的系统设计: 本系统模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文

件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 整体设计框架: 系统初始化界面是由创建用户存储空间,管理文件,退出系统三个模块组成。用户创建由创建用户存储空间,进入目录,删除用户存储空间,显示所有用户存储空间,等模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 三、系统实现 课程设计主要内容的实现程序代码: 《 #include <> #include <> #include <> typedef struct file{ char name[10]; struct file *next; }File; typedef struct content{ ! char name[10]; File *file;

操作系统课程设计论文

学年论文(课程设计)题目:操作系统课程设计 学院数学与计算机学院 学科门类工学 专业网络工程 学号 姓名 指导教师王煜 年月日

河北大学学年论文(课程设计)任务书 (指导教师用表) 指导教师签字: 系主任签字: 主管教学院长签字: 装 订 线

河北大学学年论文(课程设计)成绩评定表学院:数学与计算机学院 装 订 线

摘要 此系统实现了存储管理、设备管理和进程管理。 存储管理部分主要实现主存空间的分配和回收。存储管理采用可移动的可变分区存储管理方式。采用数组来模拟主存,大小为512个字节。 设备管理主要包括设备的分配和回收。模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。设备分配时采用采用先来先服务策略。设备回收时唤醒等待设备的进程。 进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。其中硬件中的中央处理器用不断循环的函数CPU( )模拟,重要寄存器(如:程序状态寄存器PSW、指令寄存器IR)用全局变量模拟,中断的发现是在函数CPU中加检测PSW 的方式来模拟,时钟的模拟通过timer控件实现。进程控制块的模拟通过数组,本系统最多容纳10个。进程调度时采用时间片轮转调度算法,时间片为5。 关键词:存储管理设备管理进程管理时间片

ABSTRACT The system has storage management, equipment management and process management. The storage management has achieved the allocation and recovery of the main memory space. Variable storage management is used as storage management .We simulate the main memory by array, whose size is 512 bytes. The device management, including the distribution and recovery of devicet. We simulate three devices ,A,B,C. the numbers of them are 3,2,1. The distribution of device used to adopt first-come first-service strategy. It awakes the blocking process when the device is recycled. The process management, including scheduling ,creating revocation ,blocking and waking up the process, the realization of the interruption.We simulate the central processing unit by the cycling function named CPU(),simulate the important register by global variable, simulate the recovering of interruption by checking PSW in the function of CPU(),simulate the clock by the timer control. The simulation of the process control block by array, whose number is up to 10. When the scheduling of the process happens, we use the algorithm of time piece rotation scheduling, and the time piece is 5. Key words: storage device process time

武汉理工大学水质工程学I课设

1.设计任务及资料 1.1设计原始资料 长垣镇最高日设计用水量为近期5万吨/天,远期10万吨/天,规划建造水厂一座。已知城区地形平坦,地面标高为21.00米;水源采用长江水;取水构筑物远离水厂,布置在厂外。管网最小服务水头为28.00米;二级泵站采用二级供水到管网系统,其中最大一级供水量占全天用水量的百分数为5.00%,时间为早上6:00~晚上10:00,此时管网系统及水厂到管网的输水管的总水头损失为11.00米;另一级供水时管网系统及水厂到管网的输水管的总水头损失为5.00米。常年主导风向:冬季为东北风、夏季为东南风。水厂大门朝向为北偏西15°。 1.2设计任务 1、设计计算说明书1本。 内容包括任务书、目录、正文、参考资料、成绩评定表等,按要求书写或打印并装订成册。 其中正文内容主要包括:工程项目和设计要求概述,方案比较情况,各构筑物及建筑物的形式、设计计算过程、尺寸和结构形式、各构筑物设计计算草图、人员编制、水厂平面高程设计计算和布置情况以及设计中尚存在的问题等。 2、手工绘制自来水厂平面高程布置图1张(1号铅笔图,图框和图签按标准绘制)。要求:比例选择恰当,图纸布局合理,制图规范、内容完整、线条分明,字体采用仿宋字书写。

2. 设计规模及工艺选择 2.1设计规模 根据所提供的已知资料:最高日用水量为近期5万吨/天,远期10万吨/天。 d Q=Q α α为自用水系数,取决于处理工艺、构筑物类型、原水水质及水厂是否设有 回收水设施等因素,一般在1.05-1.10之间,取α =1.07,则水厂生产水量 近期:Q 0=1.07Q d =1.07×50000=53500m 3/d=2229.2m 3/h 远期:Q 0=1.07Q d =1.07×100000=107000 m 3/d=4458.3m 3/h 水处理构筑物的设计,应按原水水质最不利情况时所需供水量进行校核。 2.2水厂工艺流程选择 2.2.1概述 给水处理的任务是通过必要的处理方法去除水中杂质,使之符合生活饮用或工业使用要求的水质。给水处理工艺方法和工艺的选择,应根据原水水质及设计生产生产能力等选择,由于水源不同,水质各异,生活饮用水处理系统的组成和工艺流程也多种多样。 2.2.2水处理流程选择 水处理方法应根据水源水质的要求确定。所给的设计资料中指出,水源采用 长江水,其水质应该较好,采用一般传统的水处理工艺,即:混合、絮凝、沉淀、过滤、消毒。混凝剂采用硫酸铝,设溶解池和溶液池,计量泵投加药剂,管式静态混合器混合。絮凝池采用水平轴机械絮凝池。沉淀池采用平流沉淀池。滤池采用普通快滤池。

操作系统课程设计二级文件系统

操作系统课程设计报告 专业:计算机信息处理 学号:09103408 姓名:纪旻材 提交日期:2011-12-28

【设计目的】 1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 1、delete 删除文件 2、open 打开文件 3、close 关闭文件 4、write 写文件 【实验环境】 Windows7系统

Visual studio 2010 【相关知识综述】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 【设计思路】 1 主要数据结构 #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/ #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/ typedef struct/*the structure of OSFILE定义主文件*/

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

相关文档
最新文档