操作系统实验一实验报告
操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。
本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。
二、实验环境本次实验使用的操作系统为 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实验报告一、实验目的本次操作系统安全实验的主要目的是让我们深入了解操作系统的安全机制,通过实际操作和观察,掌握一些常见的操作系统安全配置和防护方法,提高对操作系统安全的认识和应对能力。
二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 2004),实验设备为个人计算机。
三、实验内容与步骤(一)Windows 10 操作系统安全配置1、账户管理创建新用户账户,并设置不同的权限级别,如管理员、标准用户等。
更改账户密码策略,包括密码长度、复杂性要求、密码有效期等。
启用账户锁定策略,设置锁定阈值和锁定时间,以防止暴力破解密码。
2、防火墙配置打开 Windows 防火墙,并设置入站和出站规则。
允许或阻止特定的应用程序通过防火墙进行网络通信。
3、系统更新与补丁管理检查系统更新,安装最新的 Windows 安全补丁和功能更新。
配置自动更新选项,确保系统能够及时获取并安装更新。
4、恶意软件防护安装并启用 Windows Defender 防病毒软件。
进行全盘扫描,检测和清除可能存在的恶意软件。
(二)Linux(Ubuntu 2004)操作系统安全配置1、用户和组管理创建新用户和组,并设置相应的权限和归属。
修改用户密码策略,如密码强度要求等。
2、文件系统权限管理了解文件和目录的权限设置,如读、写、执行权限。
设置特定文件和目录的权限,限制普通用户的访问。
3、 SSH 服务安全配置安装和配置 SSH 服务。
更改 SSH 服务的默认端口号,增强安全性。
禁止 root 用户通过 SSH 登录。
4、防火墙配置(UFW)启用 UFW 防火墙。
添加允许或拒绝的规则,控制网络访问。
四、实验结果与分析(一)Windows 10 操作系统1、账户管理成功创建了具有不同权限的用户账户,并能够根据需求灵活调整权限设置。
严格的密码策略有效地增加了密码的安全性,减少了被破解的风险。
账户锁定策略在一定程度上能够阻止暴力破解攻击。
(完整word版)操作系统实验报告.实验一 WINDOWS进程初识

操作系统教程实验指导书实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。
(2)掌握WINDOWS API的使用方法。
(3)编写测试程序,理解用户态运行和核心态运行。
2、实验内容和步骤(1)编写基本的Win32 Consol Application步骤1:登录进入Windows,启动VC++ 6.0。
步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。
创建一个新的控制台应用程序工程。
步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。
步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。
编译成可执行文件。
步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows “命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:E:\课程\os课\os实验\程序\os11\debug>hello.exe运行结果 (如果运行不成功,则可能的原因是什么?) :答:运行成功,结果:(2)计算进程在核心态运行和用户态运行的时间步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。
步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。
步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。
操作系统实验报告

篇一:操作系统实验报告完全版《计算机操作系统》实验报告班级:姓名:学号:实验一进程控制与描述一、实验目的通过对windows 2000编程,进一步熟悉操作系统的基本概念,较好地理解windows 2000的结构。
通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解windows 2000中进程的“一生”。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:windows 2000 professional、visual c++6.0企业版。
三、实验内容和步骤第一部分:程序1-1windows 2000 的gui 应用程序windows 2000 professional下的gui应用程序,使用visual c++编译器创建一个gui应用程序,代码中包括了winmain()方法,该方法gui类型的应用程序的标准入口点。
:: messagebox( null, “hello, windows 2000” , “greetings”,mb_ok) ;/* hinstance */ , /* hprevinstance */, /* lpcmdline */, /* ncmdshow */ )return(0) ; }在程序1-1的gui应用程序中,首先需要windows.h头文件,以便获得传送给winmain() 和messagebox() api函数的数据类型定义。
接着的pragma指令指示编译器/连接器找到user32.lib库文件并将其与产生的exe文件连接起来。
这样就可以运行简单的命令行命令cl msgbox.cpp来创建这一应用程序,如果没有pragma指令,则messagebox() api函数就成为未定义的了。
这一指令是visual studio c++ 编译器特有的。
接下来是winmain() 方法。
其中有四个由实际的低级入口点传递来的参数。
Windows操作系统实验一实验报告

