哈工大《操作系统》实验3
03哈工大操作系统第三章

Process Elements
While the program is executing, this process can be uniquely characterized by a number of elements
A program in execution An instance of a program running on a computer The entity that can be assigned to and executed on a processor A unit of activity characterized by a single sequential thread of execution, a current state, and an associated set of system resources
A user at a terminal logs on to the system The OS can create a process to perform a function on behalf of a user program, without the user having to wait (e.g., a process to control printing) For purposes of modularity or to exploit parallelism, a user program can dictate the creation of a number of processes
Summary of Earlier Concepts
哈工大威海计算机操作系统原理实验报告1

计算机操作系统原理实验报告专业: 110420x学号: 1104202xx姓名: xxx哈尔滨工业大学(威海)实验一进程同步和互斥一、实验目的1.掌握临界资源、临界区概念及并发进程互斥、同步访问原理。
2.学会使用高级语言进行多线程编程的方法。
3.掌握利用VC++或Java语言线程库实现线程的互斥、条件竞争,并编码实现P、V操作,利用P、V操作实现两个并发线程对有界临界区的同步访问。
4.通过该实验,学生可在源代码级完成进程同步互斥方案的分析、功能设计、编程实现,控制进程间的同步、互斥关系。
二、实验要求1.知识基础:学生应在完成进程和线程及调度等章节的学习后进行。
2.开发环境与工具:硬件平台——个人计算机。
软件平台-Windows操作系统,VC++语言或Java语言开发环境。
3.运用高级语言VC++或Java语言线程库及多线程编程技术进行设计实现。
三、实验内容1.实现临界资源、临界区、进程或线程的定义与创建。
2.利用两个并发运行的进程,实现互斥算法和有界缓冲区同步算法。
四、程序流程图1.2.生产者消费者问题生产者:消费者:五、实验结果1.互斥问题2.生产者消费者问题六、结果分析有上述程序运行结果可知,此次试验已经基本达到了实验要求,在互斥问题中,由于采用了“模拟一个竞争条件——全局变量”来建立互斥,所以不会明显的条件来判断2个线程是否正确、独立的运行,所以,在运行时间上加以限制,让2个线程在有序运行时只能持续15秒。
在生产者消费者问题中,生产者与消费者的最大上限为10,并且生产者只能生产“同一种物品”,而消费者也只能购买“同一种物品”。
操作系统实验报告哈工大

