哈工大操作系统实验二
操作系统lab2实验报告

操作系统lab2实验报告实验目的:本实验的目的是通过设计和实现一个简单的操作系统内核,加深对操作系统基本概念和原理的理解。
具体实验内容包括进程管理、内存管理和文件系统的设计与实现。
实验环境:1.操作系统:Linux2.编程语言:C语言一、实验背景1.1 操作系统简介操作系统是计算机系统中的一个重要组成部分,负责管理和控制计算机的各种资源,提供用户和应用程序的接口,以及协调和调度各种任务的执行。
1.2 实验目标本实验的主要目标是设计和实现一个简单的操作系统内核,包括进程管理、内存管理和文件系统等功能。
二、实验内容2.1 进程管理①进程创建描述进程创建的过程和相关数据结构,包括创建新进程的系统调用、进程控制块等。
②进程调度描述进程调度的算法和实现方式,包括进程调度队列、调度算法等。
③进程同步与通信描述进程同步和通信的机制和方法,包括信号量、互斥锁、条件变量等。
2.2 内存管理①内存分配描述内存分配的算法和实现方式,包括连续内存分配、非连续内存分配等。
②页面置换描述页面置换的算法和实现方式,包括最优页面置换算法、先进先出页面置换算法等。
2.3 文件系统①文件操作描述文件操作的系统调用和相关数据结构,包括文件打开、读写、关闭等。
②文件系统结构描述文件系统的组织结构和实现方式,包括超级块、索引节点、块位图等。
三、实验步骤3.1 环境搭建搭建实验环境,包括安装Linux操作系统、编译器等。
3.2 进程管理实现根据设计要求,实现进程创建、调度、同步与通信等功能。
3.3 内存管理实现根据设计要求,实现内存分配、页面置换等功能。
3.4 文件系统实现根据设计要求,实现文件操作和文件系统结构。
3.5 测试与调试编写测试用例,对实现的操作系统内核进行测试和调试,并记录实验结果。
四、实验结果分析分析测试结果,评估实验过程中遇到的问题和解决方法,总结操作系统内核的性能和功能特点。
五、实验总结对实验过程中的收获和经验进行总结,提出改进和优化的建议。
哈工大《操作系统》实验2

问题回答:Linux 0.11的系统调用最多能传递几个参数?你能想出办法来扩大这个限制吗?
Linux 0.11内核中用户程序能够向内核最多直接传递三个参数,当然也可以不带参数。
为了方便执行,内核源代码在include/unistd文件中定义了宏函数_syscalln(),其中n代表携带的参数个数,可以分别。
因此最多可以直接传递3个参数。
如果需要传递多个参数,大块数据给内核,则可以传递这块数据的指针值。
例如系统调用int read(int fd,char buf,int n)在其宏形式_syscall3(int, read, int, fd, char, buf, int, n),对于include/unistd中给出的每个系统调用宏,都有2+2*n个参数。
其中第一个参数对应系统调用返回值的类型;第2个参数是系统调用的名称;随后是系统调用所携带参数的类型和名称。
哈工大威海计算机操作系统原理实验报告2

计算机操作系统原理
实验报告
专业:1104202
学号:110420212
姓名:李敖
哈尔滨工业大学(威海)
实验二进程及其资源管理
一、实验目的
1.理解资源共享与互斥特性以及操作系统管理资源的基本方法。
2.学会使用高级语言进行多线程编程的方法。
3.掌握利用VC++或Java线程库实现一个管理器,用来实现操作系统对进程及其资源的管理功能。
4.通过该实验,学生可在源代码级完成进程及其资源管理方案的分析、功能设计、编程实现,控制进程间的同步、互斥关系。
二、实验要求
1.知识基础:学生应在完成对进程和线程、调度、死锁等章节的学习后进行。
2.开发环境与工具:
硬件平台——个人计算机。
软件平台——Windows操作系统,根据需要,任选安装VC++语言、java 语言或C语言开发环境。
三、实验内容
1.开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。
2.开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。
四、程序流程图
1.进程初始化
2.优先级策略调度
五、实验结果
创建进程1
创建进程2
查看正在运行的进程
替换进程
删除进程
进程调度进程1
进程2
进程3
FCFS
HPF
六、结果分析
有上述程序运行结果可知,此次试验已经基本达到了实验要求,能够实现进程的创建、查看、替换、删除操作以及进程的调度。
不过,在进程的创建中,要求每个资源要用到3个资源,对于再多的资源就无法保证了。
哈工程操作系统第二个

