2015下《操作系统原理》实验报告
操作系统实验报告(全)

操作系统实验报告书院系名称:电子工程学院电子指导教师:班级:学号:学生姓名:实验题目一:进程一、实验目的通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX 规范中fork和kill系统调用的功能和使用。
二、实验内容(1)补充POSIX 下进程控制的残缺版实验程序(2)回答下列问题:1. 你最初认为运行结果会怎么样?2. 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。
3. proc_number 这个全局变量在各个子进程里的值相同吗?为什么?4. kill 命令在程序中使用了几次?每次的作用是什么?执行后的现象是什么?5. 使用kill 命令可以在进程的外部杀死进程。
进程怎样能主动退出?这两种退出方式哪种更好一些?三、实验步骤1.根据题意进入DOC环境中编写程序。
2.编译,链接,运行程序,进行调试。
3.分析实验结果及回答问题。
四、调试情况,回答问题及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
2、在设计过程中的感受。
调试情况:回答上述实验内容中的问题1.预期结果:会持续输出0-9号进程,直到输入数字键+回车,则会杀死该进程,接下来的输出将不会有该进程号,当输入q+回车,则退出程序。
2.实际结果:与预期差不多,因输入进程总数20大于设定的最大进程数,因此按进程数10来处理。
随机输出0-9号进程,sleep(SLEEP_INTERV AL),循环输出,直到输入数字键,则会杀死该数字对应的进程,直到输入q退出循环,然后杀死本组所有进程。
分析:每创建一个子进程时,将其pid存储在pid[i]中,i存储在proc_number,然后调用死循环函数do_something(),输出该进程的代号proc_number;当输入数字键时,主进程会执行kill(pid[ch-'0'],SIGTERM),从而杀死(ch-‘0’)号进程。
操作系统原理 实验报告

操作系统原理实验报告操作系统原理实验报告一、引言操作系统是计算机系统中的核心软件,它负责管理和协调计算机硬件资源,提供用户与计算机硬件之间的接口,使得用户可以方便地使用计算机。
在本次实验中,我们通过实际操作和观察,深入理解了操作系统的原理和工作机制。
二、实验目的本次实验的主要目的是通过模拟操作系统的运行过程,加深对操作系统原理的理解。
具体目标包括:1. 掌握操作系统的启动过程和内存管理机制;2. 理解进程调度算法的原理和实现;3. 学习文件系统的组织和管理方式;4. 了解操作系统与硬件之间的交互方式。
三、实验过程1. 启动过程在计算机启动时,操作系统首先加载到内存中,并开始执行。
我们通过模拟实验,深入了解了操作系统的启动过程。
我们观察到操作系统通过读取硬盘中的引导扇区来进行启动,并且在启动过程中会进行一系列的初始化操作,如初始化内存管理、进程管理和设备驱动等。
2. 内存管理内存管理是操作系统中的重要组成部分,它负责分配和回收内存资源,以及管理进程的内存空间。
在实验中,我们学习了内存分页和内存分段两种常见的内存管理方式,并通过实际操作和观察,对其原理和实现有了更深入的了解。
3. 进程调度进程调度是操作系统中的核心功能之一,它决定了哪些进程能够获得CPU的使用权。
在实验中,我们学习了常见的进程调度算法,如先来先服务、短作业优先和时间片轮转等。
通过模拟实验,我们观察到不同的调度算法对进程执行的影响,加深了对进程调度原理的理解。
4. 文件系统文件系统是操作系统中负责管理和组织文件的机制。
在实验中,我们学习了文件系统的组织方式,如目录结构和文件存储方式等。
通过实际操作和观察,我们了解了文件系统的工作原理和实现机制。
5. 硬件交互操作系统与硬件之间的交互是实现计算机功能的关键。
在实验中,我们学习了操作系统与硬件之间的通信方式,如中断和设备驱动等。
通过模拟实验,我们观察到操作系统是如何与硬件进行交互,并掌握了操作系统与硬件之间的配合工作。
操作系统原理实验报告

