操作系统课程设计报告

课 程 设 计 说 明 书

设计题目:         操作系统课程设计         

班    级:         信管                 

学    号:                     

姓    名:                             

山 东 科 技 大 学

20##年12  月 15 日


课 程 设 计 任 务 书

学院   信息学院      专业    信息管理与信息系统     班级    11-2            

姓名  胡晓迪        

一、课程设计题目:设计死锁相关算法;设计2  CPU调度算法;

设计3   磁盘调度算法                                  

二、课程设计主要参考资料

(1)  计算机操作系统第三版                        

(2)  c++ 面向对象程序设计                         

(3)  网上相关资料                                 

三、课程设计应解决的主要问题:

(1)死锁相关算法的模拟实现                                    

(2)CPU调度算法的模拟实现                                    

(3)磁盘调度算法的模拟实现                                    

四、课程设计相关附件(如:图纸、软件等):

codeblocks10.05编程软件                                       

五、任务发出日期: 2013.09.01   课程设计完成日期:   2013.12.15   

指导教师签字:                   


指导教师对课程设计的评语

成绩:                

指导教师签字:               

                

设计1  死锁相关算法的模拟实现

一:设计目的

通过银行家算法设计与实现,可以加深对死锁的理解,掌握死锁的预防、避免、检测和解除的基本原理,重点掌握死锁的避免方法—银行家算法。初步具有研究、设计、编制和调试操作系统模块的能力。

二:设计要求

(1)   编写算法,实现银行家算法、安全性算法、死锁检测算法

(2)   判断系统安全状态、判断进程的资源请求是否可以被满足、判定系统是否为死锁状态

(3)算法所需的各种参数由输入产生(手工输入或者随机数产生)

(4)输出各种判定结果(是否安全、安全序列、是否死锁、是否允许分配)

三、设计说明

银行家算法实现系统是一个进程动态请求资源的模拟系统,实现系统为进城随机产生请求资源的数量,系统通过资源安全性检查,检查是否满足安全要求。若安全,则才分配资源;不安全时,系统恢复申请前的状态;只有当进程满足全部的资源需求时,该进程执行结束,释放所占的资源。

   开始时,输入当前进程资源的状态以及整个系统的资源使用情况,即进行初始化安全性检查;如果是不安全状态,重新初始化系统;否则,给进程分配资源,并使用银行家算法进行检测,输出当前系统的状态和安全序列;如果是安全状态,系统继续从等待队列中提取等待进程进行检查,并且再分配所需的资源,当所需的资源已经满足进程所需资源时,便释放所占的资源;如果是不安全状态,进程恢复到原先的状态。

如下为银行家算法系统模块图:

主程序模块图

银行家算法流程图

安全性算法流程图:

四、运行结果及分析

五、总结

由于使用进程编程较少,所以也遇到了一些问题,无论是哪种算法或问题首先要有自己的思路,接下来就是通过语言的实现。遇到的最大的问题就是不了解银行家算法和安全性算法,所以刚开始无从下手,还有问题就是编译调试中的问题。

我通过网上和图书馆查阅相关的资料,对这两种算法有了初步的了解,然后提出自己的设计思路,对于一些自己模糊和不清楚自己又解决不了的问题那就问同学和上网查阅资料。

通过这次实验,让我更加全面的复习了C语言和C++,也让我加深了操作系统的知识,知道了系统给进程分配资源时解决死锁的方法,对安全算法和银行家算法有了一定的了解。通过借阅图书馆的书籍,查阅相关的资料,弄懂了算法的含义,解决了相关的问题,让我收获匪浅。

设计2  CPU调度算法的模拟实现

一:设计目的

通过CPU调度相关算法的实现,了解CPU调度的相关知识,通过实现CPU调度算法,理解CPU的管理,以及不同的CPU调度算法实现过程。体会算法的重要性。

二:设计要求

(1)编写算法,实现FCFS、非抢占SJF、可抢占优先权调度、RR

(2)针对模拟进程,利用CPU调度算法进行调度

