操作系统实验报告

合集下载

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C 和 C++。

实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。

通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。

2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。

通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。

在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。

(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。

通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。

2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。

在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。

(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。

操作系统安全实验1实验报告

操作系统安全实验1实验报告

操作系统安全实验1实验报告一、实验目的本次操作系统安全实验的主要目的是让我们深入了解操作系统的安全机制,通过实际操作和观察,掌握一些常见的操作系统安全配置和防护方法,提高对操作系统安全的认识和应对能力。

二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 2004),实验设备为个人计算机。

三、实验内容与步骤(一)Windows 10 操作系统安全配置1、账户管理创建新用户账户,并设置不同的权限级别,如管理员、标准用户等。

更改账户密码策略,包括密码长度、复杂性要求、密码有效期等。

启用账户锁定策略,设置锁定阈值和锁定时间,以防止暴力破解密码。

2、防火墙配置打开 Windows 防火墙,并设置入站和出站规则。

允许或阻止特定的应用程序通过防火墙进行网络通信。

3、系统更新与补丁管理检查系统更新,安装最新的 Windows 安全补丁和功能更新。

配置自动更新选项,确保系统能够及时获取并安装更新。

4、恶意软件防护安装并启用 Windows Defender 防病毒软件。

进行全盘扫描,检测和清除可能存在的恶意软件。

(二)Linux(Ubuntu 2004)操作系统安全配置1、用户和组管理创建新用户和组,并设置相应的权限和归属。

修改用户密码策略,如密码强度要求等。

2、文件系统权限管理了解文件和目录的权限设置,如读、写、执行权限。

设置特定文件和目录的权限,限制普通用户的访问。

3、 SSH 服务安全配置安装和配置 SSH 服务。

更改 SSH 服务的默认端口号,增强安全性。

禁止 root 用户通过 SSH 登录。

4、防火墙配置(UFW)启用 UFW 防火墙。

添加允许或拒绝的规则,控制网络访问。

四、实验结果与分析(一)Windows 10 操作系统1、账户管理成功创建了具有不同权限的用户账户,并能够根据需求灵活调整权限设置。

严格的密码策略有效地增加了密码的安全性,减少了被破解的风险。

账户锁定策略在一定程度上能够阻止暴力破解攻击。

操作系统实验报告

操作系统实验报告

篇一:操作系统实验报告完全版《计算机操作系统》实验报告班级:姓名:学号:实验一进程控制与描述一、实验目的通过对windows 2000编程,进一步熟悉操作系统的基本概念,较好地理解windows 2000的结构。

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

二、实验环境硬件环境:计算机一台,局域网环境;软件环境:windows 2000 professional、visual c++6.0企业版。

三、实验内容和步骤第一部分:程序1-1windows 2000 的gui 应用程序windows 2000 professional下的gui应用程序,使用visual c++编译器创建一个gui应用程序,代码中包括了winmain()方法,该方法gui类型的应用程序的标准入口点。

:: messagebox( null, “hello, windows 2000” , “greetings”,mb_ok) ;/* hinstance */ , /* hprevinstance */, /* lpcmdline */, /* ncmdshow */ )return(0) ; }在程序1-1的gui应用程序中,首先需要windows.h头文件,以便获得传送给winmain() 和messagebox() api函数的数据类型定义。

接着的pragma指令指示编译器/连接器找到user32.lib库文件并将其与产生的exe文件连接起来。

这样就可以运行简单的命令行命令cl msgbox.cpp来创建这一应用程序,如果没有pragma指令,则messagebox() api函数就成为未定义的了。

这一指令是visual studio c++ 编译器特有的。

接下来是winmain() 方法。

其中有四个由实际的低级入口点传递来的参数。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

《操作系统》课内实验报告

《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。

实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。

三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。

在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。

2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。

在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。

3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。

在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。

4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。

在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。

四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。