《操作系统原理》实验报告班级:姓名:学号:指导老师:目录:实验题目:实验一线程创建与撤销 (2)实验题目:实验二线程同步 (6)实验题目:实验三线程互斥 (11)实验题目:实验四进程通信 (17)实验题目:实验五读者-写者问题 (21)实验题目:实验六进程调度 (37)实验题目:实验七存储管理之动态链接库 (52)实验题目:实验八存储管理之内存分配 (56)实验题目:实验九存储管理之页面置换算法 (69)实验题目:实验十设备管理 (84)实验题目:实验十一文件管理之文件读写 (98)实验题目:实验一线程创建与撤销完成人:XXX报告日期:2018年3月31日一、实验内容简要描述(1)熟悉VC++、Visual Studio开发环境。
(2)使用相关函数创建和撤销线程。
(3)在一个进程中创建3个线程,名字分别为threada、threadb、threadc。
threada输出“hello world! ”。
threadb输出“My name is …”。
threadc输出“Please wait…”,然后sleep 5秒钟,接着输出“I wake up”。
二、程序设计1、设计思路该函数创建一个在调用进程的地址空间中执行的线程。
2、主要数据结构HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);VOID ExitThread(DWORD dwExitCode);VOID Sleep(DWORD dwMilliseconds);VOID Sleep(DWORD dwMilliseconds);三、实验结果1、基本数据lpThreadAttributes:指向一个SECURITY_ATTRIBUTES结构,该结构决定了返回的句柄是否可被子进程继承。
《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。
在这个实验中,我们使用C++编写程序来创建和管理进程。
通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。
首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。
然后,使用等待函数来等待子进程的结束,并获取其返回值。
在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。
2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。
在这个实验中,我们研究了动态内存分配和释放的机制。
使用 C++中的 new 和 delete 操作符来分配和释放内存。
通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。
同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。
通过模拟内存访问过程,理解了页表的作用和地址转换的过程。
3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。
在这个实验中,我们对文件的创建、读写和删除进行了操作。
使用 C++的文件流操作来实现对文件的读写。
通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。
此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。
4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
操作系统原理实验报告

2012 软件工程(嵌入式)
学号:____________ 姓名:____________
苏州大学计算机科学与技术学院 2015 年 3 月
目录
操作系统原理实验报告
一、实验环境............................................................................................ 1
5
操作系统原理实验报告 6
操作系统原理实验报告 7
操作系统原理实验报告 8
操作系统原理实验报告
实验二、进程间的通信
实验环境:
实验环境一:Windows 平台
实验时间:
6 小时
实验目的:
初步了解 windows 环境下进程间通信的机制,掌握如何利用消息、共享内存 和剪贴板三种进程间通信机制中的任意 2 种进行通信的原理,并利用 win32API 函数编写实例程序。
[提示] 1、从 root 注册进系统,可以通过用户图形界面中的菜单创建用户组并为用
户分配注册号,也可以通过 shell 命令创建用户组,创建用户组的 shell 命令格式
2
操作系统原理实验报告
如下:
groupadd -g group_ID group_name
为用户分配注册号的 shell 命令格式如下:
usermod options login_ID
其中,任选项 options 可以为如下内容:
-c comment
表示注释信息
-d pathname
表示当前目录
-g group_ID
表示主用户组名
-G supplementary_group_ID 表示主用户组的增补组名
《操作系统原理》实验报告六课件

