操作系统 (第一个实验)..

合集下载

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C 和 C++。

实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。

通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。

2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。

通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。

在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。

(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。

通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。

2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。

在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。

(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。

操作系统实验1

操作系统实验1

实验报告书学生姓名高雪学号班级计10A-2 2011 —2012 学年第一学期2021-8-19 第2页/共12页2021-8-19 第3页/共12页5.signal()signal()函数是允许调用进程控制软中断信号的处理。

6.pipe()函数pipe函数用于创建一个管道五、编译与执行过程截图1.进程的创建执行后出现acb和abc两种不同情况2.进程的控制〔1〕加锁情况:2021-8-19 第4页/共12页( 2 )没有加锁的情况3.进程的软中断通信2021-8-19 第5页/共12页4.进程的管道通信六、实验结果与分析1.进程的创建:实验一为进程创建,由以上截图可以看到产生了不同的结果,即acb和abc。

最初只有acb一种情况,反复执行之后,会出现abc。

原因很简单,就是因为进程的特性:并发性。

进程之间是并发执行的,并发只说一段时间内同时进行。

第一个输出一定是a,因为a在bc之外优先执行,而在执行bc的时候,2者会随机出现,多数情况会是acb,假设想更快的见到abc,可以讲c语句变长,如改为this is c child.这样进程需要的时间就稍长,后一个会先出现了。

但宏观来看,还是并行的。

2. 进程的控制实验二为进程控制,分为不加锁和加锁的情况,产生的结果不同,在不加锁的情况下,还有由于进程的执行具有并发性这个特征,因此会产生字符交叉的情况,即某一个进程在自己的时间片当中使用处理机,但是当时间片结束,还没有完成,但也必须由下一个进程接管处理机,因为它就进入了阻塞的状态。

多个进程反复出现,所以就出现了输出的字符交叉的情况。

但是,当我们对进程加锁后,就说明只能由该程序占用处理机,必须这些完这段程序才能执行下一段,因为不会出现交叉的情况,这个就是锁的作用。

2021-8-19 第6页/共12页2021-8-19 第7页/共12页2021-8-19 第8页/共12页2021-8-19 第9页/共12页2021-8-19 第10页/共12页2021-8-19 第11页/共12页2021-8-19 第12页/共12页。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

南京邮电大学-操作系统实验报告

南京邮电大学-操作系统实验报告

课内实验报告课程名:操作系统任课教师:沈超专业:信息管理与信息系统学号:姓名:二○一六至二○一七年度第一学期南京邮电大学经济与管理学院Process[numberschedul].order=tempcounter;}程序结果截图:二、银行家算法(网上借鉴)银行家算法,当进程提出资源申请时,系统首先检查该进程对资源的申请量是否超过其最大需求量及系统现有的资源能否满足进程需要。

若超过,则报错,若不能满足,则让该进程等待;否则进一步检查把资源分给该进程后系统能否出于安全状态,若安全,则分配,否则置该进程为等待资源状态。

算法实现过程:设进程i 提出请求REQUEST [j] ,则银行家算法按如下规则进行判断。

(1) 如果REQUEST [i] [j]<= NEED[i][j] ,则转(2) ;否则,出错。

(2) 如果REQUEST [i] [j]<= A V AILABLE[i][j] ,则转(3) ;否则,出错。

(3) 系统试探分配资源,修改相关数据:A V AILABLE[j]-=REQUEST[i][j];ALLOCATION[i][j]+=REQUEST[i][j];NEED[i][j]-=REQUEST[i][j];(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。

Check()关键代码:{int k, f, no=0;int work[M],a[M];char finish[M];anquan=1;for(i=0;i<n; i++) finish[i]='F';for(j=0;j<m; j++) work[j]=available[j]; k=n;do{ for (i=0;i<n; i++){if (finish[i]=='F'){ f=1;for (j=0;j<m; j++)if (need[i][j]>work[j]) printf("处于安全状态.");printf("安全序列号:");for (i=0;i<n;i++) printf ("%d ",a[i]); printf("\n");printf("进程");printf(" ");printf(" Max ");rintf(" ");rintf("allocation");printf(" ");printf("need");printf(" ");f=0;if (f==1)//找到还没完成的且需求数小于可提供进程继续运行的{ finish[i]='T';a[no++]=i;//记录安全序列号for (j=0;j<m; j++)work[j]=work[j]+allocation[i][j];//释放该进程已分配的资源available[j] =work[j];}}}k--; }while(k>0);f=1;for (i=0;i<n; i++)//判断有没有进程没完成{ if (finish[i]=='F'){f=0;break; }} if (f==0) {printf("不安全状态!\n");anquan=0;} else {printf("available");printf("\n");for (i=0;i<n; i++){ printf("%2d",i);printf(" ");for(j=0;j<m; j++)printf("%2d",max[i][j]);printf(" ");for(j=0;j<m; j++)printf("%2d",allocation[i][j]);printf(" ");for(j=0;j<m; j++)printf("%2d",need[i][j]);printf(" ");for(j=0;j<m; j++){if(i>0)break;printf("%2d",available[j]);}printf("\n");}}}程序结果截图:三、实验总结:这次上机模拟了进程调度过程和解决了死锁问题,让我对短作业优先调度算法和银行家算法有了比在课堂上更深刻的认识。

操作系统实验一中断处理

操作系统实验一中断处理

实习一中断处理一、实习内容模拟中断事件的处理。

二、实习目的现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。

中断机构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。

对不同的中断事件,由于它们的性质不同,所以操作系统应采用不同的处理。

通过实习了解中断及中断处理程序的作用。

本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。

三、实习题目模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。

[提示]:(1) 计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。

中断寄存器的每一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成―1‖。

处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为―0‖时,说明有中断事件发生。

硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。

操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。

本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加1 来模拟处理器执行了一条指令。

每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示发生了时钟中断事件,转时钟中断处理程序。

(2)假定计算机系统有一时钟,它按电源频率(50Hz)产生中断请求信号,即每隔20毫秒产生一次中断请求信号,称时钟中断信号,时钟中断的间隔时间(20 毫秒)称时钟单位。

学生可按自己确定的频率在键盘上键入―0‖或―1‖来模拟按电源频率产生的时钟中断信号。

(3) 中断处理程序应首先保护被中断的现行进程的现场(通用寄存器内容、断点等),现场信息可保存在进程控制块中;然后处理出现的中断事件,根据处理结果修改被中断进程的状态;最后转向处理器调度,由处理器调度选择可运行的进程,恢复现场使其运行。

四川大学计算机操作系统 实验一 熟悉Linux命令

四川大学计算机操作系统 实验一  熟悉Linux命令
操作命令: cat:显示文件内容。 如:cat /etc/vsftpd/vsftpd.conf cp: 复制文件 cp /etc/vsftpd/vsftpd.conf testcp 把文件/etc/vsftpd/下的文件vsftpd.conf复制到当 前目录下,并重命名为testcp。 rm :删除文件
实验一 熟悉Linux命令
选择开始->程序->VMware->VMware Workstation,运行虚拟机:
登陆linux系统:帐户root,密码123456
实验一 熟悉Linux命令
鼠标和键盘在某一时刻只能由一个系统占用。两 个设备在两个系统之间的切换: ①鼠标点击VMware的工作窗口,进入Linux系统; ②在Linux状态下按Ctrl+Alt回到windows系统。 登陆Linux系统: 使用用户名“root” 注意:由于root是超级管理员,所以不要运行大 的删除命令。 本试验没有用到图形化界面,只用终端即可
实验一 熟悉Linux命令
1.1实验目的 (1)通过在Linux系统终端下执行一些基本命令, 初步建立对Linux系统的了解,会使用man命令查 找这些命令的使用帮助。 (2)理解/proc作为虚拟文件系统的作用。 (3)学习Linux内核、进程、存储等资源的一些重 要特征。
实验一 熟悉Linux命令
实验一 熟悉Linux命令
shell的特殊字符 (1)通配符*、? ,使用通配符可以表示多个文件: ls /etc/a* 列出/etc目录下以a打头的 所有文件名。 ls /etc/a?i* 列出/etc目录下以a打头的,第二个为任一字符, 接下来的字符为i的文件。 (2)sort命令:从所给文件中按行读取正文,并按照第一 个字母的顺序排序,然后将结果到标准输出(屏幕),如: (假设当前目录有文件animals) $ sort animals bee 屏幕输出第一行 cat 屏幕输出第二行 dog 屏幕输出第三行

操作系统实验报告心得体会范文大全(8篇)

操作系统实验报告心得体会范文大全(8篇)

操作系统实验报告心得体会范文大全(8篇)操作系统实验报告心得体会范文大全篇一:通过这一学期学习,才慢慢接触专业课。

刚开始觉得挺难得我都有点不想学这个专业了,慢慢的我觉得有趣多了。

虽然我学的不是很好,最起码我能给自己装系统了。

我给自己的电脑装过window7、xp系统。

从一开始连个cmos设置都不会进去,到现在能装各种机型的系统。

让我最高兴的事是我会建立网站了,以及能制作出复杂点的,漂亮的网页了。

从刚开始学装windowserver20xx时,我真的懵懵懂懂的,那开始是真的不想学这个专业了,那段时间还学java编程,我真的快崩溃了,后悔自己干嘛学这个专业,我根本就是没有天赋,感觉大学这四年完蛋了,大一大二还没有感觉,现在真实的感受到了,但后来发现,我是越来越感觉有兴趣了,只要肯付出课后肯钻研,就一定会有一点收获的。

通过这次网页课程设计激发学习兴趣,调动学习的自觉性,自己动脑、动手,动口,运用网络资源,结合教材及老师的指导,通过自身的实践,创作出积聚个人风格、个性的个人网页。

总体来说,整个学期的学习过程,我学会了很多知识,在此次网页设计中,我充分利用了这次设计的机会,全心全意投入到网页世界,去不断的学习,去不断的探索;同时去不断的充实,去不断的完善自我,在网络的天空下逐渐的美化自己的人生!做好页面,并不是一件容易的事,它包括个人主页的选题、内容采集整理、图片的处理、页面的排版设置、背景及其整套网页的色调等很多东西。

本次课程设计不是很好,页面过于简单,创新意识反面薄弱,这是我需要提高的地方。

需要学的地方还有很多,需要有耐心、坚持,不断的学习,综合运用多种知识,才能设计出好的web页面。

总体来说,通过这次的对网页和网站课程设计,有收获也有遗憾、不足的地方,但我想,我已经迈入了网页设计的大门,只要我再认真努力的去学习,去提高,凭借我对网页设计的热情和执着,我将来设计出的网页会更加专业,更完善。

操作系统实验报告心得体会范文大全篇二:转眼间,学习了一个学期的计算机操作系统课程即将结束。

《操作系统》课程实验内容和实验要求

《操作系统》课程实验内容和实验要求

实验内容和实验要求实验1:安装Linux系统(4学时)目的:1.学会在操作系统安装之前,根据硬件配置情况,制订安装计划。

2.学会在安装多操作系统前,利用硬盘分区工具(如PQMagic)为Linux准备分区。

3.学会Linux操作系统的安装步骤和简单配置方法。

4.学会Linux系统的启动、关闭步骤,初步熟悉Linux系统的用户界面。

内容:1.安装并使用硬盘分区工具(如PQMagic),为Linux准备好分区。

2.安装Linux系统(如红旗Linux桌面版)。

3.配置Linux系统运行环境。

4.正确地启动、关闭系统。

5.对图形界面进行一般操作。

要求:1.制订安装计划。

2.如果在机器上已安装了Windows系统,而且没有给Linux预备硬盘分区,则安装硬盘分区工具(如PQMagic),运行它,为Linux划分出一块“未分配”分区。

3.在光驱中放入Linux系统安装盘,启动系统。

按照屏幕提示,选择/输入相关参数,启动安装过程。

4.安装成功后,退出系统,取出安装盘。

重新开机,登录Linux系统。

5.对Linux系统进行配置,如显示设备、打印机等。

6.利用鼠标对图形界面进行操作。

说明:1.本实验应在教师的授权和指导下进行,不可擅自操作,否则可能造成原有系统被破坏。

2.如条件不允许每个学生亲自安装,可采用分组进行安装或课堂演示安装的方式。

实验2:Linux 应用及shell编程(4学时)目的:1.掌握Linux一般命令格式和常用命令。

2.学会使用vi编辑器建立、编辑文本文件。

3.了解shell的作用和主要分类。

4.学会bash脚本的建立和执行方式。

5.理解bash的基本语法。

6.学会编写简单的shell脚本。

内容:1.正确地登录和退出系统。

2.熟悉使用date,cal等常用命令。

3.进入和退出vi。

利用文本插入方式建立一个文件。

4.学会用gcc编译器编译C程序。

5.建立shell脚本并执行它。

6.学会使用shell变量和位置参数、环境变量。

操作系统实验

操作系统实验

实验一:系统调用目的:深入理解操作系统是虚拟机实验方法:利用UNIX/LINUX所提供的系统调用来编写C语言程序,程序中要体现出一些典型的系统调用(函数)。

任务:编写一个C语言程序,该程序将一个存放了一系列整数的文本文件进行排序,每个整数占据文件的一行,排序的结果存放到一个新的文件之中。

源文件和目标文件的文件名字由命令行输入。

例如:假设可执行文件的文件名是sort,源文件与目标文件的名字分别是data 和newdata,那么命令行的情形为如下所示内容:./sort data newdata1、命令行参数的传递。

根据C语言编程规范的要求,传递命令行参数通过main函数进行。

main函数的原型是:main(int argc, char **args),其中argc是一个整数,表示命令行中参数的个数,第二个参数是字符串指针数组,这个数组中的第0个元素存放可执行文件名称,其余为参数,用args[1], args[2]... ...访问。

以上述命令行为例,argc为3,args[0]为“./sort”,args[1]为“data”,args[2]为“newdata”2、系统调用的使用(1)打开文件系统调用open在读写一个文件之前,必须打开这个文件,打开文件的过程主要是将文件的控制结构(LINUX中是i节点)调入内存。

本实验中用如下语句打开文件:fd = open(args[1], O_RDONL Y);第一个参数是打开的文件名,第二个参数O_RDONL Y表示只读,O_WRONL Y表示只写,O_RDWR表示读写,O_CREAT表示创建文件。

open系统调用返回一个整数作为文件描述符,以后用这个文件描述符来访问文件,如果因为某种原因(文件不存在,不符合访问权限,存储空间不足等)致使文件无法打开,则open返回-1。

(2)文件信息读取系统调用read本实验使用如下语句读取文件信息read(fd, &ch, 1)fd是open返回的文件描述符,ch为字符变量,1表示从文件中读取一个字节。

操作系统实验_实验1课案

操作系统实验_实验1课案

广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室 2015年11月11日实验课操作系统成绩程名称实验项进程管理与进程通信指导老师陈康民目名称(***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)进程管理(一)进程的创建实验一、实验目的1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质二、实验内容1、编写一段程序,使用系统调用fork( )创建两个子进程。

当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。

试观察记录屏幕上的显示结果,并分析原因。

2、修改上述程序,每一个进程循环显示一句话。

子进程显示'daughter …'及'son ……',父进程显示'parent ……',观察结果,分析原因。

三、实验步骤1、编写一段程序,使用系统调用fork( )创建两个子进程。

代码:#include <stdio.h>main( ){int p1,p2;while((p1=fork( ))= = -1); /*创建子进程p1*/if (p1= =0) putchar('b');else{while((p2=fork( ))= = -1); /*创建子进程p2*/if(p2= =0) putchar('c');else putchar('a');}}运行结果:bca,bac, abc ,……都有可能。

2、修改上述程序,每一个进程循环显示一句话。

子进程显示'daughter …'及'son ……',父进程显示'parent ……',观察结果,分析原因。

代码:#include <stdio.h>main( ){int p1,p2,i;while((p1=fork( ))= = -1); /*创建子进程p1*/if (p1= =0)for(i=0;i<10;i++)printf("daughter %d\n",i);else{while((p2=fork( ))= = -1); /*创建子进程p2*/if(p2= =0)for(i=0;i<10;i++)printf("son %d\n",i);elsefor(i=0;i<10;i++)printf("parent %d\n",i);}}结果:parent…son…daughter..daughter..或parent…son…parent…daughter…等四、分析原因除strace 外,也可用ltrace -f -i -S ./executable-file-name查看以上程序执行过程。

EOS操作系统实验(1)

EOS操作系统实验(1)

实验1 实验环境的使用一、实验目的熟悉操作系统集成实验环境OS Lab的基本使用方法。

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

二、实验内容1、启动OS Lab2、学习OS Lab的基本使用方法(1):新建Windows控制台应用程序1. 在“文件”菜单中选择“新建”,然后单击“项目”。

2. 在“新建项目”对话框中,选择项目模板“控制台应用程序(c)”。

3. 在“名称”中输入新项目使用的文件夹名称“oslab”。

4. 在“位置”中输入新项目保存在磁盘上的位置5. 点击“确定”按钮。

(2):生成项目:使用“生成项目”功能可以将程序的源代码文件编译为可执行的二进制文件,方法十分简单:在“生成”菜单中选择“生成项目”。

在项目生成过程中,“输出”窗口会实时显示生成的进度和结果。

如果源代码中不包含语法错误,会在最后提示生成成功,如图:执行项目:在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,执行刚刚生成的Windows控制台应用程序。

调试项目:a:使用断点终端执行:1. 在main函数中定义变量n的代码行int n = 0; 上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一个断点,如图2. 在“调试”菜单中选择“启动调试”,Windows控制台应用程序开始执行,随后OS Lab窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此行代码处中断执行(也就是说下一个要执行的就是此行代码),如图:3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,因为printf函数还没有被执行。

b:单步调试按照下面的步骤练习使用“逐过程”功能:1. 在OS Lab的“调试”菜单中选择“逐过程”,“逐过程”功能会执行黄色箭头当前指向的代码行,并将黄色箭头指向下一个要执行的代码行。

计算机操作系统实验_操作系统引导

计算机操作系统实验_操作系统引导

西北工业大学操作系统实验实验报告一、实验目的熟悉GeekOS实验环境。

二、实验要求编译运行操作系统的启动代码。

三、实验过程及结果1、编写第一个“操作系统”,代码如下:org 07c00hmov ax,csmov ds,axmov es,axcall DispStrjmp $DispStr:mov ax,BootMessagemov bp,axmov cx,16mov ax,01301hmov bx,00aehmov dl,0int 10hretBootMessage: db "hello,OS world!"times 510-($-$$) db 0dw 0xaa55结果如图:修改boot.asm,修改文字颜色,代码如下:org 07c00hmov ax,csmov ds,axmov es,axcall DispStrjmp $DispStr:mov ax,BootMessagemov bp,axmov cx,16mov ax,01301hmov bx,00aeh //在此处修改BL的值,可以修改颜色mov dl,0int 10hretBootMessage: db "hello,OS world! "times 510-($-$$) db 0dw 0xaa55结果如图:2.在bochs中运行geek OS,结果如图:四、实验分析思考:引导扇区的标志是0x55AA,为何代码中写入的却是 dw 0xAA55?答:因为存储时低位在前,高位在后,所以代码中高低位反过来写。

五、所遇问题及解决方法答:实验过程中,最大的困难就是理解geek OS的代码。

一个原因是我们没有学过有关汇编的知识,导致代码中有关汇编的部分一头雾水,难以理解;另一方面是之前自己接触的源码比较少,第一次见到geek OS这么大的工程代码,感觉理解起来很困难,不过,在老师花费了几个小时的讲解下,我最终还是勉强理解了一部分。

操作系统第一次实验报告

操作系统第一次实验报告

实验一 Linux操作系统的安装及使用(1) 总结通过几种途径安装Linux操作系统的经验;1、CygwinCygwin可以帮助我们在Windows环境下运行大部分的Linux应用程式,在cygwin1.dll 帮助下,可以造就出Linux API模拟环境。

Cygwin必须在重新编译下运行,方法很简捷,可以帮助大家体验Linux,而且使大家可以尝试大量较常见的Linux应用软件,Cygwin 目前已被广泛应用。

2、Virtualization(虚拟化)我相信使用虚拟机才是大家最常用的手法,虚拟化的好处就是“无缝”体会。

要想手动安装一个Linux系统,不是很简单的,但虚拟化使一切简单起来,起码不需要重新硬盘分区。

目前较好的虚拟应用有有VirtualBox(免费)和VMware(收费),虚拟应用已经走过了漫长的岁月,现在对USB ,无线网络,DVD等都有很好的支持,但虚拟操作系统并不适合每一个人,因为要求电脑要有较高的CPU跟内存才能体验真正的虚拟化,资源不够会导致其功能和性能存在着很多不尽如人意的地方。

下图是安装了virtualbox,同一台电脑在Windows和Linux环境下运行firefox:另一款虚拟Linux的安装最近人气急升,应用的是coLinux (Cooperative Linux)内核,这些虚拟方式与传统的虚拟最大的不同就是完全控制硬件。

还有ooperative Virtual Machine (CVM),但这个不被Linux社区广泛应用。

这里有一张介绍使用coLinux核心情况的列表。

当然好用的还有Ulteo,Ulteo是一种即插即用Ubuntu的衍生coLinux应用,现在已经有强大的软件支持,在XP和Vista (32位)下也易于安装。

下图是Ulteo:3、WubiWubi(Windows-based Ubuntu Installer),极度推荐给Linux新用户,原因就是它的低风险及安全性。

操作系统实验(1)

操作系统实验(1)

实验一Linux常用命令实验一.目的和要求本实验的目的是熟悉Linux操作系统的命令接口、图形接口和程序接口;了解Linux操作系统的启动过程;了解Linux操作系统的目录结构;用vi编辑器编写简单的C语言程序,并用gcc编译器编译、运行。

二.实验内容1、实现开机、登录、退出与关机:(1)如果以root用户登录,则命令窗口的提示符为#;如果以普通用户登录,则命令窗口的提示符为$;登陆用户名:user 密码:123456(2)修改口令(修改口令操作不做):成功进入系统后,在命令提示符后输入“passwd”并键入回车键(3)退出帐号:命令方式下:logout(4)关机或重启:命令方式下:halt或reboot窗口方式下:“桌面”->“注销”2、掌握的基本常用命令列表(1)关于目录的操作命令:cd、ls、mkdir 、rmdir、pwd等;(2)关于文件的操作命令:cat、find、man/help、vi/vim、cp、rm、mv、dd、du、df、chmod、ln等;(3)关于进程管理的操作命令:ps、kill、top、free 等;(4)关于系统管理的操作命令:whoami、passwd、adduser/useradd、addgroup、userdel、groupdel、su、who、Ctrl+Alt+Fn(n=1、2、3、4、5、6)(在X-Window界面下切换到字符界面,重新登录,Ctrl+Alt+F7返回图形界面)、Alt+Fn(n=1、2、3、4、5、6)(在6个虚拟终端之间切换)等;(5)安装和卸载文件系统:mount、umount等;(6)显示有关计算机系统信息的命令:uname(显示操作系统的名称)、uname –n(显示系统域名)、uname –p(显示系统的CPU名称)(7)其它命令:time、date、cal 等。

3、阅读/etc/inittab 文本文件,思考问题:如果要求启动Linux系统之后进入字符界面,应如何修改/etc/inittab文件?用户应具有什么权限?4、切换到不同的虚拟终端,登录到Linux系统5、vi 编辑器的使用(1)进入和退出vi(2)利用文本插入方式建立一个文件(3)在新建的文本文件上移动光标。

实验1Windows基本操作

实验1Windows基本操作

实验一 Windows基本操作【实验目的与要求】1.掌握并熟悉Windows XP界面,如何进入Windows XP;2.掌握并熟悉Windows XP的窗口操作以及存储体系;3.掌握并熟悉Windows XP的常用操作;4.熟练掌握控制面板、任务管理器和系统工具的使用。

【实验内容】1.如何进入Windows XP;2.Windows XP的窗口操作、存储体系简介;3.Windows XP的常用操作;4.控制面板、任务管理器和系统工具的使用。

【实验课时】4学时【实验步骤】第一、进入Windows XP一:登陆Windows XP开机后等待计算机自行启动到登陆界面,如果计算机系统本身没有设密码的用户,系统将自动以该用户身份进入Windows XP系统;如果系统设置了一个以上的用户并且有密码,用鼠标单击相应的用户图标,然后从键盘上输入相应的登陆密码并按回车键就可以进入Windows XP系统。

二:Windows XP桌面Windows XP的桌面由桌面图标,任务栏和语言栏三部分组成。

(1)桌面图标①桌面图标就象图书馆的书签一样,每一个图标都代表着一个常用的程序,文件,文件夹。

如“我的电脑”,“我的文档”,“网上邻居”,“回收站”,文件,文件夹和一些应用程序的快捷启动图标。

如果是安装系统后第一次登陆系统的话桌面的右下角只有一个回收站的图标。

②桌面的操作:在桌面空白处右单击鼠标就会出现如图:③移动鼠标到菜单上,相应的命令颜色就会发生变化。

命令后面有黑色小三角代表该命令后面还有子命令。

灰色命令代表当前不可用。

排列图标:当鼠标移动到该命令上边的时候,它的子命令就会自动展开,单击不同的命令选项就会使桌面上的图标按不同的方式进行排列。

刷新:刷新的本质含义是将电容器充电的一个过程,在这里我们可以将这个过程理解为让系统处于一个“清醒”的状态。

撤消删除:指取消刚刚执行删除操作。

图形属性:主要用来设置系统的图形模式,与主板相关。

操作系统原理第一次实验

操作系统原理第一次实验
图二
内容三:敲通如下程序,写出运行结果,分析程序功能。
#include <stdio.h>
#include <pthread.h>
void *ptest(void *arg)
{
printf(" This is the new thread!" );
return(NULL);
}
main()
3
{
pthread_t tid;
实验一进程管理、管道通信
一.实验名称:
进程管理、管道通信
二.实验目的:
1、熟悉linux下利用gcc、gdb编译、调试C程序
2、掌握进程的概念,明确进程的含义
3、认识并了解并发执行的实质
4、掌握进程间无名管道的通信
三.实验准备:
1、预习linux下利用gcc编译c程序。
2、参考课件及资料掌握进程的创建过程。
thread!”返回值为空,程序休眠后结束程序。
图三
内容四:敲通管道通信(课件)例题,写出运行结果,分析程序功能
#include<stdlib.h>
#include<stdio.h>
voidmain()
{
int x,fd[2];
char buf[30],s[30]; pipe(fd); while((x=fork())==-1); if(x==0)
3、参考课件及资料掌握进程的并发执行。
4、参考课件及资料掌握进程间无名管道的通信。
四.实验内Байду номын сангаас:
内容一:敲通如下程序,分析运行结果。
#include <stdio.h>
main()

实验一-熟悉Linux操作系统环境及常见命令的使用

实验一-熟悉Linux操作系统环境及常见命令的使用

实验一、熟悉Linux操作系统环境及常见命令的使用一、实验目的(1)练习进入和退出系统的操作;学习linux联机帮助命令的使用,学会怎样利用借助联机帮助命令随时查阅系统说明文档。

(2)熟悉Linux下的基本操作,学会使用各种Shell命令去操作Linux,对Linux有一个感性认识。

二、实验准备知识1.登录Linux系统必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号:1〕root--超级用户帐号〔系统管理员〕,使用这个帐号可以在系统中做任何事情。

2〕普通用户--这个帐号供普通用户使用,可以进行有限的操作。

一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。

如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统。

影响系统的正常运行。

用户登录分两步:第一步,输入用户的登录名,系统根据该登录名识别用户;第二步,输入用户的口令,该口令是用户自己设置的一个字符串,对其他用户是保密的,是在登录时系统用来区分真假用户的关键字。

当用户正确地输入用户名和口令后,就能合法地进入系统。

屏幕显示:[root@loclhost /root] #这时就可以对系统做各种操作了。

注意超级用户的提示符是“#”,其他用户的提示符是“$”。

2.修改口令为了更好的保护用户帐号的安全,Linux允许用户随时修改自己的口令,修改口令的命令是passwd,它将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令,以防止用户无意中按错键。

如果用户忘记了口令,可以向系统管理员申请为自己重新设置一个。

例如:[root@loclhost /root] # passwd <CR>3.退出系统不管是超级用户,还是普通用户,需要退出系统时,在shell提示符下,键入exit命令即可。

例如:[root@loclhost /root] # exit <CR>4.获取帮助linux 带有联机手册,可以用man 命令查阅各系统命令及系统调用的语法。

操作系统实验1_银行柜员服务问题

操作系统实验1_银行柜员服务问题

禁止中断
简单
锁变量
严格轮转法
PETERSON 算法 硬件指令 方法
忙等待
忙等待,耗费CPU时间 实现较复杂,需要系统调用;同步操 作分散,易读性较差,不利于修改和 维护,正确性难以保证
信号量
管程
编译器必须识别管程并用某种方式 提高代码可读性, 便于修改和维护, 对其互斥作出安排;多数语言不支 正确性易于保证 持,不广泛 适用于分布式系统 表- 不同互斥方法的比较 更加复杂
第 6 页 共 9 页
操作系统实验 1 银行柜员服务问题
用下表示等待某个信号量。我在查询相关知识学习后,学会了最简单的应用。 调试过程出了以下问题,在我分析之后一一解决: ①由于用到了很多之前没有用过的函数和对象, 我在设置参数的经常出毛病。 比如对同 步信号量参数不熟悉,一开始把两个参数(0 和 MAX_N 定义反了) ②犯了两个非常愚蠢的错误, 一是数组下标从 0 开始却到小于等于总数, 导致输入实际 上多了一个;而是定义了宏 SEVER 之后,直接开了一个 SEVER 大小的静态数组,然后使用了 SER[SERVER],导致数组越界,使得计数变量从一个非常奇怪的数字开始(应该是内存被占 用了) ③一开始我定义了一个柜员互斥量数组,使用方法是:等待->使用->释放。后来想想觉 得没有必要就改成了使用一个柜员互斥量, 但是忘记了这时候需要改变顺序, 应该是等待-> 释放->使用,结果运行结果发生了错误(即所有人都跑到一个柜员那去了) ,这让我苦恼了 很久, 后来在线程中逐步输出当前柜员编号和服务顾客编号, 我才发现问题在于释放的顺序 不正确。
第 5 页 共 9 页
操作系统实验 1 银行柜员服务问题
如果单位时间内进入银行的顾客数目增大, 那么顾客的平均等待时间会增大, 这些都是显而 易见的。调试时对不同数据规模的测试数据的运行也说明了这一点。 2. 实现互斥的方法有哪些?各自有什么特点?效率如何? 方法 优点 缺点 把禁止中断的权利交给用户进程,导 致系统可靠性较差;不适用于多处理 器 可能使两个进程同时处于临界区;忙 等待 有可能使临界区外的进程阻塞其他 进程;忙等待 解决了互斥访问问题,克服了强制 轮转法缺点,可以正常工作 适用于任意数目的进程;简单,易 验证其正确性;支持进程中存在多 个临界区 适用于任意数目的进程;解决忙等 待问题

操作系统上机实验报告

操作系统上机实验报告

操作系统上机实验报告计算机科学与技术学院操作系统上机实验报告实验名称:进程和线程实验⽬的:理解unix/Linux下进程和线程的创建、并发执⾏过程。

实验内容:1.进程的创建2.多线程应⽤实验步骤:⼀、进程的创建下⾯这个C程序展⽰了UNIX系统中⽗进程创建⼦进程及各⾃分开活动的情况。

1、实验指导fork( )创建⼀个新进程。

系统调⽤格式:pid=fork( )参数定义:int fork( )fork( )返回值意义如下:0:在⼦进程中,pid变量保存的fork( )返回值为0,表⽰当前进程是⼦进程。

>0:在⽗进程中,pid变量保存的fork( )返回值为⼦进程的id值(进程唯⼀标识符)。

-1:创建失败。

如果fork( )调⽤成功,它向⽗进程返回⼦进程的PID,并向⼦进程返回0,即fork( )被调⽤了⼀次,但返回了两次。

此时OS在内存中建⽴⼀个新进程,所建的新进程是调⽤fork( )⽗进程(parent process)的副本,称为⼦进程(child process)。

⼦进程继承了⽗进程的许多特性,并具有与⽗进程完全相同的⽤户级上下⽂。

⽗进程与⼦进程并发执⾏。

2、参考程序代码/*process.c*/#include#includemain(int argc,char *argv[]){int pid;/* fork another process */pid = fork();if (pid < 0) { /* error occurred */fprintf(stderr, "Fork Failed");exit(-1);}else if (pid == 0) { /* child process */ execlp( "/bin/ls", "ls",NULL);}else {/* parent process *//* parent will wait for the child to complete */ wait(NULL);printf( "Child Complete" );exit(0);}}3、编译和运⾏$gcc process.c –o processs4、运⾏$./process5、思考(1)系统是怎样创建进程的?⽤fork()系统调⽤创建。

操作系统实验心得(精选多篇)

操作系统实验心得(精选多篇)

第一篇:操作系统实验每一次课程设计度让我学到了在平时课堂不可能学到的东西。

所以我对每一次课程设计的机会都非常珍惜。

不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。

所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。

但是每完成一个任务我都兴奋不已。

一开始任务是任务,到后面任务就成了自己的作品了。

总体而言我的课设算是达到了老师的基本要求。

总结一下有以下。

2、同学间的讨论,这是很重要的。

老师毕竟比较忙。

对于课程设计最大的讨论伴侣应该是同学了。

能和学长学姐讨论当然再不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。

大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。

3、敢于攻坚,越是难的问题,越是要有挑战的心理。

这样就能够达到废寝忘食的境界。

当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。

但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。

在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域3)其他例如:<1>定义了指针后记得初始化,在使用的时候记得判断是否为null<2>在使用数组的时候是否被初始化,数组下标是否越界,数组元素是否存在等<3>在变量处理的时候变量的格式控制是否合理等解决方法1.利用gdb逐步查找段错误:2.分析core件3.段错误时启动调试:4.利用backtrace和objdump进行分析:总而言之,对待课设要像对待自己的作品一样,不要当作任务来完成。

第二篇:操作系统实验总结学号:姓名:班级:在本学期的计算机操作系统这门课学习当中,为了更的了解操作系统相关知识,我们通过os lab平台做了几个实验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告哈尔滨工程大学计算机科学与技术学院第一讲实验环境的使用一、实验概述1. 实验名称实验环境的使用2. 实验目的(1)熟悉操作系统集成实验环境OS Lab的基本使用方法。

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

3. 实验类型(验证、设计)验证型实验4. 实验内容(1)学习OS Lab的基本使用方法;(2)EOS内核项目的生成和调试;(3)EOS应用程序项目的生成和调试。

二、实验环境EOS操作系统和OS Lab集成实验环境,主要运用了C语言。

三、实验过程1.源程序并附上注释/* 定义控制台应用程序的入口点*/#include "console.h"int main(int argc, char* argv[]){/* TODO: 在此处添加自己的代码*/int Func(int n); //声明Func()函数int n=0;n=Func(10); //调用Func()函数printf("Hello world!\n"); //输出return 0;}int Func(int n) //定义Func()函数{n=n+1;return n;}2.程序运行时的初值和运行结果(1)启动OS Lab在安装有OS Lab的计算机上,可以使用两种不同的方法来启动OS Lab:在桌面上双击“Tevation OS Lab”图标;或者点击“开始”菜单,在“程序”中的“Tevation OS Lab”中选择“Tevation OS Lab”。

OS Lab每次启动后都会首先弹出一个用于注册用户信息的对话框(可以选择对话框标题栏上的“帮助”按钮获得关于此对话框的帮助信息)。

在此对话框中填入学号和姓名后,点击“确定”按钮完成本次注册。

(2)学习OS Lab的基本使用方法:1)新建Windows控制台应用程序项目新建一个Windows控制台应用程序项目的步骤如下:1.1) 在“文件”菜单中选择“新建”,然后单击“项目”。

1.2)在“新建项目”对话框中,选择项目模板“控制台应用程序 (c)”。

1.3) 在“名称”中输入新项目使用的文件夹名称“oslab”。

1.4)在“位置”中输入新项目保存在磁盘上的位置“C:\test”。

1.5)点击“确定”按钮。

2)生成项目:在“生成”菜单中选择“生成项目”。