(3)进行算法评价,计算平均周转时间和平均等待时间

(4)调度所需的进程参数由输入产生(手工输入或者随机数产生)

(5)输出调度结果

(6)输出算法评价指标

三、设计说明

采用数组存储进程属性;

course[100][6];

course的行坐标是进程名,course的纵坐标0表示进程到达时间,1表示服务时间,2表示开始执行时间,3表示完成时间,4表示周转时间,5表示等待时间。

1、FCFS

先来先服务调度算法是一种最简单的调度算法,当作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个最先进入该队列的作业

2、非抢占SJF

短作业优先调度算法,是指对短作业有限调度算法。是从后备队列中选择一个估计运行时间最短的作业将他们调入内存。

3、可抢占优先权调度

在这种方式下,系统把处理机分配给优先级最高的进程,使之执行。但在其执行期间,只要出现另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理及分配给新到的优先权最高的进程。

4、RR

系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首的进程并令其执行一个时间片。当执行的时间片用完时,有一个计时器发出时钟中断请求。调度程序便据此信号来停止该进程的执行,并将他送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首过程。

流程图:

四、运行结果及分析

输入进程数:5   有如下运行结果:

五、总结

CPU调度算法在我看来是这几个设计中难度较高的,在了解了算法的运行后,我试着编写了一下程序,发现编写的难度过高,于是我放弃了自己编写,开始在网上找参考资料,此次程序就是参考网上资料写的。

该程序实现了FCFS、非抢占SJF、可抢占优先权调度、RR,调度所需的进程参数由随机数产生,基本上运用了C语言的编写思想,编写了4个函数FCFS()、SJF()、rob()、RR(),在主函数中调用各函数以实现CPU调度算法的运行。

      通过该实验,让我更加了解了CPU调度算法的运行流程,也对进程的调度有了更加深刻的认识。

设计3  磁盘调度算法的模拟实现

一:设计目的

通过实现磁盘调度算法,理解磁盘存储器的管理,以及不同的磁盘调度算法实现过程。

二:设计要求

(1)   编写算法,实现FCFS、SSTF、SCAN、CSAN调度算法

(2)   针对给定的磁盘访问序列,运行各种调度算法得出调度过程

(3)   算法所需的各种参数由输入产生(手工输入或者随机数产生)

(4)输出调度过程、平均寻道长度

三、设计说明

1、FCFS调度算法:

这是一种最简单的磁盘调度算法,它根据进程请求访问的先后次序进行调度。

2、SSTF调度算法:

该算法要求访问的磁道与当前磁头所在的磁道距离最近,以使每次寻道时间最短。实现时,先将被访问的磁道号进行从小到大的排序,然后看已排好序的数组最小值是否比用户输入的当前磁道大,若是则按从小到大的顺序输出即为调度过程,若已排好序的数组最大值小于当前磁道,则按从大到小的顺序输出即为调度过程,若两者均不符,则逐一判断k值(数组下标为k的值小于当前磁道,数组下标为k+1的值大于当前磁道),先要判断这两个部分与当前磁道接近的值与当前磁道的距离,先输出距离短的那部分,k值之前的按从大到小输出,k值之后的按从小到大输出。

3、SCAN调度算法:

此算法在考虑到欲访问磁道与当前磁道间的距离基础上,更优先考虑磁头当前的移动方向。程序中1 代表磁道号增加方向,0代表磁道号减小方向,前半部分的数组排序,定位k值都是同于SSTF算法的,只是在此基础上加入磁臂的移动方向。

4、     CSCAN调度算法:

   为了减少SCAN算法中的延迟,CSCAN算法规定磁头只能单向移动,例如,只是自里向外移动,当磁头移动到最外边时,立即返回到最里的磁道访问,即将最小磁道号紧接着最大磁道号构成循环,代码实现思想同SCAN算法。

下图显示了本次调度执行时磁头移动的轨迹:

循环结束后,根据磁头移动方向选择合适线程的流程图:

四、运行结果及分析

五、总结

