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

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>
            在线成人黄色| 欧美激情一二三区| 久久久7777| 亚洲性图久久| 欧美色精品天天在线观看视频 | 亚洲第一页中文字幕| 亚洲茄子视频| 国产一区二区三区在线观看免费 | 99re视频这里只有精品| 在线播放日韩| 亚洲高清不卡在线| 欧美一区二区视频网站| 国产精品成人一区二区艾草| 午夜精品99久久免费| 欧美成年人网| 久久亚洲精品网站| 欧美三区在线观看| 亚洲免费视频网站| 欧美三级视频在线| 亚洲第一中文字幕| 亚洲综合大片69999| 欧美日韩中文字幕日韩欧美| 在线亚洲一区观看| 亚洲一区二区三区成人在线视频精品| 亚洲精品人人| 美女精品一区| 99re66热这里只有精品4| 在线观看视频日韩| 欧美大片在线观看| 亚洲午夜91| 亚洲国产99精品国自产| 欧美在线播放| 在线亚洲电影| 国产日韩欧美在线| 亚洲制服av| 久久久久久免费| 久久精品国产精品| 国语自产精品视频在线看8查询8| 欧美综合国产| 性色一区二区三区| 你懂的网址国产 欧美| 久久国产一区二区三区| 在线观看亚洲| 篠田优中文在线播放第一区| 亚洲一区二区免费在线| 蜜桃av综合| 欧美成人视屏| 国产精品日日做人人爱| 国产日韩欧美在线看| 国产精品永久免费观看| 欧美国产免费| 欧美伊人久久久久久午夜久久久久| 欧美成人综合网站| 免费观看30秒视频久久| 久久亚裔精品欧美| 亚洲伦理在线免费看| 亚洲精品国产精品国自产观看浪潮| 日韩视频不卡| 一区二区高清在线| 日韩一区二区高清| 国产亚洲第一区| 亚洲精品一区二区三区蜜桃久| 国产精品视频免费一区| 国产精品午夜国产小视频| 在线观看精品视频| 亚洲第一页中文字幕| 亚洲国产另类精品专区| 亚洲国产精品久久久久秋霞影院| 亚洲午夜影视影院在线观看| 亚洲五月婷婷| 亚洲精品欧美日韩专区| 亚洲精品欧美一区二区三区| 久久资源av| 亚洲高清视频在线| 欧美福利视频在线观看| 亚洲一区高清| 久久久www成人免费无遮挡大片 | 一区二区视频欧美| 亚洲人成网站999久久久综合| 99re这里只有精品6| av成人动漫| 久久久国产一区二区| 亚洲精选成人| 久久久久久亚洲精品杨幂换脸| 欧美日韩午夜视频在线观看| 黄色成人在线免费| 欧美一激情一区二区三区| 欧美日韩一区二区在线观看| 亚洲美女在线视频| 亚洲美女视频网| 国产精品日韩欧美一区二区三区| 国产精品高精视频免费| 伊人久久大香线| 欧美中文在线观看国产| 亚洲永久网站| 国产精品视频在线观看| 久久精品国产清高在天天线| 久久九九全国免费精品观看| 亚洲午夜久久久| 欧美国产一区视频在线观看| 久久综合狠狠综合久久综合88| 国产一区二区高清视频| 伊人狠狠色丁香综合尤物| 亚洲欧美日韩视频一区| 亚洲欧美日韩国产成人| 国产一区二区三区四区在线观看| 最新国产成人av网站网址麻豆 | 新67194成人永久网站| 女人天堂亚洲aⅴ在线观看| 亚洲高清精品中出| 亚洲三级电影全部在线观看高清| 久久超碰97中文字幕| 亚洲激情黄色| 欧美成人激情视频| 国产精品午夜视频| 亚洲人妖在线| 亚洲国内精品| 久久这里有精品视频| 欧美成人免费va影院高清| 欧美三级电影精品| 91久久久久| 亚洲欧美日韩人成在线播放| 欧美一区2区三区4区公司二百| 国产精品―色哟哟| 亚洲视频免费| 午夜精品福利在线| 亚洲日本精品国产第一区| 欧美成人免费网| 欧美国产日韩视频| 欧美女同在线视频| 夜夜嗨av一区二区三区四区 | 久久av一区二区三区漫画| 亚洲欧美日韩中文播放| 欧美日韩国产综合久久| 亚洲图片在线| 久久天堂成人| 亚洲亚洲精品在线观看| 欧美精品久久99| 免费欧美在线视频| 国内精品久久久久久久影视麻豆 | 亚洲国产视频a| 久久国产精品黑丝| 久久免费少妇高潮久久精品99| 国产日韩1区| 欧美在现视频| 久久久久久成人| 国语自产精品视频在线看| 欧美在线电影| 免费在线成人| 亚洲欧洲一区二区三区| 欧美成人免费全部| 亚洲精品国产日韩| 亚洲无线视频| 国产精品自拍在线| 久久精品亚洲乱码伦伦中文| 男男成人高潮片免费网站| 亚洲国产精品一区二区尤物区 | 久久激情一区| 在线日韩视频| 欧美99在线视频观看| 亚洲第一页中文字幕| 91久久线看在观草草青青| 欧美电影免费观看| 99国产麻豆精品| 久久精品一本久久99精品| 国语自产精品视频在线看| 玖玖在线精品| 亚洲精品日韩在线| 欧美一区二区三区在线观看视频| 亚洲精品影院| 国产一区二区三区av电影| 亚洲承认在线| 欧美成人精品不卡视频在线观看 | 欧美一区二区在线免费观看| 久久综合久久久| 一本色道久久加勒比精品| 欧美性视频网站| 久久久久久999| 一本色道**综合亚洲精品蜜桃冫| 欧美一区二区| 亚洲福利视频免费观看| 欧美日韩综合在线免费观看| 欧美一区二区国产| 亚洲日本中文字幕| 欧美在线高清| 日韩西西人体444www| 国产亚洲精品aa午夜观看| 欧美激情第六页| 午夜影院日韩| 99re66热这里只有精品4| 麻豆久久婷婷| 亚洲欧美日韩国产中文| 亚洲国产日韩一区二区| 国产区二精品视| 欧美亚州一区二区三区| 蜜臀91精品一区二区三区| 亚洲一区二区三区在线看| 亚洲国内高清视频| 卡通动漫国产精品| 性欧美大战久久久久久久久|