资源简介
操作系统课请求分页存储管理模拟模拟程序,程序相对简单,通过这个模拟程序能够帮助学习者会更好的学习os,供有需要的人学习使用。
代码片段和文件信息
#include
#include
#include // 时间函数time调用
#define N 20 // 分页数量
#define P 3 // 内存物理块数量
typedef struct DuLNode
{
int data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode;
int page_FIFO[ N + 1 ];
int front = 0 rear = 0;
int page[ N + 1 ] p_mem[ P + 1];
int mem_count = 1; // 内存块计数
void InitialMemory( ); // 初始化函数
void InitialPageUsing( );
void BookExemple( );
int InsertItem( int item int queue[ ] int T ) ; // 队尾加入一个元素
int RemoveItem( int *item int queue[ ] int T ) ; // 从队首移走一个元素
void InsertIntoMemory( int a[ ] int b int n ); // 内存插入一项
int FindNumber( int a[ ] int b int T ); // 确定元素在数组中的序号
void DisplayMemeryBlock( ); // 显示内存物理页块信息
void DisplayPageString( ); // 显示页面号引用串信息
int main( void )
{
int i number temp;
int exchange = 0;
DuLNode *p *q;
srand( time( NULL ) );
p = (DuLNode* )malloc( sizeof( DuLNode ) );
p->prior = p;
p->next = p;
InitialMemory( );
//BookExemple( ); // 教材164页例子
InitialPageUsing( ); // 随机产生例子
printf( “*****采用先进先出算法进行页面置换。*****\n“ );
printf( “内存物理块数量:%d\n“ P );
printf( “给定引用串序列:\n“ );
DisplayPageString( );
printf( “\n“ );
for( i = 1; i<= N; i++ )
{
number = FindNumber( p_mem page[ i ] P );
if( number >= 0 )
{
printf( “%d已在页中。“ page[ i ] );
DisplayMemeryBlock( );
}
else
{
if( mem_count <= P )
{
InsertIntoMemory( p_mem page[ i ] mem_count );
InsertItem( page[ i ] page_FIFO N );
printf( “页中未满,%d被引用. “page[ i ] );
DisplayMemeryBlock( );
}
else
{
RemoveItem( &temp page_FIFO N );
InsertIntoMemory( p_mem page[ i ] FindNumber( p_mem temp P ) );
InsertItem( page[ i ] page_FIFO N );
printf( “%d被引用%d被替换->出现第%d次置换!“page[ i ] temp ++exchange );
DisplayMemeryBl
评论
共有 条评论