太原理工大学操作系统实验报告课案

合集下载

太原理工大学微机原理实验报告课案

太原理工大学微机原理实验报告课案

本科实验报告课程名称:微机原理及应用实验项目:实验地点:专业班级:机械xxx班学号:xxxxxxxxxx 学生姓名:xx指导教师:2016年12月28日实验一汇编语言程序开发环境与程序调试一、实验要求和目的1.熟悉在微机上编辑、汇编、连接、调试和运行汇编语言程序的过程,掌握PC 环境下命令行方式的特点。

2.熟悉汇编过程中一些常见出错信息。

3.熟悉程序调试的方法, DOS命令窗口的debug的常用命令。

二、实验内容1、项目要求:在屏幕上显示字符串‘Hello,world!’。

2、程序设计思想:运用DOS系统功能调用(INT 21H)的9号功能。

DOS系统功能调用的9号功能是显示字符串,它调用的参数DS:DX=串地址,且字符串以“$”结束。

程序流程图如图1-1:图1-1 程序流程图3、程序清单:完整指令代码如下(简化段定义格式):.model small ;定义程序的存储模式.486 ;说明使用的80x86微处理器指令.stack ;定义堆栈段.data ;定义数据段String db 'Hello, world!','$'.code ;定义代码段.startup ;程序执行开始Mov ax, seg String ;把String的段地址送axMov ds,ax ;ax送ds,ds取得string的段地址mov dx,offset String ;String的偏移地址送dxmov ah,9 ;字符串显示功能int 21h ;DOS功能调用mov ax,4c00hint 21h ;返回DOS.exitend三、结果与分析指导教师:年月实验二内存数据的移动一、实验要求与目的:1、实验要求:编写程序实现把数据段的字符串数据移动到附加段中。

2、实验目的:通过项目学习汇编的数据传送指令和串处理类指令,巩固寻址方式,学习汇编程序设计。

二、实验内容:1、项目要求:把数据段中以dstring地址标号为开始地址的“hello world!”字符串移动到附加段以sstring地址标号为开始地址中去。

操作系统实验实验报告

操作系统实验实验报告

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

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

二、实验环境本次实验使用的操作系统为 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 等进行文件的创建、读取和写入操作。

太原理工大学软件工程《系统分析与设计》实验报告

太原理工大学软件工程《系统分析与设计》实验报告

TAIYUAN UNIYERSIIY OF TECHNOLOGY本科实验报告课程名称:__________ 系统分析与设计 ______________实验项目:《企业人事管理系统》实验实验地点:____________ 逸夫楼404 ________________专业班级:软件工程XXXX班学号:XXXXXX学生姓名:____________ XXXX ___________________指导教师:____________ 電红________________________2016年11月1日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规范,为后继的学习打下良好的基础。

二、实验要求学生以个人为单位完成,自选题目,班内题目不重复,使用UML进行系统分析与设计,并完成实验报告。

实验报告以纸质版(A4)、电子版在课程结束前提交(10周)。

三、实验主要设备:台式或笔记本讣算机四、实验内容1选题及项目背景企业人事管理系统2定义企业指定人员通过第一次登录,输入用户名:TSoft,密码:111进入系统,在档案管理模块建立超级管理员档案,然后在新增用户模块设置为管理员,系统默认笫一个被设置被设置的管理员为超级管理员。

然后第二次登录输入用户名:T00001,密码:111 进入系统,在修改密码模块修改超级管理员登录密码,在档案管理模块建立普通管理员档案,在新增用户模块设置为管理员,除了第一个被设置的管理员外均为普通管理员。

管理员使用账号密码登录,然后可以在系统中进行密码修改,在档案管理模块维护员工档案,在考勤管理模块填写考勤信息,在奖惩管理模块填写奖惩信息,在培训管理模块维护培训信息,在人员设置模块设置员工采用的账套。

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

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

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

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

太原理工大学Web系统和技术实验报告

太原理工大学Web系统和技术实验报告

三、数据库设计
勤工助学系统数据库由3张表构成,分别是岗位表(jobs),勤工
图例:FirstPage.jsp
1.登录功能.
登录界面主要实现用户的登录操作,采用一个check.jsp来实现,有一些简单的逻辑校验,当用户点击登录按键的时候系统会弹出一个登录框,如下所示.填写完用户密码之后就会跳转到check.jsp,通过对数据库进行交互后登录成功,则跳转至登录成功页面Success.jsp页面.
图例:Register.jsp
图例:RegisterAction.jsp部分代码
图例:动态显示1. 图例:动态显示2.
图例:分类现实新闻
图例:详细岗位查看
图例:具体实现代码
图例:教师登录通道
图例:管理员管理页面2.岗位,新闻发布
图例:勤工新闻与岗位发布显示
图例:AddnewsAction.java部分代码图例:AddjobsAction.java部分代码。

太原理工大学系统分析实验报告

太原理工大学系统分析实验报告

本科实验报告课程名称:系统分析与设计实验项目:《系统分析与设计》实验实验地点:行逸楼B114专业班级:软件学号:学生姓名:指导教师:孟东霞2015年11月4日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规,为后继的学习打下良好的基础。