Windows操作系统C/C++ 程序实验
姓名:___庞一鹤_______________
学号:___1131000180____________
班级:___信工七班________________
院系:____信息工程_______________ ______2015___年___10__月__12___日
实验一Windows 2000/xp进程观测
一、背景知识
二、实验目的
通过对Windows 2000/xp编程,进一步熟悉操作系统的基本概念,较好地理解Windows 2000/xp的结构。
三、实验内容与步骤
1、C:\> CL Hello.cpp
来创建可执行的Hello.EXE。
操作能否正常进行?如果不行,则可能的原因是什么?
操作正常运行
步骤4:运行Hello.EXE程序,产生用户键入的一行文字。
运行结果(如果运行不成功,则可能的原因是什么?) :
也可以利用任何其他文本编辑器键入程序代码,如果这样,例如使用WORD来键入和编辑程序,则应该注意什么问题?
可以,但文件保存的时候要以后缀“.cpp”命名。
C:\> CL 1-2.cpp
运行结果(试将其中的信息与清单1-1程序的运行结果进行比较) :
比较:1-2程序创建了一个图形用户化界面来显示输出内容。
2、C:\> CL 1-3.cpp
运行结果:
在“命令提示符”窗口运行CL.EXE,产生1-4.EXE文件:C:\> CL 1-4.cpp
运行结果:。
哈工大《操作系统》实验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命令验证运行结果。
国开(电大)操作系统课程实验报告1

国开(电大)操作系统课程实验报告1
概要
该实验报告旨在记录国开(电大)操作系统课程实验1的过程和
结果。
本次实验的主要目标是熟悉操作系统的基本概念和任务管理。
实验过程
1. 阅读实验指南:仔细阅读了实验指南,了解了实验要求和流程。
2. 环境搭建:安装了虚拟机软件并创建了一个虚拟机,用于实
验的操作系统。
3. 实验步骤:
- 步骤1:启动虚拟机并登录操作系统。
- 步骤2:查看当前系统的任务列表。
- 步骤3:创建一个新的任务,并添加一些测试内容。
- 步骤4:查看更新后的任务列表,确认新任务的添加成功。
4. 实验结果:
- 成功完成了所有实验步骤。
- 通过查看任务列表,确认新任务的添加成功。
总结
通过本次实验,我进一步了解了操作系统的基本概念和任务管理。
实践操作系统的相关操作,加深了对操作系统的理解和熟悉度。
在实验过程中,我遵循实验指南,按照步骤进行操作,并取得了预
期的实验结果。
改进建议
对于下次实验,建议在实验过程中记录更多的细节和操作步骤,便于后续复和总结。
同时,对于实验中遇到的问题,可以记录下来
并尝试寻找解决方案,以便在以后的实验中更好地应对类似问题。
操作系统实验报告1

