计算机操作系统实验报告表格资料

合集下载

(完整word版)操作系统实验报告.实验一 WINDOWS进程初识

(完整word版)操作系统实验报告.实验一 WINDOWS进程初识

操作系统教程实验指导书实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。

(2)掌握WINDOWS API的使用方法。

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

2、实验内容和步骤(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子目录,执行编译好的可执行程序:E:\课程\os课\os实验\程序\os11\debug>hello.exe运行结果 (如果运行不成功,则可能的原因是什么?) :答:运行成功,结果:(2)计算进程在核心态运行和用户态运行的时间步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。

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

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

《操作系统》实验报告

《操作系统》实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

计算机操作系统实验报告(文件基本操作)

计算机操作系统实验报告(文件基本操作)

数学与计算机科学系实验报告课程:计算机操作系统地点:软件实验室二时间:2013年月日3、显示你登录目录的绝对路径,给出这个会话过程。

4、在系统中,执行cd professional/course命令,回答下列问题:a、你的主目录的绝对路径是什么?给出获得该绝对路径的命令及命令输出。

b、执行cd os/lab命令。

然后执行一个命令显示当前目录的绝对路径,给出这个会话过程。

5、改变目录到/usr。

在这个目录下有多少个文件和目录,他们的文件内容类型是什么?6、在/usr/bin目录下有多少个普通文件、目录文件和链接文件?如何得到这个答案?7、你系统中的Linux内核映像文件在那个目录中?给出这个可执行内核映像文件的名称和文件内容类型。

8、Linux系统规定,隐含文件是首字符为”.”的文件,如.profile。

在你的系统中查找.profile 和. login文件,他们在什么地方,给出这两个文件部分内容。

9、显示你的主目录下的所有隐含文件的文件名。

给出你的会话过程。

10、vi编辑器的使用:a、在shell提示符下,输入vi firscrip并按<Enter>键。

vi的界面将出现在显示屏上;你的主目录temp professional personalcourse Generalc++ dartastructureosppt lab programb、输入a,输入ls –la,并按<Enter>键;c、输入who,并按<Enter>键;d、输入pwd,再按<Enter>键。

e、输入:wq,并按<Enter>键;f、在shell提示符下,输入bash firscrip并按<Enter>键;g、观察结果。

当前的工作目录中有多少个文件?他们的名称和大小?还有谁在使用你的计算机系统?当前的工作目录是什么?10、在系统中运行vi并创建一个bash shell脚本文件,它包含下面行:echo $SHELLchsh –l然后以sheller为名保存该文件并退出vi。

《操作系统》实验报告

《操作系统》实验报告

一、实验目的1. 理解进程的概念及其在操作系统中的作用。

2. 掌握进程的创建、调度、同步和通信机制。

3. 学习使用进程管理工具进行进程操作。

4. 提高对操作系统进程管理的理解和应用能力。

二、实验环境1. 操作系统:Windows 102. 软件环境:Visual Studio 20193. 实验工具:C++语言、进程管理工具(如Task Manager)三、实验内容1. 进程的创建与销毁2. 进程的调度策略3. 进程的同步与互斥4. 进程的通信机制四、实验步骤1. 进程的创建与销毁(1)创建进程使用C++语言编写一个简单的程序,创建一个新的进程。

程序如下:```cpp#include <iostream>#include <windows.h>int main() {// 创建进程STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi, sizeof(pi));// 创建进程if (!CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {std::cout << "创建进程失败" << std::endl;return 1;}std::cout << "进程创建成功" << std::endl;// 等待进程结束WaitForSingleObject(pi.hProcess, INFINITE);// 销毁进程CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return 0;}```(2)销毁进程在上面的程序中,通过调用`WaitForSingleObject(pi.hProcess, INFINITE)`函数等待进程结束,然后使用`CloseHandle(pi.hProcess)`和`CloseHandle(pi.hThread)`函数销毁进程。

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

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

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

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统实验报告1

操作系统实验报告1

《操作系统》实验报告实验序号: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资源管理器”相似。

计算机操作系统实验报告表格

计算机操作系统实验报告表格

计算机与信息学院 实验课程:操作系统阜阳师范学院 Fuyang Teachers College实验报告 ====================================================================专业:年级班级: ~ 学年 第 学期姓名 学号:实验报告实验报告实验报告}exit(0);}main( ){ client( );}2.server.c#include <sys/types.h>#include <sys/msg.h>#include <sys/ipc.h>#define MSGKEY 75struct msgform{ long mtype;char mtext[1000];}msg;int msgqid;void server( ){msgqid=msgget(MSGKEY,0777|IPC_CREAT); do{msgrcv(msgqid,&msg,1030,0,0);printf(“(server)received\n”);}while(msg.mtype!=1);msgctl(msgqid,IPC_RMID,0);exit(0);}main( ){server( );}实验报告#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 12#define B 3#define P 5int isInBuf(int buf[], int x, int *p){ int i, j = -1;for (i = 0; i < B; i++){ if(buf[i] == x){ j = i;break;}else if (buf[i] == -1){ (*p)++;buf[i] = x;j = i;break;}}if(j==-1) (*p)++;return j;}int oldopt(int i, int buf[ ], int list[ ], int f[ ]) { int k, h, j=0, max=-1;for (k = 0; k < B; k++){ for (h = i; h < N; h++)if (buf[k] == list[h]){ f[k] = h;break;}if(h==N)f[k] = N;}for (k = 0; k < B; k++){ if (max < f[k]){ max = f[k];j = k;}}return j;}int main(){ int list[N]; #include <stdio.h>#include <stdlib.h>#include <time.h>#define N 12#define B 3#define P 5int isInBuf(int buf[], int x, int *p) { int i, j = -1;for (i = 0; i < B; i++){ if(buf[i] == x){ j = i;break;}else if (buf[i] == -1){ (*p)++;buf[i] = x;j = i;break;}}if(j==-1) (*p)++;return j;}int oldlru(int f[ ]){ int i, j = 0, max = -1;for (i = 0; i < B; i++){ if(f[i] > max){ max = f[i];j = i;}f[i]++;}return j;}int main(){ int list[N];int change[N];int buf[B], f[B], i, j,k;int result[B][N];int old;int absent;srand((int)time(NULL));printf("\n The Random List:\n");for (i = 0; i < N; i++)int change[N];int buf[B],f[B],i,j,k;int result[B][N];int old;int absent;srand((int)time(NULL));printf("\n The Random List:\n");for (i = 0; i < N; i++){ list[i] = rand() % P+1;printf("%3d", list[i]);}printf("\n----------------------------------------------\n");printf("\nOPT:\n");absent=0;for(i = 0; i < B; i++)buf[i] = f[i] = -1;for(i = 0; i < N; i++){ j=isInBuf(buf, list[i],&absent);if(j== -1) //需置换页面{ old=oldopt(i, buf, list, f);change[i]=buf[old];buf[old] = list[i];}else change[i]=-1;for(k=0;k<B;k++)result[k][i]=buf[k];}printf("the result is:\n");for(i=0;i<B;i++){ for(j=0;j<N;j++)printf("%3d",result[i][j]);printf("\n");}printf("\nthe page is changed:\n");for(i=0;i<N;i++){ if(change[i]== -1)printf(" ");else printf("%3d",change[i]);}printf("\nabsent:%d\n",absent);printf("the absent vote is:%f\n",(float)absent/N);}{ list[i] = rand() % P+1;printf("%3d", list[i]);}printf("\n-------------------------------------------\n");printf("\nLRU:\n");absent = 0;for(i = 0; i < B; i++)buf[i] = f[i] = -1;for(i = 0; i < N; i++){ j = isInBuf(buf, list[i],&absent);old = oldlru(f);if(j== -1){ change[i]=buf[old];buf[old] = list[i];f[old] = 0;}else{ f[j]=0;change[i]=-1;}for(k=0;k<B; k++)result[k][i]=buf[k];}printf("the result is:\n");for(i=0;i<B;i++){ for(j=0;j<N;j++)printf("%3d",result[i][j]);printf("\n");}printf("\nthe page is changed:\n");for(i=0;i<N;i++){ if(change[i]== -1)printf(" ");elseprintf("%3d",change[i]);}printf("\nabsent:%d\n",absent);printf("the absent vote is:%f\n",(float)absent/N); }实验报告。

