哈工大《操作系统》实验3

合集下载

03哈工大操作系统第三章

03哈工大操作系统第三章
Dr. GuoJun LIU Operating System Slides-8
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

哈工大威海计算机操作系统原理实验报告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专享]进程的同步

操作系统实验报告课程名称操作系统实验实验项目名称进程的同步学号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

操作系统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

哈工大《操作系统》实验1

(5)重新编写一个setup.s,然后将其中的显示的信息改为:“Now we are in SETUP”。

再次编译,重新用make命令生成BootImage,结合提示信息和makefile文修改build.c,具体将setup.s改动如下:mov cx,#27mov bx,#0x0007 ! page 0, attribute 7 (normal)mov bp,#msg1mov ax,#0x1301 ! write string, move cursorint 0x10dieLoop:j dieLoopmsg1:.byte 13,10,13,10.ascii "Now we are in SETUP".byte 13,10,13,10将build.c改动如下:if(strcmp("none",argv[3]) == 0)//添加判断return 0;if ((id=open(argv[3],O_RDONLY,0))<0)die("Unable to open 'system'");// if (read(id,buf,GCC_HEADER) != GCC_HEADER)// die("Unable to read header of 'system'");// if (((long *) buf)[5] != 0)// die("Non-GCC header of 'system'");for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )if (write(1,buf,c)!=c)die("Write call failed");close(id);fprintf(stderr,"System is %d bytes.\n",i);if (i > SYS_SIZE*16)die("System is too big");return(0);(6)验证:用make是否能成功生成BootImage,运行run命令验证运行结果。

哈工大威海计算机操作系统原理实验报告4.

哈工大威海计算机操作系统原理实验报告4.

计算机操作系统原理实验报告
班级:1104202 学号:110420212 姓名:李敖哈尔滨工业大学(威海实验四页面置换算法
、实验目的
1•掌握内存管理基本功能和请求分页式管理的基本原理以及页面置换算法。

2.学会在Linux操作系统下使用C函数和系统调用的编程方法。

3.掌握利用C语言设计实现不同置换策略的页面置换算法。

4.验证虚存存储管理机制及其性能。

对于生成的引用串,计算、比对不同页面

换算法的缺页率。

、实验要求
1.学生应完成如下章节的学习:进程和线程、调度、存储管理。

2.安装Linux操作系统,使用C语言编程,利用相关系统调用实现设计。

三、实验内容
1•创建空闲存储管理表、模拟内存、页表等。

2.提供一个用户界面,用户利用它可输入不同的页面置换策略和其他附加参
数。

3.运行置换程序,输出缺页率结果。

四、程序流程图
1.最佳页面置换算法流程图
开始
1
2.先进先出页面置换算法流程图
开蛤
初始化进种块
3.最近最久未使用页面置换算法流程图
初縮化进出块
五、实验结果
最佳页面置换算法分区
先进先出页面置换算法
最近最久未使用页面置换算法六、结果分析本程序已基本实现了页面的置换
算法,包括最佳页面置换算法、先进先出页面置换算法和最近最久未使用页面置换算法。

页表最大空间为5,随机进程最大
序列为50。

哈尔滨工业大学(威海)操作系统实验报告及答案

哈尔滨工业大学(威海)操作系统实验报告及答案

哈尔滨工业大学(威海)操作系统实验报告说明:本实验报告实验答案,是本人在上实验时的测试数据,由于操作系统实验中后面实验与当时所做实验的计算机的配置有关,因此本实验报的数据仅供参考。

实验1进程的描述与控制Windows 2000编程(实验估计时间:100分钟)1.1 背景知识Windows 2000 可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。

控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。

不同类型应用程序间的惟一重要区别是其启动方法。

Windows 2000是以NT技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。

当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能。

服务应用程序类型需要ServiceMail()函数,由服务控制管理器(SCM)加以调用。

SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。

其本身负责使应用程序的行为像一个服务,通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限。

当C++编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。

产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。

装载器指令告诉系统从哪里装载机器代码。

另一个装载器指令告诉系统从哪里开始执行进程的主线程。

在进行某些设置后,进入开发者提供的main()、Servicemain()或WinMain()函数的低级入口点。

机器代码中包括控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等。

Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。

哈工大操作系统实验linux-0.11_实验一-启动系统

哈工大操作系统实验linux-0.11_实验一-启动系统

实验一总结——启动系统zhangliang73@此次实验的基本内容是:1.阅读《Linux内核完全注释》的第6章,对计算机和Linux 0.11的引导过程进行初步的了解;2.按照下面的要求改写0.11的引导程序bootsect.s3.有兴趣同学可以做做进入保护模式前的设置程序setup.s。

改写bootsect.s主要完成如下功能:1.bootsect.s能在屏幕上打印一段提示信息“XXX is booting...”,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等(可以上论坛上秀秀谁的OS名字最帅,也可以显示一个特色logo,以表示自己操作系统的与众不同。

)改写setup.s主要完成如下功能:1.bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。

而setup.s向屏幕输出一行"Now we are in SETUP"。

2.setup.s能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等),将其存放在内存的特定地址,并输出到屏幕上。

