湖南科技大学12级操作系统课程设计报告

操作系统课程设计报告

姓名:

学号:

班级:

指导教师:

测评:

年月日

目录

实验一WINDOWS进程初识 (3)

1、实验目的 (3)

2、实验原理 (3)

3、流程图 (3)

4、实验内容和步骤 (4)

5、实验结论 (5)

实验二进程管理 (5)

1、背景知识 (5)

2、实验目的 (5)

3、实验原理 (6)

4、流程图 (6)

5、实验内容和步骤 (7)

6、实验结论 (10)

实验三进程同步的经典算法 (10)

1、实验目的 (10)

2、实验原理 (10)

3、流程图 (11)

4、实验内容和步骤 (11)

实验五熟悉UNIX/LINUX系统 (14)

1、实验内容 (14)

2、实验原理 (14)

3、实验目的 (15)

4、实验题目 (15)

5、实验结论 (18)

实验六进程间通信 (18)

1、实验内容 (18)

2、实验目的 (18)

3、实验原理 (18)

4、流程图 (18)

5、实验题目 (20)

实验一WINDOWS进程初识

1、实验目的

(1)学会使用VC 编写基本的Win32 Consol Application(控制台应用程序)。(2)掌握WINDOWS API 的使用方法。

(3)编写测试程序,理解用户态运行和核心态运行。

2、实验原理

(1) 一个简单的Windows控制台应用程序:编写一个简单的C++程序,调用cout 函数输出”Hello,Win32 Consol Application”;

(2) 核心态运行和用户态运行时间比计算:给一个当前正在运行进程名,调用CreateToolhelp32Snapshot函数对操作系统中运行的所有进程拍取“快照”,循环枚举快照中的所有进程,并与给出的进程名进行比较,若是相同,则打开进程,调用GetProcessTimes()函数计算当前进程的时间,并调用GetKernelModePercentage()函数计算内核模式下消耗时间比,并将结果显示到屏幕上。若是一直不到给出的进程,说明给出的进程没有在运行。

3、流程图

(1)略

(2)如下图:

4、实验内容和步骤

(1)编写基本的 Win32 Consol Application

步骤 1:登录进入 Windows 系统,启动 VC++ 6.0。

步骤 2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。

步骤 3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入 C/C++源程序的文件名。

步骤 4:将清单 1-1 所示的程序清单复制到新创建的 C/C++源程序中。编译成可执行文件。

步骤 5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的 debug 子目录,执行编译好的可执行程序,列出运行结果 (如果运行不成功,则可能的原因是什么?)

运行结果

结论:如果运行不成功,绝对是代码错了

(2)计算进程在核心态运行和用户态运行的时间

步骤 1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单 1-2 中的程序拷贝过来,编译成可执行文件。

运行结果

步骤 2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单 1-3 所示,编译成可执行文件并执行。

步骤 3:在“命令提示符”窗口中运行步骤 1 中生成的可执行文件,测试步骤2 中可执行文件在核心态运行和用户态运行的时间。

运行结果

步骤 4:列出运行结果 (如果运行不成功,则可能的原因是什么?) 原因:可执行文件没有运行。

步骤 5:分别屏蔽 While 循环中的两个 for 循环(i 循环和 j 循环),或调整两个 for 循环的次数,写出运行结果。

注释i循环和j循环

5、实验结论

计算进程在计算核心态运行和用户态运行的时间时,被计算的进程必须是当前正在运行的进程,没有运行的进程是不能被计算的。

另外,通过实验可以得知运行一个程序CPU的使用情况是不同的,同时与循环的次数无关,和当前计算的复杂情况有关。实验得出的数据可以可以说明这一点。

实验二进程管理

1、背景知识

Windows 所创建的每个进程都从调用 CreateProcess() API 函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于 C++ 运行库来说,这一调用发生在应用程序的 main() 函数返回之后。

2、实验目的

1)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。

2)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进

程同步的基本程序设计方法。

3、实验原理

1) CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行,主函数通过调用CreateProcess()并给出重要的可执行文件名、命令行参数即可实现进程的创建。

2)通过控制命令行参数的值控制进程的创建数量。

4、流程图

1)创建进程

开始

进程初始化为0

读入命令行参数

输出进程ID号

进程是否达上限

生成新进程的命令行参数

创建进程

关闭新进程句柄

结束

2)父子进程的简单通信及终止进程

5、实验内容和步骤

(1). 创建进程 本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程 ID 和它在进程列表中的位置。

步骤 1:创建一个“Win32 Consol Application ”工程,然后拷贝清单 2-1 中的程序,编译成 可执行文件。

步骤 2:在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。按下 ctrl+alt+del ,调用 windows 的任务管理器,记录进程相关的行为属性。

开始 判断父子进程

创建互斥体 克隆子进程 等待键盘输入 结束子进程 结束 打开互斥体 等待父进程的结束命令 结束

运行结果

步骤 3:在“命令提示符”窗口加入参数重新运行生成的可执行文件,列出运行结果。按下 ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。

步骤 4:修改清单 2-1 中的程序,将 nClone 的定义和初始化方法按程序注释中的修改方法进行修改,编译成可执行文件(执行前请先保存已经完成的工作)。再按步骤2中的方式运行,看看结果会有什么不一样,列出运行结果。并回答一下问题:

从中你可以得出什么结论?说明 nClone 的作用,变量的定义和初始化方法(位置)对程序的执行结果有影响吗?为什么?

结论:nClone的赋值位置不同对程序的运行结果会有影响!父程序控制nClone控制调用子程序的深度.nClone变量的定义和初始化方法(位置)对程序的执行结果有影响!注释1的修改方式对程序影响不大,注释2的修改方式对程序结果影响巨大!

(2). 父子进程的简单通信及终止进程

步骤 1:创建一个“Win32 Consol Application”工程,然后拷贝清单 2-2 中的程序,编译成可执行文件。

步骤 2:在VC的工具栏单击“Execute Program”(执行程序) 按钮,或者按Ctrl + F5 键,或者在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。

运行结果

步骤 3:按源程序中注释中的提示,修改源程序 2-2,编译执行(执行前请先保存已经完成的工作),列出运行结果。在程序中加入跟踪语句,或调试运行程序,同时参考 MSDN 中的帮助文件CreateProcess()的使用方法,理解父子进程如何传递参数。给出程序执行过程的大概描述。

