东北大学操作系统第一次实验报告
操作系统安全实验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、账户管理成功创建了具有不同权限的用户账户,并能够根据需求灵活调整权限设置。
严格的密码策略有效地增加了密码的安全性,减少了被破解的风险。
账户锁定策略在一定程度上能够阻止暴力破解攻击。
《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。
在这个实验中,我们使用C++编写程序来创建和管理进程。
通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。
首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。
然后,使用等待函数来等待子进程的结束,并获取其返回值。
在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。
2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。
在这个实验中,我们研究了动态内存分配和释放的机制。
使用 C++中的 new 和 delete 操作符来分配和释放内存。
通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。
同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。
通过模拟内存访问过程,理解了页表的作用和地址转换的过程。
3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。
在这个实验中,我们对文件的创建、读写和删除进行了操作。
使用 C++的文件流操作来实现对文件的读写。
通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。
此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。
4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。
实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。
三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。
在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。
2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。
在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。
3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。
在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。
4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。
在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。
四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。
(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。
(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
东北大学操作系统实验报告

{
public:
char name;
string status;
};
vector<Pro> ru,re,bl; //ru->running,re->ready,bl->blocked
//function declaration
int helloUI();
re.push_back(process);
else if(sta == "b")
bl.push_back(process);
else
cout << "Error!!" << endl;
cout << "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << endl;
cout << endl;
}
else
cout << "Error in ruTObl2." << endl;
showPCB();
return 0;
}
int blTOre()
{
if(!bl.empty()) //blockedQueue is not empty.
{
re.push_back(bl.front());
bl.erase(bl.begin());
{
int act; //choose action
helloUI();
cout << "Please initialize the process." << endl;
操作系统安全实验1实验报告

操作系统安全实验1一、实验目的1. 了解Windows的文件系统2. 掌握Windows操作系统的访问控制和审核技术3. 掌握系统安全配置和安全分析方法4.理解Windows平台下的漏洞扫描原理5. 掌握系统备份与恢复方法二、实验环境PC机,Windows XP操作系统,X-Scan v3.3,Ghost软件一套三、实验内容1. 系统安全配置与分析2. 管理用户帐户3. 授权管理4.设置审核策略5. 使用X-Scan对系统进行安全扫描6. 系统的网络服务管理7. 系统备份与恢复四、实验步骤与结果分析1、系统安全配置与分析(1)修改密码策略首先在“控制面板”中选择“管理工具”——“本地安全设置”——“帐户策略”——“密码策略”如下所示:双击“密码必须符合复杂性要求”或者右击它选择属性,启用该策略,如下所示:双击“密码长度最小值”,设置最短密码长度为8个字符,如下所示:设置“密码最短存留期”,确定用户在可以更改密码之前必须使用该密码的天数,设置为7天。
如下所示:设置“密码最长存留期”,确定系统在要求用户更改密码之前可以使用该密码的天数,设置为30天。
设置“强制密码历史”,防止用户重新使用旧密码,设置为3。
如下所示:设置完成后退出“本地安全设置”,在“运行”中输入命令:gpupdate,系统将刷新刚才修改的安全策略。
选择一个普通用户,为该用户重设口令,体会密码加强策略的作用,起初用户名设为love,密码设为520。
如下所示:结合密码复杂性设置原则(大写字母+小写字母+数字)再将密码修改为abc19881211,结果创建成功。
(2)设置帐户锁定策略对帐户锁定策略进行设置,值为2,然后重新登录系统,使用用户zhengjiaen口令登录系统,体会帐户锁定的作用。
如下所示:(4)系统安全策略分析在“运行”中输入MMC,打开控制台界面。
单击“文件”——“添加/删除管理单元”——“添加”,选择“安全配置和分析”并添加,如下所示:右击“安全配置与分析”,选择“打开数据库”,可以通过输入数据库名称1,并选择一个安全模板创建一个新的安全策略数据库,利用这个数据库可以分析当前计算机的安全配置与安全策略模板的差异,如下所示:利用安全策略模板对当前计算机进行配置。
操作系统实验报告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资源管理器”相似。
东北大学操作系统实验报告

课程编号:B080000070《操作系统》实验报告姓名班级指导教师石凯实验名称《操作系统》实验开设学期2016-2017第二学期开设时间第11周——第18周报告日期2017年7月3日评定成绩评定人石凯评定日期2017年7月5日东北大学软件学院实验一进程的同步与互斥实验题目:通过学习和分析基础例子程序,使用windows进程和线程编程(也可以采用Java 或Unix/Linux的POSIX线程编程)实现一个简单的生产者/消费者问题的程序。
关键代码:import java.util.ArrayList;public class Produce {public Object object;public ArrayList<Integer> list;//用list存放生产之后的数据,最大容量为1public Produce(Object object,ArrayList<Integer> list ){this.object = object;this.list = list;}public void produce() {synchronized (object) {/*只有list为空时才会去进行生产操作*/try {while(!list.isEmpty()){System.out.println("生产者"+Thread.currentThread().getName()+" waiting");object.wait();}int value = 9999;list.add(value);System.out.println("生产者"+Thread.currentThread().getName()+" Runnable");object.notifyAll();//然后去唤醒因object调用wait方法处于阻塞状态的线程}catch (InterruptedException e) {e.printStackTrace();}}}}import java.util.ArrayList;public class Consumer {public Object object;public ArrayList<Integer> list;//用list存放生产之后的数据,最大容量为1public Consumer(Object object,ArrayList<Integer> list ){this.object = object;this.list = list;}public void consmer() {synchronized (object) {try {/*只有list不为空时才会去进行消费操作*/while(list.isEmpty()){System.out.println("消费者"+Thread.currentThread().getName()+" waiting");object.wait();}list.clear();System.out.println("消费者"+Thread.currentThread().getName()+" Runnable");object.notifyAll();//然后去唤醒因object调用wait方法处于阻塞状态的线程}catch (InterruptedException e) {e.printStackTrace();}}}}实验结果:思考题:(1)如何控制进程间的相互通信?答:主要有:管道,信号,共享内存,消息队列(2)什么是进程的同步?什么是进程的互斥?分别有哪些实现方式?答:进程互斥是进程之间的间接制约关系。
《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的操作系统是计算机系统的核心组成部分,本次《操作系统》课内实验旨在通过实际操作和观察,深入理解操作系统的基本原理、功能和运行机制。
具体目的包括:1、熟悉操作系统的常用命令和操作,如文件管理、进程管理、内存管理等。
2、掌握操作系统的资源分配和调度策略,观察其对系统性能的影响。
3、培养解决操作系统相关问题的能力,提高动手实践和分析问题的能力。
二、实验环境本次实验在以下环境中进行:1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code三、实验内容及步骤(一)文件管理实验1、创建、删除和重命名文件及文件夹打开文件资源管理器,在指定目录下创建新的文件夹和文本文件。
对创建的文件和文件夹进行重命名操作,观察文件名的变化。
选择部分文件和文件夹进行删除操作,验证是否成功删除。
2、文件复制、移动和属性设置选取一些文件,将其复制到其他目录,并观察复制过程和结果。
把特定文件移动到不同的位置,检查文件是否正确迁移。
设置文件的属性,如只读、隐藏等,查看属性设置后的效果。
(二)进程管理实验1、查看系统进程打开任务管理器,观察当前正在运行的进程列表。
了解进程的名称、PID(进程标识符)、CPU 使用率、内存占用等信息。
2、进程的终止和优先级设置选择一个非关键进程,尝试终止其运行,观察系统的反应。
调整某些进程的优先级,观察其对系统资源分配和运行效率的影响。
(三)内存管理实验1、查看内存使用情况通过系统性能监视器,查看物理内存和虚拟内存的使用情况。
观察内存使用量随时间的变化趋势。
2、内存优化操作关闭一些不必要的后台程序,释放占用的内存资源。
调整虚拟内存的大小,观察对系统性能的改善效果。
四、实验结果与分析(一)文件管理实验结果1、成功创建、删除和重命名文件及文件夹,系统能够准确响应操作,文件名和文件夹名的修改即时生效。
2、文件的复制和移动操作顺利完成,数据无丢失和损坏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1:熟悉Linux系统一、题目:熟悉Linux系统二、目的:熟悉与掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。
1、启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)…2、C语言编辑、编译三、内容及要求:1、熟练掌握Linux基本文件命令;2、掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程;3、认真做好预习,书写预习报告;4、实验完成后要认真总结、完成实验报告。
四、内容及要求:在Linux环境下编制、调试源程序的实际过程(每一步的具体说明)。
实验2:进程状态一、题目:进程状态二、目的:自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。
三、内容及要求1、设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序;2、独立设计、编写、调试程序;3、程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB组织的变化。
4、进程的状态模型(三状态、五状态、七状态或其它)可自行选择,5、代码书写要规范,要适当地加入注释;6、鼓励在实验中加入新的观点或想法,并加以实现;7、认真进行预习,完成预习报告;8、实验完成后,要认真总结,完成实验报告。
四、程序流程图图4、1 进程转换流程五、使用的数据结构及其说明struct PCB //进程控制块PCB{char name; //名字标识string state; //状态int time; //执行时间};typedef struct PCB ElemType;struct QNode{ElemType data;struct QNode *next;}; //链式队列结点typedef struct QNode QNode; //结点typedef struct QNode *PNode;typedef struct{PNode frnt;PNode rear;} LinkQueue; //链式队列六、程序源代码、文档注释及文字说明#include <iostream>#include<stdlib、h>#include<fstream>#include<windows、h>using namespace std;struct PCB //进程控制块PCB{char name; //名字标识string state; //状态int time; //执行时间};typedef struct PCB ElemType;struct QNode{ElemType data;struct QNode *next;}; //链式队列结点typedef struct QNode QNode; //结点typedef struct QNode *PNode;typedef struct{PNode frnt;PNode rear;} LinkQueue; //链式队列void Insert_Queue(LinkQueue &Q,ElemType e) //插入{PNode ptr=(PNode)malloc(sizeof(QNode));if(!ptr){cout<<"(Insert_Queue)动态分配结点失败!\n";exit(1);}ptr->data=e;ptr->next=NULL;Q、rear->next=ptr;Q、rear=ptr;}int Init_Queue(LinkQueue &Q) //初始化{Q、frnt=Q、rear=(PNode)malloc(sizeof(QNode));if(!Q、frnt)exit(1);Q、frnt->next=NULL;return 0;}int Delete_Queue(LinkQueue &Q,ElemType &e) //删除(头结点删除法){PNode ptr;if(Q、frnt==Q、rear) //空队列return 1;ptr=Q、frnt->next; //删除第一个元素Q、frnt->next=ptr->next;e=ptr->data;if(Q、rear==ptr)Q、rear=Q、frnt;free(ptr);return 0;}int Empty_Queue(LinkQueue Q) //判断就是否为空队列,就是1,否0{return (Q、frnt==Q、rear?1:0);}void Print_Queue(LinkQueue &Q) //打印队列元素{PNode ptr;if(Q、frnt==Q、rear) //队列为空时,返回提示信息{cout<<"\t\tempty、\n";}else{ptr=Q、frnt->next;while(ptr!=NULL){cout<<"\t\tProcess's name : "<<ptr->data、name<<endl;ptr=ptr->next;}}}void Print_State(LinkQueue &Q_Ready,LinkQueue &Q_Running,LinkQueue &Q_Blocked){cout<<"\t-----------------------------\n";cout<<"\n\tStatus_Ready:\n";Print_Queue(Q_Ready);cout<<"\n\tStatus_Running: \n";Print_Queue(Q_Running);cout<<"\n\tStatus_Blocked: \n";Print_Queue(Q_Blocked);cout<<"\n\t-----------------------------\n";}void Transision_Two(LinkQueue &Q1,LinkQueue &Q2){ElemType e;if(Empty_Queue(Q1)){cout<<"\nERROR! 前一个队列为空!、\n";return;}Delete_Queue(Q1,e);Insert_Queue(Q2,e);}int main(){int num;char choose;ElemType e;LinkQueue Q_Ready,Q_Running,Q_Blocked;Init_Queue(Q_Ready);Init_Queue(Q_Blocked);Init_Queue(Q_Running);cout<<"\t请输入进入Ready态的进程数目: ";cin>>num;cout<<endl;for(int i=1; i<=num; i++){cout<<"\t第"<<i<<"个进程----";cout<<"\n\t请输入进程名字: ";cin>>e、name;cout<<"\t请输入进程状态: ";cin>>e、state;cout<<"\t请输入进程时间: ";cin>>e、time;Insert_Queue(Q_Ready,e);}cout<<"\t***********************************进程状态转换分割线************************************\n";cout<<"\tN=创建进程(New),D=调度(Dispatch),T=时间片到(Timeout),W=等待事件(Event Wait),";cout<<"\n\tC=事件发生(Event Occur),E=退出进程(Exit),P=输出各进程(Print),O=退出程序(Overgame)"<<endl;cout<<"\t请选择操作(N,D,T,W,C,E,P,O): ";cin>>choose;while(choose!='O'){switch(choose){case 'N'://N=创建进程(New){cout<<"\t请输入进入Ready态的进程数目: ";cin>>num;cout<<endl;for(int i=1; i<=num; i++){cout<<"\t第"<<i<<"个进程----";cout<<"\n\t请输入进程名字: ";cin>>e、name;cout<<"\t请输入进程状态: ";cin>>e、state;cout<<"\t请输入进程时间: ";cin>>e、time;Insert_Queue(Q_Ready,e);}}Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'D'://D=调度(Dispatch)Transision_Two(Q_Ready,Q_Running);Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'T'://T=时间片到(Timeout)Transision_Two(Q_Running,Q_Ready);Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'W'://W=等待事件(Event Wait)Transision_Two(Q_Running,Q_Blocked);Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'C': //C=事件发生(Event Occur)Transision_Two(Q_Blocked,Q_Ready);Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'E': //E=退出进程(Exit)if(Empty_Queue(Q_Running)){cout<<"\n\tRelease Error! 没有正在执行的进程、\n";Print_State(Q_Ready,Q_Running,Q_Blocked);break;}Delete_Queue(Q_Running,e);Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'P'://P=输出各进程(Print)Print_State(Q_Ready,Q_Running,Q_Blocked);break;case 'O'://O=退出程序(Overgame)exit(1);default:cout<<"输出不符合规则,请重新输入!"<<endl; //操作异常处理break;}cout<<"\t***********************************进程状态转换分割线************************************\n";cout<<"\tN=创建进程(New),D=调度(Dispatch),T=时间片到(Timeout),W=等待事件(Event Wait),";cout<<"\n\tC=事件发生(Event Occur),E=退出进程(Exit),P=输出各进程(Print),O=退出程序(Overgame)"<<endl;cout<<"\t请选择操作(N,D,T,W,C,E,P,O): ";cin>>choose;}return 0;}七、运行结果及其说明运行结果如下截图所示,在截图中相继调用了"N=创建进程(New),D=调度(Dispatch),T=时间片到(Timeout),W=等待事件(Event Wait), C=事件发生(Event Occur),E=退出进程(Exit),P=输出各进程(Print),O=退出程序(Overgame)"命令。