在项目生成过程中,“输出”窗口会实时显示生成的进度和结果。

如果源代码中不包含语法错误,会在最后提示生成成功。

如果源代码中存在语法错误,“输出”窗口会输出相应的错误信息(包括错误所在文件的路径,错误在文件中的位置,以及错误原因),并在最后提示生成失败。

此时在“输出”窗口中双击错误信息所在的行,OS Lab会使用源代码编辑器打开错误所在的文件,并自动定位到错误对应的代码行。

可以在源代码文件中故意输入一些错误的代码(例如删除一个代码行结尾的分号),然后再次生成项目,然后在“输出”窗口中双击错误信息来定位存在错误的代码行,将代码修改正确后再生成项目。

3)执行项目在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的Windows 控制台应用程序。

启动执行后会弹出一个Windows控制台窗口,显示控制台应用程序输出的内容。

按任意键即可关闭此Windows控制台窗口。

4)调试项目在开始练习各种调试功能之前,首先需要对刚刚创建的例子程序进行必要的修改,步骤如下:4.1)右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。

4.2)在弹出的“添加新文件”对话框中选择“C 源文件”模板。

4.3)在“名称”中输入文件名称“func”。

4.4)点击“添加”按钮,添加并自动打开文件func.c。

4.5)在 func.c 文件中添加函数:Func。

