报告2 Linux操作系统

时间:2019-05-13 04:36:31下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《报告2 Linux操作系统》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《报告2 Linux操作系统》。

第一篇:报告2 Linux操作系统

Linux操作系统

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 和 UNIX 的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知 识产权保护的传统商业软件。

目前,中国Linux的发展呈现以下趋势:

1、行业应用逐渐扩展,差异化解决方案需求增长

经过几年的技术磨砺与市场培育,Linux行业应用市场逐步细化,在金融、电信、邮政、传媒、烟草等行业的应用也不断增多。成功应用案例的不断增加,企业级用户在Linux平台上部署解决方案时,对系统稳定性、可靠性、高性能和安全性等问题也逐步打消疑虑,树立了信心。因此,在商用市场中,市场需要成熟的基于Linux的、针对行业的应用解决方案,解决方案提供商在Linux应用开发过程中能够从厂商获得足够的技术支持,并提供满足用户需求基础之上的安全性、高效性、可移植性最好,以及成本最低的解决方案是趋势所在。

2、单一产品价格竞争向整体解决方案TCO竞争过渡

Linux向市场之初,采取的是低价策略。但是,仅仅靠低价在竞争中不一定能获取足够的竞争优势弥补产品研发等巨大成本;而且用户的消费心理越来越理性,其选择产品所关注的因素并不仅是单一产品的采购价格,用户的需求已经从原来购买多家厂商的多种产品转变为从单一提供商购买整体解决方案和一站式服务。针对用户需求的转变,Linux产品提供商也逐渐由单一产品价格竞争向整体解决方案TCO竞争过渡。这个过程中,Linux厂商需要与其它相关IT厂商如硬件、软件厂商和ISV等建立很好的合作关系,提高产品互相兼容性、互操作性及结合度,最终提高用户业务系统的效率,降低整个业务系统的TCO。

3、渠道体系趋向层次化、多样化

当前,中国Linux厂商的渠道体系开始建立并逐步完善,但目前渠道销售对Linux市场的贡献还有待提高。未来Linux渠道发展趋势将是构建多环节合作的层次化渠道体系,并使之扩展为更广泛的合作伙伴体系。在产品研发上,加强与行

业独立软件开发商的合作,提供更具适用性、更丰富的行业解决方案;在产品销售上,除了代理商、分销商、经销商之外,会有更多的具有成功的行业推广经验的增值解决方案提供商加入;在产品服务上,Linux厂商为渠道及系统集成商提供更多的培训和技术支持,提高渠道及系统集成商的服务能力;在市场推广上,Linux厂商与相关软硬件厂商的合作关系进一步深入,面向共同的目标客户群提高产品的兼容性或提供捆绑的产品包共同拓展市场;Linux培训或教育合作伙伴的加入从更深的层次上培育市场,拓宽市场。总之,未来Linux渠道发展的趋势是形成多种方式多种层次的合作伙伴,构建立体式渠道。

4、服务在Linux收入结构中的比重逐渐增大

随着Linux应用的逐渐深入,Linux本土厂商和应用企业正逐步接受以服务来获取收入的销售方式,而国外厂商Novell和红帽的进入,更将它们在国外采用的成熟的销售方式带入了中国,加速了中国客户对这一销售方式的认可。中国的Linux厂商也逐渐对以服务获取收入的销售方式达成了共识,并正在努力调整自己的销售策略和开发策略,越来越多的收入来自Linux的技术服务,而不是Linux产品的销售

而推广Linux的重要意义在于:

1.Linux是我国在系统软件产业发展方面取得重大突破的一次历史机遇:我国软件产业规模小,实力弱,尤其是在系统软件这样的关键产品上,我们至今还没能开发出具有较强市场竞争能力的产品。这是我们不得不面对的客观现实。没有自主的操作系统,不仅信息产业发展受制于人,而且信息安全也难以保证。中国作为世界政治,经济大国,不能没有操作系统这样的关键软件产品。Linux是我们可能在系统软件上取得重大突破的一个不容错过的良机。

2.Linux已成主流平台:Linux诞生于1991年,以其开放源码技术先进等特性,得到了广泛认可,并以每年30%的增长率(操作系统产品第一位)飞速发展,以24%市场份额在服务器市场成为第二大服务器操作系统平台。Linux是支持平台最多的操作系统,从PDA,信息家电、信息终端到桌面操作系统,PC服务器,小型机乃至大型主机,都可以运行Linux操作系统。而且稳定性和性能非常优秀。现在Linux已经成为强大的企业级操作系统,应用的深度和广度也在飞速地发展,已在政府、教育、军队、金融、商业、ISP/ICP,电信等

领域都得到了广泛发应用,成功案例非常之多。

Linux的发展的前景之广阔已毋庸置疑,但Linux方面发技术人才匮乏,已成为其发展的瓶颈。因此,在教育领域学习和使用Linux具有现实性和长远意义。当然Linux操作系统和Windows操作系统相比较有很多的特点。比如:1.可完全免费得到2.可以运行在386以上及各种RISC体系结构机器上3.Linux是UNIX的完整实现4.真正的多任务多用户5.完全符合POSIX标准6.具有图形用户界面7.具有强大的网络功能8.是完整的UNIX开发平台