(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。

(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

系统业务操作实验报告(3篇)

系统业务操作实验报告(3篇)

第1篇一、实验目的1. 熟悉系统业务操作流程;2. 掌握系统业务操作的基本方法;3. 提高实际操作能力,为今后的工作打下基础。

二、实验环境1. 操作系统:Windows 102. 浏览器:Chrome3. 实验系统:XX企业资源计划系统(ERP)三、实验内容1. 系统登录与退出2. 基础信息管理3. 财务管理4. 供应链管理5. 人力资源管理6. 实验总结与反思四、实验步骤1. 系统登录与退出(1)打开浏览器,输入实验系统网址,进入登录页面。

(2)输入用户名、密码,点击“登录”按钮。

(3)登录成功后,系统进入主界面。

(4)点击右上角“退出”按钮,退出系统。

2. 基础信息管理(1)点击主界面左侧菜单中的“基础信息管理”模块。

(2)查看基础信息列表,包括部门、岗位、人员等信息。

(3)新增部门信息:点击“新增”按钮,填写部门名称、负责人等基本信息,保存。

(4)修改部门信息:选中要修改的部门,点击“修改”按钮,修改相关信息,保存。

(5)删除部门信息:选中要删除的部门,点击“删除”按钮,确认删除。

3. 财务管理(1)点击主界面左侧菜单中的“财务管理”模块。

(2)查看财务报表,包括资产负债表、利润表、现金流量表等。

(3)新增报销单:点击“新增”按钮,填写报销单信息,提交审批。

(4)查看报销单:查看已提交的报销单,包括报销金额、报销日期、审批状态等信息。

(5)审批报销单:对报销单进行审批,同意或拒绝报销。

4. 供应链管理(1)点击主界面左侧菜单中的“供应链管理”模块。

(2)查看采购订单列表,包括采购订单号、供应商、采购金额等信息。

(3)新增采购订单:点击“新增”按钮,填写采购订单信息,提交审批。

(4)查看采购订单:查看已提交的采购订单,包括采购订单号、供应商、采购金额等信息。

(5)审批采购订单:对采购订单进行审批,同意或拒绝采购。

5. 人力资源管理(1)点击主界面左侧菜单中的“人力资源管理”模块。

(2)查看员工信息列表,包括姓名、部门、岗位、入职日期等信息。

安装操作系统的实验报告

一、实验目的1. 掌握操作系统安装的基本方法。

2. 熟悉操作系统安装过程中的注意事项。

3. 提高动手操作能力,为以后使用操作系统打下基础。

二、实验环境1. 硬件环境:- CPU:Intel Core i5- 内存:8GB- 硬盘:500GB- 显卡:NVIDIA GeForce GTX 1050- 主板:华硕PRIME H310M-E2. 软件环境:- 操作系统:Windows 10- 安装工具:Windows 10安装镜像三、实验步骤1. 准备安装镜像- 将Windows 10安装镜像烧录到U盘或光盘上。

2. 设置BIOS启动顺序- 进入主板BIOS设置界面,将U盘或光盘设置为第一启动设备。

3. 启动计算机- 重启计算机,从U盘或光盘启动。

4. 开始安装操作系统- 进入Windows 10安装界面,点击“现在安装”按钮。

5. 选择安装类型- 选择“自定义:仅安装Windows(高级)”选项。

6. 选择安装磁盘- 在“驱动器选项”下,选择要安装Windows的磁盘分区,点击“新建”按钮创建新的分区,然后将所有磁盘空间分配给新分区。

7. 格式化磁盘- 在弹出的窗口中,选择“将磁盘格式化为NTFS文件系统”,点击“下一步”按钮。

8. 安装操作系统- 等待操作系统安装完成,期间会自动重启计算机。

9. 设置账户信息- 在安装完成后,根据提示设置用户名、密码等信息。

10. 安装驱动程序- 根据需要安装显卡、网卡等驱动程序。

11. 安装常用软件- 安装Office、QQ、浏览器等常用软件。

四、实验结果与分析1. 实验结果- 成功安装Windows 10操作系统,并完成了基本配置。

2. 实验分析- 本次实验中,按照步骤顺利完成操作系统安装,但在安装过程中遇到了以下问题:(1)在设置BIOS启动顺序时,需要根据主板型号进行设置,否则无法从U 盘或光盘启动。

(2)在格式化磁盘时,需要注意选择合适的文件系统,以免影响系统性能。

办公系统应用实验报告(3篇)

第1篇一、实验目的1. 了解办公系统应用的基本功能与操作。

2. 熟练掌握办公系统软件的使用方法,提高工作效率。

3. 通过实验,培养学生动手实践能力,为今后工作奠定基础。

二、实验环境1. 操作系统:Windows 102. 办公系统软件:Microsoft Office 20163. 实验设备:个人电脑三、实验内容1. Word文档编辑2. Excel表格制作3. PowerPoint演示文稿制作4. Outlook邮件管理四、实验步骤及结果1. Word文档编辑(1)步骤:打开Word软件,创建一个新的文档,输入文字内容,进行格式设置,如字体、字号、段落等。

(2)结果:成功创建一个包含文字、图片、表格的Word文档。

2. Excel表格制作(1)步骤:打开Excel软件,创建一个新的工作簿,输入数据,设置单元格格式,如数字、日期、文本等,制作图表。

(2)结果:成功创建一个包含数据、图表的Excel表格。

3. PowerPoint演示文稿制作(1)步骤:打开PowerPoint软件,创建一个新的演示文稿,添加幻灯片,输入文字内容,设置动画、切换效果,插入图片、表格等。

(2)结果:成功制作一个包含文字、图片、动画的PowerPoint演示文稿。

4. Outlook邮件管理(1)步骤:打开Outlook软件,创建一个新的邮件,填写收件人、主题、正文,发送邮件。

(2)结果:成功发送一封邮件。

五、实验总结通过本次实验,我掌握了以下内容:1. Word、Excel、PowerPoint、Outlook等办公系统软件的基本操作。

2. 学会了如何利用这些软件提高工作效率。

3. 培养了动手实践能力,为今后工作奠定了基础。

在实验过程中,我发现以下几点:1. 在使用Word、Excel、PowerPoint等软件时,要熟悉各个功能键,提高操作效率。

2. 在制作表格、图表、演示文稿时,要注重数据的准确性和美观性。

3. 在使用Outlook进行邮件管理时,要注意邮件的格式和发送时间。

操作系统原理实验报告

操作系统原理实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理和控制计算机的硬件和软件资源,为用户和应用程序提供一个方便、高效、稳定的运行环境。

本次实验的目的在于通过实际操作和观察,深入理解操作系统的核心原理和关键机制,包括进程管理、内存管理、文件系统管理、设备管理等方面,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C++。

三、实验内容及步骤(一)进程管理实验1、进程创建与终止编写程序,使用系统调用创建一个新的进程,并在新进程中执行特定的任务,如打印一段文本。

观察新进程的创建过程和资源分配情况。

编写程序,实现父进程等待子进程终止,并获取子进程的退出状态。

2、进程调度编写程序,模拟多个进程的并发执行,设置不同的优先级和时间片。

观察进程的调度顺序和执行时间,分析调度算法的效果。

(二)内存管理实验1、内存分配与释放编写程序,使用动态内存分配函数(如 malloc、new 等)申请一定大小的内存空间,并进行读写操作。

观察内存的分配和释放过程,检查是否存在内存泄漏。

2、内存分页与分段了解操作系统的内存分页和分段机制。

编写程序,模拟内存分页和分段的过程,展示地址转换和页面置换算法的效果。

(三)文件系统管理实验1、文件创建与读写编写程序,创建一个新文件,并向文件中写入一定的数据。

读取文件中的数据,并进行验证。

2、文件目录操作编写程序,实现对文件目录的创建、删除、遍历等操作。

观察文件目录的结构和变化。

(四)设备管理实验1、设备驱动程序了解设备驱动程序的基本概念和工作原理。

编写一个简单的设备驱动程序,实现对特定设备的控制和数据传输。

2、设备中断处理模拟设备中断的产生和处理过程。

编写中断处理程序,处理设备中断事件。

四、实验结果与分析(一)进程管理实验结果与分析1、进程创建与终止成功创建了新进程,并在新进程中打印出指定的文本。

《操作系统》课程实验报告

《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。

二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code3、编程语言:C/C++三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。

同时,实现进程的正常终止和异常终止,并分析其对系统的影响。

2、进程同步与互斥使用信号量、互斥锁等机制实现进程之间的同步与互斥。

通过模拟多个进程对共享资源的访问,观察并解决可能出现的竞争条件和死锁问题。

(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法和最坏适应算法。

观察在不同的内存请求序列下,内存的分配和回收情况,并分析算法的性能和优缺点。

2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小、页表结构等参数,观察页面的换入换出过程,以及对系统性能的影响。

(三)文件系统实验1、文件操作实现文件的创建、打开、读取、写入、关闭等基本操作。

观察文件在磁盘上的存储方式和文件系统的目录结构。

2、文件系统性能优化研究文件系统的缓存机制、磁盘调度算法等,通过对大量文件的读写操作,评估不同优化策略对文件系统性能的提升效果。

四、实验步骤(一)进程管理实验步骤1、进程创建与终止(1)使用 C/C++语言编写程序,调用系统函数创建新进程。

(2)在子进程中执行特定的任务,父进程等待子进程结束,并获取子进程的返回值。

(3)通过设置异常情况,模拟子进程的异常终止,观察父进程的处理方式。

2、进程同步与互斥(1)定义共享资源和相关的信号量或互斥锁。

(2)创建多个进程,模拟对共享资源的并发访问。

(3)在访问共享资源的关键代码段使用同步机制,确保进程之间的正确协作。

(4)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告实验题目:进程的创建与撤销指导老师:杜俊俐专业班级:xx姓名:xx学号:xx中原工学院•软件学院实验一:进程创建与撤消一、实验目的1、加深对进程概念的理解和进程创建与撤消算法;2、进一步认识并发执行的实质。

二、实验内容本实验完成如下三个层次的任务:(1)系统级—以普通用户身份认识windows的进程管理。

通过windows的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。

(2)语言级—以普通程序员身份认识高级语言Java的进程创建与撤销工具。

(3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。

三、实验步骤1、windows的进程管理(1)按ctrl+alt+delete键,弹出windows任务管理器窗口(2)选择相应操作序号,可以创建一个新的进程(3)在创建完一个新的进程后,可以显示出所有已创建进程的详细信息(4)选择相应操作序号,可以通过输入pcbId或pcbGrade来撤销一个进程2、进程创建与撤销工具(1)进程的创建Process p=Runtime.getRuntime().exec("notepad");(2)进程的撤销p.destroy();3、进程创建与撤销的模拟实现(1)总体设计:①数据结构定义:结构体PCB:进程编号,进程名称,进程优先级和进程创建时间,队列按进程创建时间排序。

PCB空间就绪队列指针空队列指针②函数进程创建:从PCB空间申请一个空PCB,填入进程参数,插入就绪队列;进程终止:将指定的就绪进程移出就绪队列,插入空队列;就绪队列输出:输出就绪队列中的进程信息,以便观察创建或撤消活动的结果;主函数:调用创建函数、调用终止函数、输出就绪队列;③主界面设计:进程创建、进程撤销、退出程序图1 操作主界面④功能测试:从显示出的就绪队列状态,查看操作的正确与否。

(2)详细设计:①数据结构定义:结构体PCB:表1 PCB结构体表PCB空间:是一个能存放十个PCB对象的数组就绪队列指针:定义一整型变量初始值为零空队列指针:定义一整型变量初始值为零,当有进程创建时,加入。

②函数设计进程创建示例图图2 创建新进程创建多个进程后,可以查看到所有已创建的进程的详细信息,如图。

图3 查看所有进程用户可以根据pcbId或者pcbGrade来撤销某一个进程,并在撤销成功后,可以看到撤销后剩余的所有进程信息,如图。

图4 根据pcbId撤销某个进程图5 根据pcbGrade撤销某个进程在操作主界面中选择操作3时,可以退出该程序,如图。

图6 退出程序四、实验总结该程序的主要任务为对windows的进程管理进行相应的模拟和认识。

通过对于进行的创建,切换和撤销,已完成我们对于windows进行的初步了解和认识。

在编制程序的过程中,我确实遇见了不少的问题,发现其实自己并不强。

但是当一个个问题的出现,自己努力并最后解决的时候,心里却悠然产生了一种非常舒服和惬意的感念。

因为是自己努力得来的东西,所以无论怎么样都会看着非常开心,非常激动。

通过此次试验,我更加了解了关于进程方面的认识。

我今后会更加努力,努力学好自己的专业水平,为祖国为人民创造更好的计算机环境!五、附录//实体类#include <stdio.h>#include <iostream.h>#include <malloc.h>#define SIZE 10typedef char QElemType;typedef int IP;typedef int GRADE;typedef struct QNode{ //创建PCBQElemType name;IP id;QElemType time;GRADE grade;struct QNode *next;}PCB,*PCBLink;typedef struct {PCBLink front;PCBLink rear;}LinkQueue;void InitPCB(QNode PCB){ //PCB初始化PCB.grade=0;PCB.id=0;='*';PCB.next=NULL;PCB.time='*';}void InitReadyQueue(LinkQueue &Q){ //初始化就绪队列Q.front=Q.rear=(PCBLink) malloc(sizeof(QNode));Q.front->next=NULL;}void EnQueue(LinkQueue &Q, QNode PCB){ //入队PCBLink p = (PCBLink) malloc(sizeof(QNode));p->id=PCB.id;p->name=;p->grade=PCB.grade;p->time=PCB.time;p->next=PCB.next;Q.rear->next=p;Q.rear=p;}void DeNullQueue(LinkQueue &Q){ //空队列出队if(Q.front==Q.rear)cout<<"空队列空间已满,不能分配空间!"<<endl;else{Q.front->next=Q.front->next->next;if(Q.rear==Q.front->next)Q.rear=Q.front;}}void DeReadyQueue(LinkQueue &Q, QNode &PCB, int b){ //选择指定元素从就绪队列出队if(Q.front==Q.rear)cout<<"队列是空的,不能读出数据!"<<endl;else{PCBLink p = Q.front;while(p->next!=Q.rear->next){switch(b){case 1: if(p->next->id==PCB.id){ = p->next->name;PCB.id = p->next->id;PCB.time = p->next->time;PCB.grade = p->next->grade;p->next = p->next->next;if(Q.front==p){Q.front->next = p->next;if(Q.rear==Q.front)Q.rear=Q.front;}}elsep=p->next;break;case 2: if(p->next->grade==PCB.grade){ = p->next->name;PCB.id = p->next->id;PCB.time = p->next->time;PCB.grade = p->next->grade;p->next = p->next->next;if(Q.front==p){Q.front->next = p->next;if(Q.rear==Q.front)Q.rear=Q.front;}}elsep=p->next;break;}}cout<<endl<<"您终止的PCBName:"<<<<";PCBID:"<<PCB.id<<";PCB优先级:"<<PCB.grade<<";PCB创建时间:"<<PCB.time<<endl;}}void InitNullQueue(LinkQueue &Q){ //初始化PCB空队列Q.front=Q.rear=(PCBLink) malloc(sizeof(QNode));Q.front->next=NULL;for(int i=0;i<SIZE;i++){QNode PCB;InitPCB(PCB);EnQueue(Q, PCB);}}void CreatePCB(LinkQueue &NQ, LinkQueue &RQ,QNode PCB){ //创建原语DeNullQueue(NQ);EnQueue(RQ,PCB);}void DeletePCB(LinkQueue &NQ, LinkQueue &RQ,QNode PCB, int b){ //终止原语DeReadyQueue(RQ,PCB,b);InitPCB(PCB);EnQueue(NQ,PCB);}void PCBShow(LinkQueue RQ){ //读就绪队列if(RQ.front==RQ.rear){cout<<"就绪队列无数据!"<<endl;}else{cout<<endl<<endl;cout<<"就绪队列PCB列表"<<endl;cout<<"PCBName "<<"PCBID "<<"PCB优先级"<<endl;PCBLink q = RQ.front->next;while(q!=RQ.rear->next){cout<<" "<<q->name<<" "<<q->id<<" "<<q->grade<<endl;q=q->next;}}}void Create(LinkQueue &NQ, LinkQueue &RQ, QNode PCB){ //创建原语界面cout<<"==========================================="<<endl;cout<<endl;cout<<" 操作系统试验1——创建进程"<<endl;cout<<"--------------------------------------------------------------------"<<endl;cout<<"请您输入您的PCB数据:"<<endl;cout<<"PCBName:";cin>>;cout<<"PCBID:";cin>>PCB.id;cout<<"PCB优先级:";cin>>PCB.grade;cout<<"PCB创建时间:";cin>>PCB.time;CreatePCB(NQ,RQ,PCB); //创建原语PCBShow(RQ); //读就绪队列}void Delete(LinkQueue &NQ, LinkQueue &RQ, QNode PCB){ //终止原语界面InitPCB(PCB);int b=0;cout<<"========================================="<<endl;cout<<endl;cout<<" 操作系统试验1——终止进程"<<endl;cout<<"--------------------------------------------------------------------"<<endl;cout<<"请您输入终止依据(1.PCBID 2.PCB优先级):"<<endl;cin>>b;if(b==1){cout<<"请您输入PCBID:";cin>>PCB.id;}else{cout<<"请您输入PCB优先级:";cin>>PCB.grade;}DeletePCB(NQ,RQ,PCB,b); //终止原语PCBShow(RQ); //读就绪队列}void main(){LinkQueue NQ,RQ; //空队列、就绪队列InitNullQueue(NQ); //初始化空队列InitReadyQueue(RQ); //初始化就绪队列QNode PCB;InitPCB(PCB);int n;cout<<"==========================================="<<endl;cout<<endl;cout<<" 操作系统试验一"<<endl;cout<<endl;cout<<" 1.创建进程"<<endl;cout<<" 2.终止进程"<<endl;cout<<" 0.退出"<<endl;cout<<endl;cout<<"============================================="<<endl;cout<<endl;cout<<"请输入您要进行的操作序号:";cin>>n;while (n!=0){switch(n){case 1: Create(NQ,RQ,PCB); break; //创建原语界面case 2: Delete(NQ,RQ,PCB); break; //终止原语界面}cout<<endl;}cout<<endl;}。

相关文档
最新文档