完成此算法主要要解决排序问题,本次实验为网上参考资料而得。此次课程设计中我学到了很多东西,无论在理论上还是实践中,都得到不少的提高,这对于我以后的工作和学习都是一种巨大的帮助。通过学习实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机,观察FCFS、SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法。以前只是理论的知识,运用到实验中,理解的更深刻。

 

第二篇:操作系统课程设计报告模板

操作系统课程设计

中文题目

英文题目

作 者:学生1 学生2 学生3 学生4 学生5

指导教师:李新荣

操作系统课程设计

团队照片

口号:

操作系统课程设计

《操作系统课程设计》任务书

设计目的:

本课程设计是学生学习完《操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

设计时间:

两周。

设计要求:

1.每5人组成一个团队,每个团队开发一个操作系统内核,内核具有传统操作系统的基本功能,包括:处理机管理、内存管理、设备管理、作业管理、用户接口等。每部分的算法可根据需要简单或复杂。

2.课程设计做完后,按组进行验收和答辩,验收和答辩合格后,给出相应的成绩。

3.每个团队写一份课程设计报告,要在报告中写明分工情况。

4.课程报告要按照模版撰写,报告中要写明:

(1)软件功能描述

(2)界面说明

(3)程序处理流程

(4)任务的定义及实现

(5)调试过程中遇到的问题和解决的方法

(6)进一步改进方案和应用建议

(7)使用说明书

设计步骤:

1.选定题目,每组提交设计方案(初期检查);

2.项目中期检查,每个团队提交中期检查报告,写出目前开发状况;

3.项目验收和答辩。

成绩评定:

课程设计成绩按100分制计算,评定的依据有考勤、设计文档资料、项目验收和答辩四个成绩组成。总成绩=考勤*10%+设计文档*30%+项目验收*40%+答辩*20%。

提交的资料:

课设完成后要提交项目的设计方案、用户手册、源程序等内容,课设提交具体内容见下面的清单:

课设提交内容清单

操作系统课程设计

操作系统课程设计报告模板

注:

(1)开发文档交打印版,提交完整的设计报告。

(2)刻光盘:以上所有内容均放到光盘中,每组一分

提交时间:12月18号

操作系统课程设计

摘要

在计算机网络高速发展的今天,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现。

操作系统是计算机系统配置的所有软件中使用最广泛的基础软件,它在整个计算机系统软件中处于中心地位,也是计算机专业课教学中做重要的环节之一。从操作系统自身角度讲,它不仅很好地体现了计算机日益发展中的软件研究成果,而且也较好地体现了计算机的硬件技术发展及计算机系统结构的用户界面环境。

我们团队共同开发一个简单的操作系统内核,内核具有传统操作系统的基本功能,包括:内存管理、处理机管理、设备管理、作业管理、用户接口五方面,每部分的算法都由小组成员独立完成。

关键词: 首次适应算法、最佳适应算法、引导扇区、调度

操作系统课程设计

目 录

摘要 ............................................................................................................................................................................. 5

第1章 绪 论 ......................................................................................................................................................... 7

1.1课题研究现状分析 ....................................................................................................................................... 7

1.11理论研究基础 ..................................................................................................................................... 7

1.12技术层面的支持 ................................................................................................................................. 7

第2章 系统方案 ..................................................................................................................................................... 8

2.1 ........................................................................................................................................................................ 8

2.2 ........................................................................................................................................................................ 8

第3章 功能与指标 ............................................................................................................................................... 15

3.1 通过引导扇区进入系统 ....................................................................................................................... 15

3.2 成功进入系统后显示成功提示字符....................................................................................................... 15

3.3 进入系统后所支持的操作 ...................................................................................................................... 15

第4章 实现原理 ................................................................................................................................................... 15

4.1 操作系统实现基本原理 .......................................................................................................................... 15

第5章 系统实现 ................................................................................................................... 错误!未定义书签。

操作系统课程设计

第1章 绪 论

