计算机操作系统实验讲义 联系客服

发布时间 : 星期二 文章计算机操作系统实验讲义更新完毕开始阅读6ded4ea8102de2bd97058819

}

}//if结束

else{System.out.println(\请求资源已超过所需资源!\

}//while结束

}

2 1 1 //第2个进程请求第1类资源1个Request[1][0]=1 本程序假设当前时刻只有一个进程请求某一类资源n个.

若要满足某个进程当前时刻同时请求不止一类资源,则需要为最大需求矩阵Max,分配矩阵Allocation和需求矩阵Need增加维数,当然代码量也将大大增加,但是算法逻辑本身并无变化.

实验四 操作系统内存结构

1.实验目的

(1)通过实验了解操作系统内存的使用,学习如何在应用程序中管理内存,体会Windows应用程序内存的简单性和自我保护能力。

(2)了解Windows XP的内存结构和虚拟内存的管理,进而了解进程堆和Windows为使用内存而提供的一些扩展功能。 2.实验预备知识

(1)阅读教材关于存储器管理和虚拟存储器管理的内容。 (2)熟悉Visual C++的简单使用。

(3) Windows XP是32位的操作系统,它使计算机CPU可以用32位地址对32位内存块进行操作。内存中的每一个字节都可以用一个32位的指针来寻址,这样,最大的存储空间就是232字节4000兆字节(4GB),在Windows下运行的每一个应用程序都认为能独占4GB 内存了。显然,Windows在幕后将虚拟内存(virtual memory,VM)地址映射到了各进程的物理内存上。而所谓物理内存是指计算机的RAM和由Windows分配到用户驱动器根目录上的换页文件。物理内存完全由系统管理。

(4) Windows提供了一个API,即GetSystemInfo(),以便用户能检查系统中虚拟内存的一些特性。

(5)MSDN的使用。 3.实验环境

(1)一台运行Windows XP操作系统的计算机。 (2)选用turbo c、visual c++、Java等任何一种语言,建议用visual c++和Java。

4.实验时间:2个机时。 5.实验内容

实验步骤如下:

(1) 登陆操作系统(Windows 2000、Windows XP或Windows Sever 2003) (2) 运行Visual C++6.0(或Visual C++.NET) (3) 在工具栏击“File\\new\\projects”,选择”Win32 Console Application”,并添上“Project name”,选择“OK”,然后选择“A simple application”,选择“Finish”。

(4) 编写程序,然后程序进行编译,并运行。 (5) 试记录以下结果:

①虚拟内存每页容量是多少? ②最小应用地址是多少? ③最大应用地址是多少?

④当前可供应用程序使用的内存空间是多少? ⑤当前计算机的实际内存是多大?

提示:可供应用程序使用的内存空间实际上已经减去了开头与结尾两个64KB的保护区。虚拟内存空间的64KB保护区是防止编程错误的一种Windows方式。任何对内存中这一区域的访问(读、写、执行)都将引发一个错误陷阱,从而导致错误并终止程序的执行。也就是说,假如用户有一个NULL指针(地

址为0),但仍试图在此之前很近的地址处使用另一个指针,这将因为试图从更低的保留区域读写数据,从而产生意外错误并终止程序的执行。

6.参考算法 #include \#include #include #include #include

#pragma comment(lib,\int main() {

//首先获得系统信息 SYSTEM_INFO si;

::ZeroMemory(&si,sizeof(si)); ::GetSystemInfo(&si);

//使用外壳辅助程序对一些尺寸进行格式化 TCHAR szPageSize[MAX_PATH];

::StrFormatByteSize(si.dwPageSize,szPageSize,MAX_PATH); DWORD

dwMemSize=(DWORD)si.lpMaximumApplicationAddress-(DWORD)si.lpMinimumApplicationAddress;

TCHAR szMemSize[MAX_PATH];

::StrFormatByteSize(dwMemSize,szMemSize,MAX_PATH);

//将内存信息显示出来

std::cout<<\ <

std::cout<<\ <

<<(DWORD)si.lpMinimumApplicationAddress <

std::cout<<\ <

<<(DWORD)si.lpMaximumApplicationAddress <

std::cout<<\ <

参考结果如下:

Virtual memory page size:4.00 KB

Minimum application address:0X00010000 Maximum application address:0X7ffeffff Total available virtual memory1.99 GB

Java程序2

主程序设计:

public static void main(String[] args) throws IOException { memory mymemory = new memory(100);

System.out.println(\内存管理程序 演示\

while (true) {

System.out.println(\输入数字来执行相对应的任务:1->增加进程(a,b,c);2->查看内存分配情况;3->撤销一个进程\

mymemory.addunit(new unit(\nit(\ break; case 2:

mymemory.printall(); break; case 3:

mymemory.delunit(mymemory.getName()); } } }