• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: c语言  

资源简介

操作系统课请求分页存储管理模拟模拟程序,程序相对简单,通过这个模拟程序能够帮助学习者会更好的学习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

评论

共有 条评论