计算机操作系统实验报告

计算机操作系统实验报告

实验报告实验课程:计算机操作系统学生姓名:**学号:**********专业班级:管理科学与工程类111班2013年 6 月 7 日目录实验一Linux的文件系统和基本操作命令 (3)实验二熟悉Linux开发环境 (5)实验三Linux进程创建和控制 (8)实验四进程的软中断通信和管道通信 (10)实验五进程间通信 (13)实验六存储管理 (18)南昌大学实验报告学生姓名:舒娅学号:6100511015 专业班级:管理科学与工程类111班√实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验一Linux的文件系统和基本操作命令(一)实验目的1、熟练掌握Linux的登陆和退出过程2、熟练掌握基本的Linux文件与目录操作命令3、熟练掌握基本的LINUX系统管理命令(二)实验基本要求1、了解LINUX根文件系统目录内容;2、了解应用程序和配置文件关系3、熟悉LINUX系统配置(三)基本实验条件PC兼容机、交换机、Red Hat Linux 9.0(四)实验内容(五) 实验数据及处理结果1、登陆与关机(1)登陆在login:后输入user机号↙(这表示回车键)在password:后输入123456↙(注意在屏幕上不显示)出现$提示符,表示正常进入普通用户状态。

(2)关机在$后输入halt↙等屏幕上显示System halted时,再关电源。