4.6)点击源代码编辑器上方的console.c标签,切换到console.c文件。

修改main 函数。

代码修改完毕后按F7(“生成项目”功能的快捷键)。

注意查看“输出”窗口中的内容,如果代码中存在语法错误,就根据错误信息进行修改,直到成功生成项目。

(4.1)使用断点中断执行1. 在main函数中定义变量n的代码行 int n = 0; 上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一个断点。

2. 在“调试”菜单中选择“启动调试”,Windows控制台应用程序开始执行,随后OS Lab窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此行代码处中断执行(也就是说下一个要执行的就是此行代码)。

3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,因为printf 函数还没有被执行。

(4.2)单步调试按照下面的步骤练习使用“逐过程”功能:1. 在OS Lab的“调试”菜单中选择“逐过程”,“逐过程”功能会执行黄色箭头当前指向的代码行,并将黄色箭头指向下一个要执行的代码行。

2. 按F10(“逐过程”功能的快捷键),黄色箭头就指向了调用printf函数的代码行。

查看控制台应用程序窗口,仍然没有任何输出。

3. 再次按F10执行printf函数,查看控制台应用程序窗口,可以看到已经打印出了内容。

4. 在“调试”菜单中选择“停止调试”,结束此次调试。

(4.3)查看变量的值在调试的过程中,OS Lab提供了三种查看变量值的方法,按照下面的步骤练习这些方法:1. 按F5启动调试,仍然会在之前设置的断点处中断。

