哈工大威海计算机操作系统原理实验报告1
操作系统实验实验报告
操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 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
计算机操作系统原理实验报告专业: 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,并且生产者只能生产“同一种物品”,而消费者也只能购买“同一种物品”。
计算机操作系统实验课实验报告
实验报告实验课程: 计算机操作系统学生姓名:XXX学号:XXXX专业班级:软件2014年12月25日目录实验一熟悉Windows XP中的进程和线程 (3)实验二进程调度 (7)实验三死锁避免—银行家算法的实现 (16)实验四存储管理 (22)实验一熟悉Windows XP中的进程和线程一、实验名称熟悉Windows XP中的进程和线程二、实验目的1、熟悉Windows中任务管理器的使用。
2、通过任务管理器识别操作系统中的进程和线程的相关信息。
3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。
三、实验结果分析1、启动操作系统自带的任务管理器:方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。
2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并完成下表:表一:统计进程的各项主要信息3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。
再从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程,原因是该系统是系统进程。
4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论 explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。
5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进程“explorer.exe”的各项信息,并填写下表:进程:explorer.exe 中的各个线程6、注意某些线程前有“+”,如图所示:,说明二者之间的差异前有“+”其器线程下有窗口。
四、心得体会通过本次实验,我了解到了windows系统中进程的管理与操作,我了解了如何切出任务管理器,任务管理器应用与其他与进程相关的知识,明白了有些系统程序不能够关闭,系统中的进程与线程虽然很多,但是其中有许多关联,只要弄清楚其中的关联那么就能够运用好进程与线程,达到我们的目的。
操作系统原理实验报告
《操作系统原理》实验报告班级::学号:指导老师:目录:实验题目:实验一线程创建与撤销 (2)实验题目:实验二线程同步 (6)实验题目:实验三线程互斥 (11)实验题目:实验四进程通信 (17)实验题目:实验五读者-写者问题 (22)实验题目:实验六进程调度 (38)实验题目:实验七存储管理之动态库 (52)实验题目:实验八存储管理之存分配 (57)实验题目:实验九存储管理之页面置换算法 (70)实验题目:实验十设备管理 (85)实验题目:实验十一文件管理之文件读写 (99)实验题目:实验一线程创建与撤销完成人: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结构,该结构决定了返回的句柄是否可被子进程继承。
哈尔滨工业大学(威海)操作系统实验报告及答案
哈尔滨工业大学(威海)操作系统实验报告说明:本实验报告实验答案,是本人在上实验时的测试数据,由于操作系统实验中后面实验与当时所做实验的计算机的配置有关,因此本实验报的数据仅供参考。
实验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)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
哈工大威海计算机网络实验报告1
计算机网络与通信实验报告(一)学号姓名班级报告日期2015.04.15 实验内容网络常用命令的使用实验目的1.熟悉网络命令的使用,例如ping,tracert,netstat,ipconfig等,对结果进行分析判断。
2.熟悉dns的层次查询,以及smtp协议。
实验预备知识结合实验报告相关知识以及老师课堂演示、笔记。
实验过程描述1.按照实验报告步骤所指,一步步熟悉ping tracert ipconfig 等网络命令,并对结果进行相应分析、截图。
2.Dns层次查询时,首先网上搜索全球13 个根域名服务器的ip,选择其中一个ip 对学校主页 进行层次分析,依次进行cn 的域名分析,最终得到主页ip,然后使用ping命令ping得主页ip 相比较,结果一致,查询成功。
3.熟悉掌握SMTP协议。
Dos 命令下依次输入telnet相关命令,并使用事先转换成base64 的用户名、密码登陆邮箱。
登陆成功后给自己的邮箱发送信息,最后退出。
操作、邮箱截图如下。
实验结果见表格下方截图。
实验当中问题及解决方法1、telnet命令刚开始dos无法识别,属于不认识的命令。
上网查询资料后,在控制面板中设置后成功解决。
2、熟悉SMTP协议时,telnet 登陆邮箱并发送信件,期间出现好多错误,比如单词拼写错误,指令错误。
重复多次后最终成功实现。
成绩(教师打分)优秀良好及格不及格实验相关截图一、网络命令的使用1.ping 命令2.tracert 命令stat 命令.4.Ipconfig命令5.arp命令1.Nslookup 命令的使用,对学校主页进行dns分层查询2.telnet命令的使用,掌握smtp协议依次输入的命令命令交互截图邮箱结果截图。
《计算机操作系统原理》课外实验报告
《计算机操作系统原理》课外实验报告
本次实验任务是学习计算机操作系统原理,主要内容为操作系统调度算法的实践操作。
在实验中,我们通过对不同调度算法的实现,深入理解了操作系统调度的工作原理以及影响因素,同时也深刻认识到不同算法对系统性能的影响。
实验过程中,我们学习了几种调度算法,其中比较典型的有先来先服务(FCFS)、时间片轮转(RR)和最短作业优先(SJF)算法。
每个算法都有其独特的工作方式和特点,我们
需要根据系统的性质和需求的不同来选择合适的调度算法。
在实际操作过程中,我们先用Python实现每个算法的代码,
并通过模拟进程的调度过程来测试其性能和正确性。
比如,我们通过模拟进程的到达时间、需要的CPU时间等信息,来模
拟真实的进程调度过程。
经过多次实验发现,不同算法的性能表现不同,需要根据实际情况灵活选择。
我们发现,FCFS算法的最大缺点是没有考虑进程的执行时间,会导致长作业无限等待,使得系统吞吐量较低。
时间片轮转算法的优点在于公平性强,但时间片太小会增加进程上下文的切换次数,降低系统性能。
最短作业优先算法的最大优势在于可以优先执行需要时间最短的任务,提高了系统的响应能力和吞吐量,但也会存在长作业等待的问题。
因此,在实际应用中,需要根据具体情况选择最优的算法。
通过这次实验,我们对操作系统调度算法有了更加深度的认识,也体会到了操作系统设计和实现的复杂性。
操作系统不仅是一
个软件,更是整个计算机系统的核心,需要我们掌握更加深入的理论知识和实践经验。
通过这次实验的学习,我们对操作系统有了更加深入的认识和理解,积累了宝贵的经验,也对今后的学习和工作有了更好的规划和准备。
哈工大《操作系统》实验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命令验证运行结果。
哈工大操作系统实验一
哈尔滨工业大学远程教育课程操作系统实验一(选做)主讲人:张英涛背景知识n计算机执行的任何程序都必须首先读入内存,CPU 通过内存来访问程序,而安装操作系统实际上是把存放在光盘上的操作系统执行代码存入硬盘的过程•从硬盘上加载程序到内存很方便•操作系统中的文件系统主要是靠硬盘提供物理支持n安装操作系统到硬盘,实际上有两方面的作用•在硬盘上建立文件系统•把操作系统的全部内容事先存放在硬盘上以备使用•当使用计算机时,从硬盘上加载操作系统到内存,然后将机器控制权转给操作系统内核来执行背景知识n在本实验中,通过Windows 2000 Professional 的安装,来了解Windows操作系统的安装及配置,包括安装前的准备工作、驱动程序的配置以及系统的设定等内容n Windows 2000一共有四个版本,即Professional、Server、Advanced Server和Datacenter Server,它们的差别在于功能以及支持CPU、RAM数量上的不同背景知识n由于用户计算机环境的不同,需要的安装方式和内容也会有所不同。
•升级安装:保存计算机的现有文件及设置,并将原Windows系统升级为Windows 2000 Professional•全新安装:有助于提升系统性能。
但不保存计算机中原有的文件及设置,机器中的所有应用程序都要重新安装•多重开机安装:使计算机拥有多种操作系统,每次开机时,可以选择所要启动的系统背景知识n多重开机安装•Windows 2000 Professional的多重开机安装支持下列操作系统:Windows NT 3.51/4.0、Windows 9x、Windows 3.x和MS-DOS•采用多重开机安装方式,首先需要进行硬盘分区,因为每个操作系统都要求安装在不同的分区•此外,还提高了对硬件的需求,因为安装多个操作系统的硬盘空间用量非常大•各个操作系统的安装次序也要注意,原则上次序是MS-DOS、Windows 3.x、Windows 9x优先安装,然后是Windows NT,再安装Windows 2000实验目的n通过对Windows 2000 Professional的安装操作,了解操作系统应用环境建立的初步过程n掌握对Windows操作系统的基本系统设置n了解Windows多操作系统安装的方法工具/准备工作n Windows 2000对系统的要求比较高•CPU:Pentium 166MHz以上•内存:32MB,建议64MB以上•磁盘空间(可用空间/总空间) :650MB/2GB,建议1.5GB/4GB•CD-ROM或DVD-ROM光驱•网卡和调制解调器•VGA显卡及显示器、键盘、鼠标实验内容与步骤n本实验以光盘启动为例n可以利用Windows 2000 Professional光盘来直接开机启动,开机后自动执行安装程序n安装过程可分为两个阶段•文字模式阶段:选择用来安装Windows 2000的硬盘。
哈工大威海 单片机实验报告
单片机实验报告学号:100250212姓名:指导教师:实验二一、 实验目的1 、 进一步了解开发系统的功能和使用;2 、 了解程序设计与调试的基本过程;3 、 了解简单程序和分支程序程序的特点和设计。
二、 实验内容1 、 简单程序的设计、输入、调试和运行;2 、 分支程序的设计、输入、调试和运行;三、 实验步骤1、设计、调试双字节乘法程序,功能为:(R2R3)*(R6R7)→R4R5R6R7 输入设计好的程序检查无误后,汇编。
向R2R3和R6R7中输入多组不同的数据,运行程序,观察R4R5R6R7中的内容,分析运行结果是否正确。
2、求符号函数⎪⎩⎪⎨⎧<=>=)0()0()0(1-01X X X Y ,设:X →30H ,Y →31H 输入设计好的程序检查无误后,汇编。
向30H 中输入多个不同的数据,运行程序,观察31H 中的内容,分析运行结果是否正确。
3、将ASCII 码转换十六进制数设ASCII码放在累加器A中,结果放回到A中,如果A中的内容不是十六进制的数的ASCII码,用户标志位F0置1。
输入设计好的程序检查无误后,汇编。
向A中输入多个不同的数据,运行程序,观察A中的内容,分析运行结果是否正确。
四、实验程序及分析结果1、双字节乘法运算程序程序如下:ORG 0000HLJMP MAINMAIN: MOV A, R3 ;先计算R7乘R3MOV B, R7MUL AB ;A中为积的低八位MOV R1,A ;将低八位存入R1中MOV R5,B ;将高八位存入R5中MOV A, R2 ;计算R7乘R2MOV B, R7MUL ABADD A, R5 ;R5加至AMOV R5, A ;将结果存入R5MOV R4, B ;将高位结果存入R4MOV A, R1MOV R7, A ;将低八位存入R7中JNC NEXT1 ;C为零则跳转MOV A, R4 ;如果C为1则将R4加一CLR CADD A, #01MOV R4, ANEXT1: MOV A, R3MOV B, R6MUL ABADD A, R5MOV R5, AMOV R1,BMOV A, R4JNC NEXT2CLR CADD A, #1NEXT2: ADD A, R1MOV R4, AMOV A, R2MOV B, R6MUL ABADD A, R4MOV R4, AMOV A, BJNC NEXT3CLR CADD A, #1NEXT3: MOV R1, AMOV A,R5MOV R6, AMOV A, R4MOV R5, AMOV A, R1MOV R4, AHERE: SJMP HEREEND总体思想为将该16位乘法拆分为四步8位乘法运算在进行带进位的相加程序中每段分别实现一个八位乘法,然后与上次运算结果相加。
计算机操作系统实验报告
实验名称:操作系统原理与实现实验日期:2021年10月15日实验班级:计算机科学与技术1班实验目的:1. 理解操作系统的基本概念和功能。
2. 掌握操作系统的基本原理和实现方法。
3. 通过实验加深对操作系统核心功能的理解。
实验内容:一、实验背景操作系统是计算机系统中最重要的系统软件之一,它负责管理和控制计算机硬件与软件资源,为用户提供一个良好的工作环境。
本次实验旨在通过实践操作系统的基本原理和实现方法,加深对操作系统核心功能的理解。
二、实验环境1. 操作系统:Windows 102. 开发环境:Visual Studio 20193. 实验工具:C++语言三、实验步骤1. 创建一个简单的进程管理器(1)定义进程结构体```cppstruct Process {int pid; // 进程IDint priority; // 进程优先级int status; // 进程状态(0:就绪,1:运行,2:阻塞,3:结束)// ... 其他进程信息};```(2)初始化进程表```cppconst int MAX_PROCESS = 10; // 最大进程数Process process[MAX_PROCESS]; // 进程表```(3)实现进程调度算法```cpp// 实现先来先服务(FCFS)调度算法void fcfsSchedule() {for (int i = 0; i < MAX_PROCESS; i++) {if (process[i].status == 0) { // 就绪状态 process[i].status = 1; // 运行状态// ... 执行进程process[i].status = 3; // 结束状态}}}```(4)实现进程创建、销毁和阻塞```cpp// 创建进程void createProcess(int pid, int priority) {for (int i = 0; i < MAX_PROCESS; i++) {if (process[i].pid == 0) { // 找到空闲进程 process[i].pid = pid;process[i].priority = priority;process[i].status = 0;break;}}}// 销毁进程void destroyProcess(int pid) {for (int i = 0; i < MAX_PROCESS; i++) {if (process[i].pid == pid) {process[i].pid = 0;process[i].priority = 0;process[i].status = 0;break;}}}// 阻塞进程void blockProcess(int pid) {for (int i = 0; i < MAX_PROCESS; i++) {if (process[i].pid == pid) {process[i].status = 2; // 阻塞状态 break;}}}```2. 创建一个简单的文件系统(1)定义文件结构体```cppstruct File {int fileID; // 文件IDchar fileName[50]; // 文件名int fileSize; // 文件大小// ... 其他文件信息};```(2)初始化文件表```cppconst int MAX_FILE = 10; // 最大文件数File file[MAX_FILE]; // 文件表(3)实现文件操作```cpp// 创建文件void createFile(int fileID, const char fileName, int fileSize) { for (int i = 0; i < MAX_FILE; i++) {if (file[i].fileID == 0) { // 找到空闲文件file[i].fileID = fileID;strcpy(file[i].fileName, fileName);file[i].fileSize = fileSize;break;}}}// 删除文件void deleteFile(int fileID) {for (int i = 0; i < MAX_FILE; i++) {if (file[i].fileID == fileID) {file[i].fileID = 0;file[i].fileSize = 0;break;}}// 打开文件void openFile(int fileID) {// ... 打开文件操作}// 关闭文件void closeFile(int fileID) {// ... 关闭文件操作}```四、实验结果与分析通过本次实验,我们成功实现了进程管理器和文件系统的基本功能。
操作系统原理_实验报告
一、实验目的1. 理解操作系统基本原理,包括进程管理、内存管理、文件系统等。
2. 掌握操作系统的基本命令和操作方法。
3. 通过实验加深对操作系统原理的理解和掌握。
二、实验环境1. 操作系统:Linux2. 编程语言:C语言3. 开发工具:Eclipse三、实验内容本次实验主要分为以下几个部分:1. 进程管理实验2. 内存管理实验3. 文件系统实验四、实验步骤及结果1. 进程管理实验实验步骤:- 使用C语言编写一个简单的进程管理程序,实现进程的创建、调度、同步和通信等功能。
- 编写代码实现进程的创建,通过调用系统调用创建新的进程。
- 实现进程的调度,采用轮转法进行进程调度。
- 实现进程同步,使用信号量实现进程的互斥和同步。
- 实现进程通信,使用管道实现进程间的通信。
实验结果:- 成功创建多个进程,并实现了进程的调度。
- 实现了进程的互斥和同步,保证了进程的正确执行。
- 实现了进程间的通信,提高了进程的效率。
2. 内存管理实验实验步骤:- 使用C语言编写一个简单的内存管理程序,实现内存的分配、释放和回收等功能。
- 实现内存的分配,采用分页存储管理方式。
- 实现内存的释放,通过调用系统调用释放已分配的内存。
- 实现内存的回收,回收未被使用的内存。
实验结果:- 成功实现了内存的分配、释放和回收。
- 内存分配效率较高,回收内存时能保证内存的连续性。
3. 文件系统实验实验步骤:- 使用C语言编写一个简单的文件系统程序,实现文件的创建、删除、读写等功能。
- 实现文件的创建,通过调用系统调用创建新的文件。
- 实现文件的删除,通过调用系统调用删除文件。
- 实现文件的读写,通过调用系统调用读取和写入文件。
实验结果:- 成功实现了文件的创建、删除、读写等功能。
- 文件读写效率较高,保证了数据的正确性。
五、实验总结通过本次实验,我对操作系统原理有了更深入的理解和掌握。
以下是我对实验的几点总结:1. 操作系统是计算机系统的核心,负责管理和控制计算机资源,提高计算机系统的效率。
哈工大(威海)c语言实验报告册答案
实验1简单判定性问题求解一、实验学时完成本实验需4学时。
二、实验目的1、阅读程序题(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;(2)掌握不同的类型数据之间赋值的规律;(3)掌握数据在内存中的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
2、编程题(1)如何运用判定性结构进行程序设计;(2)如何运用判定性结构进行程序设计。
3、调试题(1)熟悉C程序的编辑、编译、连接和运行的过程。
三、实验指导为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。
要注意简单判定性问题的结构选择。
3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。
对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。
四、实验内容1、阅读程序题(1)( ){ /*定义字符型变量*/c12; /*向字符变量赋以整数*/c1=97;c2=98;(" \n"12); /*以字符形式输出*/(" \n"12); /*以整数形式输出*/}该程序的输出结果是思考:可否改成 c1,c2;输出结果是?相同(2)(){75;("\n");}思考:若将语句中变为,可否输出分式的值?可以(3)(){9;; /*包含复合的赋值运算符的赋值表达式*/("\n");}思考:赋值表达式a+=a-=a+a的求解步骤?第一步:()9 第二步18(4)(){1;("\n");}出结果是思考:-1在内存中的存储形式?取反加一11111111111111111111111111111111(32个)(5)(){x1;1;x1; /*有符号数据传送给无符号变量*/(""1);}思考:(有符号赋值给无符号)(6)(){345;("\n",(!(a<b))(1));("");}思考:若将第一个语句中变为,结果将如何?1(换行)6(7)(){ 123;() ("\n");("\n");}该程序的输出结果是 1 。
《操作系统原理》实验报告
《操作系统原理》实验报告书班级:学号:姓名:指导教师:2013-2014 学年第二学期在数字设定法中,每种权限设置均可以用数值来代表,其中0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,这些值之和便可以用来设定特定权限。
4.什么过滤操作?在Linux中如何实现?过滤操作:将一个命令的输出作为一个命令的输入Linux实现的命令格式:命令|命令5.在Linux中挂载u盘并能显示其文档的中文信息,所使用的挂载命令是:Mount/dev/sdal/mnt/usb 。
6.什么是vi? 其三种操作模式的含义是什么?给出三种工作模式间的转换图。
命令模式:vi启动后的默认模式,控制光标的移动,复制删除文字,进入输入模式和末行模式输入模式:进行文字输入末行模式:保存文件,退出VI三、实验内容(包含实验所用命令或相关程序源代码)1.shell操作命令(给出每题所用的Shell命令或命令结果)(1)创建名为stu1、stu2的2个用户,设置密码分别为student1和student2 ,并将它们设为组group1中的成员。
#groupadd group1#useradd stu1 –g group1#su stu1Spasswd stu1 回车后敲入密码student12.Linux C程序开发(1)编写Linux C程序,把一个文件的内容复制到另一个文件中,即实现简单的copy功能。
要求:程序输入的第一个参数是源文件,第二个参数是目标文件。
【源程序】#include<sys/types.h>#include<dirent.h>#include<stdio.h>#include<crrno.h>Int main(int argc,char *argv[]){FILE *in,*out;Char ch;If(argc!=3){Printf(“you forgot to enter a \n”);Exit(0);}If(in=fopen(argv[1],”r”))==NULL{Print 当前进程是父进程3.图示pipe系统调用生成无名管道时所涉及的数据结构。
哈工大《操作系统》实验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.
计算机操作系统原理实验报告
班级:1104202 学号:110420212 姓名:李敖哈尔滨工业大学(威海实验四页面置换算法
、实验目的
1•掌握内存管理基本功能和请求分页式管理的基本原理以及页面置换算法。
2.学会在Linux操作系统下使用C函数和系统调用的编程方法。
3.掌握利用C语言设计实现不同置换策略的页面置换算法。
4.验证虚存存储管理机制及其性能。
对于生成的引用串,计算、比对不同页面
置
换算法的缺页率。
、实验要求
1.学生应完成如下章节的学习:进程和线程、调度、存储管理。
2.安装Linux操作系统,使用C语言编程,利用相关系统调用实现设计。
三、实验内容
1•创建空闲存储管理表、模拟内存、页表等。
2.提供一个用户界面,用户利用它可输入不同的页面置换策略和其他附加参
数。
3.运行置换程序,输出缺页率结果。
四、程序流程图
1.最佳页面置换算法流程图
开始
1
2.先进先出页面置换算法流程图
开蛤
初始化进种块
3.最近最久未使用页面置换算法流程图
初縮化进出块
五、实验结果
最佳页面置换算法分区
先进先出页面置换算法
最近最久未使用页面置换算法六、结果分析本程序已基本实现了页面的置换
算法,包括最佳页面置换算法、先进先出页面置换算法和最近最久未使用页面置换算法。
页表最大空间为5,随机进程最大
序列为50。
操作系统实验报告哈工大
计算机操作系统课程实验报告专业信息管理与信息系统班级 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,不管虚拟磁盘空间是否被全部使用。
选择虚拟机在本地磁盘中的位置和大小,单击下一步。
确认虚拟机的详细情况,点击下一步。
这时我们已经成功的创建了一个虚拟机了,接下来我们要开始配置这个虚拟机安装操作系统选择刚才创建的虚拟机,然后单击上方的“开始”弹出了首次运行向导,单击下一步。
哈工大威海 计算机网络 实验报告
(10)退出Ethereal。
1、掌握PING命令的基本使用方法(包括参数的使用),对网络常见故障利用命令进行分析判断:2、用Tracert命令用来显示数据包到达目标主机所经过的路径,并显示到达每个节点的时间,分析网络延时产生的原因。
3、利用Netstat命令了解网络的整体使用情况。
显示当前正在活动的网络连接的详细信息,例如显示网络连接、路由表和网络接口信息,统计目前总共有哪些网络连接正在运行。
4、利用IPCONFIG命令显示所有当前的TCP/IP网络配置值、刷新动态主机配置协议(DHCP)和域名系统(DNS)设置。
使用不带参数的IPCONFIG显示所有适配器的IP地址、子网掩码、默认网关。
5、利用ARP确定对应IP地址的网卡物理地址。
查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。
DNS层次查询、SMTP协议分析1、熟练掌握nslookup命令,并对nslookup命令的参数进行熟练掌握。
13个根名称服务器: 198.41.0.4 美国 192.228.79.201 美国(另支持IPv6) 192.33.4.12 法国 128.8.10.90 美国 192.203.230.10 美国 192.5.5.241 美国(另支持IPv6) 192.112.36.4 美国 128.63.2.53 美国(另支持IPv6) 192.36.148.17 瑞典 192.58.128.30 美国 193.0.14.129 英国(另支持IPv6)L. 198.32.64.12 美国 202.12.27.33 日本(另支持IPv6)2、利用TELNET进行SMTP的邮件发送。
3、熟练掌握抓包软件ethereal。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机操作系统原理
实验报告
专业: 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,并且生产者只能生产“同一种物品”,而消费者也只能购买“同一种物品”。