目前应用在手机上的操作系统主要有PalmOS、Symbian、Windows CE和Linux四种。与Windows操作系统、Linux操作系统有关系的只是系统的内核架构,表层的软件平台是独立的。

随着技术的进步,移动通信终端引入开源手机操作系统得以实现,由于Linux系统是免费开放的,所以其在通信终端的应用为用户带来了更便宜的价格和更丰富的功能扩展:Google开发的Android手机操作系统可谓是其中的代表。其Android系统的组成模块,核心系统就是采用Linux内核。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

第二篇:实时操作系统报告

实时操作系统课程实验报告

专业:通信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%3Switch(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

OS_STK

TaskStk[N_TASKS][TASK_STK_SIZE];

OS_STK

TaskStartStk[TASK_STK_SIZE];

INT8U

TaskData[N_TASKS];

void Task0(void *pdata);

void TaskStart(void *pdata);

static void TaskStartDispInit(void);

void main(void){

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);

OSInit();

PC_DOSSaveReturn();

PC_VectSet(uCOS, OSCtxSw);

OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_STK_SIZE-1], 4);

OSStart();

} void TaskStart(void *pdata){ #if OS_CRITICAL_METHOD == 3

OS_CPU_SR cpu_sr;#endif

INT8U l,m;

INT16S key;

l=0;

pdata = pdata;

TaskStartDispInit();

OS_ENTER_CRITICAL();

PC_VectSet(0x08, OSTickISR);

PC_SetTickRate(OS_TICKS_PER_SEC);

OS_EXIT_CRITICAL();

OSStatInit();

for(;;){

if(PC_GetKey(&key)== TRUE)

{

switch(key)

{

case 0x1B:

PC_DOSReturn();

break;

case 0x43:

{ m=(l%3);

switch(m)

{ case 0: {

PC_DispStr(26,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;

case 1: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;case 2: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);

PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);}

break;}

l++;} break;

} } OSCtxSwCtr = 0;

OSTimeDlyHMSM(0, 0, 1, 0);

} } static void TaskStartDispInit(void){ PC_DispStr(0, 0, “

uC/OS-II, The Real-Time Kernel

”, DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);PC_DispStr(0, 1, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 2, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 3, “

dianfanbao shiyan

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 4, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 5, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 6, “

kai shi.zhu fan.zhu zhou.zhu mian.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 7, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 8, “

bao wen.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 9, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 10, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 11, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 12, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 13, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 14, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 15, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 16, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 17, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 18, “

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 19, “ 'S':kai ji.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 20, “ 'C':mo shi qie huan.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 21, “ 'B':kai shi zhi xin.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 22, “ 'Q':qu xiao dang qian gong zuo zhuang tai.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 23, “ 'X':tui chu xi tong.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);

PC_DispStr(0, 24, “

<-PRESS 'ESC' TO QUIT->

”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);}

五.运行界面:

(1)主界面:

(2)显示北京时间:

(3)模式切换:

(4)倒计时:

(5)保温执行时间:

六.总结:

本次实验主要以老师所给的实验事例为基础,并结合老师课堂讲的内容,理解编写程序。做实验本实验前,先执行了一下事例程序,以此了解borlandc的一些基本操作;然后就是看懂每个实验的框架和主要部分;接着,将事例程序中的部分思想运用到本次实验中,其中以显示界面的思想运用的最多;除此以外,在模式切换上花了最大的精力,最终的解决方法是以变量l作为一个计数值,并运用switch语句在选择的模式上画上“@”,同时还得注意在未选择的模式上画上空格来“擦除”之前画上的@;在查询按键上,同样运用switch语句......这次实验收获不少,不仅对之前学的C语言有了更进一步的巩固,而且还强化了ucos里面的多任务的一些认识;同时,以前对DOS界面很陌生,但本次实验使用的正是DOS界面,通过几天的经历,对DOS中的编译、“help”等各个方面有了更深入的认识,不再害怕使用DOS了。

对本课程有很大的兴趣,在以后的课余时间里我会不断学习这些知识。

第三篇:操作系统课程设计报告

课程设计报告

题 目: 模拟请求页式管理

课程名称: 计算机操作系统 学 院: 信息工程学院

专 业: 计算机科学与技术

班 级: 14计本(1)学生姓名: * * * 学 号: 201403031** 指导教师: * * 成 绩:

开课时间: 2016-2017 学年 一 学期

模拟请求页式管理

第1章 需求分析

1.1设计要求

请求页式管理是一种常用的虚拟存储管理技术。本设计通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。本实验要求用Vc++或其他高级语言编写和调试。

编写程序实现:

(1)先进先出页面置换算法(FIFO)(2)最近最久未使用页面置换算法(LRU)最佳置换页面置换算法(OPT)设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。

1.2解决方案

