亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? duanye.cpp

?? 段頁式虛擬存儲管理的地址轉換程序,操作系統的課程設計,使用C++的控制臺程序,結構化的.
?? CPP
字號:
//////////////////////////////////////////////////////
//計算機0607薛昆侖  0120610340725  
//段頁式存儲管理的地址轉換


#include<iostream.h>
#include<stdlib.h>
#include <string.h>
#include<stdio.h>
#include<iomanip.h>
#include<time.h>

#define LISTLEN 100
#define BLOCKSMAX 1000

///////////////////////////////////////////////////////////
//主要的數據結構定義

struct pageList                       //頁表
{
    int num;
    int blockcode[LISTLEN];
  };

struct segmentList                     //段表,相當于一個進程的信息體
{
    pageList segments[LISTLEN];
    char procname[20];
    int Isdiaoyong;
    int num;
	int pagecount;
};

segmentList procs[LISTLEN];             //進程請求表

int memory=0;
int block=0;
int procnum=0;
int emptyblocks[BLOCKSMAX];
int usedblocks=0;
int blockcount;

///////////////////////////////////////////////////////////////
//所有函數聲明
//四個主要函數
int  procShow();
void procApply();
void procDiaodu();
void addTranslate();
//與內存空閑區管理有關的幾個函數
void adjustempty(int a);
void initempty();
void Showempty();
//顯示某進程的段表和頁表信息
void procShowone(int );
//顯示信息和服務選單

void showInfomenu();
void showServermenu();

/////////////////////////////////////////////////////////////////
//四個主要功能的函數.
//申請創建進程

void procApply()
{
    cout<<"請輸入你想創建進程的個數:";
   
	cin>>procnum;
	for(int i=0;i<procnum;i++){
	cout<<"第"<<i<<"個進程的名字為:";
	cin>>procs[i].procname;
    cout<<"該進程的段數為:";
    cin>>procs[i].num;
    int pagesum=0;
    for(int j=0;j<procs[i].num;j++)
    {
        cout<<"進程第"<<j<<"段的頁數為:";
        cin>>procs[i].segments[j].num ;
  
		pagesum=pagesum+procs[i].segments[j].num;

    }
    procs[i].Isdiaoyong=0;
    procs[i].pagecount=pagesum;
	}
}

//將進程調度入內存
void procDiaodu()
{
    cout<<"您要調度的進程的標號是:";
    int n;
    cin>>n;
    if(n+1>procnum)
        cout<<"進程不存在!"<<endl;
    else if(procs[n].Isdiaoyong==1)
        cout<<"操作錯誤,該進程已經被調入到內存!"<<endl;
	else if(procs[n].pagecount>blockcount-usedblocks)
        cout<<"內存空間不足,調度不成功!"<<endl;
    
	
	else
    {
        
        for(int j=0;j<procs[n].num;j++)
        {

		for(int i=0;i<procs[n].segments[j].num;i++){
            srand((unsigned) time(NULL));  
		    int randnum=rand()%(blockcount-usedblocks);

			procs[n].segments[j].blockcode[i]=emptyblocks[randnum];
	
		    usedblocks++;
			adjustempty(randnum);
		}
				
	    cout<<"段"<<j<<"的內存分配完畢."<<endl;
        }

		cout<<"已經為進程"<<procs[n].procname<<"分配內存空間:"<<endl;
   
        procs[n].Isdiaoyong =1;
 
    }

}

//顯示進程請求表
int procShow()
{   cout<<"______________________________________________"<<endl;
    cout<<setw(6)<<"進程號"<<setw(8)<<"進程名"<<setw(10)<<"分配狀態"<<setw(6)<<"段數"<<setw(6)<<"頁數"<<endl;
    for(int i=0;i<procnum;i++)
    cout<<setw(6)<<i<<setw(8)<<procs[i].procname<<setw(10)<<procs[i].Isdiaoyong<<setw(6)<<procs[i].num<<setw(6)<<procs[i].pagecount<<endl;
    cout<<"______________________________________________"<<endl;
    
	showInfomenu();
    
	int d;
	while(1)
    {
        cout<<"請選擇:";
        cin>>d;
        switch(d){     
        case 1: Showempty();break;
        case 2: {
			cout<<"你想查看哪個進程內存分配情況:";
			int n;
			cin>>n;
			if(n+1>procnum)
            cout<<"進程不存在!"<<endl;
            else if(procs[n].Isdiaoyong==0)
            cout<<"操作錯誤,該進程尚未被調入內存!"<<endl;
	        else procShowone(n);
			break;
				}
        case 3: return 0;
		default:cout<<"error!請重新輸入!"<<endl; 
		}
    
}
}