运行结果

CreateProcess()函数:第一个参数是可执行文件,第二个参数是命令行参数

父程序调用StartClone函数,StartClone函数中通过GetModuleFileName函数获取父程序的文件路径放在CreateProcess()函数的第一个参数中,然后再调用CreateProcess()函数创建子进程!

步骤 4:按源程序中注释中的提示,修改源程序 2-2,编译执行,列出运行结果。

运行结果

步骤5:参考MSDN 中的帮助文件CreateMutex() 、OpenMutex() 、ReleaseMutex() 和WaitForSingleObject()的使用方法,理解父子进程如何利用互斥体进行同步的。给出父子进程同步过程的一个大概描述。

CreateMutex()参数含义:缺省的安全性,最初拥有的,互斥体名称. OpenMutex()参数含义:SYNCHRONIZE 允许互斥体对象同步使用,希望子进程能够继承句柄,则为TRUE,要打开对象的名字.

ReleaseMutex()参数含义:一个互斥体的句柄.

WaitForSingleObject()参数含义:对象句柄,定时时间间隔.

6、实验结论

创建进程,实现对进程的简单控制。创建互斥体,解决了进程的同步问题,两者相互使用,使进程的运行情况得到了很好的管理。

实验三进程同步的经典算法

1、实验目的

1)回顾系统进程、线程的有关概念,加深对 Windows 2000/xp 线程的理解。

2)了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深对 P(即 semWait)、V(即 semSignal)原语以及利用 P、V 原语进行进程间同步与互斥操作的理解。

2、实验原理

互斥体:实现了“互相排斥”(mutual exclusion)同步的简单形式(所以名为互斥体(mutex))。互斥体禁止多个线程同时进入受保护的代码“临界区”(critical section)。

信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量。

3、流程图

4、实验内容和步骤

(1) 生产者消费者问题

开始

创建互斥体

创建表示产品已空的信号量

创建表示产品已满的信号量

创建若干个生产者线程

创建若干个消费者线程

等待键盘输入结束命令

结束

开始

判断线程是否结束

P(empty)

P(mutex)

生产

将产品入队

V(mutex

V(full) 结束

开始

判断线程是否结束

P(empty)

P(mutex)

找到生产者

消费

V(full)

V(empty)

结束

主线程

消费者线程

生产者线程

步骤 1:创建一个“Win32 Consol Application”工程,然后拷贝清单 1-1 中的程序,编译成可执行文件。

步骤 2:在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。

运行结果

步骤 3:仔细阅读源程序,找出创建线程的 WINDOWS API 函数,回答下列问题:线程的第一个执行函数是什么(从哪里开始执行)?它位于创建线程的API函数的第几个参数中?

Producer函数,位于创建线程的API函数的第六个参数。

步骤 4:修改清单 1-1 中的程序,调整生产者线程和消费者线程的个数,使得消费者数目大与生产者,看看结果有何不同。察看运行结果,从中你可以得出什么结论?

当生产者个数多于消费者个数时,生产速度快,生产者经常等待消费者;反之,消费者经常等待。

步骤5:修改清单1-1 中的程序,按程序注释中的说明修改信号量EmptySemaphore 的初始化方法,看看结果有何不同。

运行结果:没有输出结果

结论:CreateSemaphore()函数中第二个参数表示剩余空间的大小,如果初值赋为0,则表示没有空间能放下生产者生产的产品。

步骤 6:根据步骤 4 的结果,并查看 MSDN,回答下列问题:

1)CreateMutex 中有几个参数,各代表什么含义。

答:3个参数。

函数作用:创建互斥体

函数原型:

HANDLE WINAPI CreateMutex(

LPSECURITY_ATTRIBUTES lpMutexAttributes, //指针,表示这个互斥体的安全属性。这个参数可以为NULL,表示取缺省安全属性。如果这个参数取NULL,那么该句柄不可被继承。

BOOL bInitialOwner,//如果这个参数为TRUE并且成功创建了这个互斥体,那么这个线程就拥有了这个互斥体对象的初始的所有权。如果这个参数为FALSE,那么并没有拥有互斥体对象的所有权。

LPCTSTR lpName // 指定这个互斥体的名字,区分大小写。这个名字在操作系统中必须是唯一的,否则互斥体会创建失败。这个参数可以为NULL,若为NULL,则创建无名互斥体,也就意味着无法被OpenMutex

);

2)CreateSemaphore中有几个参数,各代表什么含义,信号量的初值在第几个参数中。

答:4个参数。

函数作用:创建或打开信号量对象。

函数原型:

HANDLE WINAPI CreateSemaphore(

LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, //一个指向SECURITY_ATTRIBUTES结构体变量的指针,表示信号量的安全属性。如果这个参数为NULL,那么这个信号量使用缺省安全属性。

LONG lInitialCount, //信号量对象的初始计数。这个数字必须大于或等于零,并且小于或等于lMaximumCount。当计数大于零时,这个信号量处于有信号状态;当计数等于零时,这个信号量处于无信号状态。当调用

WaitForSingleObject或WaitForMultipleObjects的时候,计数减一。调用

ReleaseSemaphore的时候,计数增加指定值。

LONG lMaximumCount,//信号量对象的计数最大值。这个值必须大于零。

LPCTSTR lpName //信号量对象的名字,区分大小写,长度不能超过MAX_PATH个字符。如果这个参数为NULL,则创建无名信号量。

);

3)程序中 P、V 原语所对应的实际 Windows API 函数是什么,写出这几条语句。P:WaitForSingleObject(EmptySemaphore, INFINITE);

WaitForSingleObject(Mutex, INFINITE);

WaitForSingleObject(FullSemaphore, INFINITE);

V:ReleaseMutex(Mutex);

ReleaseSemaphore(FullSemaphore, 1, NULL);

ReleaseSemaphore(EmptySemaphore, 1, NULL);

4)CreateMutex 能用 CreateSemaphore 替代吗?尝试修改程序 1-1,将信号量Mutex 完全用CreateSemaphore 及相关函数实现。写出要修改的语句。CreateMutex 能用 CreateSemaphore 替代。