首先确定实现语言使用c#实现图形化界面,后确定要实现哪些功能,比如算法选择,页面添加,模拟控制。然后确定输出结构以便于程序的测试和验证。将基本框架建立后再进行编程。编程前进行算法结构分析最后编程实现。

1.3算法实现原理

1、先进先出置换算法(FIFO):

发生缺页中断时按照页面进入内存顺序总是淘汰最先进入内存的页面。

2、最近最久未使用置换算法(LRU):

发生缺页中断时总是淘汰存在内存中最长时间未被使用的页面。

3、最佳置换算法(OPT):

发生缺页中断时若一个或几个页面将来将不会被调用则按先进先出原则淘汰页面,若将来都有调用则比较调用时刻选择最远时刻页面淘汰。

4、缺页率:缺页次数占页面调用次数的百分比。

第2章 概要设计

2.1数据设计

常变量:调用页面最大数量(MaxN),内存最大页面数(MaxM)待调用页面数组:page_dd[MaxN]存放等待调用的页面号

页面数组专用指针 page_p,用于指向page_dd数组中正需调入内存的页号 内存块数组:Memery[MaxM],存放内存当前存放的页号 缺页计数器:count,记录缺页次数

内存块状态数组:M1[MaxN],M2[MaxN],M3[MaxN],记录每次页面调用结束后内存各块的状态

缺页记录数组s[MaxN],用于记录页面调用时是否产生缺页中断,初始化为是

2.2函数设计

1、页面添加函数:void btnAdd_Click(object sender, EventArgs e)用于实现通过点击按钮实现数据输入。

2、内存初始化函数:init(int[] a, int[] b,int []m1,int[]m2,int[]m3)参数有页面数组、内存数组、状态数组,采用先进先出算法对内存先进行装满 服务于先进先出页面置换函数和最佳置换函数。

3、输出函数:void display(int[]a,int[]m1,int[]m2,int[]m3,char[]c)用于输出模拟结果,参数有页面数组,内存数组,状态数组,缺页记录数组。再模拟之后调用。

4、模拟控制函数:void btnmo_Click(object sender, EventArgs e)用于实现通过单击模拟按钮,根据用户所选算法进行模拟并显示结果。

5、先进先出算法模拟函数:

void FIFO(int[] a, int[] b,int[]m1,int[]m2,int[]m3,char[] s)用于实现先进先出算法模拟,参数有页面数组,内存数组、内存状态记录数组,缺页记录数组。在模拟函数中调用。

6、最近最久未使用算法模拟函数:

void LRU(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s)用于 3 实现最近最久未使用算法模拟,参数有页面数组,内存数组,内存状态记录数组,缺页记录数组。在模拟函数中被调用。

7、最近最久未使用函数辅助函数:void LUR_I(int[] a,int e)用于对最近最久未使用算法中所用辅助数组(记录页面存在时长)进行调整,参数有辅助数组及需调整的数据下标。在最近最久未使用函数中调用。

8、最佳置换算法模拟函数:

void OPT(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s)用于模拟最佳置换算法。参数有页面数组,内存数组,内存状态记录数组,缺页记录数组。在模拟函数中被调用。

9、最佳置换算法辅助函数:void OPT_F(int[] a, int e)用于对最佳置换算法中的辅助数组进行调整。参数有辅助数组,需调整数据下标。在最佳置换算法中被调用。

10、重置函数:void btncz_Click(object sender, EventArgs e)用于重新选择算法进行新的模拟。

2.3主要算法设计

1、初始化函数算法:

第一步:将第一个页面调入内存,调整最佳置换算法辅助数组,缺页计数器加一,保存内存数组状态。

第二步:调用下一个页面并判断内存中是否有本页面有转第三步,无转第四步。第三步:更改缺页数组对应下标值,记录当前内存状态,调整最佳置换算法辅助数组,页面指针指向下一页。

第四步:将页面调入内存,调整最佳置换算法辅助函数,缺页计数器加一,保存内存数组状态。若内存尚不满转第一步。具体见图1初始化算法流程图。

开始页面调入内存缺页计数器加一记录内存状态调用下一页否否内存是否有该页面是记录内存状态修改缺页数组内存已满是结束

图1 初始化算法流程图

2、先进先出页面置换算法:

第一步:检查内存中是否已有需调用页面,有则转第二步,无则转第三步。第二步:记录当前内存状态,修改缺页数组对应下标值。

第三步:内存中无需要调用的页面,进行出队操作,然后进行入队操作,记录内存块状态,缺页计数器加一。

第四步:若页面数组未被调用结束转第一步。具体见图2先进先出算法流程图。

开始页面调入内存该页在内存中是否已存在是否否先出队操作后入队操作记录内存状态修改缺页数组值记录内存状态缺页计数器加一页面调用结束是结束

图2 先进先出算法流程图

3、最近最久未使用置换算法:

第一步:将页面调入内存,记录内存状态,缺页计数器加一,调整辅助数组,页面指针加一。

第二步:检查内存中是否已有所需页面,有转第三步,无转第一步。