计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360117姓名乐云指导教师周学权计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360114姓名郭鑫指导教师周学权操作系统实验实验1 使用虚拟机安装系统 4学时【实验目的】1.了解虚拟机软件的使用。
2.了解使用虚拟机安装Windows及Ubuntu操作系统。
【实验内容】1. 安装虚拟机软件VirtualBox。
2. 配置VirtualBox环境安装WindowsXP,并在虚拟机中启动windowsXP。
3. 配置VirtualBox环境安装Ubuntu 10.10,并在虚拟机中启动Ubuntu。
【实验环境】VirtualBox4.0Windows XPUbuntu 8.04【实验过程】一、创建虚拟机首先运行VirtualBox,单击左上角的“新建”。
单击下一步。
出现如下图的界面,在名称后输入自己起的名字,如test选择自己想要安装的系统类型和版本,本次试验是安装windows xp系统设置完成后,单击下一步。
接下来是设置虚拟机的内存大小,本次实验操作的计算机内存为4GB,所以我选择分配给我的虚拟机的内存为512MB,然后单击下一步。
接着创建虚拟硬盘,选择创建新的虚拟硬盘,单击下一步。
选择虚拟硬盘的类型,默认选择了VDI类型,单击下一步。
接下来选择为动态扩展类型,因为计算机的存储空间不大。
单击下一步。
动态扩展:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间的范围就为0~10G。
固定大小:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间永远不是10G,不管虚拟磁盘空间是否被全部使用。
选择虚拟机在本地磁盘中的位置和大小,单击下一步。
确认虚拟机的详细情况,点击下一步。
这时我们已经成功的创建了一个虚拟机了,接下来我们要开始配置这个虚拟机安装操作系统选择刚才创建的虚拟机,然后单击上方的“开始”弹出了首次运行向导,单击下一步。
[VIP专享]进程的同步
![[VIP专享]进程的同步](https://img.taocdn.com/s3/m/99c57e5dba1aa8114431d967.png)
操作系统实验报告课程名称操作系统实验实验项目名称进程的同步学号2009142212班级20100614计算机科学姓名刘欣卓专业与技术计算机科学学生所在学院指导教师初妍与技术学院实验室名称地点21#428哈尔滨工程大学计算机科学与技术学院一、实验概述1. 实验名称第三讲进程的同步2. 实验目的使用EOS的信号量,编程解决生产者—消费者问题,理解进程同步的意义。
调试跟踪EOS信号量的工作过程,理解进程同步的原理。
修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。
3. 实验类型验证性实验、设计性试验4. 实验内容(1)准备实验启动OS Lab。
新建一个EOS Kernel项目。
生成EOS Kernel项目,从而在该项目文件夹中生成SDK文件夹。
新建一个EOS应用程序项目。
使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。
(2)生产者-消费者同步执行的过程使用pc.c文件中的源代码,替换之前创建的EOS应用程序项目中EOSApp.c文件内的源代码。
按F7生成修改后的EOS应用程序项目。
按F5启动调试。
OS Lab会首先弹出一个调试异常对话框。
在调试异常对话框中选择“否”,继续执行。
立即激活虚拟机窗口查看生产者-消费者同步执行的过程。
待应用程序执行完毕后,结束此次调试。
(3)调试EOS信号量的工作过程I 创建信号量按F5启动调试EOS应用项目。
OS Lab会首先弹出一个调试异常对话框。
在调试异常对话框中选择“是”,调试会中断。
在main函数中创建Empty信号量的代码行(第77行)EmptySemaphoreHandle = CreateSemaphore(BUFFER_SIZE, BUFFER_SIZE, NULL); 添加一个断点。
按F5继续调试,到此断点处中断。
按F11调试进入CreateSemaphore函数。
可以看到此API函数只是调用了EOS内核中的PsCreateSemaphoreObject函数来创建信号量对象。
操作系统实验三实验报告

(一)进程创建
编写程序实现创建多个进程,并观察进程的执行情况。通过调用Windows API函数`CreateProcess`来创建新的进程。在创建进程时,设置不同的参数,如进程的优先级、命令行参数等,观察这些参数对进程执行的影响。
(二)进程控制
实现对进程的暂停、恢复和终止操作。使用`SuspendThread`和`ResumeThread`函数来暂停和恢复进程中的线程,使用`TerminateProcess`函数来终止进程。通过控制进程的执行状态,观察系统的资源使用情况和进程的响应。
(一)进程创建实验结果与分析
创建多个进程后,通过任务管理器观察到新创建的进程在系统中运行。不同的进程优先级设置对进程的CPU占用和响应时间产生了明显的影响。高优先级的进程能够更快地获得CPU资源,执行速度相对较快;而低优先级的进程则在CPU资源竞争中处于劣势,可能会出现短暂的卡顿或计一个多进程同步的程序,使用信号量、互斥量等同步机制来协调多个进程的执行。例如,实现一个生产者消费者问题,多个生产者进程和消费者进程通过共享缓冲区进行数据交换,使用同步机制来保证数据的一致性和正确性。
四、实验步骤
(一)进程创建实验步骤
1、打开Visual Studio 2019,创建一个新的C++控制台应用程序项目。
六、实验中遇到的问题及解决方法
(一)进程创建失败
在创建进程时,可能会由于参数设置不正确或系统资源不足等原因导致创建失败。通过仔细检查参数的设置,确保命令行参数、环境变量等的正确性,并释放不必要的系统资源,解决了创建失败的问题。
(二)线程控制异常
在暂停和恢复线程时,可能会出现线程状态不一致或死锁等异常情况。通过合理的线程同步和错误处理机制,避免了这些异常的发生。在代码中添加了对线程状态的判断和异常处理的代码,保证了线程控制的稳定性和可靠性。
操作系统习题(哈工大)(汇编)

第一章:1、操作系统的主要性能参数有(响应时间)、(可靠性)。
2、Windows98是一个(单用户多任务)得操作系统。
3、当前作为自由软件的操作系统是(c)a、Windowsb、UNIXc、Linuxd、OS/24. 操作系统的地位:操作系统是裸机之上的第一层软件,是建立其他所有软件的基础。
它是整个系统的控制管理中心,既管硬件,又管软件,它为其它软件提供运行环境。
5. 操作系统的发展历程1.最初是手工操作阶段,需要人工干预,有严重的缺点,此时尚未形成操作系统2.早期批处理分为联机和脱机两类,其主要区别在与I/O是否受主机控制3.多道批处理系统中允许多道程序并发执行,与单道批处理系统相比有质的飞跃6.操作系统的主要类型?多道批处理系统、分时系统、实时系统、个人机系统、网络系统和分布式系统1.多道批处理系统1)批处理系统的特点:多道、成批2)批处理系统的优点:资源利用率高、系统吞吐量大3)批处理系统的缺点:等待时间长、没有交互能力2.分时系统1)分时:指若干并发程序对CPU时间的共享。
它是通过系统软件实现的。
共享的时间单位称为时间片。
2)分时系统的特征:同时性:若干用户可同时上机使用计算机系统交互性:用户能方便地与系统进行人--机对话独立性:系统中各用户可以彼此独立地操作,互不干扰或破坏及时性:用户能在很短时间内得到系统的响应3)优点主要是:响应快,界面友好多用户,便于普及便于资源共享3.实时系统1)实时系统:响应时间很快,可以在毫秒甚至微秒级立即处理2)典型应用形式:过程控制系统、信息查询系统、事务处理系统3)与分时系统的主要区别:4. 个人机系统1) 单用户操作系统单用户操作系统特征:个人使用:整个系统由一个人操纵,使用方便。
界面友好:人机交互的方式,图形界面。
管理方便:根据用户自己的使用要求,方便的对系统进行管理。
适于普及:满足一般的工作需求,价格低廉。
2) 多用户操作系统多:代表是UNIX,具有更强大的功能和更多优点。
操作系统实验三