2. 将鼠标移动到源代码编辑器中变量n的名称上,此时会弹出一个窗口显示出变量n当前的值(由于此时还没有给变量n赋值,所以是一个随机值)。

3. 在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“快速监视”,可以使用“快速监视”对话框查看变量n的值。

然后,可以点击“关闭”按钮关闭“快速监视”对话框。

4. 在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“添加监视”,变量n就被添加到了“监视”窗口中。

使用“监视”窗口可以随时查看变量的值和类型。

此时按F10进行一次单步调试,可以看到“监视”窗口中变量n的值会变为0。

(4.4)调用堆栈使用“调用堆栈”窗口可以在调试的过程中查看当前堆栈上的函数,还可以帮助理解函数的调用层次和调用过程。

按照下面的步骤练习使用“调用堆栈”窗口:1. 按F5启动调试,仍然会在之前设置的断点处中断。

2. 选择“调试”菜单“窗口”中的“调用堆栈”,激活“调用堆栈”窗口。

可以看到当前“调用堆栈”窗口中只有一个main函数(显示的内容还包括了参数值和函数地址)。

3. 按F11(“逐语句”功能的快捷键)调试,直到进入Func函数,查看“调用堆栈”窗口可以发现在堆栈上有两个函数Func和main。

其中当前正在调试的Func函数在栈顶位置,main函数在栈底位置。