3.setup.s不再加载Linux内核,保持上述信息显示在屏幕上即可。

bootsect.s代码解读SYS_SIZE表示系统模块的大小,此处设置有冗余。

bootsect.s被BIOS启动程序装载到0x7c00处,然后把自己移开,复制到0x90000处,然后跳转到那里。

之后,它使用BIOS中断,将setup模块直接装载在紧邻它之后的0x90200处,又把system 装载到0x10000处。

注意!当前的系统最大是8*65536字节。

这没问题,未来也是。

我想让它保持简单。

这512KB 的kernel大小是足够的,尤其是它像minix一样不包含缓存。

装载器被实现得尽量简单,持续的读取错误将导致死循环。

请手动重启。

在可能的情况下,它一次得到整个扇区,这样可使装载十分迅速。

setup扇区的长度= 4boot扇区的原地址= 0x07c0 ;由于20位地址寻址时,段地址左移四位,表现为16进制1位initseg = 0x9000 ;bootsect将移至的地址setupseg = 0x9020 ;setup装载的位置sysseg = 0x1000 ;system装载的地址endseg = sysseg + syssize ;sys的结尾地址总之是定义了根文件系统的物理位置。

哈工大计算机组成技术实验三

哈工大计算机组成技术实验三

实验三
分支及循环结构程序设计
实验目的:
⒈掌握汇编语言分支结构和循环结构的设计方法
⒉掌握分支与循环的控制方法,特别注意循环程序中初值的设置和循环次数控制
3.进一步理解目的地址与转移指令所在地址的相对距离
实验说明和注意事项
1 编制分支程序,必须掌握如何使用PSW 中的有关位
2 掌握分支与循环的控制方法, 在循环中,初值的设置、循环次数控制对程序的影响。

3 注意比较指令是分有符号和无符号
C
B A 内容(H )
偏移地址(H )内容(H )
偏移地址(H )结果(程序运行后)
初值(程序运行前)
变量
各变量偏移地址
各变量偏移地址内容
各变量偏移地址不变
内容重新排序
用U命令查找
用D命令查找
报告P9页表格填写内容及查找方法
验收说明
1、报告中DS:0008在内存的位置
“—”后面
下次实验预习:子程序设计必做:实验2
实验1和实验3任选其一
实验程序提前编写,复制在U盘上在实验课上进行调试。

操作系统实验三

操作系统实验三

操作系统实验报告哈尔滨工程大学计算机科学与技术学院第三讲进程的创建一、实验概述1. 实验名称进程的创建2. 实验目的✍✍练习使用EOS API函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。

✍✍调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。

3. 实验类型设计4. 实验内容4.1 准备实验按照下面的步骤准备本次实验:1. 启动OS Lab。

2. 新建一个EOS Kernel项目。

3. 分别使用Debug配置和Release配置生成此项目,从而在该项目文件夹中生成完全版本的EOS SDK文件夹。

4. 新建一个EOS应用程序项目。

5. 使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。

4.2 练习使用控制台命令创建EOS应用程序的进程练习使用控制台命令创建EOS应用程序进程的具体步骤如下:1. 在EOS应用程序项目的“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像文件。

2. 将本实验文件夹中的Hello.exe文件拖动到FloppyImageEditor工具窗口的文件列表中释放,Hello.exe文件即被添加到软盘镜像文件中。

Hello.exe一个EOS应用程序,其源代码可以参见本实验文件夹中的Hello.c源文件。

3. 在FloppyImageEditor中选择“文件”菜单中的“保存”后关闭FloppyImageEditor。

4. 按F7生成EOS应用项目。

5. 按F5启动调试。

OS Lab会弹出一个调试异常对话框,并中断应用程序的执行。