《操作系统》实验报告实验序号:01 实验项目名称:操作系统环境学号1107xxx 姓名xxx 专业、班级软件工程1103 实验地点计—502 指导教师徐冬时间2013.9.23 实验目的1) 了解和学习Windows系统管理工具及其使用;2) 熟悉Windows系统工具的内容和应用;由此,进一步熟悉Windows操作系统的应用环境。
工具/准备工作在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行Windows 操作系统的计算机。
实验内容与步骤1. 计算机管理2. 事件查看器3. 性能监视4. 服务5. 数据库 (ODBC)为了帮助用户管理和监视系统,Windows提供了多种系统管理工具,其中最主要的有计算机管理、事件查看器和性能监视等。
如图2所示。
图2 基于虚拟机的操作系统计算环境管理步骤1:登录进入Windows。
步骤2:在“开始”菜单中单击“设置”-“控制面板”命令,双击“管理工具”图标。
在本地计算机“管理工具”组中,有哪些系统管理工具,基本功能是什么:1) Internet 信息服务;管理IIS,Internet 和Intranet站点的WEB服务器。
2) Server Extensions 管理器;Server Extensions管理器。
3)计算机管理;管理磁盘以及使用其他系统工具来管理本地或远程的计算机。
4)性能;显示系统性能图表以及配置数据日志和警报。
5)本地安全策略;查看和修改本地安全策略,如用户权限和审核策略。
6)事件查看器;显示来自于Windows和其他程序的监视与排错消息。
7)组件服务;配置和管理COM+应用程序。
1. 计算机管理使用“计算机管理”可通过一个合并的桌面工具来管理本地或远程计算机,它将几个Windows管理实用程序合并到一个控制台目录树中,使管理员可以轻松地访问特定计算机的管理属性和工具。
步骤3:在“管理工具”窗口中,双击“计算机管理”图标。
“计算机管理”使用的窗口与“Windows资源管理器”相似。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验一实验报告
基本信息
1.1 实验题目
进程控制实验
1.2完成人
王召德
1.3报告日期
2015-4-8
实验内容简要描述
2.1实验目标
加深对于进程并发执行概念的理解。
实践并发进程的创建和控制方法。
观察和
体验进程的动态特性。
进一步理解进程生命期期间创建、变换、撤销状态变换的过
程。
掌握进程控制的方法,了解父子进程间的控制和协作关系。
练习Linux 系统中
进程创建与控制有关的系统调用的编程和调试技术。
2.2实验要求
参考以上示例程序中建立并发进程的方法,编写一个多进程并发执行程序。
父进程首先创建一个执行ls命令的子进程然后再创建一个执行ps命令的子进程,并控制ps 命令总在ls 命令之前执行。
2.3实验的软硬件环境
Ubuntu14.04 intelPC
报告的主要内容
3.1实验的思路
按照上面的实例,先生成一个子进程让其等待,然后生成第二个子进程,父进程等待其执行ps命令后唤醒第一个子进程执行ls即可。
3.2实验模型的描述
无
3.3主要数据结构的分析说明
无
3.4主要算法代码的分析说明
无
3.5项目管理文件的说明
无
实验过程和结果
4.1实验投入的实际学时数
1学时
4.2调试排错过程的记录
曾尝试让第二个子进程激活第一个子进程,结果发现当运行ps后,后面的代码将不再执行,所以不可行。
4.3多种方式测试结果的记录
实验结果:
父进程启动 (12239)
ls子进程启动 (12240)
ps子进程启动 (12241)
PID TTY TIME CMD
12239 pts/27 00:00:00 born
12240 pts/27 00:00:00 born
12241 pts/27 00:00:00 ps
ps子进程结束 (12241)
唤醒ls子进程 (12240)
键盘中断信号产生...
ls子进程被唤醒 (12240)
. born born.c~ hello.c pctl pctl.c~ pctl.o
.. born.c helelo.h~ hello.c~ pctl.c pctl.h
ls子进程结束 (12240)
父进程结束 (12239)
4.4实验结果的分析综合
无
实验的总结
父进程可以通过fork()函数生成子进程,子进程会从fork()函数开始执行原来的代码,当
子进程打开一个其他进程时,新进程便会代替此子进程,子进程后面的代码不会被执行。
进程的概念就是运行起来的程序,在实验中可以看出,同一段代码也可以变成几个不同的进程,但是归根结底他们也都是这一个程序运行得到的。
进程并发其实就是分时的占用cpu得到执行。
子进程执行execve()函数可以执行新程序,新程序的进程号不变,替代原来的子进程运行,原来的子进程execve()函数后的代码便不再执行。
信号的产生就是一个中断,中断使cpu停止当前状态而去处理这个中断。
可以通过给特定进程发送信号,使其从挂起状态重新启动,以达到控制目的。
附录
程序源代码
#include <sys/types.h>
#include <wait.h>
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
typedef void (*sighandler_t) (int);
void sigcat(){
printf("键盘中断信号产生...\n");
}
int main(int argc, char *argv[]){
signal(SIGINT,(sighandler_t)sigcat); //注册一个本进程处理键盘中断的函数int status_1,status_2;
char *args_1[] = {"/bin/ls","-a",NULL};
char *args_2[] = {"/bin/ps","-a",NULL};
int pid_1=fork() ; //建立子进程
if(pid_1<0) // 建立子进程1失败?
{
printf("Create 1th Process fail!\n");
exit(0);
}
if(pid_1 == 0) // 子进程1执行代码段
{
printf("ls子进程启动... %d\n",getpid());
pause(); //暂停,等待键盘中断信号唤醒
printf("ls子进程被唤醒... %d\n",getpid());
status_1 = execve(args_1[0],args_1,NULL);
exit(0);
}else{
printf("\n父进程启动... %d\n",getpid()); //报告父进程进程号
int pid_2 = fork();
waitpid(pid_2,&status_2,0); //等待ps子进程结束
if(status_2==0){
printf("ps子进程结束...%d\n",pid_2);
printf("唤醒ls子进程...%d\n",pid_1);
kill(pid_1,SIGINT);
waitpid(pid_1,&status_1,0); //等待ps子进程结束printf("ls子进程结束...%d\n",pid_1);
printf("父进程结束...%d\n",getpid());
exit(0);
}
if(pid_2<0) // 建立子进程2失败?
{
printf("Create 2th Process fail!\n");
exit(0);
}
if(pid_2 == 0) // 子进程2执行代码段
{
printf("ps子进程启动... %d\n",getpid());
status_2 = execve(args_2[0],args_2,NULL);
}
}
return 0;
}。