基本分页存储管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(00; k<N; )
{
([k] 1)
("%2d ", k, );
( 15)
{
('\n');
= 0;
}
}
('\n');
}
输出各进程占用内存详细情况
( > 0)
{
("内存详细使用情况如下:\n");
(0; i<N; )
{
([i][0] > 0)
{
("进程号:\n占用内存块(%2d):", i, [i][0]);
( 15)
{
('\n');
= 0;
}
}
('\n');
}*/
('\n');
}
()
{
, , k = 0;
("请输入进程号(小于)和所需页面数:", N);
("", , );
( > 99)
{
("错误!进程号过大!\n");
;
}
( > )
;
;
[][0] = ;
(1; i<; )
{
([k]1 k<100)
;
[][i] = k;
;
初始化存放进程的数组
(0; i<N; ){
[i][0] = 0;
(1; j<N; )
[i][j] = -1;
}
= 0;
("初始化结果如下:");
();
= ;
}
()
{
("\n内存总量:块,已用空间:块,剩余空间:块,进程总数:个\n", N, , , );
( < N)
{
("已使用的内存块():\n", );
2、基本分页的分配过程:由用户输入作业号和作业的大小(这里的大小是逻辑页面数),实现分配过程:空间充足,分配,修改状态矩阵的相应位置的值(值由0转变为1),并用专门的数据记录下该作业占用的物理块的块号,以备删除作业时回收空间。
3、作业空间的的回收:用户输入作业号,实现分区回收(通过相应的数据结构找到该作业占有的物理块号,将块号转变成对应的行标、列标,将对应位置的值由1转变成0就完成了回收)
4、分区的显示:任何时刻,可以查看当前内存的情况(显示记录内存情况的矩阵的值)
要求考虑:(1)内存空间不足的情况,要有相应的显示;
(2)作业不能同名,但是删除后可以再用这个名字;
(3)作业空间回收是输入作业名,回收相应的空间,如果这个作业名不存在,也要有相应的提示。
三、实验代码
<>
<>
N 100共有100个内存块
()
{
1:
(())
("创建新进程成功!\n\n");
("抱歉!内存空间不足,创建新进程失败!\n\n");
;
2:
(())
("进程已结束!\n\n");
("进程结束失败!\n\n");
;
3:
Leabharlann Baidu();
;
0:
;
:
("对不起!您的选择有误!请重新选择!\n\n");
}
}
}
()
{
();
();
}
四、实验结果
五、实验总结
(10; j<[i][0]; )
{
("%2d ", [i][j], );
( 15)
{
('\n');
(" ");
= 0;
}
}
('\n');
}
}
}
("当前内存无进程!\n");
/*输出空闲内存块
( > 0)
{
("空闲内存块():\n", );
(00; k<N; )
{
([k] 0)
("%2d ", k, );
在存储器管理中,连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。
如果允许将一个进程直接分散地装入到许多不相邻的分区中,则无须再进行“紧凑”。基于这一思想而产生了离散分配方式。如果离散分配的基本单位是页,则称为分页存储管理方式。在分页存储管理方式中,如果不具备页面对换功能,则称为基本分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。
[k] = 1;
;
}
;
;
}
()
{
, ;
( < 1)
{
("当前内存没有进程!\n\n");
;
}
("当前内存中的进程有个,进程号为:", );
(0; i<N; )
([i][0] > 0)
("%2d ", i);
('\n');
("请输入您要结束的进程号(小于):", N);
("", );
= [][0];
( 0)
{
("对不起!该进程不存在!\n");
;
}
(1; j<; )
{
[[][j]] = 0;
[][j] = -1;
}
[][0] = 0;
;
;
;
}
()
{
;
()
{
("操作菜单:\n");
(" 1 >创建进程\n 2 >结束进程\n 3 >查看内存\n 0 >退出程序\n");
("请输入您要进行的操作:");
("", );
《操作系统》课程实验报告
实验名称:基本分页储存管理
实验五基本分页存储管理
实验目的:熟悉并掌握基本分页存储管理的思想。
熟悉并掌握基本分页存储管理的分配和回收方式,并能够模拟实现。
实验内容:用高级语言模拟实现基本分页存储管理,要求:
1、内存空间的初始化——可以由用户输入初始内存空间各个物理块情况。(用二维矩阵的方式按物理块号,逐行给出每个物理块的状态,1——表示已分配,0——表示未分配,并能够将行标、列标转换为对应的物理块号,以查看或修改每一个块的状态,要求:初始时部分物理块已分配)
[N][1];存放每个进程的页表
[N];内存块状态标志数组,0:空闲,1:使用
;记录当前内存剩余空间
;记录当前进程数
= ;
();
();
();
();
()
{
i, j;
初始化内存状态标志数组
(0; i<N; )
[i] = 0;
(0; i<20; )
[()%(1)] = 1;
= 0;
(0; i<N; )
([i] 0)
{
([k] 1)
("%2d ", k, );
( 15)
{
('\n');
= 0;
}
}
('\n');
}
输出各进程占用内存详细情况
( > 0)
{
("内存详细使用情况如下:\n");
(0; i<N; )
{
([i][0] > 0)
{
("进程号:\n占用内存块(%2d):", i, [i][0]);
( 15)
{
('\n');
= 0;
}
}
('\n');
}*/
('\n');
}
()
{
, , k = 0;
("请输入进程号(小于)和所需页面数:", N);
("", , );
( > 99)
{
("错误!进程号过大!\n");
;
}
( > )
;
;
[][0] = ;
(1; i<; )
{
([k]1 k<100)
;
[][i] = k;
;
初始化存放进程的数组
(0; i<N; ){
[i][0] = 0;
(1; j<N; )
[i][j] = -1;
}
= 0;
("初始化结果如下:");
();
= ;
}
()
{
("\n内存总量:块,已用空间:块,剩余空间:块,进程总数:个\n", N, , , );
( < N)
{
("已使用的内存块():\n", );
2、基本分页的分配过程:由用户输入作业号和作业的大小(这里的大小是逻辑页面数),实现分配过程:空间充足,分配,修改状态矩阵的相应位置的值(值由0转变为1),并用专门的数据记录下该作业占用的物理块的块号,以备删除作业时回收空间。
3、作业空间的的回收:用户输入作业号,实现分区回收(通过相应的数据结构找到该作业占有的物理块号,将块号转变成对应的行标、列标,将对应位置的值由1转变成0就完成了回收)
4、分区的显示:任何时刻,可以查看当前内存的情况(显示记录内存情况的矩阵的值)
要求考虑:(1)内存空间不足的情况,要有相应的显示;
(2)作业不能同名,但是删除后可以再用这个名字;
(3)作业空间回收是输入作业名,回收相应的空间,如果这个作业名不存在,也要有相应的提示。
三、实验代码
<>
<>
N 100共有100个内存块
()
{
1:
(())
("创建新进程成功!\n\n");
("抱歉!内存空间不足,创建新进程失败!\n\n");
;
2:
(())
("进程已结束!\n\n");
("进程结束失败!\n\n");
;
3:
Leabharlann Baidu();
;
0:
;
:
("对不起!您的选择有误!请重新选择!\n\n");
}
}
}
()
{
();
();
}
四、实验结果
五、实验总结
(10; j<[i][0]; )
{
("%2d ", [i][j], );
( 15)
{
('\n');
(" ");
= 0;
}
}
('\n');
}
}
}
("当前内存无进程!\n");
/*输出空闲内存块
( > 0)
{
("空闲内存块():\n", );
(00; k<N; )
{
([k] 0)
("%2d ", k, );
在存储器管理中,连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。
如果允许将一个进程直接分散地装入到许多不相邻的分区中,则无须再进行“紧凑”。基于这一思想而产生了离散分配方式。如果离散分配的基本单位是页,则称为分页存储管理方式。在分页存储管理方式中,如果不具备页面对换功能,则称为基本分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。
[k] = 1;
;
}
;
;
}
()
{
, ;
( < 1)
{
("当前内存没有进程!\n\n");
;
}
("当前内存中的进程有个,进程号为:", );
(0; i<N; )
([i][0] > 0)
("%2d ", i);
('\n');
("请输入您要结束的进程号(小于):", N);
("", );
= [][0];
( 0)
{
("对不起!该进程不存在!\n");
;
}
(1; j<; )
{
[[][j]] = 0;
[][j] = -1;
}
[][0] = 0;
;
;
;
}
()
{
;
()
{
("操作菜单:\n");
(" 1 >创建进程\n 2 >结束进程\n 3 >查看内存\n 0 >退出程序\n");
("请输入您要进行的操作:");
("", );
《操作系统》课程实验报告
实验名称:基本分页储存管理
实验五基本分页存储管理
实验目的:熟悉并掌握基本分页存储管理的思想。
熟悉并掌握基本分页存储管理的分配和回收方式,并能够模拟实现。
实验内容:用高级语言模拟实现基本分页存储管理,要求:
1、内存空间的初始化——可以由用户输入初始内存空间各个物理块情况。(用二维矩阵的方式按物理块号,逐行给出每个物理块的状态,1——表示已分配,0——表示未分配,并能够将行标、列标转换为对应的物理块号,以查看或修改每一个块的状态,要求:初始时部分物理块已分配)
[N][1];存放每个进程的页表
[N];内存块状态标志数组,0:空闲,1:使用
;记录当前内存剩余空间
;记录当前进程数
= ;
();
();
();
();
()
{
i, j;
初始化内存状态标志数组
(0; i<N; )
[i] = 0;
(0; i<20; )
[()%(1)] = 1;
= 0;
(0; i<N; )
([i] 0)