Mutex定义:Mutex = CreateSemaphore(NULL, 1, 1, NULL);

P:WaitForSingleObject(Mutex, INFINITE);

V:ReleaseSemaphore(Mutex, 1, NULL);

5、实验结论

通过对生产者、消费者问题的处理,加深理解了进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位。线程是继进程之后引进的,为了减少程序并发执行的时空开销,使得并发粒度更细,并发性更好。生产者、消费者不但解决进程间同步,还解决了进程的互斥,其算法思想很经典,对P,V原语的理解有很大的帮助。

实验五熟悉UNIX/LINUX系统

1、实验内容

熟悉 UNIX 或 LINUX 操作系统,在 UNIX 或 LINUX 中使用 C 语言进行文本处理。

2、实验原理

1)词频统计:利用C++中STL库里的map函数,然后将文件中的单词分离出来,存入map中,然后输出。

2)反向打印:链表

3、实验目的

UNIX(包括 LINUX)操作系统是一个通用的多用户分时操作系统,现已成为高档微机、工作站及若干小型机系统上的主要操作系统,并在许多领域中获得了广泛的应用。UNIX 系统具有简单、高效、易懂等特点,同时具有良好的可移植性,它代表着多用户操作系统发展的方向。C 语言初是为开发 UNIX 操作系统而设计,UNIX 核心和所有的用户程序几乎都是用 C 语言编写,是 UNIX 的标准语言。本实验要求学生在熟悉 UNIX 或 LINUX 系统的基础上,使用 vi 编辑器,了解用 C 语言编写文本处理程序的具体过程。

4、实验题目

(1)使用自己的注册号注册 UNIX 或 LINUX 系统,学习如何增加用户、设置用户缺省信息与修改用户口令、修改用户和用户组属性、删除用户注册号和用户组、目录操作、文件操作。

(2)参考附录内容学习使用 vi 编辑器。

(3)使用 C 语言编写一个词频统计程序,使之能够给出各个单词在输入文件中的出现次数。

源码:

#include

#include

#include

#include

#include

using namespace std;

int main(){

mapm;

map::iterator it;

string s, k;

while(cin >> s){

int t = 0, i, b;

for(i = 0; i

if(s[i] == ',' || s[i] == '.' || s[i] == ';' || s[i] == ':' || s[i] == '\'' || s[i] == '"' || s[i] == '(' || s[i] == ')' || s[i] == '!' || s[i] == '?') { k.assign(s, i-t, t);

if(k != "")

m[k]++;

t = -1;

}

}

if(t > 0){

k.assign(s, i-t, t);

m[k]++;

}

}

for(it = m.begin(); it != m.end(); it++)

cout << (*it).first << " " << (*it).second<

return 0;

}

(4)使用 C 语言编写一个反向打印程序,使之能够按与输入文件中文本行相反的次序来打印(即后出现的文本行先打印)。

源码:

#include

#include

#include

#include

using namespace std;

string s;

struct node

{

string s;

node* next;

};

int main()

{

node* he = new node;

he->next = NULL;

while(getline(cin,s))

{

node* ne = new node; ne->s = s;

ne->next = he->next; he->next = ne;

}

node *p = he->next, *t; while(p != NULL)

{

cout << p->s << endl; p = p->next;

}

p = t = he;

while(p != NULL)

{

t = p->next;

delete p;

p = t;

}

return 0;

}

5、实验结论

代码应具有规范性,正确性,可执行性及健壮性。其中的健壮性即为可移植性。成熟的代码应适应各个不同的平台。

实验六进程间通信

1、实验内容

模拟实现进程之间的通信。

2、实验目的

Linux 系统的进程通信机构(IPC)允许在任意进程间大批量地交换数据,通过本实验,了解熟悉 Linux 支持的消息通信机制、共享存储区机制及信息量机制。

3、实验原理

1)消息队列:其中一方创建队列,然后向另外一方发送消息。另外一方从消息队列中接收消息。

2)共享内存段:首先先创建共享内存段,其中一方向共享内存段写入数据,另一方从共享内存段中读取数据。

4、流程图

1)消息的创建,发送和接收

2)共享存储区的创建、附接和断接

5、实验题目

1、消息的创建,发送和接收。

操作系统课程设计报告

北华航天工业学院 《操作系统》 课程设计报告 课设报告题目:进程调度算法、 银行家算法、虚拟内存中的页面置换 磁盘调度算法 作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术作者所在班级:B09512 作者姓名:丁小玲 指导教师姓名:赵辉 完成时间:2011.12.14 北华航天工业学院教务处制

随着科学技术的发展,计算机在人们的生活领域中占据了重要的地位。计算机中最最关键的就是操作系统,它直接对计算机的硬件就行了管理,为人们提供了人机界面,使人们可以更方便高效的利用电脑。我们应该掌握操作系统中进程调度,内存管理,设备管理以及文件管理中重要的过程,这样有利于我们以后更好的了解操作系统。 进程调度算法主要有三种算法,分别是先来先服务、短进程优先算法和高响应比优先算法;银行家算法主要是针对资源分配后,系统是否安全的判断;虚拟内存中的页面置换主要有三种算法,分别是先进先出算法、最近最久未使用算法和最佳置换算法;磁盘调度算法主要有三种算法,分别是先来先服务算法、最短寻道时间优先算法、扫描算法和循环扫描算法。 关键词:先进先出安全算法循环扫描最短寻道

第一章绪论 (1) 1.1 课程设计的背景和意义 (1) 1.1.1 课程设计的理论研究基础 (1) 1.1.2 课程设计的意义 (1) 1.2 课程设计环境 (2) 第二章需求分析 (3) 2.1 功能要求 (3) 2.1.1 进程调度算法 (3) 2.1.2银行家算法 (3) 2.1.3 虚拟内存中的页面置换 (3) 2.1.4 磁盘调度算法 (3) 2.2 问题的解决方案 (4) 2.2.1 进程调度算法 (4) 2.2.2银行家算法 (4) 2.2.3 虚拟内存中的页面置换 (4) 2.2.4 磁盘调度算法 (5) 第三章系统设计 (6) 3.1 数据设计 (6) 3.1.1 结构体设计 (6) 3.1.2 函数设计 (6) 第四章系统实现 (9) 4.1 结构体实现 (9) 4.1.1 进程调度算法 (9) 4.2 函数实现 (9) 4.2.1进程调度算法 (9) 4.2.2银行家算法 (12) 4.2.3虚拟内存中的页面置换算法 (13) 4.2.4磁盘调度算法 (17) 4.3 主函数实现 (19) 4.3.1 进程调度算法的运行界面 (19) 4.3.2 银行家算法的运行界面 (19) 4.3.3 虚拟内存中的页面置换的运行界面 (20)

