操作系统实验报告书

合集下载

操作系统实验报告(全)

操作系统实验报告(全)

操作系统实验报告书院系名称:电子工程学院电子指导教师:班级:学号:学生姓名:实验题目一:进程一、实验目的通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX 规范中fork和kill系统调用的功能和使用。

二、实验内容(1)补充POSIX 下进程控制的残缺版实验程序(2)回答下列问题:1. 你最初认为运行结果会怎么样?2. 实际的结果什么样?有什么特点?试对产生该现象的原因进行分析。

3. proc_number 这个全局变量在各个子进程里的值相同吗?为什么?4. kill 命令在程序中使用了几次?每次的作用是什么?执行后的现象是什么?5. 使用kill 命令可以在进程的外部杀死进程。

进程怎样能主动退出?这两种退出方式哪种更好一些?三、实验步骤1.根据题意进入DOC环境中编写程序。

2.编译,链接,运行程序,进行调试。

3.分析实验结果及回答问题。

四、调试情况,回答问题及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。

2、在设计过程中的感受。

调试情况:回答上述实验内容中的问题1.预期结果:会持续输出0-9号进程,直到输入数字键+回车,则会杀死该进程,接下来的输出将不会有该进程号,当输入q+回车,则退出程序。

2.实际结果:与预期差不多,因输入进程总数20大于设定的最大进程数,因此按进程数10来处理。

随机输出0-9号进程,sleep(SLEEP_INTERV AL),循环输出,直到输入数字键,则会杀死该数字对应的进程,直到输入q退出循环,然后杀死本组所有进程。

分析:每创建一个子进程时,将其pid存储在pid[i]中,i存储在proc_number,然后调用死循环函数do_something(),输出该进程的代号proc_number;当输入数字键时,主进程会执行kill(pid[ch-'0'],SIGTERM),从而杀死(ch-‘0’)号进程。

操作系统安全实验1实验报告

操作系统安全实验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、账户管理成功创建了具有不同权限的用户账户,并能够根据需求灵活调整权限设置。

严格的密码策略有效地增加了密码的安全性,减少了被破解的风险。

账户锁定策略在一定程度上能够阻止暴力破解攻击。

操作系统实验报告6

操作系统实验报告6

操作系统实验报告6一、实验目的本次操作系统实验的主要目的是深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关技术,通过实际操作和观察,增强对操作系统工作原理的理解,并提高解决实际问题的能力。

二、实验环境本次实验使用的操作系统为 Windows 10,实验工具包括 Visual Studio 2019 等。

三、实验内容(一)进程管理实验1、创建多个进程,并观察它们的运行状态和资源占用情况。

通过编写简单的C++程序,使用Windows API 函数创建多个进程。

在程序中,设置不同的进程优先级和执行时间,观察操作系统如何调度这些进程,以及它们对 CPU 使用率和内存的影响。

2、进程间通信实现了进程间的管道通信和消息传递。

通过创建管道,让两个进程能够相互交换数据。

同时,还使用了 Windows 的消息机制,使进程之间能够发送和接收特定的消息。

(二)内存管理实验1、内存分配与释放使用 C++的动态内存分配函数(如`malloc` 和`free`),在程序运行时动态申请和释放内存。

观察内存使用情况,了解内存碎片的产生和处理。

2、虚拟内存管理研究了 Windows 操作系统的虚拟内存机制,通过查看系统的性能监视器,观察虚拟内存的使用情况,包括页面文件的大小和读写次数。

(三)文件系统实验1、文件操作进行了文件的创建、读取、写入、删除等基本操作。

通过编写程序,对不同类型的文件(如文本文件、二进制文件)进行处理,了解文件系统的工作原理。

2、目录操作实现了目录的创建、删除、遍历等功能。

了解了目录结构在文件系统中的组织方式和管理方法。

四、实验步骤(一)进程管理实验步骤1、打开 Visual Studio 2019,创建一个新的 C++控制台项目。

2、在项目中编写代码,使用`CreateProcess` 函数创建多个进程,并设置它们的优先级和执行时间。

3、编译并运行程序,通过任务管理器观察进程的运行状态和资源占用情况。