6. 在调试异常对话框中选择“否”,忽略异常继续执行应用程序。

7. 激活虚拟机窗口,待该应用程序执行完毕后,在EOS的控制台中输入命令“A:\Hello.exe”后回车。

8. Hello.exe应用程序开始执行,观察其输出。

哈工大操作系统课件3-10(全)

哈工大操作系统课件3-10(全)

哈尔滨工业大学远程教育课程
操作系统
第7 讲
主讲人:张英涛
进程的挂起

挂起原语:SUSPEND() 挂起原语的执行过程: 检查被挂起进程的状态,若处于活动就 绪状态,改为静止就绪;若处于活动阻塞 状态,则改为静止阻塞;若正在执行,则 转向调度程序重新调度。
有挂起状态的进程状态图
执行
活动 就绪
临界资源
一次仅允许一个进程使用的 共享资源 如:打印机、磁带机、表格
临界区
在每个 进程 中访 问临 界 资源的那段程序

进程必须互斥进入临界区
访问临界区的循环进程描述
repeat
进入区 临界区
检查临界资源是否能访问
退出区
剩余区
until false;
将临界区标志设为未访问
同步机制遵循的原则
空闲让进 ② 忙则等待 ③ 有限等待 ④ 让权等待
char class[10];
};
typedef struct Student STUDENT;
PCB中的信息
(1)进程标识符 (2)处理机状态 (3)进程调度信息 (4)进程控制信息
进程标识符
(1)内部标识符 进程唯一的数字编号,给OS使用。 (2)外部标识符 由字母、数字组成,给用户使用。
处理机状态

虚拟:通过某种技术把一个物理实 体变为若干个逻辑上的对应物。 如:虚拟处理器、虚拟内存等 异步性:进程以不可预知的速度向 前推进。

操作系统的五大功能
1.处理机管理(硬件)
资源管理
2.存储器管理(硬件)
3.设备管理(硬件)
4.文件管理(软件) 联机用户接口 5.用户接口 命令接口 程序接口 图形接口 脱机用户接口

哈工大单片机原理及应用实验报告

哈工大单片机原理及应用实验报告

微处理器原理与应用实验报告姓名:李声勇同组人:袁钟达,张秋实学号:1080510123班级:0805101指导教师:张云院系:电子与信息工程学院1 实验一简单I/O口扩展实验(一)交通灯控制实验1.1实验要求扩展实验箱上的74LS273作为输出口,控制八个发光二极管燃灭,模拟交通灯管理。

1.2实验目的1.学习在单片机系统中扩展简单I/O接口的方法2.学习数据输出程序的设计方法3.学习模拟交通灯控制的实现方法1.3实验原理要完成本实验,首先必须了解交通路灯的燃灭规律。

本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。

不妨将L1、L3、L5作为东西方向的指示灯,将L2、L4、L6作为南北方向的指示灯。

而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

各发光二极管共阳极,阴极接有与非门,因此使其点亮应使相应输入端为高电平。

1.4 实验内容(包括实验电路和程序流程图)1.5 实验结果成功模拟交通灯管制系统,红绿灯方向指示正常,黄灯闪烁正常1.6 实验结果讨论分析实验中发现交通灯在黄灯和红绿灯切换的时候有抖动和延时,初步估计是单片机定时系统不稳定以及程序的延时冗余没有添加所导致。

1.7 实验程序代码变量说明:R1、R2、R3用来做延时控制变量。

EW段表示东西导通南北截止;SNBY是SN STAND BY的缩写,表示南北准备;SN段表示南北导通东西截止。

延时控制由若干延时控制单元组合而成(参考了一下老师的程序)。

片选地址和显示单元调用了老师的部分程序。