操作系统课程设计报告

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

更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文件。对于用户名下的文件,用文件目录树的分支来存储。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作即可。 整体设计框架: 系统初始化界面由创建用户存储空间、管理文件、退出系统三个模块组成。用户创建由创建用户存储空间、进入目录、删除用户存储空间、显示所有用户存储空间等模块组成。然后各个模块再由一些小模块组成。其中创建文件、打开关闭文件、读写文件等文件操作模块包括在进入目录模块里面。 系统实现: 以下是本课程设计的主要内容的实现程序代码: c include include include

typedef struct file{ char name[10]; struct file *next; File; typedef struct content{ char name[10]; File *file; int f_num; struct content *next; Content; typedef struct user{ char name[10]; char psw[10]; Content *con; struct user *next; User; char cur_user[20];

操作系统课程设计报告

目录 一、课程设计目的 (2) 二、课程设计要求 (2) 三、创新思维 (3) 四、系统环境支持及语言选择 (4) 五、系统框架构成 (4) (一)整体框架: (4) (二)流程图 (5) 1.先来先服务算法流程图 (5) 2.优先级算法 (5) 六、系统功能说明 (6) (一)先来先服务算法的实现: (6) (二)静态优先级算法的实现: (6) (三)动态优先级算法的实现: (6) (四)创建进程的实现: (6) (五)阻塞进程的实现: (7) (六)唤醒进程的实现: (7) (七)撤销进程的实现: (7)

(八)进程控制的实现: (7) 七、用户使用说明 (8) 八、体会与自我评价 (8) 一、课程设计目的 在学习操作系统课程的基础上,在对操作系统各部分充分理解的基础上,对操作系统的整体进行一个模拟。本实验进行的进程调度系统的算法采用的是动态和静态优先数优先的调度算法(即把处理机分配给优先数最低的进程)先来先服务算法。通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力、开发软件的能力;还能提高调查研究、查阅技术文献、资料 以及编写软件设计文档的能力。 二、课程设计要求 1.进程管理功能以进程调度为主要功能。以进程控制为辅助功能。 2.体现操作系统原理中进程调度算法和进程控制算法。按照操作系统原理设计。 3.结构化设计。设计时构建出模块结构图并存于文件中。模块化实现,对每一功能,每一操作使用模块、函数、子程序设计方法实现。

4.进程以PCB为代表。队列、指针用图示。每一步功能在桌面上能显示出来。 5.系统应具有排错功能,对可能出现的错误应具有排查功能和纠错能力。6.界面自行设计,语言自行选择。(可用C#语言,也可用你会的 其他语言,甚至还可用PPT) 7.每人的设计功能都能表现或说明出来。 8.进程以队列法组织,对不同进程调度算法:FIFO队列或PRI队列或rotate(轮转队列)用同一个进程序列组织,对阻塞队列可设置一个,也可设多个。 9.因为是模拟系统,所以要显示每个功能和操作结果。显示应力求清晰、易读和一目了然(一屏),最好能用汉字,否则可用英语或汉语拼 音。 10.操作方便,使用便捷。可视化程度高。 三、创新思维 1.时间片进展可以清晰地反应当前进程运行状况。 2.实验报告书用Microsoft Word编辑,可以按住Ctrl键点击链接到 指定位置。 3.动态优先级减去等待时间的0.05倍,等待的时间越长越有机会先 运行,对进程比较公平。

操作系统课程设计-一个简单的文件系统的详细设计

计算机系课程设计 实验报告 课程名称操作系统课程设计 实验学期 2012 至 2013 学年第 1 学期学生所在系部计算机与信息管理系 年级 2010 专业班级计算机001班 学生姓名学号 任课教师 实验成绩 计算机系制

一个简单的文件系统的详细设计 一、实验目的 (1)阅读并调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 (2)了解设计一个n个用户的文件系统,每个用户可以保存M个文件。用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有create、delete、open、close、read、write等命令。 二、实验要求 1、阅读所给文件系统源程序,并加注释(注释量达60%), 2、修改、完善该系统,画出所设计的文件系统的详细流程图。 三、文件系统功能设计 1. 功能设计 该文件系统是一个多用户、多任务的文件系统。对用户和用户的文件数目并没有上限。也就是说该系统允许任何用户申请空间,而且在其目录下的文件数目并不做任何的限制。 该系统可以支持的操作命令如下: ①bye——用户注销命令。当使用该命令时,用户退出系统,注销该用户功能设计并回到登陆界面。 命令格式:bye ②close——删除用户注册信息命令。执行该命令后,用户在系统中的所有信息,包括该用户目录下的所有文件都被删除。命令执行完成后返回登陆界面。 命令格式:close ③create——在当前目录下创建一个文件,且该文件不能跟当前已有的文件重名。该文件的管理信息登记在用户文件信息管理模块中。执行完该命令后回到执行命令行。 命令格式:create>file1 其中:“>”符为提示符,file1为要创建的文件名。 ④delete——删除当前用户目录下的一个文件,命令执行完毕返回至命令行。 命令格式:delete>file1 其中:file1为要删除的文件名。 ⑤list——显示当前注册目录下的所有文件信息,包括文件名、文件长度、文件操作权限。 命令格式:list ⑥chmod——改变某个文件的执行权限,但前提是该文件是该用户目录下的文件。 命令格式:chmod>file1。 其中:file1为要授权的文件名。 ⑦open——在window界面下打开某个文件。执行该命令后,文件file1将用在windows 界面下的文件形式打开。用户可以在这个方式中对文件进行修改,并将修改后的内容保存。 命令格式:open>file1

计算机操作系统 课程设计报告

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

目录 一、课程设计的目的和意义 (2) 二、进程调度算法模拟 (2) 1、设计目的 (2) 2、设计要求 (2) 3、时间片轮转算法模拟 (3) 实现思想: (3) (1)流程图 (3) (2)程序代码 (3) (3)运行结果 (5) 4、先来先服务算法模拟 (6) 算法思想 (6) (1)流程图 (7) (2)程序代码 (7) (3)运行结果 (11) 三、主存空间的回收与分配 (11) 1、设计目的 (11) 2、设计要求 (12) 3、模拟算法的实现 (13) (1)流程图 (13) (2)程序代码 (13) (3)运行结果 (28) 四、模拟DOS文件的建立和使用 (28) 1 设计目的 (28) 2 设计要求 (28) 3、模拟算法实现 (31) (1)流程图 (31) (2)程序代码 (31) (3)运行结果 (36) 五、磁盘调度算法模拟 (36) 1.设计目的 (36) 2.实验原理 (37) 3.设计要求 (37) 4、模拟算法的实现 (38) (1)各算法流程图 (38) (2)程序代码 (39) (3)运行结果 (45) 六、总结 (45)

一、课程设计的目的和意义 本次操作系统课程设计的主要任务是进行系统级的程序设计。本课程设计是操作系统原理课程的延伸。通过该课程设计,使学生更好地掌握操作系统各部分结构、实现机理和各种典型算法,加深对操作系统的设计和实现思路的理解,培养学生的系统设计和动手能力,学会分析和编写程序。课程设计的实施将使学生在以下几个方面有所收获:(1)加深对操作系统原理的理解,提高综合运用所学知识的能力; (2)培养学生自主查阅参考资料的习惯,增强独立思考和解决问题的能力; (3)通过课程设计,培养严谨的科学态度和协作精神。 二、进程调度算法模拟 1、设计目的 (1)要求学生设计并实现模拟进程调度的算法:时间片轮转及先来先服务。 (2)理解进程控制块的结构。 (3)理解进程运行的并发性。 (4)掌握进程调度算法。 2、设计要求 在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。进程调度的算法有多种,常用的有优先级调度算法、先来先服务算法、时间片轮转算法。 进程是程序在处理机上的执行过程。进程存在的标识是进程控制块(PCB),进程控制块结构如下: typedef struct node { char name[10]; /* 进程标识符 */ int prio; /* 进程优先数 */ int round; /* 进程时间轮转时间片 */ int cputime; /* 进程占用 CPU 时间*/ int needtime; /* 进程到完成还需要的时间*/ int count; /* 计数器*/ char state; /* 进程的状态*/ struct node *next /*链指针*/ }PCB; 系统创建一个进程,就是由系统为某个程序设置一个PCB,用于对该进程进行控制和管

操作系统课程设计报告

一、课程设计任务划分 二、根本原理 〔一〕页面置换算法定义 在地址映射过程中,假设在页面中发现所要访问的页面不再内存中,那么产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存, 以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规那么叫做页面置换算法。 〔二〕所使用的算法 1) 最正确置换算法(OPT):将以后永不使用的或许是在最 长(未来)时间内不再被访问的页面换出。 2) 先进先出算法(FIFO):淘汰最先进入内存的页面,即选择在内存中驻留时 间最久的页面予以淘汰。 3) 最近最久未使用算法(LRU):淘汰最近最久未被使用的页面。 〔三〕设计思想 选择置换算法,先输入所有页面号,为系统分配物理块,依次进行置换: OPT根本思想: 是用一维数组page[pIZE]存储页面号序列,memery[mIZE]是存储装入物理块 中的页面。数组ne某t[mIZE]记录物理块中对应页面的最后访问时间。每当发生 缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。FIFO根本思想: 是用一维数组page[pIZE]存储页面号序列,memery[mIZE]是存储装入物理块 中的页面。数组flag[10]标记页面的访问时间。每当使用页面时,刷新访问时间。 发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。 三、根本思路 实验环境:vc++,编程语言:c语言 #include #include /某全局变量某/ int mIZE; /某物理块数某/ int pIZE; /某页面号引用串个数某/ tatic int memery[10]={0}; /某物理块中的页号某/ tatic int page[100]={0}; /某 页面号引用串某/ tatic int temp[100][10]={0}; /某辅助数组某/ /某置换算法函数某 / void FIFO(); void LRU(); void OPT(); /某辅助函数某/

操作系统课程设计实验报告

操作系统 课程设计报告 学院: 班级: 学生姓名: 学号: 指导老师: 提交日期: 一、实验目的

本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。 二、实验要求 在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux 文件系统。具体见附表 三、实验环境 Windows 、VC 三、实验思想 1、整体思路 实验可分为三个大模块:文件组织结构、目录结构、磁盘空间管理。编写时,先定义重要的数据结构,整理好各个模块的思路,列出程序清单。接着编写一些对系统进行基本操作的函数,然后利用这些函数实现各种功能。 2、盘块大概分布(分了128块,每块64字节) 盘块0 1 2 3 4 5 6 (127) 用途FAT表FAT表根目录目录数据数据数据...... 数据 盘块与盘块之间的链接,是利用FAT表项,(使用数组结构),并用它记录了所有盘块的使用信息。 优点:可以利用FAT信息,迅速查找、打开各个目录,进行创建、修改文件。 3、目录组成 为了简单,构思目录时,每个目录只有8字节,每盘存放最多8个目录。其中,目录名、文件名最多只能为3字节,如果是文件的话,类型名也最多为2字节。区分目录名和文件名的方法是:设计一个属性项(1个字节),为8时表示纯目录,为4时表示文件目录。具体分布如下图: 用途目录名或文件名文件类型属性文件起始盘 文件长度 块 大小3(字节) 2 1 1 1 优点:属性可以区分纯目录、文件目录;文件起始盘块可以记录文件的存放位置;文件长度,,在读文件时控制指针,是否到了文件末尾。 缺点:为了简单,对文件名、目录名、类型名都作了限制。最大分别为:3,3,2字节。

操作系统课程设计报告进程调度的模拟实现

操作系统 课程设计报告 专业 计算机科学与技术 学生姓名 班 级 学号 指导教师 完成日期 博雅学院

题目:进程调度的模拟实现的模拟实现一、设计目的 本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。 二、设计内容 1)概述 选择一个调度算法,实现处理机调度。 设计要求: 1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。 2)可选择进程数量 3)本程序包括三种算法,用C或C++语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。 调度时总是选取优先数最大的进程优先运行 2.每个进程的优先数,运行时间,由程序任意指定。 3.为了调度方便,把进程按给定优先级(动态优先级算法中)从小到大排成一个队列。按给定运行时间(短作业优先)从小到大排成一个队列用一个变量作为队首指针,指向队列的第一个进程。 4.处理机调度总是选队首进程运行。由于本实验是模拟处理机调度,所以被选中的进程并不实际的启动运行,而是执行:

