《操作系统原理》报告
实验报告二主存空间的分配和回收
![实验报告二主存空间的分配和回收](https://img.taocdn.com/s3/m/f4c3faefaeaad1f346933f14.png)
if(strcmp(PName,"OS")==0)
{ printf("ERROR!");
return;
}
while((strcmp(temp->proID,PName)!=0||temp->flag==1)&&temp)
temp=temp->next;
四、程序中使用的数据结构及符号说明
结构1:
typedef struct freeTable
{
char proID[6];
int startAddr; /*空闲区起始地址*/
int length; /*空闲区长度,单位为字节*/
int flag; /*空闲区表登记栏标志,用"0"表示空表项,用"1"表示未分配*/
freeNode=freeNode->next;
}
getchar();
break;
default:printf("没有该选项\n");
}/*case*/
}/*while*/
}/*main()*/
六、运行调试结果
初始界面:
分配主存,五个作业名:P1、P2、P3、P4、P5
显示主存使用情况:
回收主存P2:
if(front->flag==1&&rear->flag==1)
/* 上邻空闲区,下邻空闲区,三项合并*/
{
front->length=front->length+rear->length+temp->length;
操作系统原理及应用课程设计报告
![操作系统原理及应用课程设计报告](https://img.taocdn.com/s3/m/a2bcbaa25ebfc77da26925c52cc58bd6318693e9.png)
《操作系统原理及应用》课程设计报告 Linux系统服务管理及安全设计学院(系): 计算机科学与工程学院班 级: 学号学生姓名:指导教师:时间: 从 2012 年 05 月14日 到 2012 年05月18日一、课程设计的目的本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及Linux安全服务管理,加强学生的动手操作能力。
二、课程设计要求设计一套安全的系统 Linux要求:1. 系统不能被破解密码;2. 系统不能被恶意重启;3. 只有指定用户才能ssh 登录系统,保障系统安全;4. 编写防火墙策略,保障系统安全,只开放允许访问的tcp 22, tcp 80,tcp 20 21;5.搭建一个Web网站;6.编写shell程序,阻止恶意攻击服务器的来源IP,连接服务器.三、课程设计内容3.1、 Redhat 基础及权限控制Linux 安装中的重要步骤:引导安装程序、磁盘分区、网络参数配置、密码设置、软件包选择Linux 系统引导过程:服务器硬件自检、引导MBR、引导Kernel、引导驱动及服务、自定义加载项、6种引导方式介绍(/etc/inittab)Linux root 密码破解:单用户模式,进行root密码破解Linux 加密防止 root 密码破解:明文加密 (password) 、非明文加密 (grub-md5-crypt )Linux防止恶意重启:禁用ctrl+alt+del 重启功能 (/etc/inittab)Linux文件权限数字表示:可读 R 4、可写 W 2、可执行 X 1Linux文件权限调整:修改所有者 chown 、修改权限 chmodLinux网络参数配置:网络IP地址配置、同一网卡配置多个IP地址Linux查看IP及route:Ipconfig、 ip add、route -nLinux常用命令文件管理类:ls cat more vi cp rm find paste wc grep head tail 磁盘管理:df du fdisk mkfs mount umount系统状态:uptime last vmstat iostat top free3.2、 软件管理及Shell编程Linux rpm 包的管理 :软件包安装、软件包升级、查询已安装的软件包Linux 源码包的管理 :源码包安装、configure、make、make test、make install、源码包删除Linux 文本处理 :文本编辑器、 vi 编辑器Linux Shell编程中常用命令条件测试:test 或者 []、-d 目录、-f 文件、-s 文件大小非0正则表达示:^ 行首、$ 行尾、以 $ 打头的命令、$? 上一个命令执行结果、$1 输入的第1个参数3.3、存储管理及系统管理Linux 系统常用服务管理 :常用系统服务启动与关闭、系统设置 服务器设置 服务常用系统服务介绍Network 网络服务、sshd ssh 远程连接服务Httpd Apache Web 服务器、Smb 文件共享服务器Vsftp FTP 服务器、Bind DNS 服务器Iptables 防火墙、Linux 进程管理进程查看 top , ps –ef 结束进程 Kill id、Kill –9 idLinux 文件系统管理磁盘分区、fdisk 、格式化分区、mkfs.ext3 、挂载分区、mount、卸载分区、umountLinux 卷管理 LVM磁盘分区 fdisk (disk type id: 8e)建立 PV pvcreate pvdispaly建立 VG vgcreate vgchange -a y (激活VG) vgdisplay建立 LV lvcreate lvdisplay格式化LV make.ext3挂载 LV mount缷载LV umountLinux 系统管理 :以图形化的形式 讲解常用系统管理 、用户和组 、日期和时间、显示Linux 系统日志管理系统日志文件位置 、/var/log/message观察日志变化、tail -f /var/log/message筛选日志内容、grep “error” /var/log/message3.4、常用服务器搭建、安全配置Linux openSSH 安全配置 (/etc/ssh/sshd_config )修改SSH服务端口:# Port 22 修改为 Port 9022修改SSH连接协议为版本2:#Protocol 2,1 修改为 Protocol 2权限只定用户连接SSH:AllowUsers user1重启ssh服务系统设置 服务器设置 服务,启动服务”sshd”、使用命令 service sshd restart使用软件连接SSH服务:在Windows上使用putty.exeLinux http服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep httphttpd-2.0.40-21libghttp-1.0.9-7httpd-manual-2.0.40-21redhat-config-httpd-1.0.1-18安装http服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置HTTP网站网页默认存放位置:/var/启动HTTP网站服务系统设置 服务器设置 服务,启动服务”httpd”、使用命令 service httpd start访问Linux Web网站: IPLinux dns服务器配置检查所需要的软件包[root@rh9 /]# rpm -qa | grep bindredhat-config-bind-1.9.0-13bind-utils-9.2.1-16ypbind-1.11-4bind-9.2.1-16安装DNS服务软件包通过系统的”添加删除程序功能”进行安装、使用rpm –ivh 软件包名进行安装配置DNS服务配置反向解析、配置正向解、异常解决 DNS服务不能启动。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/f913dc0ff111f18583d05ae6.png)
2012 软件工程(嵌入式)
学号:____________ 姓名:____________
苏州大学计算机科学与技术学院 2015 年 3 月
目录
操作系统原理实验报告
一、实验环境............................................................................................ 1
5
操作系统原理实验报告 6
操作系统原理实验报告 7
操作系统原理实验报告 8
操作系统原理实验报告
实验二、进程间的通信
实验环境:
实验环境一:Windows 平台
实验时间:
6 小时
实验目的:
初步了解 windows 环境下进程间通信的机制,掌握如何利用消息、共享内存 和剪贴板三种进程间通信机制中的任意 2 种进行通信的原理,并利用 win32API 函数编写实例程序。
[提示] 1、从 root 注册进系统,可以通过用户图形界面中的菜单创建用户组并为用
户分配注册号,也可以通过 shell 命令创建用户组,创建用户组的 shell 命令格式
2
操作系统原理实验报告
如下:
groupadd -g group_ID group_name
为用户分配注册号的 shell 命令格式如下:
usermod options login_ID
其中,任选项 options 可以为如下内容:
-c comment
表示注释信息
-d pathname
表示当前目录
-g group_ID
表示主用户组名
-G supplementary_group_ID 表示主用户组的增补组名
操作系统原理课程设计报告模板
![操作系统原理课程设计报告模板](https://img.taocdn.com/s3/m/c57de4513b3567ec102d8a41.png)
《操作系统原理》
课程设计报告书
题目:
学号:
学生姓名:
专业:
指导教师:
年月日
目录
1 功能描述(三号黑体,占三行) (1)
1.1 二级标题(四号宋体,占三行) (1)
1.1.1 三级标题(五号黑体,占二行) (1)
2 系统设计 (1)
3 系统实现 (2)
4 系统测试与分析 (2)
教师评分表 (10)
1 功能描述(三号黑体,占三行)
1.1 二级标题(四号宋体,占三行)
1.1.1 三级标题(五号黑体,占二行)
详细描述实现什么功能?(正文采用五号宋体)
2 系统设计
描述系统总体设计和详细设计,如功能模块图、数据结构、流程图等。
图题:排小五宋体居中,编号统一为图x;图中文字:排小五宋,末尾没有标点;如图1所示。
图1 计算机系统组成
表题:排小五黑体居中,编号统一为表x;表中文字:排小五宋体。
如表1所示。
表1 不同进制数的对应关系
3 系统实现
描述采用什么工具实现系统的过程。
4 系统测试与分析
描述系统运行结果,如运行界面截图。
教师评分表。
《操作系统原理》实验报告材料
![《操作系统原理》实验报告材料](https://img.taocdn.com/s3/m/1f602f6402d8ce2f0066f5335a8102d277a2611e.png)
《操作系统原理》 实 验 报 告 书班级:学号:姓名:指导教师:2013-2014 学年第二学期实验名称: LINUX 用户界面 实验时间: 2014 年 4 月 2 日第 7 周星期三一、实验目的1,熟悉Linux字符操作界面,熟练掌握常用Shell命令。
2,熟悉Linux文本编辑方法,学会编辑软件VI的使用。
3,了解Linux编译器gcc的功能,掌握基于Linux 平台的C程序的开发二、实验预习(预备知识的问题及回答)1.为什么在Linux系统中,诸如光盘、U盘等要先挂载而后才能使用?如何获得U盘的设备名?装载点在文件系统中的位置是什么?由于文件系统的差异,Linux在默认情况下并不支持软盘,光盘,U盘,所以需要通过装在相应盘片才可以访问其中的数据装载点是挂载文件系统的目录位置2.从虚拟机界面退出进入Windows OS界面的操作是 Ctrl+Alt ,从Windows OS 界面进入虚拟机界面的方法是 鼠标点击虚拟机界面 。
3.权限的含义是什么?如何使用数字法设定文件的权限?Linux系统中的每个文件和目录都有相应的访问许可权限,访问权限分为只读(r),可写(w)和可执行三种,有三种不同类型的用户可以对文件或者目录进行访问,分别是文件所有者(u),同组用户(g)和其它用户(o)。
所有的文件和目录都被创建他们的人所拥有。
只要你是这个文件的所有者或者你登陆为用户,你就拥有了改变所有者,群组和其他人权限的权利。
使用数字法改变权限:命令格式chmod权限数值 文件名说明给指定文件赋予数值所规定的权限在数字设定法中,每种权限设置均可以用数值来代表,其中0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,这些值之和便可以用来设定特定权限。
4.什么过滤操作?在Linux中如何实现?过滤操作:将一个命令的输出作为一个命令的输入Linux实现的命令格式:命令|命令5.在Linux中挂载u盘并能显示其文档的中文信息,所使用的挂载命令是:Mount/dev/sdal/mnt/usb。
操作系统原理实践报告(2篇)
![操作系统原理实践报告(2篇)](https://img.taocdn.com/s3/m/b70b9d64df80d4d8d15abe23482fb4daa58d1d90.png)
第1篇一、引言操作系统是计算机系统中最基本的系统软件,它负责管理计算机的硬件资源和软件资源,为用户和其他程序提供运行环境。
为了更好地理解操作系统的原理,我们进行了一次操作系统原理的实践。
以下是本次实践的详细报告。
二、实践目的1. 理解操作系统的基本原理和功能;2. 掌握操作系统的基本操作和命令;3. 熟悉操作系统的调试和优化方法;4. 提高实际操作能力,为今后从事计算机相关工作打下基础。
三、实践内容1. 操作系统概述操作系统是一种系统软件,负责管理计算机的硬件资源和软件资源。
它具有以下功能:(1)进程管理:负责进程的创建、调度、同步和通信等;(2)内存管理:负责内存的分配、回收和保护等;(3)文件管理:负责文件的创建、删除、读写和保护等;(4)设备管理:负责设备的分配、控制和调度等;(5)用户接口:提供用户与计算机交互的界面。
2. 操作系统基本操作和命令在实践过程中,我们学习了以下操作系统的基本操作和命令:(1)进程管理:创建进程、查看进程信息、杀死进程等;(2)内存管理:查看内存信息、释放内存等;(3)文件管理:创建文件、删除文件、查看文件信息等;(4)设备管理:查看设备信息、控制设备等;(5)用户接口:登录、注销、切换用户等。
3. 操作系统调试和优化在实践过程中,我们学习了以下操作系统调试和优化方法:(1)使用调试工具:如gdb、windbg等;(2)分析系统性能:如CPU使用率、内存使用率等;(3)优化代码:如减少循环次数、提高数据结构效率等;(4)调整系统参数:如调整内存分配策略、优化进程调度算法等。
四、实践过程1. 安装操作系统首先,我们需要在计算机上安装一个操作系统,如Windows、Linux或macOS。
在安装过程中,我们需要选择合适的操作系统版本、分区、驱动程序等。
2. 学习操作系统基本操作和命令在安装完成后,我们开始学习操作系统的基本操作和命令。
通过查阅资料和实际操作,我们掌握了进程管理、内存管理、文件管理、设备管理和用户接口等方面的知识和技能。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/91de50f46394dd88d0d233d4b14e852458fb397c.png)
操作系统原理实验报告操作系统原理实验报告一、课程设计的题目:根据“操作系统原理”课程的课堂教学内容,结合自己的知识积累情况,题目可从下述拟题中选择,亦可自定。
二、实验设计的内容:在Linux或Windows操作系统下,用C语言进行操作系统相关的设计开发,内容可关于“并发程序设计”、“处理机管理”、“用户接口”、“存储管理”、“文件系统管理”、“设备管理”等等。
三、参考资料:1、清华大学出版,张尧学《计算机操作系统教程》配套的《习题解答与实验指导书》中范例;2、清华大学出版,任爱华《操作系统实用教程》中的实例设计;3、《Linux下C语言编程入门教程》、《Linux软件工程师(C 语言)实用教程》等;4、网上与操作系统设计与开发相关的文献资料。
四、重要操作环节1、步骤:选题(2~3人一小组)--→提交小组名单--→分析、编写程序--→上机调试--→分析结果--→评价结果--→写出设计报告2、设计报告的主要内容:①、设计说明:设计主要完成的任务、解决的主要问题;②、工作原理:找出教材中的相关工作原理并简要说明;③、详细设计:包括调用的主要系统函数说明、程序流程图、程序代码、关键语句注释;④、运行结果:要求写出运行结果或抓图给出;⑤、分析结果:要求用操作系统原理有关理论解释说明;⑥、调试步骤以及调试过程中出现的问题及解决方法;⑦、参考文献:5篇以上;⑧、以学年论文格式提交文档资料,要有统一的封面和实验心得体会。
五、成绩评定1、各小组轮流演示小组作品,演示完毕,由其他小组的同学提2个以上问题,回答完毕打分;3、打分遵循原则如下:注意:①以下必做实验每小组都要做②以下选做实验,1个实验题目至多允许2个小组选,各小组也可以自拟题目必做实验(四个,都要做)实验一1. 实验名称:Linux登录、注销、关机和基本操作一。
2. 实验要求:掌握Linux系统的登录、注销、关机方法;掌握列出文件清单命令的使用方法:ls;掌握目录的切换命令的使用:cd;掌握目录的建立、删除命令的使用:mkdir、rmdir;掌握文件的拷贝、删除、移动命令的使用:cp、rm、mv 。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/503dbaf09a89680203d8ce2f0066f5335a8167ed.png)
课 程 论 文作 者:学 号: 0 专业班级:课程名称:操作系统原理 题 目:操作系统实验报告 成 绩:年年 月月 教师评语::操作系统实验报告——进程同步实验(生产者与消费者问题算法实现)1.1.实验目标和要求 进程的同步是操作系统处理机管理的重要内容,本实验要求学生理解生产者与消费者问题模型,掌握解决该问题的算法思想,学会使用同步机制。
题模型,掌握解决该问题的算法思想,学会使用同步机制。
2.2.实验内容 一组生产者向一组消费者提供消息,一组生产者向一组消费者提供消息,它们共享一个有界缓冲池,它们共享一个有界缓冲池,它们共享一个有界缓冲池,生产者向其中投放消息,生产者向其中投放消息,消费者从中取得消息。
假定这些生产者和消费者互相等效,假定这些生产者和消费者互相等效,只要缓冲池未满,只要缓冲池未满,生产者可将消息送入缓冲池;只要缓冲池未空,消费者可从缓冲池取走一个消息。
送入缓冲池;只要缓冲池未空,消费者可从缓冲池取走一个消息。
根据进程同步机制,根据进程同步机制,编写一个解决上述问题的可视化程序,可显示缓冲池状态、放数据、取编写一个解决上述问题的可视化程序,可显示缓冲池状态、放数据、取数据等过程。
数据等过程。
缓冲区1 P Q 缓冲区2 缓冲区3 缓冲区n-1 缓冲区n 放消息放消息 N 个缓冲区个缓冲区取消息取消息3.3.实验方法或步骤 3. 1程序类图3. 2采用的同步方法1.1.利用函数利用函数利用函数CreateMutex(NULL,FALSE,NULL)CreateMutex(NULL,FALSE,NULL)CreateMutex(NULL,FALSE,NULL)创建互斥信号量创建互斥信号量创建互斥信号量g_hMutex g_hMutex g_hMutex,表示缓冲区当,表示缓冲区当前的状态,若为前的状态,若为true true true时,则表示缓冲区正被别的进程使用。
三个参数表示的意义分别为:时,则表示缓冲区正被别的进程使用。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/8a67dde5a1116c175f0e7cd184254b35effd1a74.png)
操作系统原理实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理和控制计算机的硬件和软件资源,为用户和应用程序提供一个方便、高效、稳定的运行环境。
本次实验的目的在于通过实际操作和观察,深入理解操作系统的核心原理和关键机制,包括进程管理、内存管理、文件系统管理、设备管理等方面,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C++。
三、实验内容及步骤(一)进程管理实验1、进程创建与终止编写程序,使用系统调用创建一个新的进程,并在新进程中执行特定的任务,如打印一段文本。
观察新进程的创建过程和资源分配情况。
编写程序,实现父进程等待子进程终止,并获取子进程的退出状态。
2、进程调度编写程序,模拟多个进程的并发执行,设置不同的优先级和时间片。
观察进程的调度顺序和执行时间,分析调度算法的效果。
(二)内存管理实验1、内存分配与释放编写程序,使用动态内存分配函数(如 malloc、new 等)申请一定大小的内存空间,并进行读写操作。
观察内存的分配和释放过程,检查是否存在内存泄漏。
2、内存分页与分段了解操作系统的内存分页和分段机制。
编写程序,模拟内存分页和分段的过程,展示地址转换和页面置换算法的效果。
(三)文件系统管理实验1、文件创建与读写编写程序,创建一个新文件,并向文件中写入一定的数据。
读取文件中的数据,并进行验证。
2、文件目录操作编写程序,实现对文件目录的创建、删除、遍历等操作。
观察文件目录的结构和变化。
(四)设备管理实验1、设备驱动程序了解设备驱动程序的基本概念和工作原理。
编写一个简单的设备驱动程序,实现对特定设备的控制和数据传输。
2、设备中断处理模拟设备中断的产生和处理过程。
编写中断处理程序,处理设备中断事件。
四、实验结果与分析(一)进程管理实验结果与分析1、进程创建与终止成功创建了新进程,并在新进程中打印出指定的文本。
《操作系统原理》课程设计报告
![《操作系统原理》课程设计报告](https://img.taocdn.com/s3/m/4ab52feb561252d380eb6edb.png)
《操作系统原理》课程设计报告书题目:进程控制模块的设计与实现专业:网络工程学号: ********* 学生姓名:***指导教师:***完成日期: 2015-12-05目录第1章课题概述 (3)1.1 设计要求 (3)1.2 设计理论依据 (3)第2章设计简介和内容 (6)2.1 设计简介 (6)2.2 设计内容 (6)第3章详细设计3.1 设计流程图 (7)3.2 主要程序代码 (9)第4章设计结果及分析 (10)4.1 运行结果截图 (10)4.2 运行结果分析................................ 错误!未定义书签。
总结.. (15)第1章课题描述1.1设计要求1.叙述要详细。
2.要有条理。
3.各个功能分开阐述。
4.自己可以增加题目要求的功能模块。
5.可以增加自己对题目的理解。
1.2设计理论依据根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。
短作业优先调度算法,从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
第2章设计简介和内容2.1设计简介在多道程序环境下,将系统中的作业组织起来,为每个进入系统的作业建立档案以记录和作业相关的信息,按要求输入作业名、到达时间和服务时间,并为其建立作业控制块(JCB)挂入后备队列。
进行作业调度时,在其后计算出各个作业的开始执行时间、完成时间、周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照由小到大的顺序显示出来。
2.2 设计内容1)编写程序完成批处理系统中的作业调度,要求采用短作业优先的作业调度算法。
实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。
2)创建作业控制块JCB,定义为结构体,为进入系统的作业建立档案,其中定义了作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间。
操作系统原理_实验报告
![操作系统原理_实验报告](https://img.taocdn.com/s3/m/aa8bf4ba9a89680203d8ce2f0066f5335a81673e.png)
一、实验目的1. 理解操作系统基本原理,包括进程管理、内存管理、文件系统等。
2. 掌握操作系统的基本命令和操作方法。
3. 通过实验加深对操作系统原理的理解和掌握。
二、实验环境1. 操作系统:Linux2. 编程语言:C语言3. 开发工具:Eclipse三、实验内容本次实验主要分为以下几个部分:1. 进程管理实验2. 内存管理实验3. 文件系统实验四、实验步骤及结果1. 进程管理实验实验步骤:- 使用C语言编写一个简单的进程管理程序,实现进程的创建、调度、同步和通信等功能。
- 编写代码实现进程的创建,通过调用系统调用创建新的进程。
- 实现进程的调度,采用轮转法进行进程调度。
- 实现进程同步,使用信号量实现进程的互斥和同步。
- 实现进程通信,使用管道实现进程间的通信。
实验结果:- 成功创建多个进程,并实现了进程的调度。
- 实现了进程的互斥和同步,保证了进程的正确执行。
- 实现了进程间的通信,提高了进程的效率。
2. 内存管理实验实验步骤:- 使用C语言编写一个简单的内存管理程序,实现内存的分配、释放和回收等功能。
- 实现内存的分配,采用分页存储管理方式。
- 实现内存的释放,通过调用系统调用释放已分配的内存。
- 实现内存的回收,回收未被使用的内存。
实验结果:- 成功实现了内存的分配、释放和回收。
- 内存分配效率较高,回收内存时能保证内存的连续性。
3. 文件系统实验实验步骤:- 使用C语言编写一个简单的文件系统程序,实现文件的创建、删除、读写等功能。
- 实现文件的创建,通过调用系统调用创建新的文件。
- 实现文件的删除,通过调用系统调用删除文件。
- 实现文件的读写,通过调用系统调用读取和写入文件。
实验结果:- 成功实现了文件的创建、删除、读写等功能。
- 文件读写效率较高,保证了数据的正确性。
五、实验总结通过本次实验,我对操作系统原理有了更深入的理解和掌握。
以下是我对实验的几点总结:1. 操作系统是计算机系统的核心,负责管理和控制计算机资源,提高计算机系统的效率。
操作系统原理课程设计报告
![操作系统原理课程设计报告](https://img.taocdn.com/s3/m/8aab93b8f5335a8103d22067.png)
上海电力学院课程设计报告课程名称:操作系统原理姓名:刘昊学号:20061945班级: 200605W1同组姓名:陈新实验时间:第19周成绩:一、课程设计内容进程调度算法模拟。
主要负责短进程优先调度算法、高优先权优先调度算法和多级反馈队列调度算法的模拟实现。
二、设计要求。
编写程序模拟进程调度程序,对五个进程进行调度。
要求至少支持两种及两种以上调度算法。
(每个小组完成算法数量为小组人数+1)(1)调度算法包括:FIFO,短进程优先,优先级,时间片轮转,多级反馈队列等。
(2)五个进程的进入时间、运行时间、优先数、时间片等可以事先人为地指定,也可由随机数产生。
每运行一次调度程序都要求打印一次运行进程、就绪队列、以及各进程的状态信息。
最后给出每一种调度算法的平均周转时间和带权周转时间。
三、调度算法及相关数据结构。
使用的数据结构有以下几个:1、PCB :进程控制块String name:进程名char state:进程状态,分别有’w’(等待,未被插入就绪队列),’r’(就绪,已进入就绪队列),’f’(结束,进程运行完毕)int ntime:服务时间int rtime:到达时间int f:优先权(静态)2、QueueOfAll:储存所有进程PCB PCB_Node[]:PCB结点的数组,用以保存所有进程信息int length:总的进程数3、QueueOfCurrent:就绪进程队列PCB PCB_Node[]:PCB结点的数组,用以保存所有进入就绪队列的进程信息int front:指向当前队头的前一位int rear:指向当前队尾int length:总的进程数int current:当前在执行的进程指针int cut:该队列的时间片长度FIFO,短进程优先,优先级调度算法示意流程图:多级反馈队列算法示意流程图:四、实验结果1、短进程优先调度算法进程名 A B C D E到达时间0 1 2 3 4服务时间 4 3 5 2 4实验结果如下:结果分析:由于采用的是非抢占式,因此第一个进入就绪队列的A肯定会先执行完。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/c116bf0416fc700abb68fc36.png)
实验报告课程名称操作系统原理实验项目操作系统功能认识专业班级姓名学号指导教师实验成绩2012年3月29日实验1 操作系统功能认识一、进程管理1.背景知识本实验要求学生掌握常用的系统操作,例如运行程序、关闭程序、查看任务管理器等。
2.实验目的本实验帮助学生理解程序与进程的区别,了解系统进程与用户进程,了解主要操作系统进程。
3.工具/准备工作需要准备一台安装Windows XP操作系统的计算机。
4.实验内容与步骤1) 开机后,不要主动运行任何应用程序,按Ctrl+Alt+Del进入任务管理器,查看“进程”标签,记录任意四个已经处于运行状态的进程。
a) _______oracle.exe________________ b) _____MOM.exe ______________c) ______spoolsv.exe____________ d) __ conime.exe__________ ________2)请通过网络或辅助工具,了解下面系统进程的主要职责:a) system Idle Process:监控cpu的使用,当cpu空闲的时候,则自动发送一个idle 指令,让cpu暂时停止工作(称之为挂起)。
它其实反应的是cpu的空闲状态。
b) explorer:___用于管理Windows图形壳_。
__________________________________c) services:用于管理启动和停止服务。
该进程也会处理在计算机启动和关机时运行的服务。
d) spoolsv: 管理所有本地和网络打印队列及控制所有打印工作。
e) winlogon:Windows NT 用户登陆程序,管理用户登录和退出。
f) system:_后门木马病毒,用于窃密,远程控制。
________________3) 执行“记事本”程序,观察任务管理器,记载其对应进程名称?a)____notepad.exe_______________________________________________________________ 执行“Office Word”程序,观察任务管理器,记载其对应的进程名称?b) ___WINWORD.exe_____________________________________________________执行“任务管理器|查看|选择列”操作,从中选择以下列,通过观察以上两个程序的各分量情况,分析这些列的含义:PID:唯一标识所运行进程的编号。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/d453e41ecc22bcd127ff0c4f.png)
《操作系统原理》实验报告班级:姓名:学号:指导老师:目录:实验题目:实验一线程创建与撤销 (2)实验题目:实验二线程同步 (6)实验题目:实验三线程互斥 (11)实验题目:实验四进程通信 (17)实验题目:实验五读者-写者问题 (21)实验题目:实验六进程调度 (37)实验题目:实验七存储管理之动态链接库 (52)实验题目:实验八存储管理之内存分配 (56)实验题目:实验九存储管理之页面置换算法 (69)实验题目:实验十设备管理 (84)实验题目:实验十一文件管理之文件读写 (98)实验题目:实验一线程创建与撤销完成人:XXX报告日期:2018年3月31日一、实验内容简要描述(1)熟悉VC++、Visual Studio开发环境。
(2)使用相关函数创建和撤销线程。
(3)在一个进程中创建3个线程,名字分别为threada、threadb、threadc。
threada输出“hello world! ”。
threadb输出“My name is …”。
threadc输出“Please wait…”,然后sleep 5秒钟,接着输出“I wake up”。
二、程序设计1、设计思路该函数创建一个在调用进程的地址空间中执行的线程。
2、主要数据结构HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);VOID ExitThread(DWORD dwExitCode);VOID Sleep(DWORD dwMilliseconds);VOID Sleep(DWORD dwMilliseconds);三、实验结果1、基本数据lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。
重庆大学操作系统实验二
![重庆大学操作系统实验二](https://img.taocdn.com/s3/m/ccdeb734172ded630b1cb6fd.png)
重庆大学学生实验报告实验课程名称操作系统原理开课实验室重庆大学DS1501学院软件工程年级2013 专业班学生姓名学号开课时间2015 至2016 学年第一学期重庆大学软件学院制操作系统原理》实验报告实验目的(软件需求文档)掌握线程的创建掌握线程的调度静态优先级调度动态优先级调度二、实验原理(软件设计文档)系统调用接口,线程相关函数:Step1:定义线程函数voidtsk_foo(void *pv) {n“ , task_getid());task_exit(0);}Step2:申请用户栈unsigned char *stack_foo;stack_foo = (unsigned char *)malloc(1024*1024);free 释放掉!线程退出后,才能把用户栈用Step3:创建线程int tid_foo;tid_foo = task_create(stack_foo+1024*1024, tsk_foo, (void *)0);三、使用仪器、材料(软硬件开发环境) Notepad++ expenv四、实验步骤(实现的过程)随机生成3 组非负整数列表,创建3 个线程,分别用3 种不同的排序算法(插入,冒泡,选择) 对列表进行排序三线程:void tsk_foo_line1(void * pv){int m;int i;int arry[50]; srand(time(NULL));for (i =0; i<50; i++){ m= random() % 200; if (m<0) { m=0- m;} draw(i * 10, 0, 0 + m); arry[i] = m;}sort_m(arry, 50, 0); task_exit(0);}void tsk_foo_line2(void * pv){int m;int i;int arry[50];srand(time(NULL));for (i =0; i<50; i++){m= random() % 200;if (m<0) { m=0- m;} draw(i * 10, 345, 345 +m); arry[i] = m;}sort_x(arry, 50, 345); task_exit(0);}void tsk_foo_line3(void * pv){int m;int i;int arry[50];srand(time(NULL));for (i =0; i<50; i++){ m= random() % 200; if (m<0) { m=0- m;} draw(i * 10, 690, 690 +m); arry[i] = m;}sort_c(arry , 50, 690);task exit(0);}void draw(int x, int y1, int y2){int i;for (i =y1; i<y2; i++)setPixel(i , x, RGB(255, 255, 255)); }void resetBK(int x, int y1, int y2){ int i;for (i =y1; i<y2; i++) setPixel(i , x, RGB(0, 0, 0));} 三排序:冒泡void sort_m(int * arry, int n,int l){int i, j, tem ; int t = 500 / n;for (i =0; i<n; i++)for (j=0;j<n-i- 1; j++){if (*( arry + j)>*(arry +j +1)){ resetBK(j* t, l, l + *(arry +j)); resetBK(j* t +t, l, l +*( arry + j + 1)); tem = *( arry + j);*( arry + j) = *(arry +j+1); *( arry + j + 1) = tem ; draw (j * t , l, l + *( arry +j)); draw(j*t +t,l,l + *( arry + j+ 1));}}void sort_c(int * arry, int n, int l){ int i, j, key;int t =500/ n;for (j=n- 2; j >= 0; j--){ key = *( arry +j);i =j +1; resetBK(j * t , l, l+key); while (i<n&& *( arry + i )<key){ *( arry +i -1) = *( arry +i); draw(i*t -t,l,l+*(arry+i- 1)); i =i +1;}*( arry +i - 1) = key; draw(i* t -t, l, l + key);}} 选择void sort_x(int* arry, int n, int l){int i=0, j=0, lowindex = 0;int t =500/ n;for (i =0; i<n; i ++){lowindex =i;for (j =n -1; j>i; j--) if (arry[j] < arry[lowindex ])lowindex = j;if (lowindex != i){resetBK(i*t , l, l + *(arry +i)); resetBK(lowindex* t, l,l + *(arry + lowindex )); int temp = arry[ i];arry [i] = arry[ lowindex];arry [lowindex ] = temp ; draw (i * t , l, l + *( arry +i));draw(lowindex* t, l, l + *(arry + lowindex ));}}}线程控制块tcb 中增加nice 属性,在函数sys_task_create 中初始化nice=0 /*系统调用getpriority 的执行函数获取当前线程的优先级*/int sys_getpriority (int tid){if (tid ==0) return g_task_running->nice+NZERO;// 获取当前线程的nice值uint32_t flags; struct tcb *tsk;save flags cli(flags);tsk = get_task(tid ); restore_flags(flags);return tsk->nice+NZERO; // 获取线程的nice 值}/* 系统调用setpriority 的执行函数调整当前线程的优先级线程控制块tcb 中增加estcpu 属性,在函数sys_task_create 中初始化estcpu=0; 增加priority 属性,在函数sys_task_create 中初始化priority=0; 中增加全局变量g_load_avg:表示系统的平均负荷用浮点(float-point) 表示g_load_avg 和estcpu:精度高,效率低动态调度schedule:void schedule(){struct tcb * select=g_task_head;struct tcb * my_select=g_task_running ; while (select != NULL){select->priority =127- fixedpt_toint (fixedpt_div(select->estcpu, fixedpt_fromint (4))) - select->nice * 2; // 计算所有线程的priorityselect = select->next ;}// 动态优先级select = g_task_head; while(select!=NULL){if((select->tid != 0) &&(select->state ==TASK STATE READ))Y{if(my_select->priority <select->priority )my_select=select;// 选择等待队列里的线程优先级高的elseif(my select->tid==0){my_select=select;} select=select->next;}if (my select==g task running) { if(my_select->state == TASK_STATE_READ) Y return ;my_select = task0;}printk ("0x%d -> 0x%d\r\n" , (g_task_running == NULL) -1: g_task_running->tid , select->tid);g_resched = 0;switch_to (my_select);}中添加如下g_task_running->estcpu=fixedpt_add(g_task_running->estcpu,FIXEDPT_ON)E;//计算线程使用CPU时间estcpuif(g timer ticks %HZ==0){// 每隔一秒计算一次int nready=0; // 表示处于就绪状态的线程个数struct tcb *my select=g task head;int nice;//g task running->nice;//my_select=g_task_head;fixedpt ratio ;while(my select!=NULL){if (my select->state==TASK STATE REA)DnYready++ nice=my select->nice;ratio = fixedpt_mul (FIXEDPT_TWO, g_load_avg);// 每秒钟为所有线程运行、就绪和等待)更新一次ratio = fixedpt_div (ratio , fixedpt_add (ratio , FIXEDPT_ON)E);my_select->estcpu = fixedpt_add (fixedpt_mul (ratio ,my_select->estcpu),fixedpt_fromint (nice))my_select=my_select->next;fixedpt r59 60 = fixedpt div (fixedpt fromint (59), fixedpt fromint (60));// 计算系统的平均负荷g load avgfixedpt r01 60 = fixedpt div (FIXEDPT ON,Efixedpt fromint (60)) g load avg= fixedpt add (fixedpt mul (r59 60, g load avg),fixedpt_mul (r01_60, fixedpt_fromint (nready)));主函数:int mode = 0x0118;initGraphics (mode);int y =0;for (y=0;y<; y++){setPixel/ 3,y, RGB(0, 125, 125)); setPixel/ 3 * 2, y, RGB(0, 125, 125));}五、实验结果及分析(实现的效果,包括屏幕截图、系统总体运行情况和测试情况等)静态优先级:Llxh心必ew动态优先级:。
操作系统原理实验报告
![操作系统原理实验报告](https://img.taocdn.com/s3/m/b080d1a803d276a20029bd64783e0912a2167c8d.png)
操作系统原理实验报告操作系统原理实验报告学院:信息与电子工程学院专业:计算机科学与技术班级:计算机130班学号:1130299000姓名:某某某浙江科技学院2014-2015学年第2学期实验1 进程管理一、实验目的1. 弄清进程和程序的区别,加深对进程概念的理解。
2. 了解并发进程的执行过程,进一步认识并发执行的实质。
3. 掌握解决进程互斥使用资源的方法。
二、实验内容1. 管道通信使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。
这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。
2. 软中断通信使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。
而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。
三、实验要求1. 根据实验内容编写C程序。
2. 上机调试程序。
3. 记录并分析程序运行结果。
四、程序说明和程序流程图五、程序代码六、程序运行结果及分析实验2 进程通信一、实验目的1. 了解进程间通信IPC的三种方式:消息队列、共享内存和信号量。
2. 掌握使用消息队列进行进程间通信的有关系统调用和编程方法。
操作系统原理读后感
![操作系统原理读后感](https://img.taocdn.com/s3/m/78701f52a200a6c30c22590102020740be1ecd37.png)
操作系统原理读后感After reading "Operating System Principles", I gained a deeper understanding of the core concepts and principles that govern the design and implementation of modern operating systems. 通过阅读《操作系统原理》,我对现代操作系统设计和实施的核心概念和原则有了更深入的了解。
I was particularly impressed by the comprehensive coverage of topics such as process management, memory management, and file systems, which are essential for anyone studying or working in the field of computer science.我对诸如进程管理、内存管理和文件系统等话题的全面覆盖印象深刻,这对于任何在计算机科学领域学习或工作的人来说都是至关重要的。
One aspect that stood out to me was the discussion on process synchronization and deadlock handling. 感到印象深刻的一点是对进程同步和死锁处理的讨论。
The book provided a clear and concise explanation of various solutions to prevent and resolve deadlock situations, such as deadlock detection and recovery. 该书提供了关于防止和解决死锁情况的各种解决方案的清晰简洁的解释,比如死锁检测和恢复。
《操作系统原理》报告
![《操作系统原理》报告](https://img.taocdn.com/s3/m/a8bf026768eae009581b6bd97f1922791688be85.png)
《操作系统原理》报告《操作系统原理》实验指导书班级:__信管***_____学号:__***__姓名:___***________信息管理与信息系统教研室目录实验题目二:模拟进程调度功能 (4)一、题目类型: (4)二、实验目的: (4)三、实验环境: (4)四、实验内容: (4)五、实验要求: (4)六、各功能简要说明: (5)七、程序清单: (5)八、程序中使用的数据结构及符号说明: (11)九、调试程序时出现问题说明及解决的方法: (11)实验题目五:模拟使用银行家算法判断系统的状态 (11)一、题目类型: (11)二、实验目的: (11)三、实验环境: (11)四、实验内容: (12)五、实验要求: (12)六、各功能简要说明: (13)七、程序清单: (13)(21)八、程序中使用的数据结构及符号说明: (21)九、程序调试时出现问题及解决的方法: (22)引言操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。
操作系统实验是操作系统课程的一个重要组成部分,通过试验环节的锻炼使同学们不仅能够对以前的所学过的基础知识加以巩固,同时能够通过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。
本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。
选做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。
实验题目二:模拟进程调度功能一、题目类型:必做题目。
二、实验目的:通过本实验,进一步掌握进程调度的功能和实现原理。
三、实验环境:1、硬件:PC机及其兼容机。
2、软件:Windows OS,Turbo C或C++、VC++、、Java等。
《操作系统原理》实验报告模板
![《操作系统原理》实验报告模板](https://img.taocdn.com/s3/m/c0494ac88bd63186bcebbc9f.png)
《操作系统原理》实验报告姓名: 杨迟宁学号: U201217418 班级: 软工2班时间:一、实验内容【本节分1,2,3条写出实验内容或要求,篇幅200-400字】设计一个虚拟存储区和内存工作区,并使用下列算法计算访问命中率。
(1)进先出的算法(FIFO)(2)最近最少使用的算法(LRU)(3)最佳淘汰算法(OPT)命中率=(1-页面失效次数)/页地址流长度二、实验原理【本节简要介绍每个实验内容的理论背景,篇幅400-600字】三、实验用到的主要函数或库【本节简要介绍每个实验涉及到的重要函数或库,篇幅200-400字】第一题:1.key_t ftok(char *pathname,char proj)返回文件名对应的键值(把消息队列当作文件处理)头文件:#include <sys/types.h> #include <sys/ipc.h>pathname:文件名proj:项目名(不为0即可)2.int msgget(key_t key,int msgflg)打开或创建消息队列头文件:#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> key:键值,由ftok获得msgflg:标志位(IPC_CREAT,如果不存在,创建新的消息队列IPC_EXCL,与IPC_CREAT一起使用,表示如果消息队列已存在,则返回错误IPC_NOWAIT,读写消息队列要求无法得到满足时,不阻塞)返回值:与键值key相对应的消息队列描述字,出错时返回-1**在以下两种情况下,将创建一个新的消息队列:a)如果没有与键值key相对应的消息队列,并且msgflg参数中包含了IPC_CREAT 标志位b)key参数为IPC_PRIVATE3.int msgsnd(int msqid,struct msgbuf *msgp,int msgsz,int msgflg)向消息队列中发送一条消息头文件:#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>msqid:消息队列id(消息队列的描述字)msgp:存放消息的结构(格式为:struct msgbuf{int mtype;/*消息类型> 0*/char mtex[1];/*消息数据,字符数组*/};)msgsz:消息数据长度msgflg:发送标志,有意义的msgflg标志为IPC_NOWAIT,指明消息队列中没有足够空间容纳要发送的消息时,msgsnd是否等待,0表示等待返回值:发生错误时返回-14.int msgrcv(int msqid,struct msgbuf *msgp,int msgsz,long msgtyp,int msgflg)从消息队列msqid中读取一个msgtyp类型的消息,并把消息存储在msgp指向的msgbuf结构体中。
《计算机操作系统原理》课外实验报告范文
![《计算机操作系统原理》课外实验报告范文](https://img.taocdn.com/s3/m/a1cb3dc9c9d376eeaeaad1f34693daef5ff71362.png)
设计思路和内容先用随机函数初始化PCB结构体,从而模拟3个进程的特性,然后voidProInert(PCB某p)/某优先数插入算法,将进程p按其优先级插入到就绪队列中相应位置某/、voidPrintPCB(PCB某q)//输出进程控制字信息、voidPrintLine(PCB某head)/某输出以p为队首的队列中所有PCB信息某/、voidPrintAll()//输出某一时刻进程队列信息、voidFirtIn()/某将就绪队列中进程调入运行队列某/等函数体,实现进程调度过程中最基本的功能。
在主函数中先调用voidCreatePCB()/某随机产生n个进程,并对各个进程随机赋予初值某/,从而创建了就绪队列,为进程调度做好准备。
而后voidSPO/某静态优先级抢占式调度策略某/、voidDP()/某动态优先级抢占式调度策略某/、voidRRO/某时间片轮转调度策略某/等来分别实现静态优先级抢占式调度策略、动态优先级抢占式调度策略和时间片轮转调度策略三种功能。
而最后的多级反馈调度策略实现因为与前三者有很大的不同,所以在同一cpp中我几乎是重新重构了所有的基本算法来帮助快速实现多级调度策略的。
首先,对于时间的复杂性,我在进程调度实验中忽略了运行队列(CPU处理器的模拟)处理程序是依据进程进入就绪队列的时间来调度的,所以1、静态优先级抢占式调度策略最基本的思想是循环将就绪队列中程序调入到运行队列中,再在运行队列中执行对进程的操作。
2、动态优先级抢占式调度策略的基本思想是循环的调度就绪队列中进程程序,然后再运行队列中对进程的优先级进行动态的操作,如每执行一次进程,它的优先级就相应的减2.,如果没有运行完,就将其重新按照优先级重新插入到就绪队列中,从而模拟出调度返回这一操作。
3、时间片轮转调度策略,我预先确定时间片的长度为2,在循环从就绪队列中调度进程时,在运行队列中将其执行2个时间点,若没有执行完,则重新插入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统原理》实验指导书
班级:__信管***_____
学号:__***__
姓名:___***________
信息管理与信息系统教研室
目录
实验题目二:模拟进程调度功能 (4)
一、题目类型: (4)
二、实验目的: (4)
三、实验环境: (4)
四、实验内容: (4)
五、实验要求: (4)
六、各功能简要说明: (5)
七、程序清单: (5)
八、程序中使用的数据结构及符号说明: (11)
九、调试程序时出现问题说明及解决的方法: (11)
实验题目五:模拟使用银行家算法判断系统的状态 (11)
一、题目类型: (11)
二、实验目的: (11)
三、实验环境: (11)
四、实验内容: (12)
五、实验要求: (12)
六、各功能简要说明: (13)
七、程序清单: (13)
(21)
八、程序中使用的数据结构及符号说明: (21)
九、程序调试时出现问题及解决的方法: (22)
引言
操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。
操作系统实验是操作系统课程的一个重要组成部分,通过试验环节的锻炼使同学们不仅能够对以前的所学过的基础知识加以巩固,同时能够通过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。
本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。
选做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。
实验题目二:模拟进程调度功能
一、题目类型:
必做题目。
二、实验目的:
通过本实验,进一步掌握进程调度的功能和实现原理。
三、实验环境:
1、硬件:PC机及其兼容机。
2、软件:Windows OS,Turbo C或C++、VC++、、Java等。
四、实验内容:
1、设计进程调度功能,至少模拟两种以上调度算法。
如:优先级调度算法、时间片调度
算法等。
2、进程调度功能作为一个函数scheduler,加入到实验题目一中。
3、进程调度程序从就绪队列中挑选进程,若队列为空,应显示“无就绪进程无法调度”
的提示信息。
4、若选上一个进程,以显示:进程名、状态、时间片、优先级等信息表示一个进程被执
行。
若运行完,应删除相应PCB。
五、实验要求:
1、在实验题目一中的主菜单中加入一个菜单项:6 调度,选择该菜单项后,系统进入
进程调度。
2、
六、各功能简要说明:
1、返回主菜单:当用户选择该项功能时,系统退出进程调度功能,返回到实验题目一中
的主菜单。
2、优先级调度:选择该功能选项时,系统将从就绪队列中选择优先级最高的进程,使该
进程处于执行状态(将进程PCB的内容显示在屏幕上,显示完成后,该进程结束,即撤销该进程的PCB)。
3、时间片调度:每选择一次该功能,将就绪队列中所有进程的内容显示在屏幕上,并将
每个执行进程的执行时间减去一个时间片,若某进程的剩余时间小于等于0,则表明该进程运行结束,撤销该进程的PCB。
七、程序清单:
1、程序代码
2、程序运行图:
八、程序中使用的数据结构及符号说明:
1)结构体PCB:
模拟一个进程,包括进程的名称name、优先级priority和运行时间runtime。
2)变量p:
代表进程的数量,随着进程的撤销改变
其余的请看程序注释。
九、调试程序时出现问题说明及解决的方法:
1、再时间片调度算法逻辑上还有些模糊:百度时间片调度算法之后,仔细阅读了网上的讲解,理解了算法的逻辑。
2、调试的时候出错:基本上是符号的问题,细心点根据错误提示就能解决。
实验题目五:模拟使用银行家算法判断系统的状态
一、题目类型:
选作题目
二、实验目的:
银行家算法是操作系统中避免死锁的算法,本实验通过对银行家算法的模拟,加强学生对该算法的理解与应用。
三、实验环境:
1、硬件:PC机及其兼容机。
2、软件:Windows OS,Turbo C或C++、VC++、、Java等。
四、实验内容:
1、建立T0时刻的资源分配表,初始化。
2、设计银行家算法,输入一个进程的资源请求,按银行家算法步骤进行检查。
3、设计安全性算法,检查某时系统是否安全。
4、设计显示函数,显示资源分配表,安全分配序列。
五、实验要求:
1、T0时刻的资源分配表由进程数组,Max,Allocation,Need,Available 5个数组构
成。
2、系统总体结构。
其中资源申请模块功能描述如下:
六、各功能简要说明:
1、资源申请:读入一个进程申请,按银行家算法,安全算法进行试分配。
2、显示资源分配表:分屏显示资源分配表某时刻状态。
3、退出:退出系统
七、程序清单:
1、程序代码:
2、运行截图:
八、程序中使用的数据结构及符号说明:
1)可利用资源向量Available
是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。
如果Available[j]=K,则表示系统中现有Rj类资源K个。
2)最大需求矩阵Max
这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。
如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。
3)分配矩阵Allocation
这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。
如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。
4)需求矩阵Need。
这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。
如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。
Need[i,j]=Max[i,j]-Allocation[i,j]
其他的结构变量见代码注释。
九、程序调试时出现问题及解决的方法:
1、在输出当前的分配方案时很难对齐
解决办法:暂时没有很好的解决,在输入的资源长度不同时,不能保证对齐。