二、实验要求学生以个人为单位完成,自选题目,班题目不重复,使用UML进行系统分析与设计,并完成实验报告。

实验报告以纸质版(A4)在课程结束后二上提交(12)。

三、实验主要设备:台式或笔记本计算机四、实验容1 选题及项目背景美食评价系统背景:互联网时代下网络评论越来越随意,希望可以规化的进行。

2 定义美食评价系统为用户提供美食指导和参考。

任人都可注册为会员,个人资料包括姓名,性别,收藏的餐厅以及口味爱好。

会员可以收藏餐馆,浏览餐馆信息以及其他会员的评价。

餐厅必须向管理人员提出注册并审核通过后才能显示。

管理人员需到工商局和餐厅具体审查后才能通过。

会员可以提供来自餐馆提供的小票在次日来对用餐进行评价,一小票仅可提供一次评价。

餐馆则提供当日用餐小票记录给管理人员,用以核对用户提供的小票是否正确,然后系统则会审核评价有无不良信息,审核通过发布在餐厅信息上,并根据会员评价次数对给会员评星(1-5)。

个人信息和餐馆信息可被所有人访问,管理员信息只能管理员访问。

3 参考资料1.GB8567-88 《计算机软件产品文件编制规》2.GB/T11457-1995 《软件工程术语》3.GB 1526—89 信息处理--数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定4.GB8566-88 《软件开发规》4 系统分析与设计4.1需求分析4.1.1识别参与者用户,餐厅,管理人员4.1.2 对需求进行捕获与描述1用例名称:注册个人用户执行者:用户目的:完成一次注册个人用户的完整过程。

太原理工大学操作系统实验报告课案

太原理工大学操作系统实验报告课案

课程名称:实验项目:操作系统 B 操作系统实验实验地点:逸夫楼专业班级:软件 14班学生姓名:学号: 2014指导教师:张辉2016年12月2日目录 ......................................................................................................................................................... 错误!未定义书签。

实验一几种操作系统的界面 (3)一.目的和要求 (3)二.内容 (3)三.程序代码 (4)四.运行结果 (4)实验二进程调度程序设计 (5)一、目的和要求 (5)二、示例 (6)程序清单 (9)运行结果 (9)实验三存储管理程序设计................................................ 错误!未定义书签。

一、目的和要求 ..................................................................................................... 错误!未定义书签。

二、提示................................................................................................................................. 错误!未定义书签。

三.流程图 ....................................................................................................................... 错误!未定义书签。

程序代码................................................................................................................................. 错误!未定义书签。

太原理工大学Linux实验报告

太原理工大学Linux实验报告

“下一步”(11)选择虚拟硬盘容量,若硬盘空间较大可适当增加其值,然后点击“下一步”,根据提示完成操作,并返回虚拟机主界面(12)在虚拟机主界面点击如图所示的图标,编辑虚拟机设置(13)选择系统安装文件(ISO)的位置(14)在虚拟机主界面启动虚拟机六、实验结果与分析完成了安装 VMware Workstation,并汉化,在 VMware Workstation当中创建一个新的虚拟机,指定安装包的路径,安装定制 Redhat Enterprise Linux 5.0。

七、讨论、心得本实验通过对 Linux 操作系统的定制安装,建立对 Linux操作系统的初步认识,为后续实验的进行提供基础平台,掌握了 Linux操作系统的虚拟机定制安装,熟悉了Linux文件目录的结构,在实验中遇到了一些问题,但是通过网上搜索和同学帮助最终还是完成了。

对应的实验结果如下(截图):1.在运行了1.sh这个脚本之后,会执行脚本中的命令。

