太原理工大学《操作系统B》实验报告

合集下载

《操作系统》实验报告

《操作系统》实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

《操作系统》实验报告

《操作系统》实验报告

一、实验目的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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统课程实验报告

操作系统课程实验报告

操作系统课程实验报告一、实验目的操作系统是计算机系统中最核心的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个方便、高效、安全的工作环境。

本实验的目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的常用命令和操作方法,提高解决实际问题的能力。

二、实验环境操作系统:Windows 10开发工具:Visual Studio Code三、实验内容1、进程管理观察进程的创建、终止和状态转换。

使用任务管理器查看系统中的进程信息,包括进程 ID、CPU 使用率、内存占用等。

通过编程实现创建和终止进程的功能。

2、内存管理了解内存的分配和回收机制。

使用 Windows 系统提供的性能监视器查看内存的使用情况。

编程实现简单的内存分配和释放算法。

3、文件系统管理熟悉文件和目录的操作,如创建、删除、复制、移动等。

研究文件的属性,如文件名、文件大小、创建时间等。

通过编程实现文件的读写操作。

4、设备管理认识设备的驱动程序和设备管理策略。

查看系统中的设备信息,如磁盘驱动器、打印机等。

模拟设备的中断处理过程。

四、实验步骤1、进程管理实验打开任务管理器,观察当前系统中正在运行的进程。

可以看到进程的名称、进程 ID、CPU 使用率、内存占用等信息。

使用 C++语言编写一个简单的程序,创建一个新的进程。

在程序中,使用`CreateProcess`函数来创建新进程,并设置进程的属性和参数。

编写另一个程序,用于终止指定的进程。

通过获取进程 ID,然后使用`TerminateProcess`函数来终止进程。

2、内存管理实验打开 Windows 性能监视器,选择“内存”选项卡,可以查看内存的使用情况,包括物理内存、虚拟内存、页面文件等的使用量和使用率。

编写一个 C 程序,使用动态内存分配函数(如`malloc`和`free`)来分配和释放内存。

在程序中,不断分配和释放一定大小的内存块,观察内存的使用情况和性能变化。

操作系统课程 实验报告(完整版)

操作系统课程 实验报告(完整版)

中南大学《操作系统》实验报告姓名:孙福星专业班级:软件 1006班学号:3902100610完成日期:2011.11.22进程调度与内存管理一、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。

当就续进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。

实验模拟实现处理机调度,以加深了解处理机调度的工作,并体会优先级和时间片轮转调度算法的具体实施方法。

帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。

二、实验要求1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1/要求运行时间-1要求运行时间=0时,撤销该进程3、重新排序,进行下轮调度。

4、可随时增加进程;5、规定道数,设置后备队列和挂起状态。

若内存中进程少于规定道数,可自动从后备队列调度一作业进入。

被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。

6、每次调度后,显示各进程状态。

7、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/空表目)8、结合以上实验,PCB增加为:{PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针}9、采用最先适应算法分配主存空间;10、进程完成后,回收主存,并与相邻空闲分区合并。

11、采用图形界面;三、实验内容选择一个调度算法,实现处理机调度。

1、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。

3、主存储器空间的分配和回收。

在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验原理该模拟系统采用java语言实现,要实现的功能有新建进程、进程调度、挂起进程、解挂进程、删除进程,道数和时间片大小可以由用户自己调整,有两种调度策略:按优先权调度和按时间片轮转调度。

每个进程可能有5种状态:新建(new)、就绪(ready)、运行(running)、阻塞(waiting)、挂起(suspend)。

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

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

本科实验报告课程名称:系统分析与设计实验项目:《系统分析与设计》实验实验地点:行逸楼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 实验项目:嵌入式系统B 实验地点:明向实验楼308 专业班级:班学号:201 学生姓名:指导教师:2016 年11 月 6 日实验一嵌入式虚拟开发环境的搭建以及内核编译一、实验目的和要求1.熟悉ARM虚拟平台Skyeye的搭建2.熟悉交叉编译开发环境的搭建3.熟悉编译ARM-Linux4.熟悉在Skyeye平台上仿真ARM-Linux5.拓展:尝试移植其他版本的Linux,并且在Skyeye上运行二、实验内容和原理本实验是通过在PC机上搭建嵌入式开发环境虚拟环境(Skyeye),熟悉嵌入式交叉编译开发环境以及ARM-Linux系统移植的主要步骤。