#define M 3 //资源种类m种
#define N 4 //进程个数n
int need[10][3];//进程还需资源矩阵
int max[10][3];//进程最大需求矩阵
int allocation[10][3];//已分配资源矩阵
int available[3]; //可用资源向量
int request[3];
while(1){
flag1 = flag2 = 0;
printf("请输入要操作的进程号:");
scanf("%d", &i);
if(i>N||i<0) {
printf("你输入的进程号不存在!");
break;
}
printf("请输入各类资源的请求数:");
scanf("%d %d %d", &request[0], &request[1], &request[2]);
puts("*0.初始化数据1.安全性算法2.银行家算法3.退出*");
puts("*******************************************************");
}
int safe()//检查安全序列
{
int i,j,k=1; // k用来结束安全序列的查找
int flag=1; // flag = 0表示当前可用资源<进程申请资源数
puts("* A B C A B C A B C A B C *");
《操作系统》实验二

《操作系统》实验二一、实验目的本实验旨在加深对操作系统基本概念和原理的理解,通过实际操作,提高对操作系统设计和实现的认知。
通过实验二,我们将重点掌握进程管理、线程调度、内存管理和文件系统的基本原理和实现方法。
二、实验内容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.然后,实现一个文件系统管理器,包括文件的存储和检索功能。
《操作系统原理》课程设计报告

《操作系统原理》课程设计报告书题目:进程控制模块的设计与实现专业:网络工程学号: ********* 学生姓名:***指导教师:***完成日期: 2015-12-05目录第1章课题概述 (3)1.1 设计要求 (3)1.2 设计理论依据 (3)第2章设计简介和内容 (6)2.1 设计简介 (6)2.2 设计内容 (6)第3章详细设计3.1 设计流程图 (7)3.2 主要程序代码 (9)第4章设计结果及分析 (10)4.1 运行结果截图 (10)4.2 运行结果分析................................ 错误!未定义书签。
总结.. (15)第1章课题描述1.1设计要求1.叙述要详细。
2.要有条理。
3.各个功能分开阐述。
4.自己可以增加题目要求的功能模块。
5.可以增加自己对题目的理解。
1.2设计理论依据根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。
短作业优先调度算法,从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
第2章设计简介和内容2.1设计简介在多道程序环境下,将系统中的作业组织起来,为每个进入系统的作业建立档案以记录和作业相关的信息,按要求输入作业名、到达时间和服务时间,并为其建立作业控制块(JCB)挂入后备队列。
进行作业调度时,在其后计算出各个作业的开始执行时间、完成时间、周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照由小到大的顺序显示出来。
2.2 设计内容1)编写程序完成批处理系统中的作业调度,要求采用短作业优先的作业调度算法。
实验具体包括:首先确定作业控制块的内容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。
2)创建作业控制块JCB,定义为结构体,为进入系统的作业建立档案,其中定义了作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-n group_name 表示为用户组分配一个新名字
作为一个例子,我们将 newuser 组名修改为 test,这时可使用如下 shell 命令:
groupmod –n test newuser
只删除用户注册号的 shell 命令格式如下:
userdel login_ID
实例如下:
userdel liu
要用自己的话重新组织我们这里所提出的问题。 解决方案:叙述如何解决自己上面提出的问题,可以用小标题 3.1,3.2…等分
开。这是本文的关键部分,请尽量展开来写。注意,这部分是本文的基本分 部分。这部分不完成,本课程设计不会及格。 实验结果:按照自己的解决方案,有哪些结果?结果有异常吗?能解释一下 这些结果吗?同别人的结果比较过吗?注意,这部分是本文出彩的地方。本 课程设计要得高分,应该在这部分下功夫。 结束语:小结并叙述本次课程设计的经验、教训、体会、难点、收获、未解 决的问题、新的疑惑等。 附录:加了注释的程序清单,注释行数目至少同源程序行数目比 1:2,即 10 行源程序,至少要给出 5 行注释。
实验准备:
(1)阅读 Redhat Linux 或 Ubuntu Linux 的使用手册(可从网络下载电子书),包 括图形界面使用、系统管理、Shell 命令和目录结构。 (2)了解 gcc 的使用方法。
实验步骤:
Linux 操作系统是一个通用的多用户分时操作系统,现已成为高档微机、工 作站及若干小型机系统上的主要操作系统,并在许多领域中获得了广泛的应用。 Linux 系统具有简单、高效、易懂等特点,同时具有良好的可移植性,它代表着 多用户操作系统发展的方向。C 语言最初是为开发 Linux 操作系统而设计,Linux 核心和所有的用户程序几乎都是用 C 语言编写,是 Linux 的标准语言。
useradd –u user_number –g primary_group_ID
–G supplementary_group_ID –c comments
-d home-directory –s program –m login_ID
其中-u 选项用来表示用户 ID 号,-g 选项用来表示主用户组名,-G 选项用来 表示可由“,”隔开的多个 supplementary_group_ID,-c 选项用来表示注释信息, -d 选项用来表示主目录名,-s 选项用来表示注册 shell 程序,-m 选项不带参数, 它用来将/etc/skel 目录中的内容(如.profile 文件和标准目录文件)拷入新的注册 号下,login_ID 是该命令必需的用户注册号。
II
操作系统原理实验报告
一、实验环境
1、 实验环境一:Windows 平台
硬件平台:普通 PC 机硬件环境; 操作系统:Windows XP/7 编译环境:任意开发工具,如 VC++,VB,BCB 等;
2、 实验环境二:JVM 平台
硬件平台:普通 PC 机硬件环境; 操作系统:Windows XP/7 编译环境:JDK1.2 以上或 JBuilder 6 以上版本或其他 Java 环境;
1
三、实验内容
操作系统原理实验报告
实验一 Linux 系统
实验环境:
实验环境三:Linux 平台
实验时间:
4 小时
实验目的:
要求在熟悉 Linux 系统的基础上,了解用 C 语言编写文本处理程序的具体过 程。
实验目标:
熟悉 Linux 操作系统,在 Linux 中使用 C 语言进行文本处理。完成下面两个 问题: (1)使用 C 语言编写一个词频(限英文文章)统计程序,使之能够给出各个单 词在输入文件中的出现次数。 (2)使用 C 语言编写一个反向打印程序,使之能够按与输入文件中文本行相反 的次序来打印(即后出现的文本行先打印)。
$ mkdir c_progs
$
使用 cd 命令进入到新创建的子目录中。
$cd c_progs
$
3、输入 C 程序 输入 C 程序可以用任意的文本编辑工具来完成。下面输入 C 程序 cowpact.c。
/* Remove newlines */ #include <stdio.h> main() {
passwd options login_ID
其中任选项 options 可为如下内容: -n days 表示口令的有限时间。 -x days 表示口令从设置到修改的时间。
例:passwd –n 7 –x 6 liu 或者:
passwd liu
系统在提示输入和重新输入后,确认口令设置成功。 修改用户属性的 shell 命令格式如下:
$
这样就从输入文件中删除了多余的空行。
实验报告
(1)尝试实验步骤 1 的每个部分。 (2)在/usr 目录下创建自己的目录(可以用姓名,或者学号)。 (3)利用文本编辑器步骤 3 中的 c 程序,并编译和执行它。 (4)完成实验目标 1,绘制该程序的流程图。 (5)完成实验目标 2,绘制该程序的流程图。
删除用户注册号及其所在目录和文件的 shell 命令格式如下:
userdel –r login_ID
实例如下:
userdel –r liu
删除用户组的 shell 命令格式如下:
groupdel group_ID
实例如下:
groupdel newuser
2、从新的子目录中开始工作 使用 mkdir 命令创建新的子目录 c_progs。
二、实验报告总体要求............................................................................ 1
三、实验内容............................................................................................ 2
5
操作系统原理实验报告 6
操作系统原理实验报告 7
操作系统原理实验报告 8
操作系统原理实验报告
实验二、进程间的通信
实验环境:
实验环境一:Windows 平台
实验时间:
6 小时
实验目的:
初步了解 windows 环境下进程间通信的机制,掌握如何利用消息、共享内存 和剪贴板三种进程间通信机制中的任意 2 种进行通信的原理,并利用 win32API 函数编写实例程序。
例:groupadd –g 51 newuser
useradd –u 203 –g newuser –c “new user” –d /user/liu –s /bin/sh –m liu
如果采用缺省设置,也可以只使用如下 shell 命令:
useradd liu
分配完注册号后,也可以为用户设置口令。用来设置口令的 shell 命令格式 如下:
实验目标:
编制两个 Windows 窗口程序 P1、P2。其中 p1 是前台进程,负责接收用户的 输入,并通过消息机制或共享内存发送相应消息到 p2。p2 是后台程序,在收到消 息后,根据不同的消息进行相应的操作。
$cc –o compact compact.c $
这样,编译结果就存放在 compact 文件中。如果出现编译错误,则可以利用 vi 命令来对程序进行修改。
5、执行 C 程序 由于存放编译结果的文件本身就是可执行文件,所以可以在 shell 提示符下 敲入该文件的名字来执行它,在有些情况下还要提供输入内容。下面给出 compact 的执行过程。 首先创建测试文件 testfile。
-m
表示将/etc/skel 目录中的内容拷入新的注册号下
-s program
表示注册用 shell 程序
-u user_ID_number 表示用户 ID 号
-e days
表示口令从设置到修改的天数
-f days
表Байду номын сангаас注册起作用的天数
作为一个例子,我们修改注册 shell 程序,这时可使用如下 shell 命令:
int c,n=0,max=1; while((c=getchar())!=EOF) {
if (c==’\n’) n++;
else n=0;
if (n<=max) putchar( c);
} }
4
操作系统原理实验报告
保存到当前用户的用户目录下,一般为 home/username
4、编译 C 程序 由于 C 语言是一种高级语言,所以输入完 C 程序后就要对它进行编译。cc 命 令可以用来编译 C 程序。如果在 cc 命令后面直接跟上文件名,则编译后的输出 结果将存放在标准的 a.out 文件中。如果 cc 命令使用-o 任选项,则可以将编译 结果存放在自己命名的文件中。为方便起见,我们使用带-o 任选项的 cc 命令来 进行编译。(也可以使用 gcc,用法相同。)
实验一 LINUX 系统 ................................................................................................. 2 实验二、进程间的通信............................................................................................ 9 实验三 进程调度 .................................................................................................. 16 实验四、进程的内存使用情况.............................................................................. 21