2.在运行之后,输入的内容会被2.sh脚本读入并以命令的形式输出struct sockaddr_in client_addr;bzero(&client_addr,sizeof(client_addr)); //把一段内存区的内容全部设置为0 client_addr.sin_family = AF_INET; //internet协议族client_addr.sin_addr.s_addr = htons(INADDR_ANY);//INADDR_ANY表示自动获取本机地址client_addr.sin_port = htons(0); //0表示让系统自动分配一个空闲端口 //创建用于internet的流协议(TCP)socket,用client_socket代表客户机socket int client_socket = socket(AF_INET,SOCK_STREAM,0);if( client_socket < 0){printf("Create Socket Failed!/n");exit(1);}//把客户机的socket和客户机的socket地址结构联系起来if( bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr))){printf("Client Bind Port Failed!/n");exit(1);}//设置一个socket地址结构server_addr,代表服务器的internet地址, 端口struct sockaddr_in server_addr;bzero(&server_addr,sizeof(server_addr));server_addr.sin_family = AF_INET;if(inet_aton(server_IP,&server_addr.sin_addr) == 0) //服务器的IP地址来自程序的参数{printf("Server IP Address Error!/n");exit(1);}server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);socklen_t server_addr_length = sizeof(server_addr);//向服务器发起连接,连接成功后client_socket代表了客户机和服务器的一个socket连接if(connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length) < 0){printf("Can Not Connect To %s!/n",server_IP);exit(1);}char buffer[BUFFER_SIZE];bzero(buffer,BUFFER_SIZE);//从服务器接收数据到buffer中int length = recv(client_socket,buffer,BUFFER_SIZE,0);if(length < 0){printf("Recieve Data From Server %s Failed!/n", server_IP);exit(1);}printf("From Server %s :/t%s",server_IP,buffer);bzero(buffer,BUFFER_SIZE);sprintf(buffer,"Hello, World! From Client Thread NUM :/t%d/n",(int)thread_num);//向服务器发送buffer中的数据send(client_socket,buffer,BUFFER_SIZE,0);//关闭socketclose(client_socket);pthread_exit(NULL);}int main(int argc, char **argv){if (argc != 2){printf("Usage: ./%s ServerIPAddress/n",argv[0]);exit(1);}server_IP = argv[1];pthread_t child_thread;pthread_attr_t child_thread_attr;pthread_attr_init(&child_thread_attr);pthread_attr_setdetachstate(&child_thread_attr,PTHREAD_CREATE_DETACHED);int i=0;for(i=0; i<10000; i++){if( pthread_create(&child_thread,&child_thread_attr,talk_to_server,(void *)i) < 0 )printf("pthread_create Failed : %s/n",strerror(errno));}return 0;}2.线程并发服务器端#include <netinet/in.h> // for sockaddr_in#include <sys/types.h> // for socket#include <sys/socket.h> // for socket#include <stdio.h> // for printf#include <stdlib.h> // for exit#include <string.h> // for bzero#include <pthread.h>#include <sys/errno.h> // for errno#define HELLO_WORLD_SERVER_PORT 6666#define LENGTH_OF_LISTEN_QUEUE 20#define BUFFER_SIZE 1024#define THREAD_MAX 5void * talk_to_client(void *data){int new_server_socket = (int)data;char buffer[BUFFER_SIZE];bzero(buffer, BUFFER_SIZE);strcpy(buffer,"Hello,World! 从服务器来!");strcat(buffer,"/n"); //C语言字符串连接//发送buffer中的字符串到new_server_socket,实际是给客户端send(new_server_socket,buffer,BUFFER_SIZE,0);bzero(buffer,BUFFER_SIZE);//接收客户端发送来的信息到buffer中int length = recv(new_server_socket,buffer,BUFFER_SIZE,0);if (length < 0){printf("Server Recieve Data Failed!/n");exit(1);}printf("/nSocket Num: %d /t %s",new_server_socket, buffer);//关闭与客户端的连接close(new_server_socket);pthread_exit(NULL);}int main(int argc, char **argv){//设置一个socket地址结构server_addr,代表服务器internet地址, 端口struct sockaddr_in server_addr;bzero(&server_addr,sizeof(server_addr)); //把一段内存区的内容全部设置为0 server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htons(INADDR_ANY);server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);//创建用于internet的流协议(TCP)socket,用server_socket代表服务器socket int server_socket = socket(AF_INET,SOCK_STREAM,0);if( server_socket < 0){printf("Create Socket Failed!");exit(1);}//把socket和socket地址结构联系起来if( bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr))) {printf("Server Bind Port : %d Failed!", HELLO_WORLD_SERVER_PORT);exit(1);}//server_socket用于监听if ( listen(server_socket, LENGTH_OF_LISTEN_QUEUE) ){printf("Server Listen Failed!");exit(1);}int i;while(1) //服务器端要一直运行{//定义客户端的socket地址结构client_addrstruct sockaddr_in client_addr;socklen_t length = sizeof(client_addr);//接受一个到server_socket代表的socket的一个连接//如果没有连接请求,就等待到有连接请求--这是accept函数的特性//accept函数返回一个新的socket,这个socket(new_server_socket)用于同连接到的客户的通信//new_server_socket代表了服务器和客户端之间的一个通信通道//accept函数把连接到的客户端信息填写到客户端的socket地址结构client_addr中int new_server_socket = accept(server_socket,(struct sockaddr*)&client_addr,&length);if ( new_server_socket < 0){printf("Server Accept Failed!/n");break;}pthread_t child_thread;pthread_attr_t child_thread_attr;pthread_attr_init(&child_thread_attr);pthread_attr_setdetachstate(&child_thread_attr,PTHREAD_CREATE_DET ACHED);if( pthread_create(&child_thread,&child_thread_attr,talk_to_clien t, (void *)new_server_socket) < 0 )printf("pthread_create Failed : %s/n",strerror(errno));}//关闭监听用的socketclose(server_socket);return 0;}上图就是一个通过多线程来完成数据的传输,由于写的是死循环,所以一直继续运行下去,Ctrl+C可退出服务1.搭建Samba服务器(1)配置Samba服务 netstat(查看网络状态) ping(测试网络连通性) ifconfig(查看或配置网卡信息) setup(系统重启后网卡才能生效)(2)安装Samba软件包(在挂载的光盘的Sever目录中)先安装samba-common-3.0.25b-0.e15.4.i386.rpm# rpm - ivh samba-common-3.0.25b-0.e15.4.i386.rpm再安装samba-client-3.0.25b-0.e15.4.i386.rpm#rpm -ivh samba-client-3.0.25b-0.e15.4.i386.rpm最后安装samba-3.0.25b-0.e15.4.i386.rpm# rpm -ivh samba-3.0.25b-0.e15.4.i386.rpm(3)添加Samba用户创建一个admin系统用户# useradd admin # passwd admin修改samba用户密码# smbpasswd - a admin重启samba服务器# service smb restart2.搭建TFTP服务器(1)安装TFTP服务器# rpm –ivh xinetd-2.3.14-10.el5.i386.rpm# rpm -ivh tftp-server-0.42-3.1.i386.rpm# rpm –ivh tftp-0.42-3.1.i386.rpm(2)建立tftp的主工作目录# mkdir /tftpboot(3)修改tftp配置文件# vi /etc/xinetd.d/tftpservice tftp {disable socket_type protocol wait server user server server_args ……} 修改tftp配置文件= no = dgram = udp = yes = root = /usr/sbin/in.tftpd = -s / tftpboot // 此时即可启动tftp服务器(4)重启TFTP服务器# /etc/init.d/xinetd restart3.安装NFS服务器# rpm -ivh nfs-utils-1.0.9-24.e15.i386.rpm配置NFS# vi /etc/exports 加入允许被其它计算机访问的目录和访问权限启动NFS服务器:# /etc/init.d/nfs start使用mount 命令挂载NFS 服务器上的共享目录# mount -t nfs servername:/shared_dir /localdir4.搭建Linux交叉开发环境(1)安装交叉编译工具# tar xvzf arm-linux-xxxx.tgz -C /(2)安装完交叉编译器后,为了方便使用需要修改环境变量:# export PATH=/usr/local/arm//xxxx/bin:$PATH(3)在Windows/linux中编写源程序(4)在Linux中编译程序:# arm-linux-gcc hello.c –o hello1.连接好开发板2.在虚拟机中写好程序,利用arm-linux交叉编译器gcc编译生成可3.通过TFTP将可执行文件复制到开发板上4.在开发板中运行可执行文件。

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

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

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