实验虚拟平台SMDK2410CPU三星S3C2410(ARM920T),核心频率为62.400MHz,I-Cache 16K,D-Cache 16K内存32MB,内存频率62.400MHz实验软件介绍SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”,SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行u CLinux以及u C/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。

SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU 指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。

由于SkyEye的目标不是验证硬件逻辑,而是协助开发,调试和学习系统软件,所以在实现上SkyEye 与真实的硬件环境相比还是有一定差别的。

编译ARM-Linux内核,熟悉ARM-Linux的移植过程。

编译成功后,同学们需要将ARM内核在SkyEye的ARM硬件模拟环境运行测试。

太原理工大学《操作系统B》实验报告

太原理工大学《操作系统B》实验报告

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;}
查看目录:dir
学生姓编名辑文本:edit
删除文件:del
专业班级 学号
实验成绩 实验日期
实验室名称
指导教师签名
太原理工大学学生实验报告
课程名称
操作系统 B
实验题目
进程调度程序设计
一、目的和要求
(一) 目的 进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求学生独立
地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验可使学生加深对进 程调度和各种调度算法的理解。
{
int i;
head=0;
if (algo==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=(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(); }

太原理工大学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. 理解操作系统的基本概念和功能。

2. 掌握操作系统的基本操作和命令。

3. 学习操作系统在计算机系统中的作用和重要性。

二、实验环境1. 操作系统:Windows 102. 软件环境:Visual Studio Code、Git三、实验内容1. 操作系统基本概念和功能2. 操作系统基本操作和命令3. 操作系统在计算机系统中的作用和重要性四、实验步骤1. 操作系统基本概念和功能(1)打开Visual Studio Code,创建一个新的Markdown文件,命名为“操作系统实验报告”。

(2)在Markdown文件中,按照以下结构撰写实验报告:- 实验目的- 实验环境- 实验内容- 实验步骤- 实验结果与分析- 实验总结(3)在实验报告中,详细介绍操作系统的基本概念和功能,包括:- 操作系统的定义- 操作系统的分类- 操作系统的功能- 操作系统的组成2. 操作系统基本操作和命令(1)打开Windows 10的命令提示符(cmd)。

(2)在cmd中,按照以下步骤进行操作:- 查看当前目录下的文件和文件夹- 创建一个新的文件夹- 删除一个文件夹- 创建一个新的文本文件- 修改文本文件的内容- 打印文本文件的内容(3)将操作步骤和结果记录在Markdown文件中。

3. 操作系统在计算机系统中的作用和重要性(1)分析操作系统在计算机系统中的作用:- 管理计算机硬件资源- 提供用户界面- 管理文件和目录- 管理应用程序(2)阐述操作系统在计算机系统中的重要性:- 提高计算机系统的运行效率- 确保计算机系统的稳定性- 提供安全保护- 便于用户使用计算机五、实验结果与分析1. 通过实验,了解了操作系统的基本概念和功能,掌握了操作系统的基本操作和命令。

2. 在实验过程中,学会了如何使用cmd进行基本操作,例如查看目录、创建文件夹、创建文件等。

3. 通过实验,认识到操作系统在计算机系统中的重要作用,为今后学习计算机专业知识打下了基础。

操作系统实验报告

操作系统实验报告

操作系统实验报告1. 实验目的本实验旨在通过设计和实现一个基本的多道批处理操作系统来加深对操作系统基本概念和原理的理解,并加强对操作系统进行实践的能力。

2. 实验环境本实验采用如下环境进行实验:•操作系统:Windows 10•编程语言:C3. 实验内容本实验实现了一个基本的多道批处理操作系统,主要包括以下内容:3.1 进程调度操作系统通过进程调度算法,根据进程的优先级和进程的执行状态来决定下一次运行的进程,从而合理利用和分配CPU资源。

本实验中我们采用了基本的抢占式调度算法,即优先级越高的进程将会获得更多的CPU时间。

3.2 进程管理操作系统管理着多个并发运行的进程,在系统的执行过程中需要对这些进程进行管理,如创建新进程、销毁进程、挂起进程等等。

本实验中我们实现了进程的创建和销毁功能,并可以通过调用相应系统调用来挂起和恢复进程。

3.3 内存管理操作系统需要管理系统中的内存空间,为各个进程分配所需的内存。

本实验中我们实现了基本的内存管理功能,可以为进程分配内存空间,并在进程结束时回收内存资源。

3.4 文件管理操作系统能够管理文件系统,在文件系统中进行文件的创建、读取、写入和删除等操作。

本实验中我们实现了文件管理功能,可以创建和删除文件,并实现了文件的读写操作。

4. 实验结论通过本次实验,我们深入学习了操作系统的基本原理和概念,并实践了设计和实现一个基本的多道批处理操作系统。

通过实验,我们掌握了进程调度、进程管理、内存管理和文件管理等基本功能的实现方法。

在实现的过程中,我们发现操作系统的设计与实现是非常复杂且需要考虑多种因素的。

通过本次实验,我们对操作系统的工作原理有了更加深入的理解,并提升了解决问题和编程能力。

5. 实验总结通过本次实验,我们进一步了解了操作系统的工作原理和基本功能,并通过设计和实现一个基本的多道批处理操作系统来加深对操作系统的理解。

在实验过程中,我们遇到了一些问题,如进程调度算法的选择、内存资源的分配等等。

操作系统实验报告

操作系统实验报告

操作系统实验报告一、实验目的本次操作系统实验的主要目的是深入了解操作系统的基本原理和功能,通过实际操作和观察,增强对进程管理、内存管理、文件系统等核心概念的理解和掌握。

同时,培养解决实际问题的能力,提高编程和调试技能,为今后学习和工作中更好地应用操作系统知识打下坚实的基础。

二、实验环境本次实验在_____操作系统环境下进行,使用的编程语言为_____,开发工具为_____。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。

同时,实现进程的正常终止和异常终止,了解进程终止时的资源回收机制。

2、进程调度算法模拟模拟实现先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)等进程调度算法。

通过对不同调度算法的模拟,分析其性能特点,如平均周转时间、平均等待时间等。

(二)内存管理实验1、分区存储管理实现固定分区和动态分区存储管理方式,观察内存的分配和回收过程,分析不同分区策略下的内存利用率和碎片情况。

2、页面置换算法模拟模拟实现先进先出(FIFO)、最近最少使用(LRU)、最佳置换(OPT)等页面置换算法。

通过对不同页面置换算法的模拟,分析其对缺页率的影响。

(三)文件系统实验1、文件的创建、删除与读写通过编程实现文件的创建、删除操作,并对文件进行读写操作,观察文件系统的工作过程。

2、文件目录结构的实现实现简单的文件目录结构,如单级目录、两级目录和树形目录结构,了解文件目录的组织和管理方式。

四、实验步骤(一)进程管理实验1、进程创建与终止(1)使用系统提供的进程创建函数创建新进程,并在新进程中执行特定的任务。

(2)在父进程中等待子进程的结束,并获取子进程的返回状态。

(3)通过设置不同的条件,实现进程的正常终止和异常终止,并观察操作系统对终止进程的处理。

2、进程调度算法模拟(1)设计数据结构来表示进程的信息,如进程 ID、到达时间、服务时间等。

操作系统实验报告

操作系统实验报告

操作系统实验报告一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理和关键机制,包括进程管理、内存管理、文件系统以及设备管理等方面。

同时,培养我们解决实际问题的能力,提高对操作系统相关知识的综合运用水平。

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

三、实验内容及步骤(一)进程管理实验1、进程创建与终止在 Windows 系统中,使用 C++语言编写程序,通过调用系统 API函数创建新的进程,并观察进程的创建和终止过程。

在 Linux 系统中,使用 C 语言编写程序,通过 fork()系统调用创建子进程,并通过 wait()函数等待子进程的终止。

2、进程调度观察Windows 和Linux 系统中进程的调度策略,包括时间片轮转、优先级调度等。

通过编写程序模拟进程的执行,设置不同的优先级和执行时间,观察系统的调度效果。

(二)内存管理实验1、内存分配与释放在 Windows 系统中,使用 C++语言的 new 和 delete 操作符进行内存的动态分配和释放,并观察内存使用情况。

在 Linux 系统中,使用 C 语言的 malloc()和 free()函数进行内存的分配和释放,通过查看系统的内存使用信息来验证内存管理的效果。

2、虚拟内存管理研究 Windows 和 Linux 系统中的虚拟内存机制,包括页表、地址转换等。

通过编写程序访问虚拟内存地址,观察系统的处理方式和内存映射情况。

(三)文件系统实验1、文件操作在 Windows 和 Linux 系统中,使用编程语言对文件进行创建、读取、写入、删除等操作。

观察文件的属性、权限设置以及文件在磁盘上的存储方式。

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

研究目录结构和文件路径的表示方法。

操作系统实验报告通用(两篇)2024

操作系统实验报告通用(两篇)2024

操作系统实验报告通用引言:操作系统是计算机系统中的一个重要组成部分,它主要负责管理计算机硬件和软件资源,并为用户提供一个友好的界面。

操作系统实验是计算机科学与技术专业的一门重要实践课程,通过实际操作和实验验证,可以深入理解操作系统的工作原理和实现方法。

本文将以《操作系统实验报告通用》为题,从引言概述、正文内容、总结等方面详细阐述操作系统实验的一般结构和内容。

概述:操作系统实验是计算机科学与技术专业的一门实践课程,通过实际操作和实验验证来了解操作系统的工作原理和实现方法。

在操作系统实验中,学生将学习操作系统的基本概念、运行机制和实现技术,并通过实验验证来加深对操作系统的理解。

操作系统实验通常涉及到操作系统的各个模块,如进程管理、文件系统、内存管理等,并通过实际操作来了解操作系统的具体实现。

操作系统实验通常包括实验报告、实验代码以及实验总结等部分。

正文内容:1. 实验背景和目的1.1 实验背景在操作系统实验中,学生将学习操作系统的基本概念、运行机制和实现技术,通过实验来了解操作系统的具体实现和应用。

1.2 实验目的操作系统实验的主要目的是通过实际操作和实验验证来加深对操作系统的理解,并培养学生的动手能力和解决问题的能力。

2. 实验内容2.1 实验一:进程管理进程管理是操作系统中的核心模块之一,它负责管理和调度系统中的进程。

在这个实验中,学生需实现一个简单的进程管理器,并能够模拟多个进程的并发执行和互斥访问。

2.2 实验二:文件系统文件系统是操作系统中的另一个重要模块,它负责管理和组织计算机中的文件和目录。

在这个实验中,学生需实现一个简单的文件系统,并能够进行文件的创建、打开、读写和关闭操作。

2.3 实验三:内存管理内存管理是操作系统中的关键模块之一,它负责管理系统中的内存资源。

在这个实验中,学生需实现一个简单的内存管理器,并能够进行内存的分配和释放操作。

2.4 实验四:设备管理设备管理是操作系统中的另一个重要模块,它负责管理和调度计算机中的各种设备。

操作系统课程实验报告

操作系统课程实验报告

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

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

二、实验环境本次实验使用的操作系统为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()函数终止指定进程。

《操作系统》课程综合性的实验报告

《操作系统》课程综合性的实验报告

《操作系统》课程综合性的实验报告一、实验目的本次《操作系统》课程的综合性实验旨在通过实际操作和实践,深入理解操作系统的基本原理、功能和运行机制。

具体目标包括熟悉操作系统的进程管理、内存管理、文件系统管理以及设备管理等核心模块,提高对操作系统的整体认知和应用能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10 专业版开发工具:Visual Studio 2019编程语言:C++三、实验内容及步骤(一)进程管理实验1、创建多个进程使用 C++中的多线程库,创建多个进程,并观察它们的并发执行情况。

通过设置不同的优先级和资源需求,研究进程调度算法对系统性能的影响。

2、进程同步与互斥实现生产者消费者问题,使用信号量、互斥锁等机制来保证进程之间的同步和互斥。

观察在不同并发情况下,数据的正确性和系统的稳定性。

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

通过随机生成内存请求,观察不同算法下内存的利用率和碎片情况。

2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小和页表结构,观察页面置换算法(如 FIFO、LRU 等)对内存访问性能的影响。

(三)文件系统管理实验1、文件操作创建、读取、写入和删除文件,了解文件系统的基本操作和数据结构。

2、文件目录管理实现文件目录的创建、遍历和搜索功能,研究目录结构对文件访问效率的影响。

(四)设备管理实验1、设备驱动程序模拟编写简单的设备驱动程序,模拟设备的输入输出操作,如键盘输入和屏幕输出。

2、设备分配与调度研究设备分配算法,如先来先服务和优先级算法,观察设备的使用情况和系统的响应时间。

四、实验结果与分析(一)进程管理实验结果分析1、在创建多个进程的实验中,发现高优先级进程能够更快地获得CPU 资源,系统响应时间更短。

但过度提高某些进程的优先级可能导致其他进程饥饿。

2、对于进程同步与互斥问题,正确使用信号量和互斥锁能够有效地保证数据的一致性和系统的稳定性。

操作系统实验报告模板

操作系统实验报告模板

操作系统实验报告模板一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的相关知识和技能,提高对操作系统的认识和应用能力。

二、实验环境1、操作系统:_____(具体操作系统名称及版本)2、硬件环境:_____(列出计算机的主要硬件配置,如 CPU、内存、硬盘等)3、开发工具:_____(如编程语言、编译器、调试工具等)三、实验内容(一)进程管理实验1、进程创建与撤销编写程序实现创建多个进程,并观察进程的创建和撤销过程。

分析进程创建和撤销时操作系统所做的工作。

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

观察不同同步与互斥机制的效果,分析其优缺点。

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

对不同算法进行性能测试和比较,分析其适用场景。

2、虚拟内存管理配置操作系统的虚拟内存参数,观察虚拟内存的使用情况。

分析虚拟内存对系统性能的影响。

(三)文件系统实验1、文件操作编写程序进行文件的创建、读写、删除等操作。

观察文件系统对文件操作的处理过程,了解文件的存储结构。

2、目录管理实现目录的创建、删除、遍历等功能。

分析目录结构对文件查找和管理的影响。

四、实验步骤(一)进程管理实验步骤1、进程创建与撤销编写 C 或 C++程序,使用系统调用创建多个子进程。

在子进程中执行特定的任务,父进程等待子进程结束。

观察进程的创建和撤销过程,通过系统提供的工具查看进程状态。

2、进程同步与互斥使用信号量或互斥锁机制,编写多线程或多进程程序。

在线程或进程之间共享资源,通过同步与互斥机制保证资源的正确访问。

运行程序,观察同步与互斥的效果,分析程序的输出结果。

(二)内存管理实验步骤1、内存分配与回收选择一种编程语言,实现不同的内存分配算法。

生成大量的内存请求和释放操作,统计每种算法的分配时间和内存利用率。

分析实验数据,比较不同算法的性能。

《操作系统》课程综合性的实验报告

《操作系统》课程综合性的实验报告

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

本次《操作系统》课程综合性实验的目的在于通过实际操作和实践,深入理解操作系统的工作原理和主要功能,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 2004),实验所使用的计算机配置为:Intel Core i7 处理器,16GB 内存,512GB 固态硬盘。

