青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Brian Warehouse

Some birds aren`t meant to be caged, their feathers are just too bright... ...
posts - 40, comments - 16, trackbacks - 0, articles - 1

實(shí)驗(yàn)二代碼 首次適應(yīng)法 位示圖法

Posted on 2010-08-17 13:02 Brian 閱讀(1612) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): OS
/*
Title: 首次適應(yīng)算法
Author: Brian
Date: 2010/05/31
*/
#include 
<iostream>
#include 
<cstdlib> // system()
using namespace std;

typedef 
struct SNode { // Space Node
    int start,end; // 起始,結(jié)束
    int length; // 長(zhǎng)度大小
    struct SNode *next; // 指向下一結(jié)點(diǎn)的指針
}* SP;

SP space
=(SP)malloc(sizeof(SNode)); // 全局變量,內(nèi)存空間頭結(jié)點(diǎn)


void DispSpace() { // 顯示內(nèi)存空間分配情況

    SP p
=space;
    cout
<<"\n  空閑區(qū)說(shuō)明表 \n"
        
<<"---地址--長(zhǎng)度---\n";
    
while (p->next)
    {
        cout
<<"    "<<p->next->start
            
<<"    "<<p->next->length<<endl;
        p
=p->next;
    }
    cout
<<"----------------\n";
}

void Initial() { // 初始化說(shuō)明表
    SP p,q;
    p
=(SP)malloc(sizeof(SNode));
    q
=(SP)malloc(sizeof(SNode));    
    p
->start=14; p->length=12; p->end=26;
    q
->start=32; q->length=96; q->end=128// 指導(dǎo)書(shū)上的作業(yè)分配
    space->next=p; // 與頭結(jié)點(diǎn)連接
    p->next=q;
    q
->next=NULL;
    DispSpace();
}

void Allocation(int len) { // 分配內(nèi)存給新作業(yè)
    SP p=space,q;
    
while (p->next) {
        
if (p->next->length < len)
            p
=p->next;
        
else if (p->next->length > len) {
            p
->next->start=p->next->start+len;
            p
->next->length=p->next->length-len;
            cout
<<"分配成功!\n";
            DispSpace(); 
return;
        }
        
else {
            q
=p->next;
            p
->next=q->next;
            cout
<<"分配成功!\n";
            DispSpace(); 
return;
        }    
    } 
    cout
<<"分配失敗!\n";
    DispSpace(); 
return;
}

void CallBack(int sta,int len) { // 回收內(nèi)存
    SP p=space,q=p->next,r; // 開(kāi)始地址和長(zhǎng)度
    p->end=0;
    
int en=sta+len;
    
while (q) {
        
if (sta == 0) { // 初始地址為0
            if (en == q->start) { // 正好回收
                q->start=0;
                q
->length=q->end;
                
return;
            }
            
else {
                r
=(SP)malloc(sizeof(SNode));
                r
->start=sta; r->length=len; r->end=en;
                p
->next=r;
                r
->next=q;
                
return;
            }
        }
        
else if ((p->end < sta) && (q->start > en)) { // 上鄰區(qū)
            r=(SP)malloc(sizeof(SNode));
            r
->start=sta; r->length=len; r->end=en;
            p
->next=r;
            r
->next=q;
            
return;
        }
        
else if ((p->end < sta) && (q->start == en)) { // 鄰區(qū)相接
            q->start=sta;
            q
->length=q->end-sta;
            
return;
        }
        
else if ((p->end == sta) && (q->start < en)) { // 下鄰區(qū)
            p->end=en;
            p
->length=en-p->start;
            
return;
        }
        
else if (p->end==sta && q->start==en) { // 鄰區(qū)相接
            p->end=q->end;
            p
->length=p->end-p->start;
            p
->next=q->next;
            
return;
        }
        
else {
            p
=p->next;
            q
=q->next;
        }
    }
}


void main() {
    Initial();
    cout
<<"現(xiàn)在分配大小為 6K 的作業(yè) 4 申請(qǐng)裝入主存: ";
    Allocation(
6); // 分配時(shí)參數(shù)只有長(zhǎng)度    
    
//--------指導(dǎo)書(shū)測(cè)試數(shù)據(jù)演示----------
    cout<<"現(xiàn)回收作業(yè) 3 (起址10,長(zhǎng)度4)\n";
    CallBack(
10,4);
    DispSpace();
    cout
<<"現(xiàn)回收作業(yè) 2 (起址26,長(zhǎng)度6)\n";
    CallBack(
26,6);
    DispSpace();
    
//---------------演示結(jié)束-------------
    system("pause");
}

 

/*
Title: 位示圖法
Author: Brian
Date: 2010/05/25
*/
#include 
<iostream>
#include 
<cstdlib>
using namespace std;

typedef 
struct PNode { // 進(jìn)程PCB    
    struct PNode *next; // 后向指針
    char name[12]; // 進(jìn)程名
    int *PT; // 頁(yè)表
    int size; // 進(jìn)程所需要的空間
}* Proc;

Proc H
=(Proc)malloc(sizeof(PNode)); // 進(jìn)程頭結(jié)點(diǎn)
Proc CurrJob; // 當(dāng)前進(jìn)程指針

int BG_DEF[8][8= {  // 指導(dǎo)書(shū)上的初始條件
    {1,1,0,0,1,1,1,0},
    {
0,1,0,1,0,1,0,0},
    {
0,0,0,0,0,0,0,0},
    {
1,0,0,0,0,0,0,1},
    {
0,0,0,0,0,0,0,0},
    {
0,0,0,0,0,0,0,0},
    {
0,0,0,0,0,0,0,0},
    {
0,0,0,0,0,0,0,0
};
int FREE_DEF = 54// 指導(dǎo)書(shū)上初始條件的空閑塊數(shù)

int BG[8][8]={0}; // 用戶(hù)自定義位示圖
int FREE=64// 用戶(hù)自定義空閑塊數(shù)

void DispBG(int flag) // 顯示當(dāng)前位示圖 F
{
    cout
<<"\n字節(jié)號(hào)\\位數(shù)\t0\t1\t2\t3\t4\t5\t6\t7\n";
    
for(int i=0; i<8; i++)
    {
        cout
<<'\t'<<i;
        
for(int j=0; j<8; j++)
        {
            
if (flag==1)
                cout
<<"\t"<<BG[i][j];
            
else cout<<"\t"<<BG_DEF[i][j];
        }
        cout
<<endl;
    }
    cout
<<endl;
}

void Initial() // 用戶(hù)選取坐標(biāo)初始化內(nèi)存塊
{
    DispBG(
1);
    cout
<<"\n請(qǐng)輸入您想要分配的塊號(hào)坐標(biāo),以 -1 -1 結(jié)束:\n";
    
int i,j;
    
while (1)
    {
        cin
>>i>>j;
        
if (i+j==-2// i==-1 && j==-1
            break;
        BG[i][j]
=1;
        FREE
--;
    }
    DispBG(
1);
}

void Allocation(int flag) //內(nèi)存分配
{
    
int i,j,k,kflag=1// 進(jìn)程個(gè)數(shù)
    Proc s=H;
    s
=s->next=(Proc)malloc(sizeof(PNode));
    cout
<<"請(qǐng)輸入進(jìn)程名和內(nèi)存大小: ";
    cin
>>s->name>>s->size;
    
if (flag==1)
    {
        
if (s->size > FREE)
        {
            cout
<<"空間不足,分配失敗!";
            
return;
        }
        FREE
-=s->size;
    }
    
else {
        
if (s->size > FREE_DEF) {
            cout
<<"空間不足,分配失敗!";
            
return;
        }
        FREE_DEF
-=s->size;
    }
    
    s
->PT=new int[s->size]; // 新建PT表
    k=0;
    
if (flag==1// 用戶(hù)自定義位示圖
    {
        
for (i=0; i<8 && kflag; i++)
            
for (j=0; j<8 && kflag; j++)
            {
                
if (!BG[i][j])
                {
                    BG[i][j]
=1;
                    FREE
--;
                    s
->PT[k++]=8*i+j;
                    
if (k==s->size)
                    {
                        cout
<<"分配完成!\n";
                        kflag
=0;
                    }
                }
            }
    }
    
else // 實(shí)驗(yàn)指導(dǎo)書(shū)位示圖
    {
        
for (i=0; i<8 && kflag; i++)
            
for (j=0; j<8 && kflag; j++)
            {
                
if (!BG_DEF[i][j])
                {
                    BG_DEF[i][j]
=1;
                    FREE_DEF
--;
                    s
->PT[k++]=8*i+j;
                    
if (k==s->size)
                    {
                        cout
<<"分配完成!\n";
                        kflag
=0;
                    }
                }
            }
    }
    s
->next=NULL;
}

void CallBack(int flag) //內(nèi)存回收
{
    
char name[12];
    cout
<<"請(qǐng)輸入需要回收的進(jìn)程名: ";
    cin
>>name;
    Proc p
=H->next,q=H;
    
while (p)
    {
        
if (strcmp(name,p->name)==0// 刪除進(jìn)程,回收內(nèi)存
        {
            
for(int i=0; i<p->size; i++// 修改該進(jìn)程位示圖
            {
                
int m=p->PT[i]/8;
                
int n=p->PT[i]%8;
                
if (flag==1)
                {
                    BG[m][n]
=0;
                    FREE
++;
                }
                
else {
                    BG_DEF[m][n]
=0;
                    FREE_DEF
++;
                }
            }
            
            q
->next=p->next; // 刪除進(jìn)程結(jié)點(diǎn)
            free(q);
            cout
<<"回收成功!\n";
            
return;
        }
        p
=p->next;
        q
=q->next;
    }
    cout
<<"無(wú)此進(jìn)程,回收內(nèi)存失敗!\n";
}

void DispPT()
{
    
char name[12];
    cout
<<"請(qǐng)輸入要打印頁(yè)表的進(jìn)程名: ";
    cin
>>name;
    Proc p
=H->next;
    
while (p)
    {
        
if (strcmp(name,p->name) == 0)
        {
            cout
<<"  塊號(hào)\n"
                
<<"--------\n";
            
for (int i=0; i<p->size; i++)
                cout
<<"    "<<p->PT[i]<<endl;
            cout
<<"--------\n";
            
return;
        }
        p
=p->next;
    }
    cout
<<"該進(jìn)程不存在!\n";
}

void Welcome()
{
    cout
<<"----------位示圖法---------\n"
        
<<"       1. 新進(jìn)程內(nèi)存分配\n"
        
<<"       2. 舊進(jìn)程內(nèi)存回收\(chéng)n"
        
<<"       3. 打印進(jìn)程頁(yè)表\n"
        
<<"       4. 打印位示圖\n"
        
<<"       5. 退出系統(tǒng)\n"
        
<<"-----------------------------------\n";
}

void main()
{
    H
->next=NULL;
    
int flag;
    cout
<<"內(nèi)存初始化方式: 1.自定義 2.指導(dǎo)書(shū)\n"
        
<<"請(qǐng)選擇: ";
    cin
>>flag;
    
if (flag==1) Initial(); // 用戶(hù)選取坐標(biāo)初始化內(nèi)存塊
    int choice;
    
while (1)
    {
        Welcome();
        cin
>>choice;
        
switch (choice)
        {
        
case 1: Allocation(flag); break// 進(jìn)行一次分配內(nèi)存工作
        case 2: CallBack(flag); break// 回收用戶(hù)指定進(jìn)程的內(nèi)存
        case 3: DispPT(); break// 打印用戶(hù)指定進(jìn)程的頁(yè)表
        case 4: DispBG(flag); break// 打印用戶(hù)指定位示圖
        case 5: cout<<"\n退出成功!\n"; system("pause"); exit(1);
        }
    }
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩一级成人av| 久久亚洲精品网站| 国产亚洲精品久久久久动| 国产精品久久久久久影院8一贰佰| 欧美 日韩 国产一区二区在线视频| 欧美在线高清视频| 久久久久久尹人网香蕉| 欧美成人高清视频| 欧美日韩在线一区二区三区| 国产老女人精品毛片久久| 国内揄拍国内精品久久| 亚洲激情女人| 亚洲一区激情| 老司机免费视频一区二区三区| 亚洲第一久久影院| 日韩小视频在线观看专区| 香蕉久久久久久久av网站| 麻豆精品视频在线观看| 国产精品国产馆在线真实露脸 | 免费av成人在线| 最新亚洲视频| 亚洲欧美在线免费| 免费日韩av电影| 国产婷婷色一区二区三区在线| 亚洲国产高清一区二区三区| 亚洲午夜久久久| 亚洲综合色丁香婷婷六月图片| 亚洲欧美激情四射在线日 | 亚洲欧洲一二三| 香蕉久久夜色精品国产| 欧美日韩ab片| 在线观看成人一级片| 亚洲欧美日本伦理| 亚洲激情av| 免费日韩成人| 今天的高清视频免费播放成人| 亚洲综合电影| 亚洲国产精品999| 欧美专区日韩专区| 国产精品一二| 一区二区三区日韩欧美| 欧美成人影音| 久久精品一二三| 国产欧美日韩一区二区三区在线| 日韩视频免费看| 欧美电影免费| 久久人人97超碰精品888| 国产亚洲精品v| 亚洲欧美激情在线视频| 9人人澡人人爽人人精品| 欧美国产激情| 亚洲啪啪91| 亚洲高清毛片| 免费观看一级特黄欧美大片| 国产在线精品成人一区二区三区 | 在线观看国产日韩| 久久理论片午夜琪琪电影网| 亚洲午夜激情网站| 国产精品亚洲欧美| 欧美亚洲免费电影| 香蕉成人伊视频在线观看 | 久久国产精品一区二区三区四区| 国产精品视频第一区| 亚洲在线一区二区| 亚洲午夜在线| 国产日韩一区二区三区在线播放 | 国产拍揄自揄精品视频麻豆| 翔田千里一区二区| 欧美亚洲一区| 伊人精品成人久久综合软件| 免费观看在线综合| 欧美国产精品专区| 亚洲一区二区视频| 亚洲欧美中文另类| 亚洲电影免费观看高清| 亚洲人成在线观看网站高清| 国产一区二区三区网站| 亚洲黄色成人| 亚洲欧洲精品天堂一级| 免费av成人在线| 欧美伊人精品成人久久综合97| 国产精品高潮呻吟久久| 亚洲欧美日韩一区二区三区在线观看| 亚洲最新在线视频| 国产精品第三页| 久久精品主播| 欧美成人首页| 亚洲欧美成人一区二区在线电影 | 久久综合色88| 99视频一区二区三区| 亚洲影音一区| 91久久精品www人人做人人爽| 亚洲日本在线观看| 国产区在线观看成人精品| 欧美国产免费| 国产精品www网站| 老鸭窝毛片一区二区三区 | 欧美日韩色综合| 久久久久久色| 国产精品久久久久久福利一牛影视| 久久精品日韩欧美| 欧美日本在线看| 久久综合给合| 国产精品资源在线观看| 亚洲激情另类| 国产真实久久| 亚洲少妇最新在线视频| 亚洲国产精品女人久久久| 亚洲午夜日本在线观看| 亚洲精品日韩一| 久久精品一区| 久久成人一区| 国产精品视频免费观看www| 亚洲丶国产丶欧美一区二区三区| 国产女同一区二区 | 久久亚洲视频| 久久精品国产一区二区三区| 欧美三级视频在线播放| 亚洲缚视频在线观看| 黑人一区二区| 性亚洲最疯狂xxxx高清| 午夜亚洲激情| 国产精品成人在线观看| 亚洲美女中文字幕| 亚洲免费成人av| 免费在线看成人av| 免费观看国产成人| 国内外成人在线视频| 性欧美在线看片a免费观看| 亚洲一区影音先锋| 国产精品狠色婷| 亚洲综合国产| 欧美极品在线观看| 免费一级欧美片在线播放| 国产亚洲精品久| 久久成人久久爱| 久久综合成人精品亚洲另类欧美| 国产一区二区久久| 久久久久欧美| 嫩草国产精品入口| 亚洲欧洲在线视频| 欧美日韩国产二区| 日韩视频在线观看一区二区| 一区二区精品| 国产精品久久久99| 西西人体一区二区| 久久只有精品| 亚洲精品一区在线观看香蕉| 欧美片在线观看| 亚洲在线视频| 免费在线观看成人av| 91久久精品一区| 欧美视频在线不卡| 欧美一级一区| 亚洲第一精品久久忘忧草社区| 亚洲片在线观看| 国产精品h在线观看| 亚洲一区二区三区影院| 久久久久国产精品人| 亚洲国产精品第一区二区三区| 欧美jizz19性欧美| 亚洲久色影视| 久久精品国产v日韩v亚洲| 亚洲第一在线综合网站| 欧美三级不卡| 久久久青草婷婷精品综合日韩| 亚洲国产天堂久久综合网| 午夜精品久久久久久久99樱桃| 国产一区欧美| 欧美日韩三级视频| 久久久久欧美精品| 中文国产成人精品| 亚洲电影第1页| 久久激情一区| 亚洲图片在线观看| 在线日韩电影| 国产日韩欧美黄色| 欧美全黄视频| 久久综合影音| 午夜在线a亚洲v天堂网2018| 亚洲国产一区二区三区青草影视| 欧美一区不卡| 一区二区欧美国产| 亚洲国产高清一区二区三区| 国产精品羞羞答答xxdd| 欧美美女喷水视频| 老司机午夜精品视频| 亚洲欧美激情一区| 亚洲精品国产精品乱码不99按摩| 久久久久久久尹人综合网亚洲 | 国产精品成人一区二区艾草| 久久久国产亚洲精品| 亚洲一区二区三区四区中文| 91久久线看在观草草青青| 久久综合伊人77777尤物| 午夜精品久久| 亚洲一区二区三区中文字幕| 99国产精品久久久久久久成人热| 精品99视频| 精品av久久707|