二、实验环境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.然后,实现一个文件系统管理器,包括文件的存储和检索功能。

太原理工大学数据库实验报告

太原理工大学数据库实验报告
Sname char(10) unique, --唯一约束
Sumc int check(sumc=0), --用户自定义约束,初值为0
Sdept char(2) not null) --非空约束
Create table sc
(sno char(6),
Cno char(3) not null, --非空约束
例如,像student表加一个入学时间列:
alter table Student add S_entrance datetime
alter table Student alter column Sage int
alter table Course add unique(Cname)
3.删除基本表
例如,删除已经建立的学生表:
Where sno = ‘200215129’
实验三数据库完整性
一、实验目的
(1)了解SQL Serer数据库系统中数据完整性控制的基本方法
(2)了解使用SSMS设置约束
(3)熟练掌握常用CREATE或ALTER在创建或修改表时设置约束
(4)了解触发器的机制和使用
(5)验证数据库系统数据完整性控制
二、实验平台
打开SQL SERVER配置管理器工具,单击“SQL SERVER2005服务”
节点,其中的“SQL SERVER”服务就是我们所说的数据库引擎。与SQL
SERVER 2000一样,可以通过这个配置管理器来启动、停止所安装的服
务,如“SQLSERVER(MSSQLSERVER)”。
3.了解RDBMS系统的体系结构。
where
Sname='刘晨');
查询选修了课程名为“信息系统”的学生学号和姓名.

操作系统实验报告三

操作系统实验报告三

操作系统实验报告三一、实验目的本次操作系统实验的目的在于深入了解操作系统的进程管理、内存管理和文件系统等核心功能,通过实际操作和观察,增强对操作系统原理的理解和掌握,提高解决实际问题的能力。

二、实验环境本次实验在 Windows 10 操作系统环境下进行,使用了 Visual Studio 2019 作为编程工具,并借助了相关的操作系统模拟软件和调试工具。

三、实验内容与步骤(一)进程管理实验1、创建多个进程使用 C++语言编写程序,通过调用系统函数创建多个进程。

观察每个进程的运行状态和资源占用情况。

2、进程同步与互斥设计一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。

分析在不同并发情况下程序的执行结果,理解进程同步的重要性。

(二)内存管理实验1、内存分配与回收实现一个简单的内存分配算法,如首次适应算法、最佳适应算法或最坏适应算法。

模拟内存的分配和回收过程,观察内存的使用情况和碎片产生的情况。

2、虚拟内存管理了解 Windows 操作系统的虚拟内存机制,通过查看系统性能监视器观察虚拟内存的使用情况。

编写程序来模拟虚拟内存的页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法等。

(三)文件系统实验1、文件操作使用 C++语言对文件进行创建、读写、删除等操作。

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

2、文件系统性能测试对不同大小和类型的文件进行读写操作,测量文件系统的读写性能。

分析影响文件系统性能的因素,如磁盘碎片、缓存机制等。

四、实验结果与分析(一)进程管理实验结果1、创建多个进程在创建多个进程的实验中,通过任务管理器可以观察到每个进程都有独立的进程 ID、CPU 使用率、内存占用等信息。