实验所需的软件工具包括:VMware Workstation 虚拟机软件、GCC 编译器、GDB 调试器等。

三、实验内容1、进程管理进程的创建和终止进程的并发执行和同步进程调度算法的实现和比较2、内存管理内存分配和回收算法虚拟内存的实现和管理3、文件系统文件的创建、读写和删除文件目录的操作和管理文件系统的性能优化4、设备管理设备驱动程序的编写和安装设备的分配和回收I/O 控制方式的实现和比较四、实验步骤1、进程管理实验使用 C 语言编写程序,实现进程的创建和终止功能。

通过 fork()系统调用创建子进程,并在子进程中执行特定的任务,然后使用exit()系统调用终止子进程。

利用信号量机制实现进程的同步。

创建两个进程,一个进程负责生产数据,另一个进程负责消费数据,通过信号量来控制生产和消费的同步。

实现先来先服务(FCFS)、短作业优先(SJF)和时间片轮转(RR)三种进程调度算法,并对不同算法的性能进行比较。

通过模拟多个进程的到达时间、服务时间等参数,计算每种算法下的平均周转时间和平均等待时间。

2、内存管理实验实现首次适应(First Fit)、最佳适应(Best Fit)和最坏适应(Worst Fit)三种内存分配算法。

编写程序模拟内存的分配和回收过程,观察不同算法在内存利用率和分配效率方面的表现。