《操作系统》实验报告

《操作系统》实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

《操作系统》实验报告

《操作系统》实验报告

一、实验目的1. 理解进程的概念及其在操作系统中的作用。

2. 掌握进程的创建、调度、同步和通信机制。

3. 学习使用进程管理工具进行进程操作。

4. 提高对操作系统进程管理的理解和应用能力。

二、实验环境1. 操作系统:Windows 102. 软件环境:Visual Studio 20193. 实验工具:C++语言、进程管理工具(如Task Manager)三、实验内容1. 进程的创建与销毁2. 进程的调度策略3. 进程的同步与互斥4. 进程的通信机制四、实验步骤1. 进程的创建与销毁(1)创建进程使用C++语言编写一个简单的程序,创建一个新的进程。

程序如下:```cpp#include <iostream>#include <windows.h>int main() {// 创建进程STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi, sizeof(pi));// 创建进程if (!CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {std::cout << "创建进程失败" << std::endl;return 1;}std::cout << "进程创建成功" << std::endl;// 等待进程结束WaitForSingleObject(pi.hProcess, INFINITE);// 销毁进程CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return 0;}```(2)销毁进程在上面的程序中,通过调用`WaitForSingleObject(pi.hProcess, INFINITE)`函数等待进程结束,然后使用`CloseHandle(pi.hProcess)`和`CloseHandle(pi.hThread)`函数销毁进程。

《操作系统》课内实验报告

《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统实验报告3篇

操作系统实验报告3篇