多个进程可以并发执行,提高了系统的资源利用率。

2、进程同步与互斥在生产者消费者问题的实验中,当使用正确的信号量机制时,生产者和消费者能够协调工作,不会出现数据不一致或死锁的情况。

太原理工大学系统分析和设计

太原理工大学系统分析和设计

实验报告□实践报告□课程名称:系统分析与设计实验、实践名称:宿舍用电管理系统实验、实践地点:行勉楼c214 专业班级:学号:学生:指导教师:2018年 11月 25 日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析、设计的主要步骤,在实践中熟悉信息系统分析与设计的规及信息系统开发的相关应用软件;加深对信息系统分析与设计课程的基础理论、基本知识的理解;树立正确的分析设计思想,提高系统分析、设计的实践能力及撰写书面文件的能力。

二、实验要求要求学生以个人为单位自选题目,班选题不重复;对所选项目进行调查,写出300字以上的系统描述;利用系统分析与设计的基本原理、方法进行系统分析、设计,使用UML语言构建该系统的分析、设计模型,并完成实验报告;实验报告以纸质版(A4)提交。

三、实验主要设备:台式或笔记本计算机四、实验容1 选题及项目背景宿舍用电管理系统2 定义高校学生宿舍用电的用电管理问题,一直是摆在高校学生宿舍管理者面前的一道难题。

在当今大学逐年扩招的形势下,高校中的学生数量越来越多,由于之前使用的管理方式仍然为比较老旧的人力管理,效率低下而且由于管理的缺失容易引发很多问题,导致这一学校后勤管理中一项常规性工作变得比较困难。

长期以来学校管理都是依赖人工来进行的,其工作量巨大,而且效率不高,当今信息处理日益发达,所以这种方法必须改进。

这样能以相对较少的工作量来得到更好的学生宿舍用电管理效果,能够减轻校方管理人员的工作压力,提高对宿舍用电管理的效率,对同学们的用电情况进行统一管理,并能提醒同学随手关灯,注意节电,养成合理用电的好习惯。

3 参考资料《系统分析与设计》4 系统分析与设计4.1需求分析4.1.1识别参与者学生用户,系统管理员4.1.2 对需求进行捕获与描述数据字典100.1 用例ID号及用例名Uc_100下订单100.2 用例概述该用例描述一个在用电管理系统中,学生查询宿舍剩余电量情况并提交缴费订单,系统确认学生信息,学生支付后,系统生成订单。

操作系统实验报告4

操作系统实验报告4

操作系统实验报告4一、实验目的本次操作系统实验的目的在于深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关操作,通过实际的实验操作,增强对操作系统原理的理解和应用能力,提高解决实际问题的能力。

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

三、实验内容与步骤(一)进程管理实验1、进程创建与终止使用 C++语言编写程序,创建多个进程,并在进程中执行不同的任务。

通过进程的标识符(PID)来监控进程的创建和终止过程。

2、进程同步与互斥设计一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。

观察生产者和消费者进程在不同情况下的执行顺序和结果。

(二)内存管理实验1、内存分配与释放编写程序,使用动态内存分配函数(如`malloc` 和`free`)来分配和释放内存。

观察内存的使用情况和内存泄漏的检测。

2、内存页面置换算法实现几种常见的内存页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法和最佳置换(OPT)算法。

通过模拟不同的页面访问序列,比较不同算法的性能。

(三)文件系统实验1、文件创建与读写使用 C++语言的文件操作函数,创建一个新文件,并向文件中写入数据。

从文件中读取数据,并进行数据的处理和显示。

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

观察文件目录结构的变化和文件的组织方式。

四、实验结果与分析(一)进程管理实验结果与分析1、进程创建与终止在实验中,成功创建了多个进程,并通过控制台输出观察到了每个进程的 PID 和执行状态。

可以看到,进程的创建和终止是按照程序的逻辑顺序进行的,操作系统能够有效地管理进程的生命周期。

2、进程同步与互斥在生产者消费者问题的实验中,通过信号量的控制,生产者和消费者进程能够正确地实现同步与互斥。

当缓冲区为空时,消费者进程等待;当缓冲区已满时,生产者进程等待。

太原理工大学实验报告

太原理工大学实验报告

太原理工大学实验报告太原理工大学实验报告太原理工大学,作为一所重点高校,一直以来致力于培养高素质的工科人才。

实验教学是培养学生创新能力和实践能力的重要环节之一。

本文将以太原理工大学实验报告为主题,探讨实验报告在学生学习中的重要性以及实验报告的写作要点。

实验报告是实验课程的重要组成部分,通过实验报告的撰写,学生能够对实验过程进行总结和归纳,进一步加深对实验原理和方法的理解。

同时,实验报告也是学生表达自己观点和思考的重要途径,培养学生的科学思维和逻辑思维能力。

那么,如何写好一份实验报告呢?首先,实验报告应该包括实验目的、实验原理、实验步骤、实验结果和实验结论等内容。

在实验目的部分,要明确实验的目标和意义,指导读者对实验有一个整体的了解。

实验原理部分要简明扼要地介绍实验所涉及的理论知识,让读者对实验原理有一个初步的认识。