//進行地址轉換
void addTranslate(){
	cout<<"你要運行的是哪個進程:"<<endl;
	int n;
	cin>>n;
    if(n+1>procnum)
        cout<<"進程不存在!"<<endl;
    else if(procs[n].Isdiaoyong==0)
        cout<<"操作錯誤,該進程尚未被調入內存!"<<endl;
	else{
	int addphysical,segmentcode,pagecode,address,pagephysical;
	cout<<"進程"<<procs[n].procname<<"開始運行....."<<endl;
	cout<<"請按提示輸入你想要進行轉換的邏輯地址信息(十進制)."<<endl;
    cout<<"段號s:";cin>>segmentcode;
	cout<<"頁號p:";cin>>pagecode;
	cout<<"頁內相對地址d:";cin>>address;
	if(segmentcode>=procs[n].num)cout<<"段號超過段表長,越界中斷"<<endl;
	else{
		if(pagecode>=procs[n].segments[segmentcode].num)cout<<"頁號超過頁表長,越界中斷"<<endl;
		else{
			if(address>=block)cout<<"頁內相對地址超過塊大小,輸入錯誤."<<endl;
			else{
			pagephysical=procs[n].segments[segmentcode].blockcode[pagecode];
			addphysical=pagephysical*block+address;
			cout<<"該邏輯地址對應的物理塊為:"<<pagephysical<<endl;
			cout<<"其物理地址為:"<<addphysical<<endl;
			}
		}
	}
	}
}

////////////////////////////////////////////////////////////////////////////////////////
//其他的零碎的小功能函數.
//顯示指定進程的段表和頁表信息
void procShowone(int i){
	cout<<"_____________________________________________"<<endl;
    cout<<"進程"<<procs[i].procname<<"有"<<procs[i].num<<"段."<<endl;
    
	for(int j=0;j<procs[i].num;j++){
	cout<<endl<<"其第"<<j<<"段有"<<procs[i].segments[j].num<<"頁."<<endl<<"頁表為:"<<endl;
	cout<<"頁號:";
	for(int m=0;m<procs[i].segments[j].num;m++)cout<<setw(3)<<m;
	cout<<endl;
	cout<<"塊號:";
    for(int k=0;k<procs[i].segments[j].num;k++)cout<<setw(3)<<procs[i].segments[j].blockcode[k];
	cout<<endl;
}
	cout<<"_____________________________________________"<<endl;


}

//更新空閑頁面表
void adjustempty(int a){
    for(int i=a;i<=(blockcount-usedblocks-1);i++)
		emptyblocks[i]=emptyblocks[i+1];
}

//初始化空閑頁面表
void initempty(){
	for(int i=0;i<=blockcount-1;i++){
		emptyblocks[i]=i;
	}
}

//顯示空閑頁面表的內容
void Showempty(){
	cout<<"______________________________________________"<<endl;
    cout<<"當前內存空閑表中空閑塊個數為:"<<blockcount-usedblocks<<endl;
    cout<<"依次為:"<<endl;
    for(int i=0;i<=blockcount-usedblocks-1;i++){
	if(i%26==0 && i!=0)
	cout<<endl<<setw(3)<<emptyblocks[i];	
	else cout<<setw(3)<<emptyblocks[i];
}
   cout<<endl;
   cout<<"______________________________________________"<<endl;
}



void showInfomenu(){
	cout<<"**********************************************"<<endl;
    cout<<"          你是否還想顯示其他信息:            "<<endl;
	cout<<"                                              "<<endl;              
	cout<<"               1:空閑表                       "<<endl;
	cout<<"               2:內存分配情況                 "<<endl;
	cout<<"               3:返回菜單                     "<<endl;  
	cout<<"					                             "<<endl;
	cout<<"**********************************************"<<endl;
}