优先数-1(动态优先级算法中) 要求运行时间-1 来模拟进程的一次运行。 5.进程运行一次后,若要求运行时间不等于0,则再将它加入队列(动态优先级算法中:按优先数大小插入。),且改变队首指针:若要求运行时间=0,则把它的状态改为完成(C)状态,且退出队列。

《计算机操作系统》课程设计(2012年版)

《计算机操作系统》课程设计 一、设计题目 1.绘制描述事件先后顺序的前驱图。(1-2人)4分 ●建立前驱图的数据结构描述; ●建立绘制前驱图的例程,包括结点和有向边; ●可以删除、添加结点或有向边; ●可用鼠标在窗口的任意位置指点,确定结点或有向边位置; ●可以拖动现有结点的位置,与该结点相连的有向边也随之移动; ●可以将前驱图存入文件,从文件中取出; 2.绘制简单程序片段的前驱图。(2人)* 4分 ●建立前驱图的数据结构描述; ●可以从键盘或对话框接收程序片段; ●可将程序片段存入磁盘文件或从文件中取出; ●对程序片段进行词法分析,得出各语句之间的依赖关系; ●画出各语句间的前驱图; 3.多进程/线程编程:临界区控制、线程互斥与同步。(1人)3分 ●设置两个进程/线程,一个执行计算N:=N+1,另一个将N的值输出到窗口; ●为减慢进程/线程的执行速度,可以在程序中插入Sleep(1000)语句,1000表示程序停顿 1000ms,; ●在窗口上显示结果; ●设法调整两个进程/线程的执行顺序,使之出现教材P29上所列出的(1)、(2)、(3)三 种情况; ●设置互斥信号量,保证两线程互斥使用共享变量N; ●设置同步信号量,保证两线程按指定顺序运行; 4.多进程/线程编程:生产者-消费者问题。(1人)4分 ●设置两类进程/线程,一类为生产者,一类为消费者; ●建立缓冲区的数据结构; ●随机启动生产者或消费者; ●显示缓冲区状况; ●随着进程/线程每次操作缓冲区,更新显示; 5.多进程/线程编程:读者-写者问题。(1人)4分 ●设置两类进程/线程,一类为读者,一类为写者; ●随机启动读者或写者; ●显示读者或写者执行状态; ●随着进程/线程的执行,更新显示; 6.多进程/线程编程:哲学家问题。(1人)4分 ●设置进程/线程,描述哲学家; ●随机启动哲学家; ●显示进程/线程执行状态; ●随着线程的执行,更新显示; ●编写正确的哲学家程序,设法延迟线程的执行,使之出现死锁; ●编写正确的哲学家程序,保证不出现死锁; 7.多进程/线程编程:理发师问题。(1人)4分