说明是在main函数中调用了Func函数。

4. 在“调用堆栈”窗口中双击main函数所在的行,会有一个绿色箭头指向main函数所在的行,表示此函数是当前调用堆栈中的活动函数。

同时,会将main函数所在的源代码文件打开,并也使用一个绿色箭头指向Func函数返回后的位置。

代码。

6. 反复双击“调用堆栈”窗口中Func函数和main函数所在的行,查看“监视”窗口中变量n的值,可以看到在不同的堆栈帧被激活时,OS Lab调试器会自动更新“监视”窗口中的数据,显示出对应于当前活动堆栈帧的信息。

7. 结束此次调试。

(3) EOS内核项目的生成和调试:3.1)新建EOS内核项目新建一个EOS内核项目的步骤如下:1. 在“文件”菜单中选择“新建”,然后单击“项目”。

2. 在“新建项目”对话框中,选择项目模板“EOS Kernel”。

3. 在“名称”中输入新项目使用的文件夹名称“eos”。

4. 在“位置”中输入新项目保存在磁盘上的位置“C:\”。

5. 点击“确定”按钮。

此项目就是一个EOS操作系统内核项目,包含了EOS操作系统内核的所有源代码文件。

3.2)生成项目1. 按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。

2. 打开C:\eos\debug文件夹,查看生成的对象文件和目标文件。