void showServermenu(){
    cout<<"*************************************************"<<endl;
    cout<<"       模擬段頁式虛擬存儲管理中地址轉換      "<<endl;
	cout<<"                                                 "<<endl;              
	cout<<"                  1:顯示進程表                   "<<endl;
	cout<<"                  2:創建進程結構                 "<<endl;
	cout<<"                  3:進程分配內存                 "<<endl;  
	cout<<"                  4:地址轉換                     "<<endl;
    cout<<"                  5:退出                         "<<endl;
	cout<<"                                                 "<<endl;
	cout<<"*************************************************"<<endl;
}

//////////////////////////////////////////////////////////////////////////////////////////
//主函數.

int main()
{   
   
    cout<<"請輸入內存的大小:";
    cin>>memory;
	cout<<"請輸入內存塊的大小:";
	int mod;
	
	do{
	cin>>block;
	blockcount=memory/block;
	 mod=memory % block;
	if(mod)cout<<"內存塊大小輸入不合適,請重新輸入:";
	}while(mod);
	
	initempty();
    showServermenu();
    
	int d;
	while(1)
    {
        cout<<"請選擇服務種類:";
        cin>>d;
        switch(d){     
        case 1: procShow();showServermenu();break;
        case 2: procApply();break;		
        case 3: procDiaodu();break;
        case 4: addTranslate();break;
		case 5: cout<<"服務完畢!"<<endl; return 0;
		default:cout<<"error!請重新輸入!"<<endl; 
		}
    }
   
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2欧美一区二区三区在线观看视频| 日韩国产精品91| 国产精品免费视频网站| 国产亚洲欧美在线| 国产亚洲一区字幕| 国产亚洲综合性久久久影院| 久久久久9999亚洲精品| 久久久五月婷婷| 国产日韩欧美高清在线| 中文字幕欧美激情| 亚洲少妇屁股交4| 亚洲国产综合人成综合网站| 亚洲成人福利片| 蜜乳av一区二区三区| 狠狠色丁香久久婷婷综合丁香| 国产乱码精品一品二品| 成人午夜激情视频| 97久久久精品综合88久久| 在线欧美日韩精品| 91麻豆精品国产自产在线观看一区| 欧美一级欧美三级在线观看 | 亚洲精品在线三区| 久久久久久久久久电影| 国产风韵犹存在线视精品| 国产成人亚洲精品狼色在线| 97aⅴ精品视频一二三区| 在线视频欧美精品| 日韩免费看的电影| 国产欧美日韩亚州综合| 亚洲乱码国产乱码精品精可以看 | 一本久久精品一区二区| 欧美色大人视频| 精品国产凹凸成av人导航| 国产三级久久久| 亚洲一区二区欧美日韩| 老司机精品视频一区二区三区| 国产精品一品视频| 在线观看区一区二| 精品不卡在线视频| 亚洲色图清纯唯美| 日本v片在线高清不卡在线观看| 国产精品一区久久久久| 在线亚洲高清视频| 欧美mv日韩mv| 亚洲美女电影在线| 久久精品国产99国产精品| 不卡一卡二卡三乱码免费网站| 欧美日韩国产精品成人| 欧美国产一区视频在线观看| 午夜视频一区在线观看| 国产成人精品免费视频网站| 中文成人av在线| 日韩在线观看一区二区| 国产精品亚洲第一区在线暖暖韩国| 在线亚洲+欧美+日本专区| 精品久久久久av影院| 亚洲综合在线观看视频| 国产美女视频91| 欧美情侣在线播放| 亚洲欧洲精品天堂一级| 精品系列免费在线观看| 欧美在线免费视屏| 国产精品三级久久久久三级| 青青草原综合久久大伊人精品 | 国产日韩欧美精品在线| 亚洲国产成人av好男人在线观看| 丁香婷婷综合五月| 日韩免费一区二区| 亚洲高清视频在线| 成人h动漫精品| 精品国产免费一区二区三区四区 | 国产成人精品影院| 欧美一级在线视频| 亚洲国产日韩a在线播放| 成人综合在线观看| 久久这里只有精品视频网| 欧美三级韩国三级日本三斤| 国产精品国产三级国产三级人妇 | 国产91丝袜在线播放九色| 欧美一三区三区四区免费在线看 | 91黄视频在线观看| 欧美国产日本韩| 国产精品456| 2024国产精品| 久久av资源网| 欧美一级片免费看| 婷婷综合久久一区二区三区| 欧美亚洲丝袜传媒另类| 一区二区在线观看av| proumb性欧美在线观看| 国产色91在线| 国产成人亚洲精品青草天美| 久久久久久久综合狠狠综合| 精品一区二区免费| 91精品国产综合久久精品app| 亚洲丶国产丶欧美一区二区三区| 在线观看日韩av先锋影音电影院| 亚洲三级在线观看| 色综合天天综合色综合av| 国产精品福利在线播放| 成人网页在线观看| 国产精品久久毛片av大全日韩| 国产a视频精品免费观看| 久久久久久久综合狠狠综合| 国产馆精品极品| 国产欧美日韩精品一区| 粉嫩绯色av一区二区在线观看| 亚洲精品一区二区三区福利| 国产一级精品在线| 国产欧美日韩视频在线观看| 成人国产精品视频| 日韩伦理免费电影| 色菇凉天天综合网| 亚洲成av人片一区二区| 91精品国产综合久久精品麻豆| 六月丁香婷婷久久| 久久青草国产手机看片福利盒子| 国产精品1024| 亚洲色图在线看| 欧美三级视频在线| 喷水一区二区三区| 久久综合久色欧美综合狠狠| 国产成人免费视频精品含羞草妖精 | 欧美色图一区二区三区| 石原莉奈在线亚洲二区| 精品国产麻豆免费人成网站| 黄色日韩三级电影| 中文字幕一区二区三区四区| 欧洲人成人精品| 美脚の诱脚舐め脚责91 | 成人免费在线视频| 欧美最猛黑人xxxxx猛交| 日韩中文字幕1| 国产片一区二区三区| 色婷婷久久久久swag精品| 日韩在线一二三区| 久久精品亚洲精品国产欧美| 91美女在线观看| 青青青爽久久午夜综合久久午夜 | 国产高清成人在线| 亚洲人成精品久久久久| 91精品国产色综合久久不卡蜜臀 | 日韩欧美一级在线播放| 国产风韵犹存在线视精品| 亚洲综合视频网| 久久久久国产成人精品亚洲午夜| 色综合久久久久久久久| 久久成人麻豆午夜电影| 中文字幕一区二区三区精华液| 3atv在线一区二区三区| 国产ts人妖一区二区| 亚洲福利一区二区三区| 久久亚洲春色中文字幕久久久| fc2成人免费人成在线观看播放| 日本在线不卡一区| 中文字幕在线不卡视频| 日韩视频中午一区| 色婷婷综合激情| 国产一区二区影院| 亚洲18色成人| 国产精品不卡在线观看| 91精品国产高清一区二区三区蜜臀| www.66久久| 激情欧美日韩一区二区| 亚洲一二三区在线观看| 国产精品人妖ts系列视频| 3d动漫精品啪啪一区二区竹菊| 99久免费精品视频在线观看| 7777精品伊人久久久大香线蕉 | 床上的激情91.| 老司机一区二区| 亚洲专区一二三| 中文字幕一区二区三区不卡| 精品国产免费人成电影在线观看四季| 欧美优质美女网站| 成人综合在线观看| 久久66热re国产| 日韩高清在线一区| 一区二区三区四区国产精品| 国产精品久久久久毛片软件| 精品99一区二区三区| 欧美一区二区久久久| 欧美性感一区二区三区| 99精品国产99久久久久久白柏| 国产成人免费视频网站高清观看视频| 麻豆一区二区99久久久久| 午夜精品福利一区二区蜜股av| 一级中文字幕一区二区| 亚洲欧洲成人自拍| 国产精品污污网站在线观看| 久久久精品国产99久久精品芒果| 日韩亚洲欧美成人一区| 欧美精品一级二级三级| 欧美性猛交xxxxxx富婆| 91极品美女在线| 欧美在线free| 欧美性极品少妇| 欧美日韩在线不卡| 欧美乱熟臀69xxxxxx| 欧美日韩dvd在线观看|