操作系统课程设计报告

实践课设计报告 课程名称操作系统课程设计 模拟设计内存管理中的地址题目 转换(动态分区、页式十进制)学院 班级 学号 姓名 指导教师 年月日

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 模拟设计内存管理中的地址转换(动态分区、页式十进制)初始条件: 1.预备内容:阅读操作系统的内存管理章节内容,理解动态分区、页式、段式和段页式存储管理的思想及相应的分配主存的过程。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 1.下列内部存储器管理中地址转换,在完成指定存储管理技术中的地址转换基础上还可以选择其它内部存储器管理中的地址转换进行模拟设计并实现: ⑴动态分区方案,用最先适用算法对作业实施内存分配,然后把作业地址空间 的某一逻辑地址转换成相应的物理地址。能够处理以下的情形:输入某一逻辑地址,程序能判断地址的合法性,如果合法,计算并输出相应的物理地址。如果不能计算出相应的物理地址,说明原因。 ⑵页式存储管理中逻辑地址到物理地址的转换(十进制)。能够处理以下的情 形:输入某一十进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十进制表示。 ⑶页式存储管理中逻辑地址到物理地址的转换(八进制)。能够处理以下的情 形:输入某一八进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用八进制表示。 ⑷页式存储管理中逻辑地址到物理地址的转换(十六进制)。能够处理以下的 情形:输入某一十六进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十六进制表示。 ⑸段式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形:指定内 存的大小,进程的个数,每个进程的段数及段大小;能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。 ⑹段页式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形:指定 内存的大小,内存块的大小,进程的个数,每个进程的段数及段内页的个数;能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。 2.设计报告内容应说明: ⑴目的、功能与要求(明确该选题的作用并列出所选功能及要求); ⑵问题的详细描述、需求分析(分析说明相关算法原理及具体的实验内容); ⑶数据结构、功能设计(给出功能结构图、处理流程图); ⑷开发平台及源程序的主要部分(对主要代码段附文字注释);

湖南科技大学12级操作系统课程设计报告

操作系统课程设计报告 姓名: 学号: 班级: 指导教师: 测评: 年月日

目录 实验一WINDOWS进程初识 (3) 1、实验目的 (3) 2、实验原理 (3) 3、流程图 (3) 4、实验内容和步骤 (4) 5、实验结论 (5) 实验二进程管理 (5) 1、背景知识 (5) 2、实验目的 (5) 3、实验原理 (6) 4、流程图 (6) 5、实验内容和步骤 (7) 6、实验结论 (10) 实验三进程同步的经典算法 (10) 1、实验目的 (10) 2、实验原理 (10) 3、流程图 (11) 4、实验内容和步骤 (11) 实验五熟悉UNIX/LINUX系统 (14) 1、实验内容 (14) 2、实验原理 (14) 3、实验目的 (15) 4、实验题目 (15) 5、实验结论 (18) 实验六进程间通信 (18) 1、实验内容 (18) 2、实验目的 (18) 3、实验原理 (18) 4、流程图 (18) 5、实验题目 (20)