利用分页机制实现虚拟内存。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统 B》 实验报告
学院:现代科技学院 专业:计算机科学与技术 姓名: 班级:计算机 学号: 指导教师: 时间: 年 月
学院名称 学生姓名 课程名称
太原理工大学学生实验报告
现代科技学院 操作系统 B
专业班级 学号
实验题目
实验成绩 实验日期 几种操作系统的界面
一、目的和要求
(一)目的 本实验的目的是使学生熟悉 1—2 种操作系统的界面,在熟练使用机器的基础上,能了解各种 操作命令和系统调用在系统中的大致工作过程。也就是通过操作系统的外部特征,逐步深入到操作 系统的内部实质内容中去。 (二)要求 1. 能熟练的在 1—2 种操作系统的环境下工作,学会使用各种命令,熟悉系统提供的各种功 能,主动而有效地使用计算机。
(2)简单轮转法。 进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。进程 每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数 法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加 1,然后比较占用 处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进 程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的 时间片。
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);
(二) 要求 1. 设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB)表示, 进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占用 CPU 的时间以 及进程的状态等,且可按照调度算法的不同而增删。 2. 调度程序应包含 2—3 种不同的调度算法,运行时可以任选一种,以利于各种方法的分析 和比较。 3. 系统应能显示或打印各进程状态和参数的变化情况,便于观察。
char state;
int next; }prochain[furthest-1];
int procnum;
int rand();
int algo;
int run,head,tail,j;
main() /*MAIN PROGRAM*/ { agan: printf("type the algorithm is (1:RR,2:PRIO):"); scanf("%d",&algo); if (algo==2) { printf("output of priority.\n"); init(); prisch();} else { if (algo==1) { printf("output of round robin.\n"); init(); timesch();} else { printf("try again,please\n"); goto agan;} } for (j=1;j<=40;j++)
2. 算法与框图 程序框图如图 2-2 所示。
priority
生成并按优先数大小 排列进程控制块链 链首进程投入运行
开始 输入调度算法 alog alog=priority/round robin?
round robin
生成并按进入次序 排列进程控制块链 链首进程投入运行
时间片到,进程时间片
数减 1,优先数减 3 是
是 撤消该进程
从链首取一个 进程投入运行
否 进程队列空?
是 结束
(1)优先数法。 进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。每过一个 时间片,运行进程所需运行的时间片数减 1,说明它已运行了一个时间片,优先数也减 3。理由是
该进程如果在一个时间片中完成不了,优先级应降低一级。接着比较现行进程和就绪链链首进程的 优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则,调度就绪链链首进程投入 运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运 行完各自的时间片数。
printf("操作系统实验报告!\n"); return 0; } /*--------->over*/
DOS 命令截图:
1.cpp 文件截图:
由于 MS-DOS 中不能显示中文,所以图中显示为乱码,此处为:操作系统实验报告! 2. DEV-CPP 编译、连接并运行程序。
运行截图: 3. 用 DOS 命令删除程序清单 1.cpp 与执行文件 1.exe 文件。
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
二、实验内容
(一) 实验原理
1. 题目 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行
R(run)、就绪 W(wait)和完成 F(finish)三种状态之一,并假定起始状态都是就绪状态 W。
为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片
数、以及进程需要运行的时间片数,均由伪随机数发生器产生。
{ printf("="); } printf("\n\n"); for (j=1;j<=40;j++) { printf("="); } printf("\n\n"); printf("system finished\n"); getch();}
print() /*PRINT THE RUNNING PROCESS,WAITING
三、总结
本次实验在 WINDOWS XP 操作系统下完成,考察了对 WINDOWS XP 操作系统的基本操作和 DOS 命 令的使用,通过编译工具学会基本的编译、连接操作。
本次实验中使用到的 DOS 命令与工具:
操作系统:WINDOWS XP
C 语言编译工具:DEV-CPP
DOS 命令:
学院名称
现代科技学院
进程控制块结构如表 2-1 所示:
表 2-1
PCB
进程标识符
链指针
优先数/轮转时间片数
占用 CPU 时间片数
进程所需时间片数
进程状态
进程控制块链结构如图 2-1 所示:
RUN
HEAD
1
3


R
W
TAIL
5
2
0


W
W
图 2-1 进程控制块链结构
其中:RUN—当前运行进程指针; HEAD—进程就绪链链首指针; TAIL—进程就绪链链尾指针。
");
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);
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(); }
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;
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;}
2. 熟悉系统实用程序的调用方法和各种系统调用模块的功能和作用
二、内容
(一)实验步骤 在某种操作系统的环境下建立、修改、运行、打印源程序和结果,最后撤消一个完整的程序。 提示:可按下述步骤进行 1. 编写一个完整的源程序,通过编辑命令送入机器,建立源程序文件; 2. 编译该源文件,建立相应的目标文件; 3. 编译有错时,再用编辑命令修改源文件,消除全部词法和语法错误; 4. 连接目标文件,形成可执行文件; 5. 执行该文件,得到结果; 6. 打印输出源程序和运行结果; 7. 撤消本次实验中形成的所有文件。 (二)实验内容 1. 利用 DOS 命令建立一个 1.cpp 文件,程序清单如下: /*--------->1.cpp */ #include <stdio.h> #include <conio.h> int main() {
相关文档
最新文档