操作系统实验报告哈尔滨工程大学计算机科学与技术学院第三讲进程的创建、实验概述1. 实验名称进程的创建2. 实验目的练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。
调试跟踪CreateProcess 函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。
3. 实验类型设计4. 实验内容4.1 准备实验按照下面的步骤准备本次实验:1. 启动OS Lab。
2. 新建一个EOS Kernel 项目。
3. 分别使用Debug配置和Release配置生成此项目,从而在该项目文件夹中生成完全版本的EOS SD 文件夹。
4. 新建一个E0磁用程序项目。
5. 使用在第3步生成的SD文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。
4.2练习使用控制台命令创建EOS应用程序的进程练习使用控制台命令创建E0磁用程序进程的具体步骤如下:1. 在EOS应用程序项目的“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor 工具打开此软盘镜像文件。
2. 将本实验文件夹中的Hello.exe 文件拖动到FloppyImageEditor 工具窗口的文件列表中释放,Hello.exe文件即被添加到软盘镜像文件中。
Hello.exe —个EOS应用程序,其源代码可以参见本实验文件夹中的Hello.c 源文件。
3. 在FloppylmageEditor 中选择“文件”菜单中的“保存”后关闭FloppylmageEditor 。
4. 按F7生成E0磁用项目。
5. 按F5启动调试。
OS Lab会弹出一个调试异常对话框,并中断应用程序的执行。
6. 在调试异常对话框中选择“否”,忽略异常继续执行应用程序。
7•激活虚拟机窗口,待该应用程序执行完毕后,在EOS勺控制台中输入命令“ A:\Hello.exe ”后回车。
8. Hello.exe 应用程序开始执行,观察其输出。
操作系统lab3

HUNAN UNIVERSITY 操作系统实验报告题目:LAB3虚拟内存管理目录一、实验目的 (3)二、实验内容 (3)三、练习题 (3)练习0 (3)练习1 (3)练习2 (6)四、实验总结 (9)一、实验目的了解虚拟内存的Page Fault异常处理实现了解页替换算法在操作系统中的实现二、实验内容本次实验是在实验二的基础上,借助于页表机制和实验一中涉及的中断异常处理机制,完成Page Fault异常处理和FIFO页替换算法的实现,结合磁盘提供的缓存空间,从而能够支持虚存管理,提供一个比实际物理内存空间“更大”的虚拟内存空间给系统使用。
这个实验与实际操作系统中的实现比较起来要简单,不过需要了解实验一和实验二的具体实现。
实际操作系统系统中的虚拟内存管理设计与实现是相当复杂的,涉及到与进程管理系统、文件系统等的交叉访问。
如果大家有余力,可以尝试完成扩展练习,实现extended clock 页替换算法。
三、练习练习0:本实验依赖实验1/2。
请把你做的实验1/2的代码填入本实验中代码中有“LAB1”,“LAB2”的注释相应部分。
根据lab1,2即可完成,此处不再赘述练习1:给未被映射的地址映射上物理页(需要编程)完成do_pgfault(mm/vmm.c)函数,给未被映射的地址映射上物理页。
设置访问权限的时候需要参考页面所在VMA 的权限,同时需要注意映射物理页时需要操作内存控制结构所指定的页表,而不是内核的页表。
注意:在LAB2 EXERCISE 1处填写代码。
执行make qemu后,如果通过check_pgfault函数的测试后,会有“check_pgfault() succeeded!”的输出,表示练习1基本正确。
请在实验报告中简要说明你的设计实现过程。
本实验要求完成do_pgfault函数,作用给未被映射的地址映射上物理页。
具体而言,当启动分页机制以后,如果一条指令或数据的虚拟地址所对应的物理页框不在内存中或者访问的类型有错误(比如写一个只读页或用户态程序访问内核态的数据等),就会发生页错误异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
向kernel/printk.c中添加日志打印功能,将以下代码添加到原文件中:
在kernel/fork.c、kernel/sched.c和kernel/exit.c中,找到正确的状态转换点,并添加合适的状态信息,把它输出到log文件之中。
fork.c的修改如下:
exit.c的修改如下:
sched.c的修改如下:
在虚拟机上运行ls -l /var”或“ll /var”查看process.log是否建立,及它的属性和长度;
修改时间片
include/linux/sched.h宏INIT_TASK中定义的:
0,15,15, 分别对应state、counter和priority,将priority值修改,即可实现对时间片大小的调整。
0,15,15, 分别对应state、counter和priority,
priority值修改,即可实现对时间片大小的调整。
在修改时间片将priority由15改为150后,Process 9~20 中Turnaround, Waiting, CPU Burst, I/O Burst变化不大,原因可能是程序中I/O操作占用的时间对于总时间影响的权重过大,导致处理时间体现的并不明显。
或者变化不大的原因是,子进程连续占用cpu的时间要比时间片大很多。