第三步:修改缺页数组对应下标记录,记录内存状态,调整辅助数组,页面指针加一。第四步:内存是否已满,无则转第一步,是则转第五步。

第五步:检查内存中是否有所需页面,有则记录当前内存状态,修改缺页数组对应下标值。无则转第六步。

第六步:检查辅助数组找出最大值并记录其下标,置换内存中对应下标的数据,调整辅助数组,缺页计数器加一。

第七步:页面是否调用结束未结束则转第五步。具体见图3最近最久未使用算法流程图。

开始调入页面至内存记录内存状态计数器加一否调整辅助数组调用下一页内存中是否已有该页否内存已满是通过辅助数组确定淘汰页面是修改缺页数组记录内存状态调整辅助数组否页面置换记录内存状态计数器加一调用结束是结束

图3 最近最久未使用算法

4、最佳置换算法:

第一步:检查内存中是否已有所需页面,有则记录内存状态,修改缺页数组对应下标数值。无则转第二步。

第二步:判断内存中各页面的未来调用情况,记录是否还有调用,若有则记录调用时刻。

第三步:分析调用情况,内存中页面都在将来不会被调用转第四步,有一个被调用转第五步,有两个被调用转第六步,全被调用转第七步。

第四步:查找辅助数组找到内存中存在时间最长的页面进行置换,修改内存状态,缺页计数器加一,修改辅助数组。

第五步:查找到不会被调用的页面,并根据辅助数组选择最早进入内存的页面将其置换。修改内存状态,缺页计数器加一,修改辅助数组。

第六步:查找辅助数组找到将来不需要在调用的页面将其置换,修改辅助数组,记录内存状态,缺页计数器加一。

第七步:查找辅助数组,找寻最晚被调用的页面,将其置换。记录内存状态,修改辅助数组,缺页计数器加一。

第八步:页面是否调用完成,否则转第一步。具体见图4最佳置换算法流程图

开始调入页面记录内存状态计数器加一更新辅助函数是页面已存在否向后检查内存当前页面调用情况所有页面都不会再度调用否是一个页面会调用否否是两个页面会调用是否查找辅助数组得到最先进入页面通过辅助数组得到不会再调用的页面通过辅助数组获取最晚调用的页面通过辅助数组得到另外两个页面中最先进入的页面置换页面记录内存状态计数器加一更新辅助函数页面调用结束是结束

图4 最佳置换算法流程图 2.4界面设计

采用c# 设计windows窗体应用程序,使用下拉列表框选择算法,通过按钮添加待调用的页面。通过文本控件显示模拟结果。显示样式:第一行:算法名称;

第二行:调用页面顺序;

第三行至第五行显示内存在每调用一次页面后的状态;

第六行:是否缺页;

最后一行显示缺页率;

第3章 详细设计与实现

3.1函数设计

1、添加按钮功能实现代码

主要功能:实现单击一次添加一个调用页面,并给出相应的提示,如正在输入的是第几次调度页面,在输入为空时能够弹出对话框提示用户,在输入完成时为避免数组越界应在输入完成时隐藏;输入过程中始终保证时输入焦点。private void btnAdd_Click(object sender, EventArgs e){ if(txtAdd.Text!= “")//输入不为空才能继续输入 { page_dd[i_add] = Convert.ToInt32(txtAdd.Text);/*将输入值赋值给页面数组*/ txtShow.Text += txtAdd.Text + ” “;/*显示供用户查阅*/ i_add++;txtAdd.Clear();/*清空*/ if(i_add == MaxN)//输入结束时 { txtAdd.ReadOnly = true;//不允许继续输入 btnAdd.Hide();//按钮隐藏 return;} txtAdd.Focus();//设置为输入焦点

label2.Text = ”第“ +(i_add + 1)+ ”次调度页面:“;/*提示用户正在输入的是第几次调度页面*/ } /*输入为空则弹出对话框提示用户输入为空*/ else { MessageBox.Show(”请输入调用页面!“, ”输入为空“, MessageBoxButtons.OK, MessageBoxIcon.Warning);txtAdd.Focus();} }

2、初始化函数

主要功能:将内存一先进先出方式填满,并记录每个页面进入时间,服务于先进先出页面置换算法和最佳置换算法。