2、文件与目录操作基本命令(1)、用户工作目录每个用户都有一个与用户名相同的用户自己能完全操作(读、写、删)的子目录,如:/home/user27,就是用户user27的工作目录。

(2)、man命令man命令用于查看Linux各种命令的使用说明,用法如下:man 命令名↙(3)、参考背景资料或利用man命令,熟悉掌握以下基本命令的使用方法:ls;显示目录内容cd;切换目录cp;文件复制mkdir;创建指定的名称的目录rmdir;删除空目录mv;移动档案与目录或更名rm;删除不需要的目录及文件cat;将文档中的内容显示出来more;以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空格往下一页显示,按 b 键就会往回一页显示less;less 与 more 类似,但使用 less 可以随意浏览文件file;检测文件类型du;显示目录或文件的大小df;检查文件系统的磁盘空间占用情况mount;加载指定的文件系统umount;卸除文件系统chmod;改变一个或多个文件的存取模式chown;变更文件或目录的拥有者或所属群组。

计算机操作系统实验报告

计算机操作系统实验报告

实验1:安装操作系‎统--安装Win‎d ows 2000 Profe‎s sion‎a l1、实验目的:1) 通过对Wi‎n dows‎2000 Profe‎s sion‎a l的安装‎操作,了解操作系‎统应用环境‎建立的初步‎过程。

2) 掌握对Wi‎n dows‎操作系统的‎基本系统设‎置。

3) 了解Win‎d o ws多‎操作系统安‎装的方法。

2、工具/准备工作在开始本实‎验之前,请回顾教科‎书的相关内‎容。

需要一台准‎备安装Wi‎ndows‎2000 Profe‎s sion‎a l操作系‎统的计算机‎。

Windo‎w s 2000是‎一款功能强‎大的系统软‎件,它对系统的‎要求也比较‎高。

系统安装时‎,对计算机硬‎件设备的最‎低要求如表‎1-2所示。

表1-2 安装Win‎dows 2000的‎硬件需求基本硬件设‎备基本需求建议需求实际情况CPU Penti‎u m 166MH‎z Penti‎u m II以上内存32MB 64MB以‎上磁盘空间(可用空间/总空间) 650MB‎/2GB 1.5GB/4GBCD-ROM或D‎V D-ROM光驱‎24倍速以‎上网卡和调制‎解调器VGA显卡‎及显示器、键盘、鼠标3、实验内容与‎步骤本实验以光‎盘启动、全新安装为‎例。

可以利用W‎indow‎s2000 Profe‎s sion‎a l光盘来‎直接开机启‎动,开机后自动‎执行安装程‎序。

(因此,在执行安装‎操作之前,请检查你的‎计算机是否‎允许从光盘‎驱动器引导‎启动,否则应对机‎器的BIO‎S进行相应‎的设置。

)安装Win‎dows 2000 Profe‎s sion‎a l首先需‎要建立分区‎,然后才开始‎运行安装程‎序。

所以,整个安装过‎程可分为两‎个阶段:·文字模式阶‎段:主要是选择‎用来安装W‎indow‎s2000的‎硬盘。

安装程序提‎供了建立分‎区、删除分区以‎及格式化等‎功能。