课程设计说明书设计题目:操作系统课程设计班级:信息管理与信息系统2011级学号:姓名:山东科技大学2013年12 月25 日课程设计任务书学院信息科学与工程专业信息学管理与信息系统班级2011-1姓名一、课程设计题目:操作系统课程设计二、课程设计主要参考资料(1)Abraham Silberschatz & Peter Baer Galvin & Greg Gagne. Operating System Concepts(第七版影印版). 高等教育出版社. 2007.3.(2)计算机操作系统(第三版)西安电子科技大学出版社(3)三、课程设计应解决的主要问题:(1)CPU调度算法的模拟实现(2)死锁相关算法的实现(3)磁盘调度算法的实现四、课程设计相关附件(如:图纸、软件等):(1)程序源代码(2)五、任务发出日期:2013-10-1 课程设计完成日期:2014-1-1指导教师签字:指导教师对课程设计的评语成绩:指导教师签字:年月日设计1 CPU调度算法的模拟实现一、设计目的1、根据系统的资源分配策略所规定的资源分配算法2、利用编程语言,模拟实现先来先服务(FCFS)、最短作业优先(非抢占SJF)、非抢占优先调度算法、时间片轮转调度算法(RR)3、针对模拟进程,利用CPU调度算法进行调度4、进行算法评价,计算平均周转时间和平均等待时间二、设计要求1、调度所需的进程参数由输入产生(手工输入或者随机数产生)2、输出调度结果3、输出算法评价指标三、设计说明1、定义public类:class program{public:char name;//进程名int atime;//进程到达的时间int stime;//进程服务的时间int btime;//进程开始执行的时间int ftime;//进程完成的时间int rtime;//进程的周转时间float qrtime;//进程的带权周转时间};2、冒泡排序:class program t;for( i=1;i<m;i++)for(int j=0;j<m-i;j++)if(p[j].atime>p[j+1].atime){t=p[j];p[j]=p[j+1];p[j+1]=t;}3、流程图:(1)①先来先服务调度流程图:②主要程序p[0].btime=p[0].atime;p[0].ftime=p[0].atime+p[0].stime;p[0].rtime=p[0].ftime-p[0].atime;p[0].qrtime=(float)p[0].rtime/p[0].stime;for(i=1;i<m;i++){if(p[i].atime>p[i-1].ftime){p[i].btime=p[i].atime;}else{p[i].btime=p[i-1].ftime;}p[i].ftime=p[i].btime+p[i].stime;p[i].rtime=p[i].ftime-p[i].atime;p[i].qrtime=(float)p[i].rtime/p[i].stime;}①短作业优先进程(非抢占优先权)调度流程图:②(SJF)主要代码int k=0,x=0;for(i=k+1;i<m;i++){for(j=k+1;j<m;j++){if(p[j].atime<p[k].ftime){x++;}elsebreak;}int min=k+1;if(x>1){for(j=k+2;j<=x+k;j++){if(p[j].stime<p[min].stime){min=j;}}t=p[min];p[min]=p[k+1];p[k+1]=t;p[k+1].ftime=p[k].stime+p[k+1].stime;}k++;x=0;}③优先权调度算法(非抢占):int k=0,x=0;for(i=k+1;i<m;i++){for(j=k+1;j<m;j++){if(p[j].atime<p[k].ftime){x++;}elsebreak;}int min=k+1;if(x>1){for(j=k+2;j<=x+k;j++){if(p[j].youxianquan<p[min].youxianquan){min=j;}}t=p[min];p[min]=p[k+1];p[k+1]=t;p[k+1].ftime=p[k].stime+p[k+1].stime;}k++;x=0;}①时间片轮转调度算法:②主要算法int time=p[0].atime;int Max=p[0].stime1;for(i=0; i<m; i++){p[i].stime2=p[i].stime1;if(p[i].stime1>Max)Max=p[i].stime1; }for(int j=0; j<Max; j++){for(i=0; i<m; i++){if(p[i].stime2==0)continue;if(p[i].atime<=time){p[i].stime2-=1;time+=1;}elsei=-1;if(p[i].stime2==0)p[i].ftime=time;}}4、输出p[0].btime=p[0].atime;p[0].ftime=p[0].atime+p[0].stime;p[0].rtime=p[0].ftime-p[0].atime;p[0].qrtime=(double)p[0].rtime/p[0].stime;for(i=1;i<m;i++){if(p[i].atime>p[i-1].ftime){p[i].btime=p[i].atime;}else{p[i].btime=p[i-1].ftime;}p[i].ftime=p[i].btime+p[i].stime;p[i].rtime=p[i].ftime-p[i].atime;p[i].qrtime=(float)p[i].rtime/p[i].stime;}cout<<"进程******到达时间**服务时间**开始执行时间*完成时间**周转时间**带权周转时间"<<endl;for(i=0;i<m;i++){cout<<setiosflags(ios::left)<<setw(10)<<p[i].name<<setw(10)<< p[i].atime<<setw(10)<<p[i].stime<<setw(13)<<p[i].btime<<setw(10) <<p[i].ftime<<setw(10)<<p[i].rtime<<setw(13)<<p[i].qrtime<<endl;}}四、运行结果及分析1、先来先服务(FCFS)测试数据2、短作业优先(SJF)测试数据3、优先权(非抢占)测试数据4、时间片轮转(RR)测试数据五、总结通过这次试验,我进一步的理解了冒泡排序的算法,而且,对进程作业先来先服务、短进程优先、非抢占优先、按时间片轮转调度算法以及进程调度的概念和算法,有了更深入的认识!初步理解了操作系统对于作业处理的基本思想!了解到算法很重要,又更加明白算法本身可以节约时间。

操作系统实验报告-完全版

操作系统实验报告-完全版

操作系统实验报告-完全版《计算机操作系统》实验报告班级:姓名:学号:实验⼀进程控制与描述⼀、实验⽬的通过对Windows 2000编程,进⼀步熟悉操作系统的基本概念,较好地理解Windows 2000的结构。

通过创建进程、观察正在运⾏的进程和终⽌进程的程序设计和调试操作,进⼀步熟悉操作系统的进程概念,理解Windows 2000中进程的“⼀⽣”。

⼆、实验环境硬件环境:计算机⼀台,局域⽹环境;软件环境:Windows 2000 Professional、Visual C++ 企业版。

三、实验内容和步骤第⼀部分:程序1-1Windows 2000 的GUI 应⽤程序Windows 2000 Professional下的GUI应⽤程序,使⽤Visual C++编译器创建⼀个GUI 应⽤程序,代码中包括了WinMain()⽅法,该⽅法GUI类型的应⽤程序的标准⼊⼝点。

# include <># pragma comment(lib, “” )int APIENTRY WinMain(HINSTANCE /* hInstance */ ,HINSTANCE /* hPrevInstance */,LPSTR /* lpCmdLine */,int /* nCmdShow */ ){:: MessageBox(NULL,“hello, Windows 2000” ,“Greetings”,MB_OK) ;return(0) ; }在程序1-1的GUI应⽤程序中,⾸先需要头⽂件,以便获得传送给WinMain() 和MessageBox() API函数的数据类型定义。

接着的pragma指令指⽰编译器/连接器找到库⽂件并将其与产⽣的EXE⽂件连接起来。

这样就可以运⾏简单的命令⾏命令CL 来创建这⼀应⽤程序,如果没有pragma指令,则MessageBox() API函数就成为未定义的了。

这⼀指令是Visual Studio C++ 编译器特有的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
将text目录树从stu3用户主目录下移至stu2主目录下。
【使用特权用户方法】
【修改目录权限方法】
(9)试画出上述命令后,用户stu1、stu2和stu3主目录中的目录树(3棵子树)。
2.Linux C程序开发
(1)编写Linux C程序,把一个文件的内容复制到另一个文件中,即实现简单的copy功能。要求:程序输入的第一个参数是源文件,第二个参数是目标文件。
共享存储操作使得两个或两个以上的进程可以共用一段物理内存(一般情况下,两个进程的数据区是完全独立的,父进程用fork创建子进程后,子进程会复制父进程数据到自己的数据区)。
(1)创建共享内存
#include<sys/shm.h>
int shmget(key_t key,size_t size, int permflags);
1)50%的指令是顺序执行的;
2)25%的指令是均匀分布在前地址部分;
3)25%的指令是均匀分布在后地址部分;
程序中的具体实施方法是:
1)在[0,319]的指令地址之间随机选取一起点地址m;
2)顺序执行一条指令,即执行地址为m+1的指令;
3)在前地址[0,m+1]中随机执行一条指令,该指令的地址为m’;
if (pid3 == 0)
printf("pid3=0,pid1=%d,pid2=%d, my process id is %d\n",pid1,pid2,getpid());
else if (pid3 > 0)
printf("pid3>0,pid1=%d,pid2=%d, my process id is %d\n",pid1,pid2,getpid());
(6)使用cat>sneakers.txt命令,分析命令行cat sneakers.txt的显示结果。
$ cat>sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coff
^D
$cat sneakers.txt
(7)使用上题的方法,在dir1目录中建立home.txt文件,其内容为:
(4)expr “aaa”:‘a\?’
(5)expr 2+3
(6)expr2+3
(expr 2 + 3`
(9)exprlength “operating system”
(10)exprsubstr linux 2 3
三、实验内容
1.编写Shell脚本,从命令行中接收一个二元算术表达式并计算其结果。
$ cuts 11 14
This is a test of cuts program (输入)
test(显示结果)
【源程序】
实验名称:进程控制与通信
实验时间:年月日第周星期
一、实验目的
二、实验预习(预备知识的问题及回答)
1.写出下列系统调用功能:
(1)fork()用于
(2)getpid()用于
(3)wait()用于
fork( );
fork( );
}
5.下列程序运行后,a的值是多少?
main( )
{ int a,pid;
a=55;
pid=fork( );
if (pid< 0) { printf("error in fork !"); exit(0); }
elseif(pid==0) { sleep(5); a=99;printf(“a=%d\n”,a);sleep(5); exit(0);}
int shmdt(const void *addr);
由于两个函数需指出进程地址空间中的地址,因此比较复杂。简化的方法是将shmat中的地址设为NULL。
【源程序】
【运行与测试】
实验名称:虚拟存储
实验时间:年月日第周星期
一、实验目的
二、实验预习(预备知识的问题及回答)
1.描述请求分页的地址转换过程。
2.解释FIFO页面置换算法所产生的Belady现象。
三、实验内容
1.计算并输出下列页面置换算法在不同内存容量(4页至32页)下的命中率.
(1)最佳置换算法(OPT)
(2)先进先出算法(FIFO)
(3)最近最久未用页面置换算法(LRU)
具体要求如下:
(1)通过随机函数产生一个指令序列,共320条指令.指令地址的生成原则如下:
三、实验内容(包含实验所用命令或相关程序源代码)
1.shell操作命令(给出每题所用的Shell命令或命令结果)
(1)创建名为stu1、stu2的2个用户,设置密码分别为student1和student2,并将它们设为组group1中的成员。
(2)在每个用户的主目录下建立2个目录,分别命名为dir1和dir2。
count=`expr $count-1`
done
eval $cmd
【命令行输入】
chmod a+x myscript
./myscript first second third
【运行结果】
【脚本功能分析】
4.设计一个程序cuts,它从标准输入读入数据,获取由第一个参数n和第二个参数m所限定范围的数据(包括这两个字符),n和m都是整数。例如:
4) echo “$person”
(2)填充下列与环境变量、位置变量和预定义变量相关的表格。
Shell变量
定义
HOME
PATH
PWD
PS1
$0
$#
$?
$$
3.写出下列expr命令的输出:
(1)expr index “value” ‘a’
(2)expr “value”:‘v.*u’
(3)expr “aaa”:‘a\+’
【源程序】
【运行命令】
(2)编写Linux C程序,列出stu2主目录中的文件信息,并将其中saturday.txt文件的权限设置为文件所有者可读可写、同组用户只读、其他用户无权限。
【源程序】
【运行命令】
实验名称:SHELL程序设计
实验时间:年月日第周星期
一、实验目的
二、实验预习(预备知识的问题及回答)
2.从虚拟机界面退出进入Windows OS界面的操作是,从Windows OS界面进入虚拟机界面的方法是。
3.权限的含义是什么?如何使用数字法设定文件的权限?
4.什么过滤操作?在Linux中如何实现?
5.在Linux中挂载u盘并能显示其文档的中文信息,所使用的挂载命令是:

6.什么是vi?其三种操作模式的含义是什么?给出三种工作模式间的转换图。
4)顺序执行一条指令,即执行地址为m’+1的指令;
5)在后地址[m’+2,319]中随机执行一条指令;
重复上述步骤(1)(5),直到执行320条指令为止.
将指令序列变换成为页地址流:
设:页面大小为1k,用户内存容量为4页逐步增加到32页,用户虚存容量为32k.
假定在用户虚存中,每页存放10条指令,即320条指令在虚存中的存放方法为:
else { sleep(7);
printf(“a=%d\n”,a);
wait(0);
}
}
三、实验内容
1.调试下面的程序,观察可能的并发结果,给出简要分析,并画出进程家族树。
#include <unistd.h>
#include <sys/types.h>
#include<sys/wait.h>
main ()
《操作系统原理》
实验报告书
班级:
学号:
姓名:
指导教师:
2012-2013学年第二学期
实验名称:LINUX用户界面
实验时间:年月日第周星期
一、实验目的
二、实验预习(预备知识的问题及回答)
1.为什么在Linux系统中,诸如光盘、U盘等要先挂载而后才能使用?如何获得U盘的设备名?装载点在文件系统中的位置是什么?
command可设为IPC_STAT,IPC_SET,IPC_RMID。参数shm_stat指向存放属性的结构体,具体内容请参考手册。
(3)共享内存的附接和断开
#include<sys/shm.h>
void *shmat(int shmid, const void *addr, int shmflags);
pid2=fork( );
if (pid2 == 0)
printf("pid2=0, my process id is %d\n",getpid());
else if (pid2 > 0)
printf(" pid2>0, my process id is %d\n",getpid());
}
pid3=fork();
(4)exit()用于
(5)pipe()用于
(6)signal()用于
(7)kill()用于
2.阅读fork系统调用,用伪码写出其实现流程。
3.图示pipe系统调用生成无名管道时所涉及的数据结构。
4.在UNIX系统中运行下面程序,最多可以产生多少个进程?画出进程家族树。
main( )
{ fork( );
第0条第9条指令在第0页;
第10条第19条指令在第1页;
……
第310条第319条指令在第31页.
按以上方式用户指令共组成32页.据此可得出指令地址m和页面号page以及页内位移量offset之间的计算公式为:page=m/10,offset=m%10.页地址流长度为320。
相关文档
最新文档