2013广工操作系统实验全部报告
- 格式:doc
- 大小:679.50 KB
- 文档页数:30
操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 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实验报告一、实验目的本次操作系统安全实验的主要目的是让我们深入了解操作系统的安全机制,通过实际操作和观察,掌握一些常见的操作系统安全配置和防护方法,提高对操作系统安全的认识和应对能力。
二、实验环境本次实验使用的操作系统为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、账户管理成功创建了具有不同权限的用户账户,并能够根据需求灵活调整权限设置。
严格的密码策略有效地增加了密码的安全性,减少了被破解的风险。
账户锁定策略在一定程度上能够阻止暴力破解攻击。
五邑大学实验报告操作系统课程实验报告2013~2014年度第1学期院系:计算机学院学号: 11080101姓名:宋蓓蕾任课教师:白明成绩评定:实验一:银行家算法完成日期:2013年12月20日1、实验目的银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。
加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。
2、实验内容(1) 设计进程对各类资源最大申请表示及初值确定。
(2) 设定系统提供资源初始状况。
(3) 设定每次某个进程对各类资源的申请表示。
(4) 编制程序,依据银行家算法,决定其申请是否得到满足。
3、算法设计(全部代码)#include <STRING.H>#include <stdio.h>#include <stdlib.h>#include <CONIO.H> /*用到了getch()*/#define M 5 /*进程数*/#define N 3 /*资源数*/#define FALSE 0#define TRUE 1/*M个进程对N类资源最大资源需求量*/int MAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*系统可用资源数*/int AVAILABLE[N]={10,5,7};/*M个进程对N类资源最大资源需求量*/int ALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}}; /*M个进程已经得到N类资源的资源量*/int NEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*M个进程还需要N类资源的资源量*/int Request[N]={0,0,0};void main(){int i=0,j=0;char flag;void showdata();void changdata(int);void rstordata(int);int chkerr(int);showdata();enter:{printf("请输入需申请资源的进程号(从0到");printf("%d",M-1);printf("):");scanf("%d",&i);}if(i<0||i>=M){printf("输入的进程号不存在,重新输入!\n");goto enter;}err:{printf("请输入进程");printf("%d",i);printf("申请的资源数\n");printf("类别: A B C\n");printf(" ");for (j=0;j<N;j++){scanf("%d",&Request[j]);if(Request[j]>NEED[i][j]){printf("%d",i);printf("号进程");printf("申请的资源数> 进程");printf("%d",i);printf("还需要");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");goto err;}else{if(Request[j]>AVAILABLE[j]){printf("进程");printf("%d",i);printf("申请的资源数大于系统可用");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");goto err;}}}}changdata(i);if(chkerr(i)){rstordata(i);showdata();}elseshowdata();printf("\n");printf("按'y'或'Y'键继续,否则退出\n");flag=getch();if (flag=='y'||flag=='Y'){goto enter;}else{exit(0);}}/*显示数组*/void showdata(){int i,j;printf("系统可用资源向量:\n");printf("***Available***\n");printf("资源类别: A B C\n");printf("资源数目:");for (j=0;j<N;j++){printf("%d ",AVAILABLE[j]);}printf("\n");printf("\n");printf("各进程还需要的资源量:\n"); printf("******Need******\n");printf("资源类别: A B C\n");for (i=0;i<M;i++){printf(" ");printf("%d",i);printf("号进程:");for (j=0;j<N;j++){printf(" %d ",NEED[i][j]);}printf("\n");}printf("\n");printf("各进程已经得到的资源量: \n"); printf("***Allocation***\n");printf("资源类别: A B C\n");for (i=0;i<M;i++){printf(" ");printf("%d",i);printf("号进程:");/*printf(":\n");*/for (j=0;j<N;j++){printf(" %d ",ALLOCATION[i][j]);}printf("\n");}printf("\n");}/*系统对进程请求响应,资源向量改变*/void changdata(int k){int j;for (j=0;j<N;j++){AVAILABLE[j]=AVAILABLE[j]-Request[j]; ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j]; NEED[k][j]=NEED[k][j]-Request[j];}}/*资源向量改变*/void rstordata(int k){int j;for (j=0;j<N;j++){AVAILABLE[j]=AVAILABLE[j]+Request[j]; ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j]; NEED[k][j]=NEED[k][j]+Request[j];}}/*安全性检查函数*/int chkerr(int s){int WORK,FINISH[M],temp[M];int i,j,k=0;for(i=0;i<M;i++)FINISH[i]=FALSE;for(j=0;j<N;j++){WORK=AVAILABLE[j];i=s;while(i<M){if (FINISH[i]==FALSE&&NEED[i][j]<=WORK){WORK=WORK+ALLOCATION[i][j];FINISH[i]=TRUE;temp[k]=i;k++;i=0;}else{i++;}}for(i=0;i<M;i++)if(FINISH[i]==FALSE){printf("\n");printf("系统不安全! 本次资源申请不成功!\n");printf("\n");return 1;}}printf("\n");printf("经安全性检查,系统安全,本次分配成功。
操作系统安全实验报告操作系统是计算机必不可少的重要组成部分,它控制和管理计算机的硬件和软件资源。
安全是操作系统设计中不可忽视的一个方面,因为操作系统安全的缺陷将会导致计算机系统受到攻击甚至被控制。
本实验将演示一些常见的操作系统安全问题,并且提供一些实现技术,以保持计算机系统的安全。
一、实验目的1.了解和应用操作系统的安全机制。
2.通过操作系统安全漏洞的扫描和分析,掌握安全攻防的方法和技巧。
3.通过模拟实验操作,了解如何保护计算机系统不受恶意攻击。
二、实验环境操作系统:Windows 7工具软件:Metasploit、Nessus、Snort、Wireshark等三、实验内容操作系统的安全问题是计算机系统的基础性问题,其设计安全机制的目的是保证计算机系统的稳定、安全和可靠。
安全机制包括身份认证、存取控制、加密技术、密钥管理等。
在一个计算机系统中,操作系统是最重要的安全防护措施。
其机制包括:①登录身份验证:通过输入用户名和密码,确认用户的身份,确保只有认证的用户才能进入系统。
②文件访问控制:用户只能访问其拥有权限的文件和文件夹。
③口令管理:向用户提示更改用户口令的时间,管理员更改口令时需要重复输入。
④安全日志:记录重要的系统事件,为检测和防止安全问题提供依据。
⑤病毒和恶意程序的删除:安装杀毒软件,扫描系统并清除感染的病毒和恶意程序。
2. 安全漏洞扫描和分析安全漏洞扫描是通过对目标系统进行全面扫描,识别和确认目标系统存在的漏洞以及攻击者可能利用漏洞侵入的尝试。
常用的安全漏洞扫描工具有Nessus、OpenVAS等。
Nessus是一种广泛使用的开源安全工具,可以对网络上已知的漏洞进行扫描和检测,因此是安全人员发现网络系统的漏洞的重要工具之一。
在扫描中使用Nessus即可扫描目标主机的各种漏洞并给出报告,方便管理用户即使不是信息安全专业人士,也可以轻松检查主机系统中的安全漏洞。
3. 安全攻防技术安全攻防技术是一项基础的信息安全技术,其目的是定位和检测系统中的漏洞,找出安全防御的缺陷,以及针对潜在的安全问题进行定制化和有效的反应方式。
操作系统实训报告
目录
1. 操作系统实训报告
1.1 项目简介
1.1.1 背景介绍
1.1.2 项目目的
1.2 实训内容
1.2.1 实验环境搭建
1.2.2 实验步骤
1.3 实验结果分析
1.3.1 数据收集
1.3.2 数据处理
1.4 总结与展望
1.1 项目简介
1.1.1 背景介绍
在这部分,需要对操作系统实训项目的背景进行介绍,说明为什么需要进行这个实训项目,以及相关背景信息。
1.1.2 项目目的
在这部分,需要明确操作系统实训项目的目的和意义,说明完成这个实训项目的预期效果和目标。
1.2 实训内容
1.2.1 实验环境搭建
在这部分,详细介绍实训所需的环境搭建步骤,包括软件安装、配置要求等。
1.2.2 实验步骤
在这部分,具体描述操作系统实训项目的实验步骤,包括具体操作流程和注意事项。
1.3 实验结果分析
1.3.1 数据收集
在这部分,介绍如何进行实验数据的收集,包括采集数据的方法和工具。
1.3.2 数据处理
在这部分,说明对实验数据进行处理的方法和过程,包括数据清洗、分析等内容。
1.4 总结与展望
在这部分,对整个操作系统实训项目进行总结,总结实验的收获和问题,同时展望未来的发展方向和可能的改进措施。
《操作系统》实验报告实验序号:01 实验项目名称:操作系统环境学号1107xxx 姓名xxx 专业、班级软件工程1103 实验地点计—502 指导教师徐冬时间2013.9.23 实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;由此,进一步熟悉Windows操作系统的应用环境。
工具/准备工作在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行Windows 操作系统的计算机。
实验内容与步骤1. 计算机管理2. 事件查看器3. 性能监视4. 服务5. 数据库 (ODBC)为了帮助用户管理和监视系统,Windows提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
如图2所示。
图2 基于虚拟机的操作系统计算环境管理步骤1:登录进入Windows。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) Internet 信息服务;管理IIS,Internet 和Intranet站点的WEB服务器。
2) Server Extensions 管理器;Server Extensions管理器。
3)计算机管理;管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4)性能;显示系统性能图表以及配置数据日志和警报。
5)本地安全策略;查看和修改本地安全策略,如用户权限和审核策略。
6)事件查看器;显示来自于Windows和其他程序的监视与排错消息。
7)组件服务;配置和管理COM+应用程序。
1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。
二、实验环境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、进程管理a.实现进程创建、撤销、阻塞、唤醒等基本操作。
b.设计一个简单的进程调度算法,如轮转法或优先级调度法。
c.实现进程间的通信机制,如共享内存或消息队列。
2、线程调度a.实现线程的创建、撤销和调度。
b.实现一个简单的线程调度算法,如协同多任务(cooperative multitasking)。
3、内存管理a.设计一个简单的分页内存管理系统。
b.实现内存的分配和回收。
c.实现一个简单的内存保护机制。
4、文件系统a.设计一个简单的文件系统,包括文件的创建、读取、写入和删除。
b.实现文件的存储和检索。
c.实现文件的备份和恢复。
三、实验步骤1、进程管理a.首先,设计一个进程类,包含进程的基本属性(如进程ID、状态、优先级等)和操作方法(如创建、撤销、阻塞、唤醒等)。
b.然后,实现一个进程调度器,根据不同的调度算法对进程进行调度。
可以使用模拟的方法,不需要真实的硬件环境。
c.最后,实现进程间的通信机制,可以通过模拟共享内存或消息队列来实现。
2、线程调度a.首先,设计一个线程类,包含线程的基本属性(如线程ID、状态等)和操作方法(如创建、撤销等)。
b.然后,实现一个线程调度器,根据不同的调度算法对线程进行调度。
同样可以使用模拟的方法。
3、内存管理a.首先,设计一个内存页框类,包含页框的基本属性(如页框号、状态等)和操作方法(如分配、回收等)。
b.然后,实现一个内存管理器,根据不同的内存保护机制对内存进行保护。
可以使用模拟的方法。
4、文件系统a.首先,设计一个文件类,包含文件的基本属性(如文件名、大小等)和操作方法(如创建、读取、写入、删除等)。
b.然后,实现一个文件系统管理器,包括文件的存储和检索功能。
操作系统设备管理实验报告1.计算机操作系统计算机操作系统(operating system缩写作OS)是管理计算机硬件与软件资源的计算机的系统程序, 同时也是计算机系统的内核与基石。
操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。
操作系统也提供一个让用户与系统交互的操作界面。
操作系统在计算机系统中的位置1)操作系统位于底层硬件与用户之间, 是两者沟通的桥梁。
用户可以通过操作系统的用户界面, 输入命令。
操作系统则对命令进行解释, 驱动硬件设备, 实现用户要求。
•2)以现代标准而言, 一个标准PC的操作系统应该提供以下的功能: •进程管理: 计算机中的应用程序都是以进程单位运行的, 操作系统调度多个进程到CPU执行的过程称为进程管理。
•内存管理: 操作系统管理计算机内存, 控制着内存的分配和回收, 管理者内存与外存的信息交换, 以及配合硬件做地址转换。
•文件系统: 管理硬盘的数据, 可将数据已目录或者文件的形式存储。
•网络通信:管理与计算机外部的网络通信, 例如通过浏览器浏览网页, 打印文件等。
安全机制: 控制一些安全机制, 包含计算机非法入侵和一些合法校验。
用户界面: 图形界面。
驱动程序:与硬件交互的计算机软件, 操作系统通过驱动程序与硬件交互, 例如:USB驱动。
2.常见的操作系统1)Windowswindows10微软创始人比尔.盖茨Windows操作系统是美国微软公司推出的一款操作系统。
该系统从1985年诞生到现在, 经过多年的发展完善, 相对比较成熟稳定, 是当前个人计算机的主流操作系统。
Windows系统的特点:a、Windows操作系统界面友好, 窗口制作优美, 操作动作易学, 多代系统之间有良好的传承, 计算机资源管理效率较高, 效果较好。
b、Windows操作系统作为优秀的操作系统, 由开发操作系统的微软公司控制接口和设计, 公开标准, 因此, 有大量商业公司在该操作系统上开发商业软件。
《操作系统》实验报告专业年级:姓名:学号:提交日期:实验一:操作系统环境1.1 Windows 2000 系统管理(实验估计时间:60分钟)实验内容与步骤1、计算机管理2、事件查看器3、性能监视4、服务5、数据库(ODBC)为了帮助用户管理和监视系统,Windows 2000提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
步骤1:登录进入Windows 2000 Professional。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) 本地安全策略:查看和修改本地安全策略,如用户权限和审核策略。
2) 服务:启动和停止服务。
3) 计算机管理器:管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4) 事件查看器:显示来自于 Windows 和其他程序的监视与排错消息。
5) 数据源:添加、删除、以及配置 ODBC 数据源和驱动程序。
6) 性能:显示系统性能图表以及配置数据日志和警报。
7) 组件服务:配置和管理 COM+ 应用程序。
1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows 2000管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
在用于导航和工具选择的控制台目录树中有“系统工具”、“存储”及“服务和应用程序”等节点,窗口右侧“名称”窗格中显示了工具的名称、类型或可用的子工具等。
它们是:1)系统工具,填入表2-3中。
表2-3 实验记录2) 存储,填入表2-4中。
3) 服务和应用程序,填入表2-5中。
2. 事件查看器事件查看器不但可以记录各种应用程序错误、损坏的文件、丢失的数据以及其他问题,而且还可以把系统和网络的问题作为事件记录下来。
操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。
操作系统形考任务任务实验报告1.引言1.1 概述概述部分的内容应该对整篇文章进行一个简要的介绍,让读者了解文章的主题和目标。
下面是一个概述部分的例子:引言本篇文章是针对操作系统形考任务实验的报告,描写了在该实验中的任务和实验结果。
文章分为引言、正文和结论三个部分。
1.概述在本实验中,我们的任务是实现一个基本的操作系统模拟,并进行相关的任务调度和资源管理。
通过这个实验,我们旨在掌握操作系统内核的基本原理和设计方法,加深对操作系统工作机制的理解。
本篇文章将介绍实验的背景、目的以及结构。
2.正文在正文部分,我们将详细介绍第一个要点和第二个要点。
第一个要点将介绍操作系统模拟的实现过程和相关的设计思路。
我们将解释如何建立进程管理、内存管理和文件系统等模块,并讨论在实现过程中遇到的挑战和解决方法。
第二个要点将重点讨论任务调度和资源管理的优化策略,包括进程优先级调度、内存分配算法和文件权限管理等。
3.结论在结论部分,我们将总结本次实验的重要要点和结果,并讨论对未来操作系统设计的展望。
我们将探讨实验的成功之处,以及可能的改进和扩展方向。
通过本次操作系统形考任务实验,我们希望能够加深对操作系统原理的理解,提高我们的实践能力,并为未来的操作系统设计提供一些有益的思考和启示。
现在让我们进入正文,详细介绍实验的过程和结果。
文章结构部分内容如下所示:1.2 文章结构本篇实验报告共分为三个主要部分,即引言、正文和结论。
引言部分(第1节)将对本次实验进行概述,介绍本次实验的背景和目的,并说明整篇报告的结构和内容安排。
正文部分(第2节和第3节)是本篇报告的核心内容。
第2.1节将介绍第一个要点,即操作系统中的某个具体任务。
这将包括任务的背景、设计思路、实验方法和结果分析等内容。
第2.2节将介绍第二个要点,同样包括任务的相关信息和具体实验过程的描述。
通过对这两个要点的详细介绍,读者将能够全面了解本次实验的操作系统形考任务。
结论部分(第3节)将对实验结果进行总结,并提出展望未来的观点。
技术资料常州大学操作系统课程实验报告姓名 xxx专业班级计算机科学与技术学号 xxxxxx指导老师 xxx成绩实验时间2012年4月23日——2012年5月7日实验一 Windows XP 系统管理一实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;3)熟悉Windows操作系统的应用环境。
二实验环境需要准备一台运行Windows XP操作系统的计算机。
三背景知识Windows XP的“管理工具”中集成了许多系统管理工具,利用这些工具,管理员可以方便地实现各种系统维护和管理功能。
这些工具都集中在“控制面板”的“管理工具”选项下,用户和管理员可以很容易地对它们操作和使用。
在默认情况下,只有一些常用工具——如服务、计算机管理、事件查看器、数据源 (ODBC) 、性能和组件服务等——随Windows XP 系统的安装而安装。
四实验内容与步骤为了帮助用户管理和监视系统,Windows XP提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
步骤1:登录进入Windows XP。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) 本地安全策略:查看和修改本地安全策略,如用户权限和审核策略2) Internet信息服务:管理 IIS,Internet 和 Intranet 站点的 WEB服务器3) 服务:启动和停止服务4)计算机管理:管理磁盘以及使用其他系统工具来管理本地或远程的计算机5)事件查看器:显示来自于 Windows 和其他程序的监视与排错消息6)数据源ODBC:添加、删除、以及配置 ODBC 数据源和驱动程序7)性能:显示系统性能图表以及配置数据日志和警报8)组件服务:配置和管理 COM+ 应用程序1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows XP管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
试验一:时间:2013-11-29计算机实验机房2朱蓉蓉第一题:先来先服务算法#include<iostream>#include<string>#include<iomanip>using namespace std;struct PCB{string name;//进程名float ta;//进程到达时间float ts;//进程估计运行的时间float tb;//进程开始运行时间float tm;//进程仍需运行的时间float to;//进程完成的时间float rn;//进程运行的次数float totalTime;//周转时间double weightTotalTime;//带权周转时间(周转时间/估计运行时间)PCB *next;//定义指向下一个进程的指针};#define MAX_NUM 15int pronum;//定义进程数为pronumfloat total;//记录所有进程的总时间double weight;//记录所有进程的带权周转时间PCB *create(PCB *head);//创建进程队列void deal(PCB *head);//FCFS记录处理void sort(PCB *head);//将进程按到达的先后顺序排列void fcfsrun(PCB *head);//先来先服务算法PCB *create(PCB *head){PCB *p1,*p2;p1=p2=new PCB;head=p1;cout<<"请输入进程数:";cin>>pronum;for(int i=0;i<pronum;i++){p2=p1;p1=new PCB;p1->next=NULL;cout<<"请依次输入第"<<i+1<<"个进程的信息(进程名、到达时间、估计运行时间):";cin>>p1->name>>p1->ta>>p1->ts;p1->tm=p1->ts;p1->rn=1;p2->next=p1;}return head;}void sort(PCB *head)//将进程按到达的先后顺序排列{PCB *p,*q,*r,*s;if(head->next!=NULL){p=head->next->next;head->next->next=NULL;}while(p){q=p;p=p->next;r=head;s=head->next;while(s&&s->ta<=q->ta){r=s;s=s->next;}r->next=q;q->next=s;}}void deal(PCB *head)//FCFS记录处理{sort(head);PCB *p,*q;q=head->next;q->tb=q->ta;q->to=q->tb+q->ts;q->totalTime=q->to-q->ta;q->weightTotalTime=q->totalTime/(double)q->ts;total+=q->totalTime;weight+=q->weightTotalTime;p=q->next;while(p!=NULL){p->tb=q->to;p->to=p->tb+p->ts;p->totalTime=p->to-p->ta;p->weightTotalTime=p->totalTime/(double)p->ts;total+=p->totalTime;weight+=p->weightTotalTime;q=p;p=p->next;}}void fcfsrun(PCB *head)//先来先服务算法{deal(head);PCB *p,*q,*s;p=head->next;cout<<"进程执行顺序为:";while(p!=NULL){cout<<"--"<<p->name;p=p->next;}cout<<endl;cout<<"进程名提交时间开始时间结束时间周转时间带权周转时间\n";s=head->next;while(s!=NULL){cout<<setw(4)<<s->name<<setw(7)<<s->ta<<setw(10)<<s->tb<<setw(11)<<s->to<<setw(1 0)<<s->totalTime<<setw(10)<<s->weightTotalTime<<endl;s=s->next;}cout<<endl;cout<<" 平均周转时间:"<<total/(double)pronum<<endl;cout<<"平均带权周转时间:"<<weight/(double)pronum<<endl;cout<<"******************************************************"<<endl;total=0;weight=0;}void main(){cout<<"*E01114336-朱蓉蓉-先来先服务调度算法*"<<endl;PCB *head=NULL;head=create(head);fcfsrun(head);}第二题://优先级调度算法#include <stdio.h>#include <stdlib.h>#include <conio.h>#define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0struct pcb { /* 定义进程控制块PCB */char name[10];char state;int super;int ntime;int rtime;struct pcb* link;}*ready=NULL,*p;typedef struct pcb PCB;void sort() /* 建立对进程进行优先级排列函数*/ {PCB *first, *second;int insert=0;if((ready==NULL)||((p->super)>(ready->super))) /*优先级最大者,插入队首*/ {p->link=ready;ready=p;}else /* 进程比较优先级,插入适当的位置中*/{first=ready;second=first->link;while(second!=NULL){if((p->super)>(second->super)) /*若插入进程比当前进程优先数大,*/{ /*插入到当前进程前面*/p->link=second;first->link=p;second=NULL;insert=1;}else /* 插入进程优先数最低,则插入到队尾*/{first=first->link;second=second->link;}}if(insert==0) first->link=p;}}void input() /* 建立进程控制块函数*/{int i,num;system("cls"); /*清屏*/printf("\n 请输入进程数: ");scanf("%d",&num);for(i=1;i<=num;i++){printf("\n 进程号No.%d:\n",i);p=getpch(PCB);printf("\n 输入进程名:");scanf("%s",p->name);printf("\n 输入进程优先数:");scanf("%d",&p->super);printf("\n 输入进程运行时间:");scanf("%d",&p->ntime);printf("\n");p->rtime=0;p->state='W';p->link=NULL;sort(); /* 调用sort函数*/}}int space(){int l=0;PCB* pr=ready;while(pr!=NULL){l++;pr=pr->link;}return(l);}void disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/{printf("\n 进程名\t 状态\t 优先数\t 需要运行时间\t 已经运行时间\n"); printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->super);printf("|%d\t\t",pr->ntime);printf("|%d\t",pr->rtime);printf("\n");}void check() /* 建立进程查看函数*/{PCB* pr;printf("\n **** 当前正在运行的进程是:\n"); /*显示当前运行进程*/ disp(p);pr=ready;printf("\n **** 当前就绪队列状态为:\n"); /*显示就绪队列状态*/while(pr!=NULL){disp(pr);pr=pr->link;}}void destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/{printf("\n 进程[%s] 已完成.\n",p->name);free(p);}void running() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/ {(p->rtime)++;if(p->rtime==p->ntime)destroy(); /* 调用destroy函数*/else{(p->super)--;p->state='W';sort(); /*调用sort函数*/}}void main() /*主函数*/{int len,h=0;char ch;input();len=space();while((len!=0)&&(ready!=NULL)){ch=getchar();h++;printf("-----------------------------------------------------");printf("\n 现在是第%d次运行:\n",h);p=ready;ready=p->link;p->link=NULL;p->state='R';check();running();printf("\n 按任意键继续......\n"); }printf("\n\n 进程已经完成.\n"); }第三题:按时间片轮法调度#define N 10#include<stdio.h>#include<conio.h>typedef struct pcb {char pname[N];int runtime;int arrivetime;char state;struct pcb*next; }PCB;PCB head_input;PCB head_run;PCB *pcb_input;static char R='r',C='c';unsigned long current;void inputprocess();int readydata();int runprocess();int readyprocess();FILE * f;/*检查就绪队列并准备运行进程的函数*/ int readyprocess(){while(1){if(readydata()==0)return 1;elserunprocess();}}/*判断就绪队列是否为空的函数*/int readydata(){if(head_input.next==NULL){if(head_run.next==NULL)return 0;elsereturn 1;}PCB *p1,*p2,*p3;p1=head_run.next;p2=&head_run;while(p1!=NULL){p2=p1;p1=p2->next;}p1=p2;p3=head_input.next;p2=&head_input;while(p3!=NULL){if(((unsigned long)p3->arrivetime<=current)&&(p3->state==R)){printf("Time is %4d ; Process %s start,\n",\(current+500)/1000,p3->pname);fprintf(f,"Time is %4d ; Process %s start,\n",\(current+500)/1000,p3->pname);p2->next=p3->next;p3->next=p1->next;p1->next=p3;p3=p2;}p2=p3;p3=p3->next;}return 1;}int runprocess(){PCB *p1,*p2;if(head_run.next==NULL){current++;return 1;}else{p1=head_run.next;p2=&head_run;while(p1!=NULL){p1->runtime--;current++;if(p1->runtime<=0){printf("Time is %4d;Process %s end.\n",(current+500)/1000,p1->pname);fprintf(f,"Time is %4d;Process %s end.\n",(current+500)/1000,p1->pname);p1->state=C;p2->next=p1->next;delete p1;p1=NULL;}else{p2=p1;p1=p2->next;}}return 1;}}void inputprocess(){PCB *p1,*p2;int num;printf("How many processes do you want to run:");fprintf(f,"How many processes do you want to run:");scanf("%d",&num);fprintf(f,"%d\n",&num);p1=&head_input;p2=p1;p1->next=new PCB;p1=p1->next;for(int i=0;i<num;i++){printf("Input NO.%3d process pname:",i+1);fprintf(f,"Input NO.%3d process pname:",i+1);scanf("%s",p1->pname);fprintf(f,"%s\n",p1->pname);printf(" runtime:");fprintf(f," runtime:");scanf("%d",&(p1->runtime));fprintf(f,"%d\n",&(p1->runtime));printf(" arrivetime:");fprintf(f," arrivetime:");scanf("%d",&(p1->arrivetime));fprintf(f,"%d\n",&(p1->arrivetime));p1->runtime=(p1->runtime)*1000;p1->arrivetime=(p1->arrivetime)*1000;p1->state=R;p1->next=new PCB;p2=p1;p1=p1->next;}delete p1;p1=NULL;p2->next=NULL;}/* 主函数*/void main(){f=fopen("result.txt","w");printf("\n time l=1000 time slice\n");fprintf(f,"\n time l=1000 time slice\n");current=0;inputprocess();readyprocess();getch();fclose(f);}。
操作系统的安装实验报告
《操作系统的安装实验报告》
实验目的:通过实际操作,掌握操作系统的安装过程及注意事项。
实验内容:本次实验选择了Windows 10操作系统进行安装。
首先,准备好安装光盘或U盘,并将其插入计算机。
然后,重启计算机并按下相应的按键进入BIOS设置界面,将启动顺序设置为光盘或U盘优先。
接着,按照提示进入安装界面,选择安装语言、时区等相关选项。
在分区界面,选择安装位置并进行分区设置。
最后,按照提示完成安装过程,等待系统自动重启。
实验结果:经过一系列操作,成功安装了Windows 10操作系统。
在安装过程中,需要注意的是选择合适的安装位置和分区设置,以及在安装过程中不要中断电源或操作。
另外,安装完成后需要及时更新系统补丁和驱动程序,保证系统的稳定性和安全性。
实验总结:通过本次实验,我对操作系统的安装过程有了更深入的了解,并掌握了一些实用的技巧和注意事项。
在今后的工作和学习中,我将能够更加熟练地进行操作系统的安装和维护工作,为计算机的运行和使用提供更好的支持。
通过本次实验,我对操作系统的安装过程有了更深入的了解,并掌握了一些实用的技巧和注意事项。
在今后的工作和学习中,我将能够更加熟练地进行操作系统的安装和维护工作,为计算机的运行和使用提供更好的支持。
操作系统实验报告学生学院计算机学院专业班级 12网络工程2班学号 3112006381 学生姓名赖永新指导教师刘冬宁2014年12月26 日实验题目进程调度一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。
二、实验内容和要求编写并调试一个模拟的进程调度程序,采用“简单时间片轮转法”调度算法对五个进程进行调度。
每个进程有一个进程控制块( PCB)表示。
进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已运行时间、进程状态等等。
进程的到达时间及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
每个进程的状态可以是就绪 W(Wait)、运行R(Run)两种状态之一。
就绪进程获得 CPU后都只能运行一个时间片。
用运行时间加1来表示。
如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。
每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。
重复以上过程,直到所要进程都完成为止。
三、实验主要仪器设备和材料硬件环境:IBM-PC或兼容机软件环境:C语言编程环境四、实验原理及设计方案1、进程调度算法:采用多级反馈队列调度算法。
其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。
当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。
2、实验步骤:(1)按先来先服务算法将进程排成就绪队列。
(2)检查所有队列是否为空,若空则退出,否则将队首进程调入执行。
(3)检查该运行进程是否运行完毕,若运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾。
(4)是否再插入新的进程,若是则把它放到第一逻辑队列的列尾。
(5)重复步骤(2)、(3)、(4),直到就绪队列为空。
五、流程图六、结果过程及截图初始化队列按Y 键继续运行进程:按Y 键继续运行进程:运行若干次后的状态:添加新的进程:七、所遇困难的解决以及心得体会在这个多级反馈的实验中,我采取了用一条实际上的链表队列来模拟多个逻辑上的队列,通过维护几个链表的状态信息来找到每个进程运行完后应该插入的地方,还有一个标志位Fend 用来表明新插入的队列的位置。
虽然实验原理很简单,但是在编写代码的过程中遇到了不少的问题,在两个小时之内已经完成的大体代码的编写,但是之中存在不少的问题,导致了用了差不多四个小时的时间去调试才把它弄好,这主要归咎于在开始设计代码的不太合理,在后期使得代码结构有些混乱,使得调试更加的麻烦,以及对编程的不熟悉。
通过这个实验不仅使我对进程的调度算法有了更深的认识,使得理论知识得到的实践,也使我的编程能力得到了进一步提高。
七、思考题1、分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围。
答:动态有限权算法:动态优先权是指在创建进程时所创建的优先权,会随进程的推进或者等待时间的增加而改变,以便获得更好的调度性能。
处理机为每个进程分配一定的时间片,在就绪队列中,优先权高的进程将优先获得处理机,进程在进去运行完响应的时间片后,如没完成,优先权减1,从新回到就绪队列等待分配处理机。
时间片的轮转法:系统将所有进程排成一个队列,按照先来先服务的原则,对队列首的进程进行处理,每个进程在用完自己的时间片后,从新回到队尾进行排队。
每运行一次,进程的需要时间减1,直到就绪队列为空!八、源代码#include<stdio.h>#include<stdlib.h>#include<conio.h>#define getpch(type) (type*)malloc(sizeof(type))#define NULL 0#define TIME 2//时间片长度typedef struct pcb{//进程管理块char name[10];//进程名字char state; //进程状态int queue; //进程所在的队列int ntime; //进程需要运行的时间int rtime; //进程已经运行的时间int etime; //进程在本队列可运行的时间片struct pcb *link;}PCB;PCB *ready = NULL, *pinsert = NULL, *pfend = NULL,*p =NULL; //就绪队列,进程插入位置的变量int geti() //使用户仅能输入整数{char ch;int i = 0;fflush(stdin);ch = getchar();while(ch == '\n'){printf("\tf输入不能为空..请重新输入\n");fflush(stdin);ch = getchar();}while(ch != '\n'){if(ch > '9' || ch < '0'){printf("\t输入有误!!输入只能为正整数,请重新输入...\n");fflush(stdin);i = 0;ch = getchar();}else{i = i*10 + (ch - '0');ch = getchar();}}return i;}void findpos()//更新状态量{PCB *ps = pfend;if(!ps || !ps -> link || (ps-> link->queue - ps->queue) > 1)pinsert = ps;else{while (ps->link && ps ->link->queue != (pfend ->queue +2))ps = ps->link;pinsert = ps;}}void insert()//插入进程{if(!ready ){ready = p;pfend = p;pinsert = p;}else if(ready ->queue == 1){//第一队列存在p->link = pfend->link;pfend->link = p;pfend = p;findpos();}else{p->link = ready;ready = p;findpos();}}void input()/*建立进程控制块函数*/{int i,num;printf("\n请输入进程的个数?");num = geti();for(i=0; i < num; i++){printf("\n进程号No.%d:\n",i+1);p=getpch(PCB);printf("\n输入进程名:");scanf("%s",p->name);printf("\n输入进程运行时间:");p ->ntime = geti();printf("\n");p->rtime=0;p->state='w';p->queue =1;p->etime = TIME;p->link=NULL;insert();/*调用insert函数*/}}void disp(PCB *pr)/*建立进程现实函数,用于显示当前进程*/{printf("\nname\t state\t queue\t ntime\t rtime\t在队列可停留时间\t \n");printf("|%s\t",pr->name);printf(" |%c\t",pr->state);printf(" |%d\t",pr->queue);printf(" |%d\t",pr->ntime);printf(" |%d\t",pr->rtime);printf(" |%d\t",pr->etime);printf("\n");}void check()/*建立进程查看函数*/{PCB *pr;printf("\n ****当前正在运行的进程是:%s",ready->name);/*显示当前运行的进程*/ disp(ready);pr= ready ->link;printf("\n****当前就绪队列状态为:\n");/*显示就绪队列状态*/while(pr!=NULL){disp(pr);pr=pr->link;}}void sort()//调整进程队列{if(!ready->link ||ready->queue < ready->link->queue) return;p = ready ->link;ready ->link = pinsert ->link;pinsert ->link = ready;pinsert = ready;ready = p;if (ready && ready -> queue == pinsert ->queue){findpos();}}void addnew()//添加新的进程{if(ready ->queue != 1){(ready -> queue)++;ready->etime *= 2;ready -> state='w';sort();/*调用sort函数*/input();}else{input();}}void destroy()/*建立进程撤销函数(进程运行结束,撤销进程)*/ {printf("\n进程[%s]已完成.\n",ready->name);p = ready;ready = ready->link;free(p);if (ready && ready -> queue == pinsert ->queue)findpos();}void running()/*建立进程就绪函数(进程运行时间到,置就绪状态)*/ {(ready -> rtime)++;ready ->etime --;if(ready->rtime == ready->ntime){destroy();return;}else if(ready ->etime == 0){int time = 2;(ready -> queue)++;for(int i = 2; i != ready->queue; ++i)time *= 2;ready->etime = time;ready -> state='w';sort();/*调用sort函数*/}}void main(){char ch;input();while(ready != NULL){printf("\nThe execute name:%s\n",ready ->name);ready ->state = 'R';check();running();printf("\n按i键添加新进程....按其他任意键继续运行...");fflush(stdin);ch = getchar();if (ch == 'i'|| ch=='I')addnew();}printf("\n\n 进程已经完成\n");getchar();}实验题目作业调度一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。