操作系统实验报告表1

操作系统实验报告表1

山西大学软件学院专业课程实验专业:软件工程班级:软工1417 班姓名:魏天波学号:1462141739实验结果:结果分析:运用C语言编程,使用顺序表模拟内存中的进程队列,实现对进程的管理。

进程的管理主要包括进程的创建、进程的查询、进程的换出以及进程的撤销以及进程之间的通信。

心得体会:进程是程序以及数据在处理机(即CPU)上运行的过程,它是系统进行资源分配和调度的一个独立单位。

没有试验前,我对进程的了解只限于字面的意思,通过这次试验我对进程这一概念右了跟深层次的了解。

虽然是模拟进程的创建,我也对进程的创建过程有了更深层次的了解,创建一个进程,首先应该为它分配内存空间,然后将进程的基本信息输入到进程控制快PCB中。

同时将创建好的进程插入到进程就绪队列中。

而对进程的查阅和换出等功能的实现,只是简单地对就绪队列进行检索,并将相关信息输出来。

实验成绩:源代码:#include"conio.h"#include"stdio.h"#include"stdlib.h"struct jincheng_type{int pid;int youxian;int daxiao;int msg;int live;};struct jincheng_type neicun[20],waicun[20];int shumu=0,pid_l;main(){int n,m,i;char a;n=1;while(n==1){system("cls");printf("\n********************************************");printf("\n* 进程演示系统*");printf("\n********************************************");printf("\n 1.创建新的进程2.查看运行进程");printf("\n 3.换出某个进程4.杀死运行进程");printf("\n 5.进程之间通信6.退出");printf("\n********************************************");printf("\n请选择(1~6) ");a=getch();switch(a){case'1':create( );break;case'2':viewrun( );break;case'3':huanchu();break;case'4':kill( );break;case'5':tongxun( );break;case'6': exit(0);default: n=0;}}}int create( )/*创建一个进程的示例(不完整的程序)*/{if(shumu>=20){printf("\n内存已满,请先结束或换出进程\n"); }else{printf("\n请输入新进程的pid\n");scanf("%d",&neicun[shumu+1].pid);printf("\n请输入新进程的优先级\n");scanf("%d",&neicun[shumu+1].youxian);printf("\n请输入新进程的大小\n");scanf("%d",&neicun[shumu+1].daxiao);printf("\n请输入新进程的消息\n");scanf("%d",&neicun[shumu+1].msg);neicun[shumu+1].live=1;shumu++;}return neicun[shumu-1].live;}int viewrun( )/*查看运行进程*/{int vpid;printf("\n请输入进程的pid\n");scanf("%d",&vpid);if(vpid>0&&vpid<=20&&neicun[vpid].live==1){printf("\n进程的pid是: %d\n",neicun[vpid].pid);printf("进程的优先级是: %d\n",neicun[vpid].youxian);printf("进程的大小是:%d\n",neicun[vpid].daxiao);printf("进程的消息是:%d\n",neicun[vpid].msg);}else{printf("\n所查看运行进程不存在\n");}printf("请按回车退出查看\n");vpid=getch();}int huanchu()/*换出某个进程*/{int pid1,pid2;char c;printf("\n请输入第一个替换进程的pid\n"); scanf("%d",&pid1); printf("\n请输入第二个替换进程的pid\n");scanf("%d",&pid2);if(pid1>0&&pid1<=20&&neicun[pid1].live==1){if(neicun[pid1].youxian>neicun[pid2].youxian){waicun[20].pid=neicun[pid1].pid;waicun[20].youxian=neicun[pid1].youxian;waicun[20].daxiao=neicun[pid1].daxiao;waicun[20].msg=neicun[pid1].msg;neicun[pid1].pid=neicun[pid2].pid;neicun[pid1].youxian=neicun[pid2].youxian;neicun[pid1].daxiao=neicun[pid2].daxiao;neicun[pid1].msg=neicun[pid2].msg;neicun[pid2].pid=waicun[20].pid;neicun[pid2].youxian=waicun[20].youxian;neicun[pid2].daxiao=waicun[20].daxiao;neicun[pid2].msg=waicun[20].msg;printf("\n替换完成\n");printf("\n被替换进程的pid是: %d\n",waicun[20].pid); printf("被替换进程的优先级是: %d\n",waicun[20].youxian); printf("被替换进程的大小是:%d\n",waicun[20].daxiao); printf("被替换进程的消息是:%d\n",waicun[20].msg);}else{printf("\n进程优先级不够大");}}else{printf("所查看运行进程不存在");}printf("请按回车退出换出进程\n");c=getche();return;}int kill()/*杀死运行进程*/{int kpid;printf("\n请输入进程的pid\n");scanf("%d",&kpid);if(kpid>0&&kpid<20&&neicun[kpid].live==1){neicun[kpid].live=0;}return;}int tongxun( )/*进程之间通信*/{int tpid1,tpid2;int buffer;char d;printf("\n请输入通信源进程pid\n");scanf("%d",&tpid1);printf("\n请输入通信目的进程pid\n");scanf("%d",&tpid2);if(tpid1>0&&tpid1<20&&neicun[tpid1].live==1){buffer=neicun[tpid1].msg;neicun[tpid1].msg=neicun[tpid2].msg;neicun[tpid2].msg=buffer;printf("\n源进程的消息是: %d\n",neicun[tpid1].msg); printf("\n目的进程的消息是: %d\n",neicun[tpid2].msg); }else{printf("\n所查看运行进程不存在\n");}printf("\n请按回车退出进程通信\n");d=getch();return;}。