void init(int[] a, int[] b,int []m1,int[]m2,int[]m3){ /*内存未满时循环*/ for(int i = 0;i < MaxM&&page_p

//调整辅助数组将刚进入内存的页面的对应时间 OPT_F(O_Q ,i); count++;//缺页计数器加一 m1[page_p] = b[0];//保存内存状态 m2[page_p] = b[1];m3[page_p] = b[2];page_p++;//调用下一页面

//检查内存中是否原先就有需要的页面; for(int j = 0;j <= i&&page_p

s[page_p] = 'F';//缺页数组对应数据更改 m1[page_p] = b[0];//记录内存状态 m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q,-1);//调整最佳置换算法辅助函数 page_p++;//调用下一页 j =-1;//重新开始寻找 } } } }

3、先进先出页面置换函数

主要功能:根据先进先出算法要求在产生缺页中断时采用先进先出方式确定淘汰页面,并在每次页面调用时记录下内存状态,缺页次数;采用循环队列使得每次出队的一定是最先进入内存的。

private void FIFO(int[] a, int[] b,int[]m1,int[]m2,int[]m3,char[] s){ int Fpage_p = page_p;int front, rear;//定义队列对手和对尾指针并初始化 front = 0;rear = MaxM1;int sa;for(;Fpage_p < MaxN;Fpage_p++){ sa = 0;for(int i = 0;i < MaxM;i++)//检查内存中是否已有要调用的页面。

{ if(b[i] == a[Fpage_p]){ m1[Fpage_p] = b[0];m2[Fpage_p] = b[1];m3[Fpage_p] = b[2];s[Fpage_p] = 'F';sa = 1;break;} } if(sa == 0){ front =(front + 1)% MaxM;

rear =(rear + 1)% MaxM;b[rear] = a[Fpage_p];m1[Fpage_p] = b[0];m2[Fpage_p] = b[1];m3[Fpage_p] = b[2];count++;} else continue;} } /*最近最久未使用算法辅助数组调整函数*/ private void LUR_I(int[] a,int e){ int temp;temp = a[e];a[e] = 1;for(int i = 0;i < MaxM;i++){ if(a[i] < temp && i!=e)a[i]++;} } /*最佳置换算法辅助数组调整函数*/ private void OPT_F(int[] a, int e){ if(e!=-1){ a[e] = 0;for(int i = 0;i < MaxM;i++){ if(i!= e)a[i]++;} } else for(int i = 0;i < MaxM;i++){ a[i]++;} } /*最近最久未使用算法*/ private void LRU(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s){

int[] L_Q = new int[MaxM]{3,3,3};int sa;for(int i = 0;i < MaxM && page_p < MaxN;i++){ b[i] = a[page_p];//调入内存 count++;m1[page_p] = b[0];//保存内存状态 m2[page_p] = b[1];m3[page_p] = b[2];LUR_I(L_Q, i);page_p++;for(int j = 0;j <= i && page_p < MaxN;j++){ if(b[j] == a[page_p]){ s[page_p] = 'F';m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];LUR_I(L_Q, j);page_p++;j =-1;} } } for(;page_p < MaxN;page_p++){ sa = 0;for(int i = 0;i < MaxM;i++)//用的页面。{ if(b[i] == a[page_p]){ m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];s[page_p] = 'F';LUR_I(L_Q, i);sa = 1;break;} } if(sa == 0){

检查内存中是否已有要调40 for(int i = 0;i < MaxM;i++){ if(L_Q[i] == 3){ b[i] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];LUR_I(L_Q, i);break;} } count++;} else continue;} } /*最佳置换算法*/ private void OPT(int[] a, int[] b, int[] m1, int[] m2, int[] m3, char[] s){ int sa;int O_p;int Ocount;int[] OPT_I=new int [MaxM ]{-1 ,-1 ,-1 };int[] OPT_J=new int [MaxM]{MaxN ,MaxN ,MaxN };for(;page_p < MaxN;page_p++){ for(int i = 0;i < MaxM;i++){ OPT_I[i] =-1;//刷新状态数组 OPT_J[i] = MaxN;} sa = 0;for(int i = 0;i < MaxM;i++)//检查内存中是否已有要调用的页面。

{

if(b[i] == a[page_p]){ m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q,-1);

s[page_p] = 'F';sa = 1;break;} } if(sa == 0)//缺页 { Ocount = 0;for(int i = 0;i < MaxM;i++){ O_p = page_p + 1;for(;O_p < MaxN;O_p++){ if(b[i] == a[O_p]){ Ocount++;OPT_I[i] = 1;OPT_J[i] = O_p;break;} } } switch(Ocount){ case 0://全部页面以后都不会再度调用 int temp = 0;for(int i = 0;i < MaxM;i++){ if(O_Q[i] > O_Q[temp])temp = i;} b[temp] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q ,temp);count++;break;case 1://有一个页面将在以后调用 temp = 0;for(int i = 0;i < MaxM;i++){ if(OPT_I[i]!= 1 && O_Q[i] > O_Q[temp])temp = i;

} b[temp] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q ,temp);count++;break;case 2: for(int i = 0;i < MaxM;i++){ if(OPT_I[i] ==-1){ b[i] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q, i);count++;} } break;case 3: int p = 0;for(int i = 0;i < MaxM;i++){ if(OPT_J[i] >OPT_J[p])p = i;} b[p] = a[page_p];m1[page_p] = b[0];m2[page_p] = b[1];m3[page_p] = b[2];OPT_F(O_Q, p);count++;break;} } } } /*重置函数*/ private void btncz_Click(object sender, EventArgs e){ comboBox1.SelectedIndex = 0;

txtAdd.Text = ”“;page_p = 0;i_add = 0;count = 0;//txtShow.Text = ”";for(int i = 0;i < MaxM;i++)Memery[i] =-1;for(int i = 0;i < MaxN;i++)s[i] = 'T';} } }

第四篇:操作系统课程设计报告

操 作 系 统

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

班级:计112

学号:1113022032

姓名:

一、实验名称:

用C++实现驱动调度算法、页面替换算法、银行家算法、处理器调度算法

二、实验要求:

书写实验报告,包括的内容有:

(1)实验题目

(2)程序中使用的数据结构及主要文字说明

(3)带有注释的源程序

(4)执行程序说明,表明各进程控制快的初始状态,以及各算法的运行状态

(5)通过实验后的收获与体会及对实验的改进意见和见解

二、实验目的:

通过自己编程来实现各类操作系统算法,进一步理解操作系统的概念及含义,提高对操作系统的认识,同时提高自己的动手实践能力。加强我们对各类算法的理解。

三、实验内容:

1、实现页面替换算法

(1)FIFO 先进先出页面替换算法

(2)LRU最近最少使用页面替换算法

(3)LFU最少使用频率页面替换算法

2、银行家算法

3、实现驱动调度算法

(1)先来先服务算法

(2)电梯算法

(3)扫描算法

4、实现处理器调度

(1)先进先出处理器调度

(2)时间片轮转法

(3)优先级调度

四、实验原理:

1、页面替换算法

先进先出页面置换算法:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面加以淘汰。将已调入内存的页面按先后次序链接成一个队列,将最先调入的页面与新页面进行置换

最近最久未使用置换算法:该算法是利用“最近的过去”作为“最近的将来”,将最近最久未使用的页面加以淘汰。将已调入内存的页面按先后顺序链接成一个队列,为每一个页面增加一个访问字段,用来记录一个页面自上次被访问以来所经历的是时间t,当需淘汰一个页面时,选择现有页面中其t值最大,即最近最久未使用的页面加以淘汰

2、银行家算法

先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请。

3、驱动调度算法

先进先出算法(FIFO):总是严格按时间顺序对磁盘请求予以处理。算法实现简单、易于理解并且相对公平,不会发生进程饿死现象。但该算法可能会移动的柱面数较多并且会

经常更换移动方向,效率有待提高

电梯调度算法:总是将一个方向上的请求全部处理完后,才改变方向继续处理其他请求。

扫描算法(scan algorithm):总是从最外向最内(或最内向最外)进行扫描,然后在从最内向最外(或最外向最内)扫描。该算法与电梯调度算法的区别是电梯调度在没有最外或最内的请求时不会移动到最外或最内柱面。

4、处理器调度算法

先进先出处理器调度:按照作业进入系统后备工作队列的先后次序来挑选作业,先进入系统的作业将优先被挑选进入主存,创建用户进程,分配所需资源,然后移入就绪队列。

时间片轮转法调度算法:调度次序每次把CPU分配给就绪队列进程/线程使用规

定的时间间隔,就绪队列中每个进程/线程轮流的运行一个时间片,当时间片耗尽时,就强迫当前运行进程/线程让出处理器,转而排列到就绪队列尾部,等候下一轮调度。

优先级调度:根据确定的优先级来选取进程/线程,总是选择就绪队列中的优先

级最高者投入运行,即优先级越高,先被调用。

五、数据结构设计

对操作系统的各类算法设计数据结构如下:

页面替换算法:void FIFO();void LRU();void LFU();

银行家算法:void Init()初始化算法

void Bank()银行家算法

bool Safe()安全性算法

驱动调度算法:

struct MagneticHead//磁头构成{

int site;

int count;

bool direct;

};