实验步骤部分要详细描述实验的步骤和操作过程,以便读者能够复现实验。

实验结果部分要准确地记录实验数据和观察结果,可以采用表格、图表等形式进行展示。

实验结论部分要对实验结果进行分析和总结,得出科学的结论,并提出对实验的改进意见。

另外,实验报告的写作还需要注意一些细节。

首先,语言要准确、简洁,避免使用口语化的表达方式。

其次,要注意实验数据的精确性和可靠性,避免出现错误的数据和结论。

此外,实验报告还要注意排版和格式的规范性,包括页眉、页脚、标题、字体、行间距等。

最后,还要注意实验报告的内容和结构的合理性,避免出现冗长和重复的内容。

实验报告的写作不仅是一种技巧,更是一种思维方式的培养。

通过实验报告的写作,学生可以培养自己的科学思维和逻辑思维能力,提高自己的实践动手能力和创新能力。

同时,实验报告的写作也是对学生实验过程的一个回顾和总结,有助于加深对实验原理和方法的理解。

太原理工大学一直注重实验教学的质量和效果。

学校为学生提供了先进的实验设备和优质的实验环境,为学生的实验学习提供了良好的条件。

同时,学校也鼓励学生积极参与科研实践和创新活动,提供了一系列的科研实验项目和竞赛机会。

操作系统课程实验报告

操作系统课程实验报告

操作系统课程实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个良好的工作环境。

通过操作系统课程实验,旨在深入理解操作系统的基本原理和功能,提高对操作系统的实际操作能力和问题解决能力。

二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 1804),开发工具包括 Visual Studio Code、gcc 编译器等。

三、实验内容(一)进程管理1、进程创建与终止在 Windows 系统中,使用 C++语言创建多个进程,并通过进程句柄控制进程的终止。

在 Linux 系统中,使用 fork()系统调用创建子进程,并通过 exit()函数终止进程。

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

在 Windows 中,利用CreateSemaphore()和 WaitForSingleObject()等函数进行操作;在Linux 中,通过 sem_init()、sem_wait()和 sem_post()等函数实现。

(二)内存管理1、内存分配与释放在 Windows 中,使用 HeapAlloc()和 HeapFree()函数进行动态内存的分配与释放。

在 Linux 中,使用 malloc()和 free()函数完成相同的操作。

2、内存页面置换算法实现了几种常见的内存页面置换算法,如先进先出(FIFO)算法、最近最少使用(LRU)算法等,并比较它们的性能。

(三)文件系统管理1、文件创建与读写在 Windows 和 Linux 系统中,分别使用相应的 API 和系统调用创建文件,并进行读写操作。

2、目录操作实现了目录的创建、删除、遍历等功能。

四、实验步骤(一)进程管理实验1、进程创建与终止(1)在 Windows 系统中,编写 C++程序,使用 CreateProcess()函数创建新进程,并通过 TerminateProcess()函数终止指定进程。

太原理工大学Linux实验报告

太原理工大学Linux实验报告

实验由本人当时亲自完成仅供参考,希望会帮助大家课程名称:LINUX系统及其编程实验项目:LINUX系统及其编程实验实验地点:逸夫楼304教室专业班级:嵌入式专业202学生姓名:氣宇軒昂学号:指导教师:2013年13 月13 日实验1、Linux操作基础和系统界面的熟悉一.实验目的通过本实验,可以掌握Linux的基本操作、Linux的文本编辑以及Linux系统界面的转换和使用,使学生对Linux有一个基本的了解。

二.操作步骤及要求:1、Linux的基本操作。

1)在超级用户下新建立一个用户,查看/etc/passwd文件中新用户添加完成后的情况。

(1)useradd student(2)passwd 12345(3)cat /etc/passwd2)用此用户名和口令登录系统,并用passwd命令修改口令,使用chfn命令输入用户的个人资料,并用finger查看该用户的详细资料。

(1)passwd student(2)chfn student(3)finger student3)用who命令查看当前登录在系统中的用户列表、登录终端和登录时间以及系统中的用户总数。

2、熟悉Linux操作系统vi编辑器的使用。

1)首先使用vi编辑器编辑一个C语言源程序hello.c,程序的功能是接受用户输入的姓名,然后在屏幕上输出一条语句“Welcome 姓名”。

#include <stdio.h>Main(){char name[20];printf(“Please input your name:”);scanf(“%s”,name);printf(“Welcome %s!\n”,name);reture 0;}2)对上述的hello.c文件进行增、删、改操作。

(1)增加文字时用i命令。

(2)删除文字时用dd命令。

(3)修改文字时用x命令。

(4)使用命令“gcc –o hello hello.c”编译源程序,如果发现程序错误,则需要反复使用vi编辑器修改源程序文件并且在修改后重新编译。

操作系统实验报告实验3_1

操作系统实验报告实验3_1

操作系统实验报告实验3_1一、实验目的本次实验的主要目的是深入理解操作系统中进程管理的相关概念和原理,通过实际操作和观察,掌握进程的创建、调度、同步与互斥等关键机制,提高对操作系统内核工作原理的认知和实践能力。