操作系统实验报告-完全版

操作系统实验报告-完全版

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

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

二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Windows 2000 Professional、Visual C++ 企业版。

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

# include <># pragma comment(lib, “” )int APIENTRY WinMain(HINSTANCE /* hInstance */ ,HINSTANCE /* hPrevInstance */,LPSTR /* lpCmdLine */,int /* nCmdShow */ ){:: MessageBox(NULL,“hello, Windows 2000” ,“Greetings”,MB_OK) ;return(0) ; }在程序1-1的GUI应用程序中,首先需要头文件,以便获得传送给WinMain() 和MessageBox() API函数的数据类型定义。

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

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

这一指令是Visual Studio C++ 编译器特有的。

操作系统实验

操作系统实验

操作系统实验报告(一)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:安装操作系统--安装Windows 2000 Professional1、实验目的:1) 通过对Windows 2000 Professional的安装操作,了解操作系统应用环境建立的初步过程。

2) 掌握对Windows操作系统的基本系统设置。

3) 了解Windows多操作系统安装的方法。

2、工具/准备工作在开始本实验之前,请回顾教科书的相关内容。

需要一台准备安装Windows 2000 Professional操作系统的计算机。

Windows 2000是一款功能强大的系统软件,它对系统的要求也比较高。

系统安装时,对计算机硬件设备的最低要求如表1-2所示。

表1-2 安装Windows 2000的硬件需求基本硬件设备基本需求建议需求实际情况CPU Pentium 166MHz Pentium II以上内存32MB 64MB以上磁盘空间(可用空间/总空间) 650MB/2GB 1.5GB/4GBCD-ROM或DVD-ROM光驱24倍速以上网卡和调制解调器VGA显卡及显示器、键盘、鼠标3、实验内容与步骤本实验以光盘启动、全新安装为例。

可以利用Windows 2000 Professional光盘来直接开机启动,开机后自动执行安装程序。

(因此,在执行安装操作之前,请检查你的计算机是否允许从光盘驱动器引导启动,否则应对机器的BIOS 进行相应的设置。

)安装Windows 2000 Professional首先需要建立分区,然后才开始运行安装程序。

所以,整个安装过程可分为两个阶段:·文字模式阶段:主要是选择用来安装Windows 2000的硬盘。

安装程序提供了建立分区、删除分区以及格式化等功能。

·GUI图形界面阶段:进行系统设置与复制文件的动作,完成Windows 2000系统的安装。

步骤1:将Windows 2000 Professional安装盘放入光驱,启动机器后,屏幕正常显示欢迎信息。

操作系统linux版实验报告

操作系统linux版实验报告

操作系统实验报告(Linux版)网络142 潘豹 142999实验一观察Linux进程状态一、实验目得在本实验中学习Linux操作系统得进程状态,并通过编写一些简单代码来观察各种情况下,Linux进程得状态,进一步理解进程得状态及其转换机制。

二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Linux Ubuntu操作系统,gcc编译器。