struct Range//磁盘磁道范围

{

int mStart;

int mEnd;

};

struct RequestList//请求序列

{

int site;

bool state;

};

struct Data//基本数据集合{

MagneticHead magneticHead;

RequestList *requestList;

int *executeList;

Range range;

int length;

};

处理器调度:

typedef struct pcb//时间片轮转法

{

char pname[N];

int runtime;

int arrivetime;

char state;

struct pcb*next;

}PCB;

typedef struct PCB1//先进先出服务

{

char ID[3];//进程号

char name[10];//进程名

char state;//运行状态

floatarrivetime;//到达时间

floatstarttime;//进程开始时间

floatfinishtime;//进程结束时间

floatservicetime;//服务时间

float turnaroundtime;//周转时间

float weightedturnaroundtime;//带权周转时间

struct PCB1 *next;//指向下个进程

}pcb1;

struct pcb2 {优先级调度

char name[10];

char state;

int super;

int ntime;

int rtime;

struct pcb2* link;

}*ready=NULL,*d;

typedef struct pcb2 PCB2;

六、课程设计总结

在本次课程设计中,就是讲平时所做的实验结合起来,实现操作系统的各类算法,了解操作系统的运行原理以及其基本概念,更好的将操作系统的原理很好的展现出来。同时,在本次实验中遇到了很多问题,需要我们仔细的检查和修改。其次,实验中为了能更好的体现各类算法的运行情况,需要做一个清晰的界面,以能清楚地看出运行结果。

第五篇:操作系统课程设计报告

操作系统课程设计报告