PORT EQU 0CFA0H ;片选地址CS0CSEG AT 0000HLJMP BEGINCSEG AT 4100HBEGIN: MOV A,#03H ;1、2亮,其余灭ACALL SHOW ;调用273显示单元ACALL T03 ;延时3秒EW: MOV A,#12H ;东西导通;南北截止ACALL SHOWACALL T10 ;延时10秒MOV A,#02H ;东西截止;南北截止ACALL SHOWSNBY: MOV A,#04H ;东西黄灯闪烁;南北截止ACALL SHOWACALL T02 ;东西黄灯5次闪烁程序MOV A,#00HACALL SHOWACALL T02MOV A,#04HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#04HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#04HACALL SHOWACALL T02MOV A,#00H ACALL SHOWACALL T02MOV A,#04HACALL SHOWACALL T02MOV A,#00H ;东西黄灯闪烁程序结束ACALL SHOWACALL T02 ;延时0.2秒MOV A,#02H ;东西路口黄灯灭;南北路口红灯亮ACALL SHOWACALL T02 ;延时0.2秒MOV A,#03H ;东西南北都截止ACALL SHOWACALL T02 ;延时0.2秒MOV A,#21H ;东西截止;南北导通ACALL SHOWACALL T10 ;延时10秒MOV A,#01H ;东西截止;南北截止ACALL SHOWSN: MOV A,#08H ;东西截止,南北准备ACALL SHOW ;南北黄灯闪烁程序ACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00H ;南北黄灯闪烁截止 ACALL SHOWACALL T02 ;延时0.2秒MOV A,#01H ;东西截止;南北截止 ACALL SHOWACALL T02 ;延时0.2秒MOV A,#03H ;东西南北都截止ACALL SHOWACALL T02 ;延时0.2秒JMP EW ;转EW循环T10: MOV R1,#100 ;延时10秒JMP TU1T03: MOV R1,#30 ;延时3秒JMP TU1T02: MOV R1,#02 ;延时0.2秒TU1: MOV R2,#200TU2: MOV R3,#126TU3: DJNZ R3,TU3DJNZ R2,TU2DJNZ R1,TU1RETSHOW: MOV DPTR,#PORT ;273显示单元MOVX @DPTR,ARETEND2 实验二简单I/O口扩展实验(二)2.1实验要求利用74LS244作为输入口,读取开状态,并将此状态通过发光二极管显示出来。

操作系统实验报告实验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、实现一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。

操作系统实验--实验环境的使用heu

操作系统实验--实验环境的使用heu

操作系统实验--实验环境的使⽤heu 操作系统实验报告哈尔滨⼯程⼤学计算机科学与技术学院第⼀讲实验环境的使⽤⼀、实验概述1. 实验名称实验环境的使⽤2. 实验⽬的熟悉操作系统集成实验环境 OS Lab 的基本使⽤⽅法。

练习编译、调试 EOS 操作系统内核以及 EOS 应⽤程序。

3. 实验类型验证性实验4. 实验内容启动OSLab学习OSLab基本使⽤⽅法EOS内核项⽬的⽣成和调试EOS应⽤程序项⽬的⽣成和调试退出OSLab保存EOS内核项⽬⼆、实验环境使⽤WIINDOWS XP操作系统和OS Lab集成实验环境,涉及C语⾔等编程语⾔。

三、实验过程1. 设计思路和流程图对于WINDOWS控制台应⽤程序:对于EOS内核项⽬:对于EOS应⽤程序项⽬:2. 算法实现验证性实验,⽆需算法3. 需要解决的问题及解答(1)练习使⽤单步调试功能(逐过程、逐语句),体会在哪些情况下应该使⽤“逐过程”调试,在哪些情况下应该使⽤“逐语句”调试。

练习使⽤各种调试⼯具(包括“监视”窗⼝、“调⽤堆栈”窗⼝等)。

解答:逐语句,就是每次执⾏⼀⾏语句,如果碰到函数调⽤,它就会进⼊到函数⾥⾯。

⽽逐过程,碰到函数时,不进⼊函数,把函数调⽤当成⼀条语句执⾏。

因此,在需要进⼊函数体时⽤逐语句调试,⽽不需要进⼊函数体时⽤逐过程调试。

(2)思考⽣成 EOS SDK ⽂件夹的⽬的和作⽤。

查看 EOS SDK ⽂件夹中的内容,明⽩⽂件夹的组织结构和各个⽂件的来源和作⽤。

查看 EOS 应⽤程序包含了 SDK ⽂件夹中的哪些头⽂件,是如何包含的?解答:EOS SDK是为应⽤程序调⽤系统API提供服务,可作为⽤户编程中可使⽤的⼯具包集合。

EOS SDK⽂件夹主要包括INC头⽂件、LIB⽂件夹导⼊库⽂件和BIN⽂件夹动态链接库,可执⾏程序,⼆进制⽂件。

EOS SDK包含的头⽂件有:eos.h 负责导出API函数声明;eosdef.h负责导出函数类型的定义;error.h 负责导出错误码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的时间要比时间片大很多。

相关文档
最新文档