找到boot.bin、loader.bin 和kernel.dll三个二进制文件,这三个文件就是EOS操作系统在运行时需要的可执行文件。

OS Lab每次启动运行EOS操作系统之前,都会将这三个文件写入一个软盘镜像文件中,然后让虚拟机运行这个软盘镜像中的EOS(相当于将写有这三个二进制文件的软盘放入一个物理机的软盘驱动器中,然后按下开机按钮)。

找到libkernel.a文件,此文件是EOS内核文件kernel.dll对应的导入库文件。

3.3)调试项目1. 在“项目管理器”窗口的ke文件夹中找到start.c文件节点,双击此文件节点使用源代码编辑器打开start.c文件。

2. 在start.c文件中KiSystemStartup函数的“KiInitializePic();”语句所在行(第61行)添加一个断点。

EOS启动时执行的第一个内核函数就是KiSystemStartup函数。

3. 按F5启动调试,虚拟机开始运行软盘镜像中的EOS。

在虚拟机窗口中可以看到EOS启动的过程。

随后EOS会在刚刚添加的断点处中断执行。

激活虚拟机窗口可以看到EOS也不再继续运行了。

各种调试功能(包括单步调试、查看变量的值和各个调试工具窗口)的使用方法与调试Windows控制台程序完全相同。

4. 按F5继续执行。

查看虚拟机窗口,显示EOS操作系统已经启动,并且EOS的控制台程序已经开始运行了。

5. 在“调试”菜单中选择“停止调试”,结束此次调试。

3.4)查看软盘镜像文件中的内容在“项目管理器”窗口中双击软盘镜像文件Floppy.img,就会使用FloppyImageEditor工具打开此文件(在FloppyImageEditor工具中按F1可以查看此工具的帮助文件)。

在FloppyImageEditor工具的文件列表中可以找到loader.bin文件和kernel.dll文件,这两个文件都是在启动调试时被写入软盘镜像文件的(可以查看这两个文件的修改日期)。

boot.bin 文件在启动调试时被写入了软盘镜像的引导扇区中,不受软盘文件系统的管理,所以在文件列表中找不到此文件。

关闭FloppyImageEditor工具。

3.5)查看EOS SDK(Software Development Kit)文件夹1. 点击OS Lab工具栏上的“项目配置”下拉列表,选择下拉列表中的“Release”项目配置,“Release”项目配置被设置为新的活动项目配置(原来的活动项目配置是“Debug”)。

相关文档
最新文档