专 业:计算机科学与技术 学 号: 姓 名: 提交日期:

操作系统课程设计报告

【设计目的】

(1)本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。

(2)结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。

(3)通过分对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】

为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令:

login 用户登录

dir 列目录

create 创建文件

delete 删除文件

open 打开文件

close 关闭文件

read 读文件

write 写文件

cd 进出目录

2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 【实验环境】 Windows xp/7 C++/VC++

【相关知识综述】

1、文件系统

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

2、位示图

位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把“0”作为盘块已分配的标记,把“1”作为空闲标志。(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。

操作系统课程设计报告

【设计思路】

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。

用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2„并以编号作为物理地址,在目录中进行登记。

【程序主要流程图】

验证是否成

功?

目录

右键进行选择 操作

新建目录新建文件打开文件

结束

开始登录删除属性 2

操作系统课程设计报告

【源程序清单】

typedef struct

//文件结构体 /*the structure of OSFILE*/ { int fpaddr;

/*file physical address*/

int flength;

/*file length*/

int fmode;

/*file mode:0-Read Only;1-Write Only;2-Read and Write;3-Protect;*/

char fname[MAXNAME];

/*file name*/ } OSFILE;

typedef struct

//用户文件目录结构体 user file directory /*the structure of OSUFD*/ { char ufdname[MAXNAME];

/*ufd name*/ OSFILE ufdfile[MAXCHILD];

/*ufd own file*/ }OSUFD;

typedef struct

//登陆

/*the structure of OSUFD'LOGIN*/ { char ufdname[MAXNAME];

/*ufd name*/

char ufdpword[8];

/*ufd password*/ } OSUFD_LOGIN;

typedef struct

//文件打开模式 /*file open mode*/ { int ifopen;

/*ifopen:0-close,1-open*/

int openmode;

/*0-read only,1-write only,2-read and write,3-initial*/ }OSUFD_OPENMODE;

void DeleteF()/*Delete File*/ { int i,j,k=0;char str[255],str1[255];char fname[MAXNAME];k=ExistD(dirname);//获取用户的序号

printf(“Please input filename:”);gets(fname);//获得需要打开的文件名fname

for(i=0;i

if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

{

操作系统课程设计报告

}

}

void OpenF()/*Open File*/ { int i,k=0;char fname[MAXNAME];//printf(“nnC:%s>”,strupr(dirname));k=ExistD(dirname);printf(“Please input filename:”);gets(fname);//获得需要打开的文件名fname

for(i=0;i

if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

{

ifopen[k][i].ifopen=1;//打开文件

ifopen[k][i].openmode=ufd[k]->ufdfile[i].fmode;//将读写属性赋值

//test// printf(“i=%d,k=%dn”,i,k);

///test// printf(“openmode=%dn”,ifopen[k][i].openmode);

printf(“Open file successfully!n”);

break;//打开文件则跳出循环 itoa(ufd[k]->ufdfile[i].fpaddr,str,10);//itoa函数,把数字转换成字符串

strcpy(str1,“file”);strcat(str1,str);strcpy(str,“c:osfilefile”);strcat(str,str1);strcat(str,“.txt”);//str为文件的物理路径

if(remove(str)==0)

//调用remove函数删除 第k个用户的第i个文件ufd[k]->ufdfile[i]

{

fpaddrno[ufd[k]->ufdfile[i].fpaddr] = 0;//位示图置为0,表示没被占用

for(j = i;j<=fcount[k]-1;j++)//文件顺序往前移一位

ufd[k]->ufdfile[j] = ufd[k]->ufdfile[j+1];

fcount[k] = fcount[k]-1;//文件数-1

printf(“Delete file successfully!n”);

//除了删除原文件,还要 删除dir中的东西

} else

printf(“Delete file fail!n”);break;}

操作系统课程设计报告

}

} }

void CloseF()/*Close File*/ {

int i,k=0;char fname[MAXNAME];

k=ExistD(dirname);printf(“Please input filename:”);gets(fname);//获得需要关闭的文件名fname

for(i=0;i

if(strcmp(strupr(ufd[k]->ufdfile[i].fname),strupr(fname))==0)

{

ifopen[k][i].ifopen=0;//关闭文件

ifopen[k][i].openmode=4;//fmode改为初始值4

printf(“Close file successfully!n”);

break;

}

} }