实验一WINDOWS进程初识 1、实验目的 (1)学会使用VC 编写基本的Win32 Consol Application(控制台应用程序)。(2)掌握WINDOWS API 的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。 2、实验原理 (1) 一个简单的Windows控制台应用程序:编写一个简单的C++程序,调用cout 函数输出”Hello,Win32 Consol Application”; (2) 核心态运行和用户态运行时间比计算:给一个当前正在运行进程名,调用CreateToolhelp32Snapshot函数对操作系统中运行的所有进程拍取“快照”,循环枚举快照中的所有进程,并与给出的进程名进行比较,若是相同,则打开进程,调用GetProcessTimes()函数计算当前进程的时间,并调用GetKernelModePercentage()函数计算内核模式下消耗时间比,并将结果显示到屏幕上。若是一直不到给出的进程,说明给出的进程没有在运行。 3、流程图 (1)略 (2)如下图:

操作系统课程设计报告

操作系统课程设计实验报告 姓名: 学号: 班级专业:软件工程

操作系统课程设计 ---建立基于磁盘存储设备的FAT文件系统一、课程设计要求、目的 在现代计算机系统中,用到大量的程序和数据,由于内存容量有限,且不能长期保存,故而平时总是把他们以文件的形式存放在外村中,需要时可随时将他们调入到内存。如果用户直接管理外存上的文件,不仅要求用户熟悉外存的特性,了解各种文件的属性,以及他们在外存上的位置,而且在多用户的环境下,还必须能保持数据的安全性和一致性。显然,这是用户多不能胜任、也不愿意承担的工作。取而代之的是操作系统中又增加了文件管理功能,即构成一个文件系统,负责管理在外存上的文件,并把对文件的存取、共享和保护等手段提供给用户。这不仅方便了用户,保证了文件的安全性,还可以有效的提高系统资源的利用率。 课程设计不仅要求我们紧扣课本知识,熟练的掌握课FAT文件系统实现原理上,而且要求最终的软件实现有很好的人机交互界面,从多方面考查我们的学习、实践能力。让我们在实践中去认识FAT文件系统的实现原理,加深对文件系统存储、数据的安全性和一致性理解,在实践中去完善自己的理论知识,纠正理论学习过程中出现的错误。

二、课程设计的任务 1、首先分配一定容量的磁盘存储空间,作为文件存储空间。 2、建立相应的文件系统,使用FAT文件系统。 3、为该文件系统设计相应的数据结构来管理目录、磁盘空闲空间、已分配空间 等。 4、提供文件的创建、删除、移位、改名等功能。 5、提供良好的界面,可以显示磁盘文件系统的状态和空间的使用情况。 6、提供虚拟磁盘转储功能,可将信息存入磁盘,还可从磁盘读入内存。 三、相关原理及算法描述 3.1文件系统设计原理 本次设计的基于磁盘存储设备的FAT文件系统利用的是二级目录管理方式,分别由用户文件目录UFD( User File Directory )、主文件目录MFD( Master File Diretory )构成。其中UFD由用户的所有文件块组成,在MFD中每个用户目录文件占用一个目录项,其中目录项中包括用户名和指向用户目录文件的指针,其基本构成如图所示: 用户文件目录项的基本信息包括基本信息、地址信息、访问控制信息、使用信息。 1. 基本信息 文件名:通常在不同系统中允许不同的最大长度。可以修改。有

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

《操作系统课程设计》实验大纲 一、课程编号:040312 二、课程类型:必修 适用专业:计算机科学与技术,信息安全;课程学时:16学时 三、课程的地位、作用与任务设计内容 操作系统是高等院校计算机及其相关专业的一门重要的主干课程,是计算机专业的学生必须掌握的专业基础课。在本科计算机专业教学任务中,软件开发占了相当大的比重,这些软件需要大量地与操作系统内核作深层次的交互,以进行信息的传输、控制和实现各种通信协议。通过操作系统课程的学习,能够让学生了解操作系统的基本原理,了解操作系统的内部结构和其向用户提供的库函数和系统调用,利用操作系统内核所提供的强大功能进行大型软件的设计、开发和维护。本课程设计通过对Linux操作系统内核的编译和管理,以及设备驱动程序的设计,是学生对现代操作系统的工作原理和内部运行机制有更深入的了解 四、设计要求 熟悉Linux操作系统的使用方法,了解Linux操作系统的内核的编译、升级、系统启动流程;了解并掌握Linux设备驱动程序开发的一般方法。 五、课程安排与要求 1.课程可以分组完成,每个小组人数不超过两名。 2.每个小组完成设计后需要提交设计作品与课程设计报告两份作业。 3.报告要求:设计过程及所遇到的问题的解决; 同组同学任务的分配,每 人工作所占比例,设计过程中的具体内容;编程部分写出主要源代码。 六、成绩考核办法 总成绩=考勤成绩(10%)+现场评测成绩(60%)+设计报告(30%)。 计算机学院专业实验中心 2013-7-12

重庆邮电大学实践教学环节教师授课计划 填表老师:填表时间:2014.9.2 学年学期:课程编号:040312 课程名称:操作系统课程设计 年级:专业:计算机应用学时/学分:16/1.0 理论学时:实验学时:16教材名称及出版社:《现代操作系统》机械工业出版社

操作系统课程设计报告

操作系统课程设计报告 导语:通过前台系统,能够实现的功能模块包括在线投票和查看结果。以下是小编为大家整理的操作系统课程设计报告,欢迎大家阅读与借鉴! 电子商务网站 系统工作环境有: 系统工作环境:WindowsXP,WindowsXXserver等等; Web运行环境: 系统开发环境:DreamweaverCD3 图像设计工具:PhotoshopCS3 数据库系统: 此系统主要由前台和后台两个部分组成,同时还包括了数据库。前台系统是后台系统的体现,后台系统是前台系统的支撑。只有有了后台系统的支撑,该电子商务网站的功能才能实现,与此同时,只有有了前台系统的存在,消费者才可以顺利的进行消费,两者相互依存,相辅相成。数据库是连接后台和前台的桥梁,后台建立对数据库进行管理,前台通过购买商品,将商品计入数据库,同时通过查看结果,还可查询数据库。 电子商务系统主要分为前台和后台两个大部分构成,通过数据库使这两者相互紧密的联系在一起。 、前台设计