课程设计是《现代操作系统》课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视.此次课程设计让大家更加体会到团队的可贵性,让大家挑战一个极限,努力去完成的自己的那部分任务,从中又让大家更好的去学习自己不会的东西。

1.1课题研究现状分析

1.11理论研究基础

(1)对于内存管理的各种算法的学习,例如:(本次设计用到的)首次适应算法、最优适应算法

(2)对处理机的管理涉及到作业与作业调度、进程调度、实时调度、死锁发现与解决等问题的研究

(3)对设备管理,我们主要研究的是存储器、内存与硬件之间的和谐使用

(4)对作业管理主要研究作业的后备、运行和完成三种状态,期间涉及到先来先服务和短作业优先

调度算法、优先级调度算法和高响应比优先调度算法

(5)对于接口方面涉及到以上五个研究,它将每个研究模块紧密联系起来,最终形成一个统一的完

整的操作系统

1.12技术层面的支持

(1)通过参考资料对算法的进一步学习和实现。

(2)主要技术是通过研究《一个操作系统的实现》和汇编语言的学习

(3)通过C语言和汇编语言,完整最终代码

(4)

(5)

操作系统课程设计

第2章 系统方案设计

2.1 内存管理设计

此次内存管理的设计采用离散式的分配方式,使用其中分页存储管理方式。

分页式存储管理方式:

分式存储管理方式将进程的地址空间,分成若干页,并为各页加以编号,从0开始。相应的

也把内存空间分成若干个块,同样为他们编号,如0#块。再为进程分配内存时,以块为单位,将进程中的若干页,分别装入到多个可以不相邻接的物理块中。

页表的实现机制:

2.2 处理器设计

处理器管理或称处理器调度,是操作系统资源管理功能的另一个重要内容。在一个允许多道程序同时执行的系统里,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生等等,操作系统就要来处理相应的事件,然后将处理器重新分配。

首先,CPU的内部结构可以分为控制单元,逻辑运算单元和存储单元(包括内部总线及缓冲器)

三大部分。CPU的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的数据)后,再存储在仓库(存储单元)中,最后等着拿到市场上去卖(交由应用程序使用)。在这个过程中,我们注意到从控制单元开始,CPU就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工作的结束。

CPU工作时会有数据和指令不断与处理机进行交换,如:数据与指令在CPU中的运行 。 数据

从输入设备流经内存,等待CPU的处理,这些将要处理的信息是按字节存储的,也就是以8位二进制数或8比特为1个单元存储,这些信息可以是数据或指令。数据可以是二进制表示的字符、数字或颜色等等。而指令告诉CPU对数据执行哪些操作,比如完成加法、减法或移位运算。

另外,CPU每执行完一条指令就去扫描中断寄存器,检查是否有中断发生,若没有中断就继续

执行下条指令;若有中断发生就转去执行相应中断处理程序。中断处理过程可粗略的分为以下四个过程:

1. 保护当前正在运行程序的现场;

2.分析是如何中断,以便去执行相应的中断处理程序;

3.执行相应的中断处理程序

4.恢复被中断程序现场

操作系统课程设计

所为硬件的核心处理器承担的工作无疑是繁重的,能否更好地处理好处理机的调度关系到整个系统的效率问题。

用处理机调度应避免死等、死锁等问题,对于此类问题应加以重视。

2.3 设备管理设计

(一)缓冲管理:

1.缓冲管理的基本思想

? 缓冲管理的基本思想是在CPU和外围设备之间建立缓冲区,用于暂存CPU和外围设备之间交换的数

据,从而缓和CPU和外围设备速度不匹配所产生的矛盾。同时,缓冲区的使用使得一次输入的信息能够多次使用。

2.缓冲池中缓冲区的结构

? 为了能够深入讨论缓冲池的管理,先来了解缓冲池的结构。通常缓冲池包含多个缓冲区,而每一个

缓冲区又由两部分组成,一部分是缓冲首部,它用来标识该缓冲器和用于管理,而另一部分是缓冲体,它用于存放数据,且这两部分存在一一对应的映射关系。对缓冲池的管理是通过对每一个缓冲器的缓冲首部进行操作来实现的。