哈工程操作系统第二个作者: 日期:操作系统实验报告课程名称操作系统实验课程编号实验项目名称操作系统的启动学号年级三计算机科学姓名专业与技术计算机科学与技学生所在学院指导教师初妍术实验实验室名称地点哈尔滨工程大学计算机科学与技术学院第二讲操作系统的启动一、实验概述1. 实验名称操作系统的启动2. 实验目的(1)跟踪调试E0在P(机上从加电复位到成功启动的全过程,了解操作系统的启动过程。
(2)查看E0启动后的状态和行为,理解操作系统启动后的工作方式。
3. 实验类型(验证、设计)验证4. 实验内容(1)准备实验(2)调试EOS操作系统的启动过程二、实验环境EOS操作系统、Bochs模拟器、Virtual PC虚拟机软件、NASM汇编、BIO (Basic In put/Output System)三、实验过程1•准备实验(1)启动OS Lab(2)新建一个EOS Kernel项目(3)在项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。
(4)生成项目(5)生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。
找到boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小是512 字节。
找到由loader.asm生成的loader.bin文件,记录下此文件的大小1566字节,在下面的实验中会用到。
找到由其它源文件生成的操作系统内核文件kernel.dll 2调试EOS操作系统的启动过程(1)使用Bochs做为远程目标机(2)调试BIOS程序在Con sole窗口中输入调试命令sreg后按回车,CS寄存器的值为OxfOOO。
输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值J. + “・W 叭k ■ lit Cn -ft Bit■斛叶dM'hC! 4 <> Pit A-lr^ I. "pflidmr A T CS 4 # VF4I ^)<WW-EiLv-a: M 2- ■ II l^aF:*B.H -1貫電I■才F LW E.占帖那出汀刊■+ • ■ I 帕独值E! i1!1-对二■M.J9M童牛F IjT.h&M^ 益:力■ (H i 拆千HtRJt毎UOT K I Ulp ' f V I ' hlTNi.liW-JS 一二输入调试命令xp/1024b 0x0000,查看开始的1024个字节的物理内存输入xp/512b0x7c00,查看软盘引导扇区应该被加载到的内村位置,输出的内存之都是0(3)调试软盘引导扇区程序软盘引导扇区程序的主要任务就是将软盘中的loader.bin文件加载到物理内存的>'La«jMhHd ii4 «【fid "・iK拗朮・4|1*占悅
深入学习 操作系统的原理和实 现细节,包括进程通 信、死锁处理、虚拟 化技术等。
实践应用
希望将所学的操作系 统知识应用到实际项 目中,提高自己的实 践能力。
持续学习
随着技术的不断发展 ,操作系统也在不断 更新和进步,需要保 持持续学习的态度。
探索新领域
对于新兴的操作系统 领域,如云操作系统 、物联网操作系统等 ,也希望有所涉猎和 探索。
学生将了解操作系统内核的组成和功能,以及操作系统如何通过内核 实现各种基本功能。
学生将通过实验深入了解操作系统的内部实现细节,提高自己对操作 系统设计和实现的认知水平。
02
实验内容
进程管理实验
总结词
理解进程状态及其转换、进程控制块PCB的组成、进程调度算法。
详细描述
通过实验,我们深入了解了进程的概念、状态及其转换。进程控制块PCB的组成,包括进程标 识符、进程状态、优先级、CPU寄存器内容等信息。此外,我们还学习了进程调度算法,如先 来先服务、最短作业优先、优先级调度等,并进行了模拟实验。
THANKS
感谢观看
操作系统Lab2实验 报告
汇报人:
202X-01-08
目录
• 实验目的 • 实验内容 • 实验结果与分析 • 问题与改进建议 • 总结与展望
01
实验目的
理解操作系统的基本概念
01
掌握核心概念
02
操作系统是计算机系统的核心软件,负责管理计算机硬件和软件资源 ,为用户提供便利的操作界面和高效的服务。
03
操作系统具有并发性、虚拟性、异步性和随机性的特点,这些特点决 定了操作系统在计算机系统中的重要地位和作用。
04
操作系统的基本功能包括进程管理、内存管理、文件管理和设备管理 ,这些功能是操作系统实现其核心目标的基础。
哈工程操作系统第二个

哈工程操作系统第二个————————————————————————————————作者:————————————————————————————————日期:操作系统实验报告课程名称操作系统实验课程编号实验项目名称操作系统的启动学号年级三计算机科学姓名专业与技术计算机科学与技学生所在学院指导教师初妍术实验实验室名称地点哈尔滨工程大学计算机科学与技术学院第二讲操作系统的启动一、实验概述1. 实验名称操作系统的启动2. 实验目的(1)跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。
(2)查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。
3. 实验类型(验证、设计)验证4. 实验内容(1)准备实验(2) 调试EOS操作系统的启动过程二、实验环境EOS操作系统、Bochs模拟器、Virtual PC虚拟机软件、NASM汇编、BIOS(Basic Input/Output System)三、实验过程1.准备实验(1)启动OS Lab(2)新建一个EOS Kernel项目(3)在“项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。
(4)生成项目(5)生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。
找到boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小是512字节。
找到由loader.asm生成的loader.bin文件,记录下此文件的大小1566字节,在下面的实验中会用到。
找到由其它源文件生成的操作系统内核文件kernel.dll 2.调试EOS操作系统的启动过程(1)使用Bochs做为远程目标机(2)调试BIOS程序在Console窗口中输入调试命令sreg后按回车,CS寄存器的值为0xf000。
输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值输入调试命令xp/1024b 0x0000,查看开始的1024个字节的物理内存。
操作系统实验2
操作系统实验2操作系统实验报告哈尔滨工程大学软件学院一、实验概述1. 实验名称实验环境的使用2. 实验目的熟悉操作系统集成实验环境OS Lab的基本使用方法。
练习编译、调试EOS操作系统内核以及EOS应用程序。
3. 实验类型验证二、实验环境OS Lab三、实验过程新建:调试:使用Bochs作为远程目标机:调试:调试软盘引导扇区程序:查看boot.lst文件:查看最后指令字节码调试加载程序:调试内核:EOS启动后的状态和行为:ID是31的是应用程序的进程,ID31的是系统进程。
应用程序的优先级是8,而系统进程的优先级是24,应用程序的进程数是1,而系统进程的进程数是10,并且应用程序是有名字的,而系统程序没有名字。
Id是33的是应用程序的主线程,它与系统线程主要的区别就是优先级不同。
四、思考题1、为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin两个程序?使用一个可以吗?它们各自的主要功能是什么?如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于512字节?答:在IDE环境启动执行EOS操作系统的时候,会把boot.bin、loader.bin和kernel.dll三个二进制文件写到软盘镜像文件中,然后让虚拟机来执行软盘里的EOS操作系统。
仅使用其中的一个是不能运行的。
Boot.bin程序的功能是:在Boot.bin程序执行的过程中,CPU始终处于实模式状态。
Boot.bin程序利用BIOS提供的int 0x13中断服务程序读取软盘FAT12文件系统的根目录,在根目录中搜寻loader.bin文件。
Loader.bin程序的功能是:Loader.bin程序的任务和Boot.bin程序很相似,同样是将其它的程序加载到物理内存中,但这次加载的是EOS内核。
除此之外,Loader.bin程序还负责检测内存大小,为内核准备保护模式执行环境等工作。
哈尔滨工业大学(威海)操作系统实验报告及答案
哈尔滨工业大学(威海)操作系统实验报告说明:本实验报告实验答案,是本人在上实验时的测试数据,由于操作系统实验中后面实验与当时所做实验的计算机的配置有关,因此本实验报的数据仅供参考。
实验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)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
操作系统实验报告Lab2物理内存管理(含challenge)
Lab2实验报告一、练习0:填写已有实验利用Understand中的Compare完成此练习。
二、练习1:实现firstfit连续物理内存分配算法大体思路:物理内存页管理器顺着双向链表进行搜索空闲内存区域,直到找到一个足够大的空闲区域,这是一种速度很快的算法,因为它尽可能少地搜索链表。
如果空闲区域的大小和申请分配的大小正好一样,则把这个空闲区域分配出去,成功返回;否则将该空闲区分为两部分,一部分区域与申请分配的大小相等,把它分配出去,剩下的一部分区域形成新的空闲区。
其释放内存的设计思路很简单,只需把这块区域重新放回双向链表中即可。
实现目标:重写default_init_memmap(),default_alloc_pages(),default_free_pages()函数。
具体细节:a)default_init_memmap()函数这个函数是用来初始化空闲页链表的。
主要有两个步骤:初始化每一个空闲页,计算空闲页的总数。
注意:1.使用头插法是因为地址是从低地址向高地址增长。
2.p->flags = 0语句已经将PG_reserved标志位置零。
b)default_alloc_pages()函数这个函数是用来分配空闲页的。
主要步骤如下:1.寻找足够大的空闲块1.1.如果找到了,重新设置标志位1.2.从空闲链表中删除此页1.3.判断空闲块大小是否合适1.3.1.如果不合适,分割页块1.3.2.如果合适则不进行操作1.4.计算剩余空闲页个数1.5.返回分配的页块地址备注:在参考答案中,我认为有些语句是冗余的,如图:验证:在第二次重置标志位前后,分别输出标志位的值,发现,flags 并没有发生变化。
然后将这两句话注释,编译后运行,依旧可以得到正确答案。
所以我认为这两句话是没有必要的。
c)default_free_pages()函数这个函数的作用是释放已经使用完的页,把他们合并到freelist中。
哈工大 嵌入式系统实验指导02
实验二:GPIO输入/输出实验1.实验目的z了解Mini2440 ARM实验板的功能和使用。
z掌握J-link仿真器的用法,并能连接实验板调试程序。
z掌握GPIO外设的操作原理和编程。
2.实验设备z硬件:PC机一台Mini2440 ARM实验板一套J-link仿真器一套z软件:WindowsXP系统,Keil uVision 4.0集成开发环境3.实验内容(1)使用GPIO控制Mini2440实验板上的LED指示灯的亮/灭,使用Keil uVision的调试功能单步、全速运行程序,设置断点,打开寄存器窗口监视寄存器,观察实验板上的LED指示灯的状态。
(2)使用GPIO读取Mini2440实验板上的按键状态,观察按键输入的抖动现象。
4.实验预习要求(1)学习GPIO外设的操作原理和编程方法;(2)查阅JTAG的介绍,了解使用仿真器联机调试的原理。
5.实验步骤(1)认识Mini2440 ARM实验板。
见图2-1。
图2-1 实验板及主要功能模块图2-2 电源接口与电源开关LED 是开发中最常用的状态指示设备,本开发板具有4个用户可编程LED,它们直接与CPU 的GPIO 相连接,低电平有效(点亮),详细电路连接关系见图2-3、图2-4。
图2-3 LED指示灯开发板总共有6个用户测试用按键,它们均从CPU 中断引脚直接引出,低电平触发,这些引脚也可以复用为GPIO和特殊功能口。
图2-4 按键输入JTAG接口是开发中最重要的接口,用途是调试,市面上常见的JLINK、ULINK,以及其他的仿真调试器,最终都是通过JTAG 接口连接的。
标准的JTAG 接口是4 线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线,加上电源和地,一般总共6 条线就够了;为了方便调试,大部分仿真器还提供了一个复位信号。
见图2-5。
图2-5 JTAG接口(2)启动Keil uVision,新建一个工程ex02-1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨工业大学远程教育课程操作系统
实验二
主讲人:张英涛
实验2进程控制与描述
n通过在Windows任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,观察操作系统运行的动态性能,获得包含多进程的应用程序编程经验
•实验2.1 Windows 任务管理器的进程管理
•实验2.2 Windows 2000 编程
§2.1 Windows 任务管理器的进程管理n实验时间:2学时,难度系数:3
背景知识
n Windows 2000的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位
n使用任务管理器
•可以打开监视计算机性能的关键指示器,快速查看正在
运行的程序的状态,或者终止已停止响应的程序
•也可以使用多个参数评估正在运行的进程的活动,以及
查看CPU 和内存使用情况的图形和数据
背景知识
n任务管理器中
•“应用程序”选项卡:显示正在运行程序的状态,用
户能够结束、切换或者启动程序
•“进程”选项卡:显示正在运行的进程信息。
例如,可以显示关于CPU 和内存使用情况、页面错误、
句柄计数以及许多其他参数的信息
•“性能”选项卡:显示计算机动态性能,包括CPU
和内存使用情况的图表,正在运行的句柄、线程和
进程的总数,物理、核心和认可的内存总数(KB)
等
实验目的
n通过在Windows 任务管理器中对程序进程进行响应的管理操作
n熟悉操作系统进程管理的概念
n学习观察操作系统运行的动态性能
实验内容与步骤
n使用任务管理器终止进程
n显示其他进程记数器
n更改正在运行的程序的优先级
实验提示
n注意实验中所使用的是操作系统的哪个版本n了解在当前机器中正在运行的应用程序
n终止进程时要小心,有可能导致不希望发生的结果,包括数据丢失和系统不稳定等;终止进程将结束它直接或间接创建的所有子进程
§2.2 Windows 2000 编程n实验时间:2学时,难度系数:4
背景知识
n Windows 2000可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序
n控制台应用程序可以创建GUI;GUI应用程序可以作为服务来运行;服务也可以向标准的输出流写入数据——不同类型应用程序间的惟一重要区别是其启动方法
背景知识
n Windows 2000是以NT的技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能
n服务应用程序类型需要ServiceMail() 函数,由服务控制管理器(SCM) 加以调用。
SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。
其本身负责使应用程序的行为像一个服务。
通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限
背景知识
n当令C++ 编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main() 、ServiceMain() 或WinMain() 函数的低级入口点。
机器代码中包括有控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等
n Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL) 代码块,在其中包含应用程序所使用的机器代码和应用程序的数据
实验目的
n通过对Windows 2000编程
•进一步熟悉操作系统的基本概念
•较好地理解Windows 2000的结构
实验内容与步骤
n简单的控制台应用程序
n GUI应用程序
n进程对象
实验提示
n程序文件夹中包含了实验中用到的所有程序的源代码,这些源程序均通过调试运行,实验时可直接将文件输入。