关于前台设计已经在Div+css设计报告中详细说明清楚,在此就不再重复的。 、后台设计 电子商务系统的后台实现了用户对系统的管理和购物车上选购商品,能够通过后台实现的功能来进入自己的个人客户中心、修改个人信息、选择商品、删除不要商品、增加商品选项以及修改商品选项等等。要实现对后台功能的控制,用户需要先成功注册并且登陆系统才能进行相关的操作。 、数据库设计 后台数据库采用了MySQL数据库,数据库保存了用户的个人信息以及收藏夹的商品信息,同 时还接受前台投票的数据。在系统中起着连接前后台的作用。 、前台代码设计 不再重复。 、后台代码设计 后台管理界面是通过登陆界面进入的。当输入正确的账户名和密码后,就可以进入后台进行操作管理了。后台主操作界面是由文件创建的界面。后台能实现的操作由商品添加和删除来实现相关的功能。删除商品通过删除商品来删除数据库中的记录来实现。 、数据库代码设计

操作系统课程设计报告

《操作系统课程设计》 报告 专业班级:计科1106班 姓名:李育洪、胡壮 刘春林、邓程峰 指导老师:李玺 设计时间:2014年6月

目录 第一章概论 (3) 第二章设计的基本概念和原理 (4) 第三章总体设计 (6) 第四章详细设计 (8) 第五章系统的测试和运行 (18) 第六章系统的使用说明 (20) 第七章课程设计总结 (21) 第八章参考资料 (22)

第一章概论 1.1课程设计的内容 本次课程设计我们是四个人的小组,我们选择的是第三个题目,题目的描述如下: 在uC/OS操作系统中增加一个简单的文件系统, 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 1.2课程设计的目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 1.3要解决的主要问题 通过对题目的分析,以及对相关资料的查阅,我们决定为μC/OS-II写一个FAT32文件系统。 那么,我们要解决的主要问题就有: 1)掌握μC/OS-II的基本原理,并能在μC/OS-II上用C语言进行程序设计;2)μC/OS-II开发环境的建立。由于我们没有嵌入式的硬件设备,所以在PC 上进行开发。于是就需要把μC/OS-II一直到windows下,用VC++作为开发环境; 3)了解FAT32文件系统的底层细节。必须要有FAT32这种文件系统的详细说

操作系统课程设计

操作系统课程设计指导

一、本课程的教学目的及基本要求 教学目的 操作系统课程设计是操作系统课程的重要实践环节,是操作系统课程内实验的有益补充,它旨在培养学生的实践能力,促进理论与实践的结合。要求学生通过上机编程,了解如何模拟操作系统原理的实现,从而加深对操作系统原理的领会,加深对操作系统实现方法的理解,与此同时使学生在程序设计方面也能够得到很大程度的提高。操作系统虽然是理论性很强的课程,但是仅仅是课堂讲授是绝对不够的,操作系统课程设计即是课堂教学基础上的实践环节,其重要程度决不亚于课堂的知识传授。 本课程设计的目的和任务是在课堂教学的基础上,使学生对操作系统运行机制有一个全面的认识和理解,锻炼学生的抽象思维、逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。 先修课程:数据结构,操作系统 教学基本要求 要求学生通过上机编程,使学生对操作系统运行机制有一个全面的认识和理解,通过模拟文件系统及内存管理系统,锻炼学生的逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。 课程设计基本要求: 1、掌握课堂教学内容,主要包括: (1) 掌握操作系统四大资源管理的理论知识; (2) 熟悉 Linux 或Unix 文件系统的结构; (3) 使用编程语言实现课程设计题目要求的功能。 2、根据课程设计题目,按以下步骤进行: (1) 问题分析,理解问题,明确设计要求; (2) 根据要求进行概要设计和详细设计; (3) 编码实现、上机调试,数据测试; (4) 完成课程设计实习报告。

湖南科技大学计算机学院计算机组成原理课程设计报告

实验一:ROM仿真 一、实验题目 ROM仿真 二、实验目的 1、掌握ROM的工作原理; 2、画出逻辑电路图及布出美观整齐的接线图; 3、掌握ROM读出原理。 三、总体设计 1、实验原理 存储元是否有有二极管组成,若有,由于二极管导通那么数据线上可以读出1;如果没有二极管,数据线上输出接地电平,读出0。 2、实验内容 S1,S2两个三路开关控制数码管的输出。S1=1,S2=1时,输出存放的0000B;S1=1,S2=0时,输出存放的0010B;S1=0,S2=1时,输出存放的0001B;S1=0,S2=0时,输出存放的0101B。 四、详细设计 图1 电路图

五、实验结果与分析 图2 数码管输出0 图3 数码管输出2 图4 数码管输出1 图5 数码管输出5数码管右侧为低位,左侧为高位,高电平输入有效。要输出数字只需将数字转换成对应的BCD码,并且BCD码中为1对应的位通过一个二极管连接高电平信号和LED灯的引脚。学号后四位依次为0215,通过两个开关控制LED灯即可显示学号的指定位。 六、小结与心得体会 1、本题比较简单,在参考了指导书的连线图后,根据自己的学号改一下对应开关的二极管即可。 2、本题需要了解LED灯显示方法并且注意在连接LED引脚和地线之间要加下拉电阻。

实验二:验证74LS181运算和逻辑功能 一、实验题目 验证74LS181运算和逻辑功能 二、实验目的 1、掌握算术逻辑单元(ALU)的工作原理; 2、熟悉简单运算器的数据传送通路; 3、画出逻辑电路图及布出美观整齐的接线图; 4、验证4位运算功能发生器(74LS181)组合功能。 三、总体设计 1、实验原理 ALU能进行多种算术运算和逻辑运算。4位ALU-74LS181能进行16种算术运算和逻辑运算。功能表如下:(表中的“/”表示求反) 表1 ALU-74LS181引脚说明:M=1 逻辑运算,M=0算术运算。

相关文档
最新文档