(四)查瞧“不可中断阻塞”状态(D)创建一个C程序,如uninter_status、c,让其睡眠30s代码:#include<unistd、h〉#include<stdio、h〉int main(){int i=0,j=0,k=0;for(i=0;i<1000000;i++){for(j=0;j<1000000;j++){k++;k--;}}}实验结果:(二)查瞧“暂停”状态(T)运行run_status进程,其进入R状态:代码同上:(三)查瞧“可中断阻塞”状态(S)创建一个C程序,如interruptiblie_status、c,让其睡眠30s编译链接,后台运行该程序(后接&符号),并使用ps命令查瞧运行状态代码:#include〈unistd、h>#include<stdio、h>int main(){sleep(30);return;}实验结果:(四)查瞧“不可中断阻塞”状态(D)创建一个C程序,如uninter_status、c,让其睡眠30s编译链接,后台运行该程序(后接&),并使用ps命令查瞧运行状态代码:#include〈unistd、h>#include〈stdio、h>intmain(){if(vfork()==0){sleep(300);return;}}实验结果:(五)查瞧“僵尸”进程(Z)创建一个C程序,如zombie_status、c,在其中创建一个子进程,并让子进程迅速结束,而父进程陷入阻塞编译链接,后台运行该程序(后接&),并使用ps命令查瞧运行状态(30s内)代码:#include<unistd、h>#incldue<stdio、h>int main(){if(fork()){sleep(300);}}实验结果:实验二观察Linux进程/线程得异步并发执行一、实验目得通过本实验学习如何创建Linux进程及线程,通过实验,观察Linux进程及线程得异步执行。

计算机操作系统实验课实验报告

计算机操作系统实验课实验报告

实验报告实验课程: 计算机操作系统学生姓名: XXX 学号: XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程错误!未定义书签。

实验二进程调度 ..... 错误!未定义书签。

实验三死锁避免—银行家算法的实现错误!未定义书签。

实验四存储管理 ..... 错误!未定义书签。

实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。

2、通过任务管理器识别操作系统中的进程和线程的相关信息。

3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。

三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。

再从任务管理器中分别找到下列程序:、、、,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。

4、在任务管理器中找到进程“”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论是管理桌面图标的文件(说出进程的作用)。

5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“”的各项信息,并填写下表:进程:中的各个线程序号进程ID线程ID基本优先级当前优先级CPU时间上下文开关1000016B800000104 8100:00:064998336 2000016B8000003EC15150:00:0086、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。

计算机操作系统实验报告

计算机操作系统实验报告

实验一 Windows XP 系统管理一、实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;3)熟悉Windows操作系统的应用环境。

二、实验环境需要准备一台运行Windows XP操作系统的计算机。

三、背景知识Windows XP的“管理工具”中集成了许多系统管理工具,利用这些工具,管理员可以方便地实现各种系统维护和管理功能。

这些工具都集中在“控制面板”的“管理工具”选项下,用户和管理员可以很容易地对它们操作和使用。

在默认情况下,只有一些常用工具——如服务、计算机管理、事件查看器、数据源 (ODBC) 、性能和组件服务等——随Windows XP 系统的安装而安装。

四、实验内容与步骤为了帮助用户管理和监视系统,Windows XP提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。

步骤1:登录进入Windows XP。

步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。

在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) 本地安全策略:用于配置本地计算机的安全设置。

这些设置包括密码策略、帐户锁定策略、审核策略、IP 安全策略、用户权利指派、加密数据的恢复代理以及其他安全选项。

“本地安全策略”只有在非域控制器的计算机上才可用。

如果计算机是域的成员,这些设置将被从域接收到的策略覆盖。

2) 服务:用于管理计算机上的服务,设置要发生的恢复操作(如果服务失败)以及为服务创建自定义名字和描述从而能够方便地识别它们。

3)计算机管理:用于从单个的统一桌面实用程序管理本地或远程计算机。

“计算机管理”将几个 Windows XP 管理工具合并为一个单独的控制台树,从而更容易访问特定的计算机管理属性。

1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows XP管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。

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