二、实验环境本次实验在装有 Windows 10 操作系统的计算机上进行,使用了Visual Studio 2019 作为开发工具,编程语言为 C++。

三、实验内容与步骤(一)进程创建1、编写一个简单的 C++程序,使用系统调用创建一个新的进程。

2、在父进程和子进程中分别输出不同的信息,以区分它们的执行逻辑。

```cppinclude <iostream>include <windowsh>int main(){DWORD pid;HANDLE hProcess = CreateProcess(NULL, "childexe", NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pid);if (hProcess!= NULL) {std::cout <<"Parent process: Created child process with PID "<< pid << std::endl;WaitForSingleObject(hProcess, INFINITE);CloseHandle(hProcess);} else {std::cerr <<"Failed to create child process" << std::endl;return 1;}return 0;}```(二)进程调度1、设计一个多进程并发执行的程序,通过设置不同的优先级,观察操作系统对进程的调度情况。

2、记录每个进程的执行时间和等待时间,分析调度算法的效果。

```cppinclude <iostream>include <windowsh>DWORD WINAPI ProcessFunction(LPVOID lpParam) {int priority =(int)lpParam;DWORD start = GetTickCount();std::cout <<"Process with priority "<< priority <<"started" << std::endl;for (int i = 0; i < 100000000; i++){//执行一些计算操作}DWORD end = GetTickCount();DWORD executionTime = end start;std::cout <<"Process with priority "<< priority <<" ended Execution time: "<< executionTime <<" ms" << std::endl;return 0;}int main(){HANDLE hThread1, hThread2;int priority1 = 1, priority2 = 2;hThread1 = CreateThread(NULL, 0, ProcessFunction, &priority1, 0, NULL);hThread2 = CreateThread(NULL, 0, ProcessFunction, &priority2, 0, NULL);if (hThread1!= NULL && hThread2!= NULL) {SetThreadPriority(hThread1, THREAD_PRIORITY_LOWEST);SetThreadPriority(hThread2, THREAD_PRIORITY_NORMAL);WaitForSingleObject(hThread1, INFINITE);WaitForSingleObject(hThread2, INFINITE);CloseHandle(hThread1);CloseHandle(hThread2);} else {std::cerr <<"Failed to create threads" << std::endl;return 1;}return 0;}```(三)进程同步与互斥1、实现一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。

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

课程名称:操作系统B实验项目:操作系统实验实验地点:逸夫楼专业班级:软件14班学生姓名:学号:2014 指导教师:张辉2016年12 月 2 日目录............................................................ 错误!未定义书签。

实验一几种操作系统的界面 (3)一.目的和要求 (3)二.内容 (3)三.程序代码 (4)四.运行结果 (4)实验二进程调度程序设计 (5)一、目的和要求 (5)二、示例 (6)程序清单 (9)运行结果 (9)实验三存储管理程序设计 ............... 错误!未定义书签。

一、目的和要求.................................... 错误!未定义书签。

二、提示................................................ 错误!未定义书签。

三.流程图............................................ 错误!未定义书签。

程序代码................................................ 错误!未定义书签。

运行结果................................................ 错误!未定义书签。

实验感想.................................................... 错误!未定义书签。

参考资料.................................................... 错误!未定义书签。

实验一几种操作系统的界面一.目的和要求(一)目的8 在熟练使用机器的基础上,能了解各种操作命令和系统调用在系统中的大致工作过程。

也就是通过操作系统的外部特征,逐步深入到操作系统的内部实质内容中去。

(二)要求1.能熟练的在1—2种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的各种功能,主动而有效地使用计算机。

2.熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用二.内容在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的程序。

提示:可按下述步骤进行1.编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件;2.编译该源文件,建立相应的目标文件;3.编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误;4.连接目标文件,形成可执行文件;5.执行该文件,得到结果;6.打印输出源程序和运行结果;7.撤消本次实验中形成的所有文件。

三.程序代码#include"stdio.h"#include"iostream"using namespace std;void main(){int a;cin>>a;cout<<"怎么编写程序:"<<a<<endl;}四.运行结果1.2.Dos命令行。

1.按住Windows键+R输入notepad回车调出记事本。

2.编辑一个java程序选择另存为d:。

3.按住Windows键+R输入cmd回车。

4.进入Dos界面键入d:。

5.输入dir查看java文件,使用javac命令进行编辑实验二进程调度程序设计一、目的和要求(一)目的进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进程调度和各种调度算法的理解。

(二)要求1.设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用CPU的时间以及进程的状态等,且可按照调度算法的不同而增删。

2.调度程序应包含2—3种不同的调度算法,运行时可以任选一种,以利于各种方法的分析和比较。

3.系统应能显示或打印各进程状态和参数的变化情况,便于观察。

二、示例1.题目本程序可选用优先数法或简单轮转法对五个进程进行调度。

每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假定起始状态都是就绪状态W。

为了便于处理,程序中进程的运行时间以时间片为单位计算。

各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。

进程控制块结构如表2-1所示:表2-1 PCB进程控制块链结构如图2-1所示:RUN HEAD TAIL…图2-1 进程控制块链结构其中:RUN—当前运行进程指针;HEAD—进程就绪链链首指针;TAIL—进程就绪链链尾指针。