? 缓冲池中缓冲区的结构如图5-7所示,其中缓冲首部包括设备号、设备上的数据块号(对于块设备

而言)、互斥标识位以及缓冲队列连接指针和缓冲器号等。

? 图--缓冲池中缓冲区的结构

设备号数据块号缓冲体互斥标识位

连接指针 缓冲器号

3.缓冲池的缓冲区队列

? 缓冲池中有3种类型的缓冲区,即空白缓冲区(empty)、装满输人数据的缓冲区(in)、装

满输出数据的缓冲区(out)。根据这3种类型缓冲区被分别建立在3种不同的缓冲区队列:

? ①空白缓冲队列em,其队首指针为F(em),队尾指针为T(em);

? ②装满输入数据的输入缓冲队列in,其队首指针为F(in),队尾指针为T(in);

? ③装满输出数据的输出缓冲队列out,其队首指针为F(out),队尾指针为T(out)。

操作系统课程设计

如下图--缓冲区队列

操作系统课程设计报告模板

操作系统课程设计报告模板

操作系统课程设计报告模板

操作系统课程设计报告模板

4.缓

冲池的工作缓冲区

? 除了三种缓冲队列之外,系统(或用户进程)从这三种队列中申请和取出缓冲区,并用得到的缓冲区

进行存数、取数操作,在存数、取数操作结束后,再将缓冲区放入相应的队列。通常,这些缓冲区被称为工作缓冲区。因此,在缓冲池中,有4种类型的工作缓冲区,即:

? ①用于收容设备输入数据的收容输入缓冲区(hin)。输入进程要想输人数据时,从空缓冲队列中摘

取一个空的缓冲区,作为收容输入工作缓冲区,提供给输入进程往里装入输入的数据,装满后插入到装满输人数据的缓冲区队供计算进程消耗。

? ②用于提取设备输入数据的提取输入缓冲区(sin)。计算进程需要数据时,从装满输入数据的缓冲

队列中摘取一个缓冲区,作为提取输入工作缓冲区,将此缓冲区的数据提取完后,它变成了空缓冲区,然后将其插入到空缓冲队中。

? ③用于收容CPU输出数据的收容输出缓冲区(hout)。当计算进程需要将计算结果输出时,从空缓冲

队列中摘取一个空缓冲区,作为收容输出缓冲区,计算进程将计算结果放入其中,装满后将其插入装满输出数据的缓冲队中。

? ④用于提取CPU输出数据的提取输出缓冲区(sout)。当输出进程要想输出数据时,从装满输出数据

的缓冲区队列中摘取一个装满输出数据的缓冲区,输出进程从中输出数据,输出结束后,将其插入到空缓冲队列中。缓冲池缓冲区(hin)缓冲区(sout)缓冲区(sin)缓冲区(hout)收容输入提取输入收容输出提取输出外围设备CPU

? 缓冲池的工作缓冲区如图所示

2.4 用户接口设计

为了使用户能方便的使用计算机,操作系统提供了相应的用户接口,帮助用户快速、有效、安全可靠地操纵计算机中的各类资源,完成相应处理。

为了方便与用户交互,通常把命令解释程序放在用户层,以用户态方式运行。

操作系统课程设计

在练级操作方式下,中断处理程序把用户键入的信息送键盘缓冲区缓存。一旦用户键入回车符,便立即把控制权交给命令解释程序。显然,对不同的命令,应有完成特定功能的处理程序与之对应。可见,命令解释程序的主要作用是,在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应的处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕显示。若用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。

命令解释程序的工作流程如下图所示:

操作系统课程设计报告模板

Shell解释程序工作流程:

① 读入用户键盘输入的命令,户键入的信息送键盘缓冲区缓存。一旦用户键入回车符,表示本

命令已结束,于是系统立即把控制权交给命令解释程序。

② 命令解释程序从缓冲区中读取用户输入的命令,对命令进行分析。

