东北大学秦皇岛分校操作系统课设报告
《操作系统》课内实验报告
《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
东北大学操作系统实验报告
{
public:
char name;
string status;
};
vector<Pro> ru,re,bl; //ru->running,re->ready,bl->blocked
//function declaration
int helloUI();
re.push_back(process);
else if(sta == "b")
bl.push_back(process);
else
cout << "Error!!" << endl;
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
cout << endl;
}
else
cout << "Error in ruTObl2." << endl;
showPCB();
return 0;
}
int blTOre()
{
if(!bl.empty()) //blockedQueue is not empty.
{
re.push_back(bl.front());
bl.erase(bl.begin());
{
int act; //choose action
helloUI();
cout << "Please initialize the process." << endl;
操作系统课程实验报告
操作系统课程实验报告一、实验目的操作系统是计算机系统中最核心的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个方便、高效、安全的工作环境。
本实验的目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的常用命令和操作方法,提高解决实际问题的能力。
二、实验环境操作系统:Windows 10开发工具:Visual Studio Code三、实验内容1、进程管理观察进程的创建、终止和状态转换。
使用任务管理器查看系统中的进程信息,包括进程 ID、CPU 使用率、内存占用等。
通过编程实现创建和终止进程的功能。
2、内存管理了解内存的分配和回收机制。
使用 Windows 系统提供的性能监视器查看内存的使用情况。
编程实现简单的内存分配和释放算法。
3、文件系统管理熟悉文件和目录的操作,如创建、删除、复制、移动等。
研究文件的属性,如文件名、文件大小、创建时间等。
通过编程实现文件的读写操作。
4、设备管理认识设备的驱动程序和设备管理策略。
查看系统中的设备信息,如磁盘驱动器、打印机等。
模拟设备的中断处理过程。
四、实验步骤1、进程管理实验打开任务管理器,观察当前系统中正在运行的进程。
可以看到进程的名称、进程 ID、CPU 使用率、内存占用等信息。
使用 C++语言编写一个简单的程序,创建一个新的进程。
在程序中,使用`CreateProcess`函数来创建新进程,并设置进程的属性和参数。
编写另一个程序,用于终止指定的进程。
通过获取进程 ID,然后使用`TerminateProcess`函数来终止进程。
2、内存管理实验打开 Windows 性能监视器,选择“内存”选项卡,可以查看内存的使用情况,包括物理内存、虚拟内存、页面文件等的使用量和使用率。
编写一个 C 程序,使用动态内存分配函数(如`malloc`和`free`)来分配和释放内存。
在程序中,不断分配和释放一定大小的内存块,观察内存的使用情况和性能变化。
操作系统课程设计报告
操作系统课程设计报告1. 引言操作系统是计算机系统中最核心的软件之一,它负责管理和优化计算机资源的分配和调度,为用户和应用程序提供一个可靠、高效的执行环境。
在操作系统课程设计中,我们通过设计一个简单的操作系统,深入理解操作系统的原理和功能,提升对操作系统的理解和实践能力。
本报告将详细介绍我们小组在操作系统课程设计过程中所完成的工作和实现的目标。
2. 设计目标在本次操作系统课程设计中,我们的设计目标包括:•实现一个基本的中断处理、进程调度和内存管理机制;•设计一个简单的文件系统;•确保操作系统的稳定性和可靠性;•实现用户命令解析和执行功能。
3. 系统架构我们的操作系统设计采用了经典的分层结构,主要由硬件抽象层、内核和用户接口层组成。
1.硬件抽象层:负责与硬件进行交互,提供基本的底层硬件接口,如处理器管理、中断处理、设备控制等。
2.内核:实现操作系统的核心功能,包括进程管理、内存管理、文件系统管理等。
这一层是操作系统的核心,负责管理和调度系统资源。
3.用户接口层:为用户提供简单友好的界面,解析用户输入的命令并调用内核功能进行处理。
用户可以通过命令行或图形界面与操作系统进行交互。
4. 功能实现4.1 中断处理中断是操作系统与外部设备通信的重要机制,我们的操作系统设计中实现了基本的中断处理功能。
通过在硬件抽象层中捕获和处理硬件的中断信号,内核可以对中断进行相应的处理,保证系统的响应能力和稳定性。
4.2 进程调度进程调度是操作系统中的重要任务之一,它决定了系统如何分配和调度上下文切换。
我们的操作系统设计中实现了一个简单的进程调度算法,通过时间片轮转算法和优先级调度算法来管理多个进程的执行顺序,以提高系统的吞吐量和响应性能。
4.3 内存管理内存管理是操作系统中必不可少的功能,它负责对系统内存的分配和回收。
我们的操作系统设计中实现了基本的内存管理功能,包括内存分区、内存空闲管理和地址映射等。
通过合理的内存管理,可以提高系统的内存利用率和性能。
操作系统实验报告
命令名
功能
Ps
显示进程状态
Pstree
显示进程树(display a tree of processes)
Kill
给进程发信号
Killhall
按名给进程发信号(kill processes by name)
Skill,snice
报告进程状态(report process status)
(set and get scheduling algorithm/parameters)
sched_rr_get_interval
查看指定进程的SCHED_RR值(get the SCHED_RR interval for the named process)
f. Linux/UNIX进程管理类系统调用(4):与进程跟踪/进程运行时间有关的系统调用(2个)
设置静态优先级范围(get static priority range)
sched_setparam,sched_getparam
设置/查看调度参数
(set and get scheduling parameters)
sched_setscheduler,sched_getscheduler
设置/查看调度算法和参数
7,进程状态START。
8,队列指针NEXT,用来将PCB排成队列。
(3)优先数改变的原则:
1,进程在就绪队列中呆一个时间片,优先数加1。
<程序3>
#include<stdio.h>
main()
{
int p1,p2,i;
while((pl = fork ( ) ) ==-1);
东北大学操作系统实验一报告
操作系统实验报告班级物联网1302班学号姓名实验一:熟悉Linux系统目的:①熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。
●启动退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)…●C语言编辑、编译内容及要求:●熟练掌握Linux基本文件命令;●掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程;●认真做好预习,书写预习报告;●实验完成后要认真总结、完成实验报告login:用户登录系统使用login命令可以允许用户登录系统。
如果没有指定参数,登录时提示输入用户名。
如果该用户不是root,且如果/etc/nologin文件存在,这个文件的内容被显示到屏幕上,登录被终止。
命令语法:Login [选项][用户名]exit:退出系统使用exit命令可以退出shell命令语法:exit[选项]ls:列出目录和文件信息使用ls命令,对于目录而言将列出其中的所有的子目录与文件信息,对于文件而言将输出命令语法:ls[选项][目录|文件]ls命令部分选项含义cp:复制文件和目录使用cp命令可以复制文件vhe目录到其他目录中。
如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有的文件或目录复制到该目录中。
若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
命令语法:cp [选项][源文件|目录][目标文件|目录]cp命令部分选项含义命令格式:mv [选项] 源文件或目录目标文件或目录.mv命令部分选项含义命令格式:rm [选项] 文件…rm命令部分选项含义能是当前目录中已有的目录命令格式:mkdir [选项] 目录..mkdir命令部分选项含义命令格式:cd [目录名]。
东北大学秦皇岛分校操作系统实验4110314董家华-代码原创(DOC)
如果所编制的程序由几十个模块组成,修改其中任一模块时都要将这几十个模块重新连接,则此时make可以大大提高工作效率,减少很多重复性劳动。
6.SHELL
Linux/UNIX的命令解释器俗称SHELL,具有以下两个功能:
(1)显示命令提示符,接收、解释、启动执行命令行。
(2)解释执行批处理文件(Shell script),提供很多内部命令和大量命令组合功能。
进程跟踪调试和进程运行时间
2
Ptrace( ), times
其他与进程/CPU管理相关的系统调用
6
Personality, vm86, prctl, acct, idle, vm86old
c.Linux/UNIX进程和CPU管理类系统调用(1):
与进程建撤和状态有关的系统调用(13个)
名/格式/参数
Linux开始引入窗口工作方式。UNIX和Linux下的窗口平台都基于X-Windows,有KDE窗口平台,GNOME窗口平台、SUN OpenWindows窗口平台等。
用户登录后就进入终端工作方式,用户可以在终端工作方式下键入“starts”命令进入窗口工作方式。进入窗口工作方式后,可以按Ctrl+Alt+F2进入终端工作方式,之后可按Ctrl+Alt+F7再从终端工作方式回到窗口工作方式。
一,实验目的:
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)加深对进程管理概念的理解。
(4)分析进程的创建过程。
二,实验内容:
(1)阅读Linux的fork.c源码文件。
(2)a. Linux/UNIX的进程和CPU管理类命令:(8个)
2123509-操作系统课程设计报告
东北大学秦皇岛分校计算机与通信工程学院操作系统课程设计设计题目OPT的模拟实现进程管理器专业名称计算机科学与技术班级学号2123509学生姓名徐泽建指导教师管莹设计时间2015.01 . 04—2015.01.15课程设计任务书专业:计算机科学与技术学号:2123509学生姓名(签名):实验一:必做题设计题目:一、设计实验条件808实验室二、设计任务及要求1.基于空闲分区表的最佳适应算法地模拟实现;2.建立一张类似课本122页的分区使用表;3.参考课本125页分配流程,采用最佳适应算法,为其在分区使用表中分配内存;4.程序要能够在图形界面下形象显示作业,及表中信息;5.最后,对最佳适应算法和其它算法做出比较分析。
三、设计报告的内容1.设计题目与设计任务(设计任务书)(1)、设计可用的内存空闲空间,并能动态输入用户作业所需的内存大小。
(2)、编程模拟各种分配算法的实施过程,按照老师要求,我采用“最佳适应算法发”来分配内存,而在发生内存空间不足时,采用最近最远使用算法(LRU)回收内存。
(3)、实现界面功能,能与用户进行交互,在用户界面建立两张表,一张表示空闲分区表,一张表示内存分配表,在软件界面,用户可以手动添加作业和删除作业。
2.前言(绪论)(设计的目的、意义等)最佳适应算法是一种理论上的算法,它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。
为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留大的空闲区,但造成许多小的空闲区。
通过该课题进一步加深对可变分区存储机制的理解。
加深对存储器动态分区分配算法的认识。
掌握“最佳适应算法发”的内存分配过程。
掌握内存的回收策略。
3.设计主体(各部分设计内容、分析、结论等)(1)最佳适应算法(best fit)所谓“最佳”是指每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。
《操作系统》课程实验报告
《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。
二、实验环境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)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。
学生选课管理系统课程设计报告
学生选课管理系统东北大学秦皇岛分校姓名:刘国锋学号:3090908指导教师:朱世敏日期:2011 年06 月19 日目录目录 0一、总体说明 (2)二、功能模块结构图 (3)三、变量说明(公有、私有、本地变量 (4)四、数据库、表的设计及描述 (4)1.数据库: (4)2.(1)管理员表: (5)(2)学生基本信息表: (5)(3)课程表: (6)(4)学生成绩表: (7)(5)密码表: (7)五、操作说明 (8)六、各模块代码及结果图 (9)封面: (9)登录: (10)主界面: (11)可选课程信息表单: (12)学生选课记录查询 (12)记录修改下的表单: (13)学生选课信息: (13)课程信息修改表单: (14)报表: (14)密码修改: (16)菜单: (17)七、课程设计总结: (19)一、总体说明总体功能介绍:1、在学生选课信息管理系统中,先打开封面,两秒后自动关闭并跳转至登录界面;2、首先输入用户名和密码等登录信息,点击确定登录进入主界面,点击退出登录,退出系统;3、登陆成功,进入主界面以后,有以下模块“数据查询”、“记录修改”、“报表”、“密码安全”。
在“数据查询”中,包含“课程查询”;在“记录修改”中包含“课程和学生选课修改”和“学生选课”;在“报表”中包含以下两项子菜单:“学生选课情况”,“可选课程”;在“密码安全”中有“密码修改”子菜单。
4、进入主界面1、在“数据查询”下的“课程查询”在其中输入中输入相应课程名称可以显示已将选课的内容,早课程信息上边的框中输入相应的课程名称可以查询该门课的课程信息;也可以在“数据查询”中的“选课记录查询”中可以通过按照“学号”对学生的选课记录进行统计;2、在“记录修改”的下拉菜单中的“课程和学生选课修改”中可以对课程信息进行修改,主要包括添加、删除、和退出等;在该下拉菜单下的“学生选课”子菜单中可以添加选课信息和删除选课信息;3、“报表”的下拉菜单中有“学生选课情况”和“课程信息”的报表,通过这两张报表可以查看和打印学生的选课情况,以及所有的课程信息内容,并可以按照学号、班级、系别显示学生的选课情况;4、在“密码安全”下拉菜单中有“密码修改”通过“密码修改”可以使原用户还可通过密码修改来不定期修改自己的原始密码,保证了数据的真实性和安全性。
操作系统毕业课程设计报告
(此文档为word格式,下载后您可任意编辑修改!)东北大学秦皇岛分校计算机与通信工程学院操作系统课程设计设计题目高优先权调度算法的模拟实现专业名称计算机科学与技术班级学号学生姓名指导教师设计时间2015.1.5—2015.1.15课程设计任务书专业:计算机科学与技术学号:学生姓名(签名):设计题目:高优先权调度算法的模拟实现一、设计实验条件808实验室操作系统:WindowsLinux系统硬件:PC机软件:Cfree编程语言:C语言二、设计任务及要求1.高优先权调度算法的模拟实现2.Linux内核分析三、设计报告的内容1.设计题目与设计任务(设计任务书)(1)题目:高优先权调度算法的模拟实现设计任务:根据课本相关章节,提供若干模拟作进程,分别采用占式和非抢占式优先权调度算法对进程进行调度,对就绪队列中的进程进行调度执行,每个模拟进程执行时打印自身的进程名、优先权、服务时间等信息,最后要打印出所调度作业的平均周转时间和平均带权周转时间。
和其他调度算法相比较,分析该调度算法的优缺点。
(2)题目:Linux内核分析设计任务:对Linux操作系统的处理机管理、存储器管理、文件管理、设备管理中一个或几个功能进行较全面系统分析,分析内容包括设计实现原理、典型算法、主要实现函数,分析内容写入综述报告,报告内容还要包括函数间调用关系图、功能模块图、系统主要流程图。
2.前言(绪论)(设计的目的、意义等)通过课程设计,一是要通过对进程调度算法的设计,深入理解进程调度的原理。
加深对高优先权调度算法的理解。
实现已经学过的调度算法,对其有更深入的认识,能真切体会到每种算法的特点及与其他调度算法的区别。
二是通过linux 内核进行分析,对linux内核有一个整体的了解。
重点分析的内存管理主要包括虚拟内存、磁盘缓存的相关结构体系及其存储方式等等。
锻炼我们综合运用知识的能力。
3.设计主体(各部分设计内容、分析、结论等)【高优先权调度算法的模拟实现】源程序:#include<iostream>#include<cstring>#include<stdio.(){int flag=0,type;cout<<"选择调度类型(1.抢占式调度 2.非抢占式调度):";cin>>type;init();while(1){flag=0;display();for(int i=0;i<num;i++){if(pro[i].STATE!=RUNOUT){flag=1;break;}}if(!flag) break;times++;if(type==1){ change();}elseno_change();cout<<endl;getchar();}cout<<endl<<endl;cout<<"All processes _area_struct描述虚存段的属性,vm_area_struct 主要包括以下几项:(1)vma在虚存中的起始地址和终止地址。
东秦操作系统实验报告总
计算机操作系统实验报告学号:姓名:提交日期:2014.12.14成绩:东北大学秦皇岛分校【实验题目】1熟悉Linux/UNIX操作系统【实验目的】1.熟悉Linux/UNIX操作系统的基本操作;2.掌握常用基本命令和系统调用。
【实验内容】1.学会开机、退出、登陆与关机;2.了解窗口工作方式与中断工作方式;3.熟悉常用命令和系统调用列表;4.熟悉外存目录树结构;5.熟悉程序开发工具:编辑、编译、连接、调试;6.学会获得帮助信息。
【实验结果】【实验题目】2进程的创建和控制【实验目的】1.加深对进程概念的理解,明确进程和程序的区别;2.进一步认识并发执行的实质;3.加深对进程管理概念的理解;4.分析进程的创建过程。
【实验内容】1.进程的创建;2.进程的控制。
【实验结果】【实验题目】3实现进程的软中断通信【实验目的】1.掌握基本的软中断通信方法;2.利用系统调用signal( ) 捕捉中断信号;3.理解Linux系统中的进程通信的基本原理。
【实验内容】1.编制一段程序,使其实现进程的软中断通信;要求:使用系统调用fork( )创建两个子进程,再用系统调用signal ( ) 让父进程捕捉键盘上来的中断信号(即按^C键);当捕捉到中断信号后,父进程用系统调用Kill ( ) 向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child Processll is Killed by Parent!Child Processl2 is Killed by Parent!父进程等待两个子进程终止后,输出如下的信息后终止:Parent Process is Killed!2.在上面的程序中增加语句signal ( SIGINT,SIG_IGN ) 和signal (SIGQUIT,SIG_IGN),观察执行结果,并分析原因。
这里,signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)分别为忽略Del键信号以及忽略中断信号。
操作系统课程实验报告
操作系统课程实验报告一、实验目的操作系统是计算机系统中最为关键的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个良好的工作环境。
通过操作系统课程实验,旨在深入理解操作系统的基本原理和功能,提高对操作系统的实际操作能力和问题解决能力。
二、实验环境本次实验使用的操作系统为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、对于进程同步与互斥问题,正确使用信号量和互斥锁能够有效地保证数据的一致性和系统的稳定性。
课表查询系统报告
VFP综合程序设计报告秦皇岛分校经济系课表查询系统东北大学秦皇岛分校姓名:学号:指导教师:日期:2012 年06 月16 日一、总体说明总体功能介绍1.我们制作的是一个经济系课表查询系统,可以按照班级,课程,时间进行查询。
并且可以将查询结果打印,并且能够进行数据的录入及修改。
2.用户首先进入“欢迎使用经济系课表查询系统”首页,之后页面自动跳转到用户登录界面,用户须输帐号,密码方可进入查询系统.3.在查询系统中有三个菜单,分别为“开始”“编辑”“查询”。
分别对应着信息的输入,修改和课程的查询。
其中查询可分为按班级查询,按时间查询,和按课程查询。
4.按班级查询可以通过选择所要查的班级进行查询不同时刻不同教室的相关信息,按照时间查询用叶框的方式进行查询,按课程查询通过选择所要查的课程进行查询。
同时可以将查询结果打印出来。
5.通过系统维护可以对教室课表进行增加、删除和修改,并且增加、删除和修改之后可以浏览表,已进行对照。
6.以后点击退出后,会出现谢谢使用,退出系统二、功能模块结构图三、变量说明(公有、私有、本地变量)四、数据库、表的设计及描述课表查询项目下有:数据库:课表查询.dbc表:users1.dbf(储存密码及账号) 按班级查询.dbf 班级代码.dbf 教师课程表.dbf 教师上课表.dbf 课表.dbf 课程表.dbf 周一.dbf 周二.dbf 周三.dbf 周四.dbf 周五.dbf1、其中,数据库,课表查询.DBC的设计为:(1)从菜单文件中选择新建(2)在弹出的对话框中选择数据库,保存为课表查询.dbc(3)在数据库设计器中添加相应的表(4)users1.dbf(储存密码及账号) 按班级查询.dbf 班级代码.dbf 教师课程表.dbf教师上课表.dbf 课表.dbf 课程表.dbf 周一.dbf 周二.dbf 周三.dbf 周四.dbf 周五.dbf2、表的设计:(1)从菜单文件中选择新建在弹出的对话框中选择表,分别保存为users1.dbf(储存密码及账号) 按班级查询.dbf 班级代码.dbf 教师课程表.dbf 教师上课表.dbf 课表.dbf 课程表.dbf 周一.dbf 周二.dbf 周三.dbf 周四.dbf 周五.dbf 在表设计器中写入相应的字段(2)然后录入数据3描述数据库课表查询.dbc ,中有表: users1.dbf(储存密码及账号) 按班级查询.dbf 班级代码.dbf 教师课程表.dbf 教师上课表.dbf 课表.dbf 课程表.dbf 周一.dbf 周二.dbf 周三.dbf 周四.dbf 周五.dbf课表表结构课程表表结构周一到周五的表的结构相同,如下:其中教师上课表是根据课程表和教师课程表根据查询去向生成的表,按班级查询表是根据教师上课表和课表表根据查询去向生成的表,周一到周五的表是根据按课程查询以week为查询条件以查询去向生成的表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学秦皇岛分校计算机与通信工程学院计算机操作系统课程设计设计题目:进程管理器专业名称计算机科学与技术班级学号xxxx学生姓名xxxx指导教师xxxxx设计时间2014-12-29~2015-1-15课程设计任务书专业:计算机科学与技术学号:学生姓名(签名):设计题目1、高优先权调度算法的模拟2、进程管理器的模拟实现二、主要内容1、目的:编程模拟实现进程管理器,加深对进程、程序概念掌握. 2、进程管理器主界面如下:(1)源代码:<1> Form1.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Management;using System.Diagnostics;namespace WindowsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();this.listProcesses.MultiSelect = false;this.listProcesses.View = View.Details;this.listProcesses.Columns.Add("pname",(int)CreateGraphics().MeasureString("aaaaaaaaaaaaaaaaaaaaaa",Font).Width);this.listProcesses.Columns.Add("pID", (int)CreateGraphics().MeasureString("000000000000", Font).Width);this.listProcesses.Columns.Add("username", (int)CreateGraphics().MeasureString( "aaaaaaaaaaaaaaaaaaaaa", Font).Width);this.listProcesses.Columns.Add("priority", (int)CreateGraphics().MeasureString( "aaaaaaaaa", Font).Width);this.listProcesses.Columns.Add("Memory usage", (int)CreateGraphics().MeasureString("000000000000000",Font).Width);}private void Form1_Load(object sender, EventArgs e){RefreshList();}private void RefreshList(){Process[] processes;processes = Process.GetProcesses();this.listProcesses.Items.Clear();foreach (Process instance in processes){ListViewItem lvi = new ListViewItem(instance.ProcessName);lvi.SubItems.Add(FormatProcessID(instance.Id));lvi.SubItems.Add(GetProcessUserName(instance.Id));lvi.SubItems.Add(instance.BasePriority.ToString());lvi.SubItems.Add(FormatMemorySize(instance.WorkingSet64));string strToolTip = null;ProcessModuleCollection modules;if (pareTo("System") != 0 || pareTo("Idle") != 0){try{////当进程不充允枚举模块时会产生异常modules = instance.Modules;foreach (ProcessModule aModule in modules){strToolTip += aModule.ModuleName;strToolTip += "; ";}}catch (ponentModel.Win32Exception){}}lvi.ToolTipText = strToolTip;this.listProcesses.Items.Add(lvi);}}//格式化内存字符串private string FormatMemorySize(long lMemorySize){return String.Format("{0,8:N0} K", lMemorySize / 1000);}private string FormatProcessID(int id){return String.Format("{0,8}",id);}private static string GetProcessUserName(int pID){string text1 = null;SelectQuery query1 =new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);try{foreach (ManagementObject disk in searcher1.Get()){ManagementBaseObject inPar = null;ManagementBaseObject outPar = null;inPar = disk.GetMethodParameters("GetOwner");outPar = disk.InvokeMethod("GetOwner", inPar, null);text1 = outPar["User"].ToString();break;}}catch{text1 = "SYSTEM";}return text1;}private void StopProcess_Click(object sender, EventArgs e){Process process = Process.GetProcessById(int.Parse(this.listProcesses.SelectedItems[0].SubItems[1].Text));process.Kill();RefreshList(); //释放进程的资源}private void Refresh_Click(object sender, EventArgs e){RefreshList();}private void CreateProcess_Click(object sender, EventArgs e){DialogBox dlg = new DialogBox();if (dlg.ShowDialog() == DialogResult.OK){try{Process.Start(dlg.FileName);}catch (ponentModel.Win32Exception){MessageBox.Show(String.Format("can't find the files '{0}',please make sure of the name of files then try again。
\n press [start] to search files",dlg.FileName));}}}}}<2> Form1.Designer.csnamespace WindowsApplication1{partial class Form1{/// <summary>/// 必需的设计器变量。
/// </summary>private ponentModel.IContainer components = null;/// <summary>/// 清理所有正在使用的资源。
/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为false。
</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法/// 使用代码编辑器修改此方法的内容。
/// </summary>private void InitializeComponent(){this.listProcesses = new System.Windows.Forms.ListView(); this.StopProcess = new System.Windows.Forms.Button();this.btnRefresh = new System.Windows.Forms.Button();this.CreateProcess = new System.Windows.Forms.Button();this.SuspendLayout();//// listProcesses//this.listProcesses.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.Anchor Styles.Top | System.Windows.Forms.AnchorStyles.Bottom)| System.Windows.Forms.AnchorStyles.Left)| System.Windows.Forms.AnchorStyles.Right)));this.listProcesses.Location = new System.Drawing.Point(-1, 10); = "listProcesses";this.listProcesses.ShowItemToolTips = true;this.listProcesses.Size = new System.Drawing.Size(363, 297);this.listProcesses.TabIndex = 0;eCompatibleStateImageBehavior = false;//// StopProcess//this.StopProcess.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorSt yles.Bottom | System.Windows.Forms.AnchorStyles.Right)));this.StopProcess.Location = new System.Drawing.Point(274, 313); = "StopProcess";this.StopProcess.Size = new System.Drawing.Size(100, 23); this.StopProcess.TabIndex = 1;this.StopProcess.Text = "StopProcess";eVisualStyleBackColor = true;this.StopProcess.Click += new System.EventHandler(this.StopProcess_Click);//// btnRefresh//this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorSt yles.Bottom | System.Windows.Forms.AnchorStyles.Left)));this.btnRefresh.Location = new System.Drawing.Point(12, 313); = "btnRefresh";this.btnRefresh.Size = new System.Drawing.Size(75, 23);this.btnRefresh.TabIndex = 2;this.btnRefresh.Text = "Reflesh(&R)";eVisualStyleBackColor = true;this.btnRefresh.Click += new System.EventHandler(this.Refresh_Click);//// CreateProcess//this.CreateProcess.Anchor = System.Windows.Forms.AnchorStyles.Bottom;this.CreateProcess.Location = new System.Drawing.Point(141, 313); = "CreateProcess";this.CreateProcess.Size = new System.Drawing.Size(100, 23); this.CreateProcess.TabIndex = 3;this.CreateProcess.Text = "CreateProcess";eVisualStyleBackColor = true;this.CreateProcess.Click += new System.EventHandler(this.CreateProcess_Click);//// Form1//this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.ClientSize = new System.Drawing.Size(364, 344);this.Controls.Add(this.CreateProcess);this.Controls.Add(this.btnRefresh);this.Controls.Add(this.StopProcess);this.Controls.Add(this.listProcesses); = "Form1";this.Text = " Process Manager";this.Load += new System.EventHandler(this.Form1_Load);this.ResumeLayout(false);}#endregionprivate System.Windows.Forms.ListView listProcesses; private System.Windows.Forms.Button StopProcess;private System.Windows.Forms.Button btnRefresh;private System.Windows.Forms.Button CreateProcess;}}<3> DialogBox.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{public partial class DialogBox : Form{public DialogBox(){InitializeComponent();StartPosition = FormStartPosition.CenterParent;bel1.Text = "open file...";}private void DialogBox_Load(object sender, EventArgs e){}private void OK_Click(object sender, EventArgs e){DialogResult = DialogResult.OK;}private void Cancel_Click(object sender, EventArgs e){DialogResult = DialogResult.Cancel;}private void btnShow_Click(object sender, EventArgs e){OpenFileDialog dlg = new OpenFileDialog();dlg.Filter = "program|*.exe|" + "all files|*.*";if (dlg.ShowDialog() == DialogResult.OK){boBox1.Text = dlg.FileName;}}public string FileName{get{return boBox1.Text;}}}}<4> DialogBox.Designer.csnamespace WindowsApplication1{partial class DialogBox{/// <summary>/// 必需的设计器变量。