2. 算法与框图程序框图如图2-2所示。

图2-2 进程调度框图(1)优先数法。

进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。

每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3。

理由是该进程如果在一个时间片中完成不了,优先级应降低一级。

接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则,调度就绪链链首进程投入运行。

原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。

(2)简单轮转法。

进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。

进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数法的优先数记录项位置)。

每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。

程序清单#include<stdio.h>#include<stdlib.h>#define furthest5int algo;struct process/*PCB STRUCTURE*/{int id;int priority;int cputime;int alltime;char state;int next;}prochain[furthest-1];int procnum;int rand();int run,head,tail,j;int main()/*MAIN PROGRAM*/{agan:printf("type the algorithm is(1:RR, 2 : PRIO) :");scanf("%d",&algo);if(algo==2){printf("output of priority.\n");void init();void prisch();}else{if(algo==1){printf("output of round robin.\n");void init();void timesch();}else{printf("try again, please\n");goto agan;}}for(j=1;j<=40;j++){printf(" = ");}printf("\n\n");for(j=1;j<=40;j++){printf(" = ");}printf("\n\n");printf("system finished\n");}void print()/*PRINT THE RUNNING PROCESS,WAITING QUEUE AND PCB SEQUENCE LIST*/{int k,p;for(k=1;k<=40;k++)printf(" = ");printf("\nrunning proc.");printf("waiting queue.");printf("\n %d ",prochain[run].id);p=head;while(p!=0){printf(" % 5d",p);p=prochain[p].next;}printf("\n");for(k=1;k<=40;k++)printf(" = ");printf("\n");printf(" id");for(k=1;k<furthest+1;k++)printf(" % 5d",prochain[k].id);printf("\n");printf("priority");for(k=1;k<furthest+1;k++)printf(" % 5d",prochain[k].priority);printf("\n");printf("cputime");for(k=1;k<furthest+1;k++)printf(" % 5d",prochain[k].cputime);printf("\n");printf("alltime ");for(k=1;k<furthest+1;k++)printf("% 5d",prochain[k].alltime);printf("\n");printf("state");for(k=1;k<furthest+1;k++)printf(" % 5c",prochain[k].state);printf("\n");printf("next");for(k=1;k<furthest+1;k++)printf(" % 5d",prochain[k].next);printf("\n");}void insert(int q)/*INSERT A PROCESS*/{int p,s;p=head;s=prochain[head].next;while((prochain[q].priority<prochain[s].priority)&&(s!=0)){p=s;s=prochain[s].next;}prochain[p].next=q;prochain[q].next=s;}void insert2()/*PUT A PROCESS ONTO THE TAIL OF THE QUEUE*/{prochain[tail].next=run;tail=run;prochain[run].next=0;}void init()/*CREATE A WAITING QUEUE*/int i;head=0;if(alog ==2){for(i=1;i<furthest+1;i++){prochain[i].id=i;prochain[i].priority=(rand()+11)%41;prochain[i].cputime=0;prochain[i].alltime=(rand()+1)%7;prochain[i].state='W';prochain[i].next=0;if((prochain[i].priority<prochain[head].priority)&&(head!=0)) insert(prochain[i].id);else{prochain[i].next=head;head=prochain[i].id;}}}else{for(i=1;i<furthest+1;i++){prochain[i].id=i;prochain[i].priority=(rand()+1)%3+1;prochain[i].cputime=0;prochain[i].alltime=(rand()+1)%7;prochain[i].state='W';prochain[i].next=(i+1)%(furthest+1);}head=1;tail=furthest;prochain[furthest].next=0;}run=head;prochain[run].state='R';head=prochain[head].next;prochain[run].next=0;print();}void prisch()/*THE PROCESS WITH PRIO ALGORITHM*/while(run!=0){prochain[run].cputime+=1;prochain[run].priority-=3;prochain[run].alltime-=1;if(prochain[run].alltime==0){prochain[run].state='F';prochain[run].next=0;if(head!=0){run=head;prochain[run].state='R';head=prochain[head].next;}else{prochain[0].id=prochain[run].id;run=0;}}else{if((prochain[run].priority<prochain[head].priority)&&(head!=0)){prochain[run].state='W';insert(run);run=head;prochain[run].state='R';head=prochain[head].next;}}print();}}void timesch()/*THE PROCESS WITH RR ALRORITHM*/{while(run!=0){prochain[run].alltime-=1;prochain[run].cputime+=1;if(prochain[run].alltime==0){prochain[run].state='F';prochain[run].next=0;if(head!=0){run=head;prochain[run].state='R';head=prochain[head].next;}else{prochain[0].id=prochain[run].id;run=0;}}else{if((prochain[run].cputime==prochain[run].priority)&&(head!=0)){prochain[run].state='W';prochain[run].cputime=0;insert2();run=head;prochain[run].state='R';head=prochain[head].next;}}print();}}运行结果输入1输入2实验三存储管理程序设计一、目的和要求(一)目的存储管理的主要功能之一是合理地分配主存空间。

相关文档
最新文档