③ 重点进程调用fork,为二叉树命令行树中的每一条命令,建立相应子进程。

④ 等待子进程完成。对于“;”型节点,须在其左子树完成后,故终端进程本省需要调用系统wait4(),

来等待子进程完成,档子进程调用execve(),子进程根据文件名(即命令名),到目录中查找文件,将他调入内存,执行这个程序;档子进程完成处理后终止,向父进程报告,此时终端进程醒来,在做必要的判别后,继续处理下一条命令,重复上述过程。

⑤ 对于“&”型节点,在启动左子节点执行后,因它是台命令,不需要等待,因此终端进程不用系统

调用wait4(),而是再执行其右子树。

Shell基本执行过程及父子进程之间的关系如下图所示:

操作系统课程设计

操作系统课程设计报告模板

2.5 作业管理设计

1.算法思想

调度是操作系统的根本功能,不同的系统采用的调度算法不尽相同。各个调度算法的设计思想如下: 先来先服务算法:从文件中将作业的JCB各项数据读入到相应数组中,然后利用作业的到达时间arrivetime[10]进行升序排序,并相应调整各个数组的数据,然后输出各项信息。

短作业优先算法:从文件中将作业的JCB各项信息读入到相应数组中,然后利用作业的作业的所需运行时间resquesttime[10]进行升序排序,调整相应数据信息。然后计算作业的其他信息,输出到屏幕上。 高响应比算法:从文件中将作业的JCB各项信息输入到相应数组中,然后对作业的到达时间arrivetime[10]进行遍历,取得最小值,即最先到达的作业,首先被执行。将最先到达的作业移到数组的第一项,然后执行高响应比算法,高响应比算法是首先求出为执行作业的等待时间,存数数组waittime中,然后按根据为执行文件的响应比,取得响应比最大的未执行作业,将该作业的JCB信息,存到数组中, 接着循环以上步骤,直至执行完所有的作业。

2.选择调度算法的原则

(1)选择的调度算法应与系统的整个设计目标一致

(2)注意系统资源的均衡使用

(3)平衡系统和用户的要求。

操作系统课程设计

3.程序具体实现方案

(1)在数据结构上选择单向链队,即后备作业队列的每个结点表示一个作业块,每个作业块即JCB包含如

下信息:作业名,到达时间,所需时间,已运行时间,作业状态,所需主存大小,所需磁带机数目。

(2)提交新作业时,调用函数EnQueue(m_JobName,m_NeedTime)即将作业插入到后备作业队列的末尾。接

着判断内存作业队列是否为空,若为空则将后备作业调入内存运行并启动计时器SetTimer(1,1000,NULL),更新列表框控件的信息的显示。

(3)由于计时器的时间间隔设置为1000毫秒,故每秒钟将调用一次OnTimer(UINT nIDEvent)函数,检查

作业的运行状态,若作业的已运行时间大于等于所需时间,则将该作业从内存作业队列中撤销,并处理机依照某一个作业调度算法(FCFS先来先服务,SJF短作业优先,HRN高响应比优先调度算法)进行下一个作业的调度,更新列表框控件的信息显示。

(4)当所有作业都调度完成时,撤销计时器即调用函数KillTimer(1).

4.程序流程图

操作系统课程设计

4

操作系统课程设计报告模板

操作系统课程设计

第3章 功能与指标

3.1 通过引导扇区进入系统

3.2 成功进入系统后显示成功提示字符

3.3 进入系统后所支持的操作

第4章 实现原理

4.1 操作系统实现基本原理

当计算机电源被打开时,它会先加电自检,然后寻找启动盘,一旦BIOS发现了引导扇区,就会将内核加载到预设的内存地址处,然后跳转到预设的地址处将控制权彻底交给我们所写的引导代码,最终实现操作系统的引导。

参考文献

1.自己动手写操作系统 于渊 编著/20xx年08月/电子工业出版社

2.Orange S:一个操作系统的实现 于渊 著电子工业出版社 2009-6-1

相关推荐