void WriteF()/*Write File*/ { int i,k,n=0;char fname[MAXNAME];char str[255],str1[255];int flag=1;

if(strcmp(strupr(ltrim(rtrim(dirname))),“")==0)

{

printf(”nError.Please convert to ufd dir before read.n“);

wgetchar=1;

return;} printf(”nCaution:Open file firstn“);printf(”Opened File(s)List:n“);k=ExistD(dirname);

操作系统课程设计报告

for(i=0;i

//文件属性为只写或者是读写才能write

{

printf(”%15s“,ufd[k]->ufdfile[i].fname);

n++;} if((n%4==0)&&(n!=0))printf(”n“);

} printf(”n%d files openned.n“,n);

if(n==0)wgetchar=1;if(n!=0){ printf(”nPlease input FileName:“);gets(fname);ltrim(rtrim(fname));i=ExistF(fname);if(i>=0){

if(ifopen[k][i].ifopen==1)

{

if((ifopen[k][i].openmode==1)||(ifopen[k][i].openmode==2))

{

itoa(ufd[k]->ufdfile[i].fpaddr,str,10);

strcpy(str1,”file“);

strcat(str1,str);

strcpy(str,”c:osfilefile“);

strcat(str,str1);

strcat(str,”.txt“);//物理路径

int length=0;

char c;

printf(”Please input text('#' stands for end):n“);

fp_file=fopen(str,”ab+“);//在文件末尾加 add bit

while((c=getchar())!='#')//以#为结尾

{

fputc(c,fp_file);

if(c!='n')length++;

}

//fprintf(fp_file,”n“);

操作系统课程设计报告

fclose(fp_file);

ufd[k]->ufdfile[fcount[i]-1].flength += length;//原长度加输入长度

printf(”n'%s' has been written successfully!n“,fname);

}

else

{

printf(”nError.'%s' has been opened with WRITE ONLY mode.It isn't read.n“,fname);

wgetchar=1;

}

}

else

{

printf(”nError.'%s' is in closing status.Please open it before readn“,fname);

wgetchar=1;

}

}

else

{

printf(”nError.'%s' does not exist.n",fname);

wgetchar=1;

} } }

操作系统课程设计报告

【测试结果】

1、创建用户

2、创建文件,并且打开读取文件

操作系统课程设计报告

3、写文件

4、删除文件

操作系统课程设计报告

【设计总结】

这两周的课程设计时间非常短,从中学到了很多知识,也为我们的学习提供了良好的实践平台。首先,通过老师的细心指导和同学们的相互帮助,让我对题目【二级文件系统】有了进一步了解。接下来,主要是研究老师所给的大部分代码,参考他的基本思路,并且思考每一个结构体在代码中的具体作用。这期间和一些同学交流了各自的思路,在交流中,大家渐渐的明确了这个程序的思路、框架结构等。我们所做的主要是补充了删除文件,打开文件,关闭文件,写文件这几个部分。

代码编写完了之后,实现了题目所要求的基本功能,但是在测试的过程中,还发现了这个程序存在各种各样的bug。不断的测试修改后,得到完善。

这次课设最大的收获在于:学会交流以及相互帮助。在大家的交流沟通之中,我们解决了一个又一个难题。

在这次课设中,我还意识到,要把这门课真真正正地学好,不单单只是为了能够应付考试,平时还要多加学习,多加努力才对。

【参考文献】

【1】C语言程序设计(第三版)谭浩强

【2】计算机操作系统教程(第三版).张尧学 史美林 张高

【3】计算机操作系统,西安电子科技大学出版社,方敏主编,2004.8

下载报告2 Linux操作系统word格式文档
下载报告2 Linux操作系统.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    操作系统调研报告

    操作系统调研报告随着日常生活的数字化发展,计算机作成为了工作、学习、娱乐所不可或缺的一部分,而操作系统通过组织和管理软硬件资源,使之协调一致并高效地完成各种用户的工作......

    嵌入式linu学习心得(5篇范例)

    嵌入式Linux学习心得1、 Linux命令 ls:查看目录-l以列表方式查看;ls –l 与ll的功能一样 pwd: 查看当前的目录 cd:改变当前操作目录cd /直接跳到根目录 cd ..回到上一级目录......

    计算机操作系统 课程设计报告(推荐)

    操作系统课程设计报告 时间:2010-12-20~2010-12-31 地点:信息技术实验中心 计算机科学与技术专业 2008级2班15号 杨 烨2010-12-31 信息工程学院计算机科学与技术082班 目录 一......

    嵌入式操作系统课程报告

    华北水利水电大学North China University of Water Resources and Electric Power嵌入式操作系统课程报告题目 嵌入式系统课程综和论述......

    Linux操作系统实习报告

    沈阳航空航天大学 Linux系统操作实习报告 院(系):计算机学院 专业:计算机科学与技术 班级:84010103 学号:2008040101061 姓名:李雪城 指导教师:王越 完成日期:2011年7月22日 7月18日......

    安全操作系统报告要求(范文模版)

    内容: 有关操作系统安全机制、策略,开发与实现、win8系统的安全配置与管理等方面的报告。注意事项: 1. 请大家参考科技论文的书写格式来书写本次报告。 2. 不能雷同太多,需要有......

    操作系统实习报告样本[五篇范文]

    1 操作系统实习报告内容 基本信息:完成人姓名、学号、报告日期 实习内容 实习目的 实习题目 设计思路和流程图(6) 主要数据结构及其说明(7) 源程序并附上注释......

    网络操作系统实习报告

    广西生态工程职业技术学院信息工程系 课程实习报告书 课 程: 专 业: 年 级: 班 级: 学 号: 姓 名: 网络操作系统 计算机系统维护 2010级 系统101班 11410117 曾令员 信息工程系 20......