计算机与信息
学院 实验课程:操作系统
阜阳师范学院 Fuyang Teachers College
实验报告 ====================================================================
姓名 学号:
实验报告
实验报告
实验报告
}
exit(0);
}
main( )
{ client( );
}
2.server.c
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#define MSGKEY 75
struct msgform
{ long mtype;
char mtext[1000];
}msg;
int msgqid;
void server( )
{
msgqid=msgget(MSGKEY,0777|IPC_CREAT); do
{
msgrcv(msgqid,&msg,1030,0,0);
printf(“(server)received\n”);
}while(msg.mtype!=1);
msgctl(msgqid,IPC_RMID,0);
exit(0);
}
main( )
{
server( );
}
实验报告
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 12
#define B 3
#define P 5
int isInBuf(int buf[], int x, int *p)
{ int i, j = -1;
for (i = 0; i < B; i++)
{ if(buf[i] == x)
{ j = i;
break;
}
else if (buf[i] == -1)
{ (*p)++;
buf[i] = x;
j = i;
break;
}
}
if(j==-1) (*p)++;
return j;
}
int oldopt(int i, int buf[ ], int list[ ], int f[ ]) { int k, h, j=0, max=-1;
for (k = 0; k < B; k++)
{ for (h = i; h < N; h++)
if (buf[k] == list[h])
{ f[k] = h;
break;
}
if(h==N)
f[k] = N;
}
for (k = 0; k < B; k++)
{ if (max < f[k])
{ max = f[k];
j = k;
}
}
return j;
}
int main()
{ int list[N]; #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 12
#define B 3
#define P 5
int isInBuf(int buf[], int x, int *p) { int i, j = -1;
for (i = 0; i < B; i++)
{ if(buf[i] == x)
{ j = i;
break;
}
else if (buf[i] == -1)
{ (*p)++;
buf[i] = x;
j = i;
break;
}
}
if(j==-1) (*p)++;
return j;
}
int oldlru(int f[ ])
{ int i, j = 0, max = -1;
for (i = 0; i < B; i++)
{ if(f[i] > max)
{ max = f[i];
j = i;
}
f[i]++;
}
return j;
}
int main()
{ int list[N];
int change[N];
int buf[B], f[B], i, j,k;
int result[B][N];
int old;
int absent;
srand((int)time(NULL));
printf("\n The Random List:\n");
for (i = 0; i < N; i++)
int change[N];
int buf[B],f[B],i,j,k;
int result[B][N];
int old;
int absent;
srand((int)time(NULL));
printf("\n The Random List:\n");
for (i = 0; i < N; i++)
{ list[i] = rand() % P+1;
printf("%3d", list[i]);
}
printf("\n----------------------------------------------\n");
printf("\nOPT:\n");
absent=0;
for(i = 0; i < B; i++)
buf[i] = f[i] = -1;
for(i = 0; i < N; i++)
{ j=isInBuf(buf, list[i],&absent);
if(j== -1) //需置换页面
{ old=oldopt(i, buf, list, f);
change[i]=buf[old];
buf[old] = list[i];
}
else change[i]=-1;
for(k=0;k<B;k++)
result[k][i]=buf[k];
}
printf("the result is:\n");
for(i=0;i<B;i++)
{ for(j=0;j<N;j++)
printf("%3d",result[i][j]);
printf("\n");
}
printf("\nthe page is changed:\n");
for(i=0;i<N;i++)
{ if(change[i]== -1)
printf(" ");
else printf("%3d",change[i]);
}
printf("\nabsent:%d\n",absent);
printf("the absent vote is:%f\n",(float)absent/N);}
{ list[i] = rand() % P+1;
printf("%3d", list[i]);
}
printf("\n-------------------------------------------\n");
printf("\nLRU:\n");
absent = 0;
for(i = 0; i < B; i++)
buf[i] = f[i] = -1;
for(i = 0; i < N; i++)
{ j = isInBuf(buf, list[i],&absent);
old = oldlru(f);
if(j== -1)
{ change[i]=buf[old];
buf[old] = list[i];
f[old] = 0;
}
else
{ f[j]=0;
change[i]=-1;
}
for(k=0;k<B; k++)
result[k][i]=buf[k];
}
printf("the result is:\n");
for(i=0;i<B;i++)
{ for(j=0;j<N;j++)
printf("%3d",result[i][j]);
printf("\n");
}
printf("\nthe page is changed:\n");
for(i=0;i<N;i++)
{ if(change[i]== -1)
printf(" ");
else
printf("%3d",change[i]);
}
printf("\nabsent:%d\n",absent);
printf("the absent vote is:%f\n",(float)absent/N); }
实验报告。

相关文档
最新文档