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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 操作系統(tǒng)——pcb模擬.txt

?? 該程序使用tc2.0編譯
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
    mem->Sts = INUSE;
    return mem;
   }
  }
  last = now;
  now = last->Next;
 }
 return NULL;
}

int ReleaseMem(MemBlock *mem)
{
 MemBlock *last,*now;
 if (MemTable==NULL) return FALSE;
 last = MemTable;
 now = last->Next;
 if (last == mem)/*如果第一個就是要釋放的分區(qū)*/
 {
  last->Sts = IDLE;
  if (now!=NULL && now->Sts==IDLE)/*如果后鄰接分區(qū)也是空閑的*/
  {
   last->Size = last->Size+now->Size;
   free(now);
  }
  return TRUE;
 }
 while (now!=NULL)/*在鏈表中尋找要釋放的分區(qū)*/
 {
  if (now == mem)/*找到了*/
  {
   now->Sts = IDLE;
   if (now->Next != NULL && now->Next->Sts==IDLE)/*察看后相鄰分區(qū)是否空閑*/
   {
    last->Next = now->Next;
    now->Next->Offset = now->Offset;
    now->Next->Size = now->Size + now->Next->Size;
    free(now);
    now = last->Next;
   }
   if (last->Sts == IDLE)/*察看前相鄰分區(qū)是否空閑*/
   {
    last->Next = now->Next;
    last->Size = last->Size + now->Size;
    free(now);
    now = last->Next;
   }
   return TRUE;
  }
  last = now;
  now = last->Next;
 }
 return FALSE;
}
/****************************************************************/

 


/*圖形系統(tǒng)相關(guān)函數(shù)聲明及全局變量定義*/
/****************************************************************/
#define HEIGHT 11
#define WIDTH 20
#define HN(n) HEIGHT*(n)
#define HNT(n) HEIGHT*(n)-1
/****************************************************************/
int InitGraph();/*初始化圖形系統(tǒng)*/
int DrawProcHeader(int x, int y);/*在x,y處繪制進程控制塊表頭結(jié)構(gòu)*/
int DrawProcStruct(int x, int y, PCB* pcb);/*在x,y處繪制進程控制塊pcb數(shù)據(jù)*/
int DrawAllProc();/*繪制進程列表*/
int DrawFrame();/*繪制圖形框架*/
int DrawMemStruct(int x, int y, MemBlock* mem);/*繪制分區(qū)mem的數(shù)據(jù)*/
int DrawMemTable();/*繪制分區(qū)表*/
int DrawConsole();/*繪制控制臺*/
int DrawConsoleHelp();/*繪制控制臺幫助信息*/
int DrawConsoleEcho();/*繪制控制臺命令提示符*/
int gprintf( int xloc, int yloc, char *fmt, ... );/*圖形系統(tǒng)中的格式輸出*/
/****************************************************************/
/*系統(tǒng)控制臺(用戶接口)相關(guān)函數(shù)聲明及相關(guān)全局變量*/
/****************************************************************/
enum _ConsoleCmd/*從系統(tǒng)控制臺輸入的命令枚舉*/
{
 CMD_EXIT =0,/*退出系統(tǒng)*/
 CMD_PAUSE,/*系統(tǒng)時間暫停*/
 CMD_PROC,/*加入新的進程*/
 CMD_READY,/*將某個掛起進程轉(zhuǎn)入就緒隊列*/
 CMD_HIBAT,/*增加道數(shù)*/
 CMD_LOBAT,/*減少道數(shù)*/
};
typedef enum _ConsoleCmd ConsoleCmd;
/****************************************************************/
char StrCmd[][6]={"exit\0","pause\0","proc\0","ready\0","hibat\0","lobat\0"};
char CmdString[30];
/****************************************************************/
int InitConsole();/*初始化控制臺*/
ConsoleCmd GetConsoleCmd();/*從控制臺輸入緩沖得到用戶命令*/
UINT GetData(int n);/*得到第n個數(shù)據(jù)參數(shù)(n>=1)*/
int ExecuteCmd();/*分析命令并得到命令*/
int CmdKeyDown(char ch);/*命令緩沖得到新的鍵盤輸入*/
/****************************************************************/
int InitGraph()
{
 int    GraphDriver, GraphMode;
 GraphDriver = DETECT;
 initgraph( &GraphDriver, &GraphMode, "" );
 if( graphresult() != grOk )
  return FALSE;
 cleardevice();
 return TRUE;
}
int DrawProcHeader(int x, int y)
{
 gprintf(x,y,"ID");
 gprintf(x+31,y,"Prio");
 gprintf(x+72,y,"Time");
 gprintf(x+113,y,"Offset");
}
int DrawProcStruct(int x, int y, PCB* pcb)
{
 bar(x,y,x+197,y+HEIGHT-2);
 if (pcb->PID>=0)/*繪制數(shù)據(jù)*/
 {
  gprintf(x,y,"%d", pcb->PID);
  gprintf(x+32,y,"%d",pcb->Prior);
  gprintf(x+73,y,"%d",pcb->Time);
  gprintf(x+114,y,"%u",pcb->Mem->Offset);
 }
 else
 {
  gprintf(x,y,"idle process");
  gprintf(x+114,y,"%u",pcb->Mem->Offset);
 }
 return TRUE;
}
int DrawAllProc()
{
 int run=0,sus=0,red=0,i;
 PCB *last, *now;
 setfillstyle(1, BLACK);
 if (ProcQueue==NULL) return FALSE;
 last = ProcQueue;
 now = last->Next;
 switch (last->Sts)
 {
 case RUN: DrawProcStruct(1,HN(3+(run++)),last); break;
 case SUSPEND: DrawProcStruct(201,HN(3+(sus++)),last); break;
 case READY: DrawProcStruct(201,HN(22+(red++)),last); break;
 }
 while (now!=NULL)
 {
  switch (now->Sts)
  {
  case RUN: DrawProcStruct(1,HN(3+(run++)),now); break;
  case SUSPEND: DrawProcStruct(201,HN(3+(sus++)),now); break;
  case READY: DrawProcStruct(201,HN(22+(red++)),now); break;
  }
  last = now;
  now = last->Next;
 }
 bar(1,HN(3+run),198,HN(26)+HEIGHT-2);/*擦除運行進程列表與控制臺之間的空隙*/
 bar(201,HN(3+sus),398,HN(19)+HEIGHT-2);/*擦除掛起隊列與就緒隊列之間的空隙*/
 bar(201,HN(22+red),398,478);/*擦除就緒隊列下面的空隙*/
 rectangle(199,HNT(1),399,478);/*補上誤擦除的線*/
 return TRUE;
}
int DrawFrame()
{
 rectangle(0,HNT(1),639,479);
 gprintf(200,0,"Multi-Batchs System Emulation");
 rectangle(199,HNT(1),399,479);
 rectangle(0,HNT(2),639,HNT(3));/*最上方的表頭框*/

 rectangle(0,HNT(27),199,HNT(28));/*系統(tǒng)控制臺表頭框*/
 rectangle(0,HNT(28),199,HNT(29));

 rectangle(199,HNT(20),399,HNT(21));
 rectangle(199,HNT(21),399,HNT(22));/*就緒進程隊列表頭框*/
 gprintf(1,HN(1),"Running Processes");
 DrawProcHeader(1,HN(2));
 gprintf(201,HN(1),"Suspend Processes");
 DrawProcHeader(201,HN(2));
 gprintf(201,HN(20),"Ready Processes");
 DrawProcHeader(201,HN(21));
 gprintf(401,HN(1),"Memory Use Information");
 gprintf(401,HN(2),"Offset");
 gprintf(501,HN(2),"Size");
 gprintf(601,HN(2),"Use");
 gprintf(1,HN(27),"System Console");
 return TRUE;
}
int DrawMemStruct(int x, int y, MemBlock* mem)
{
 bar(x,y,x+237,y+HEIGHT-2);
 gprintf(x,y,"%u", mem->Offset);
 gprintf(x+100,y,"%u",mem->Size);
 switch(mem->Sts)
 {
 case INUSE: gprintf(x+200,y,"USE"); break;
 case IDLE: gprintf(x+200,y,"IDLE"); break;
 }
 return TRUE;
}
int DrawMemTable()
{
 int num=0;
 MemBlock *last, *now;
 setfillstyle(1, BLACK);
 if (MemTable==NULL) return FALSE;
 now = MemTable;
 while (now!=NULL)
 {
  DrawMemStruct(401,HN(3+(num++)),now);
  now = now->Next;
 }
 bar(401,HN(3+num),638,478);/*擦除列表下面的空隙*/
 line(639,HN(2),639,479);/*補上誤擦除的線*/
 return TRUE;
}
int DrawConsole()
{
 setfillstyle(1, BLACK);
 bar(1,HN(28),198,HN(28)+HEIGHT-2);
 DrawConsoleEcho();
 gprintf(19,HN(28),CmdString);
 return TRUE;
}
int DrawConsoleHelp()
{
 gprintf(1,HN(29),"exit---Quit System");
 gprintf(1,HN(30),"pause--Clock Pause");
 gprintf(1,HN(31),"proc prior time memory ");
 gprintf(1,HN(32),"-------Add New Process");
 gprintf(1,HN(33),"ready ID");
 gprintf(1,HN(34),"-------UnSuspend Process");
 gprintf(1,HN(35),"hibat--Increase Batchs");
 gprintf(1,HN(36),"lobat--Decrease Batchs");
 return TRUE;
}
int DrawConsoleEcho()
{
 static show = TRUE;
 bar(1,HN(28),18,HN(28)+HEIGHT-2);
 if (show)
  gprintf(1,HN(28),">>");
 else
  gprintf(1,HN(28),"<<");
 show = show?FALSE:TRUE;
 return TRUE;
}
int gprintf( int xloc, int yloc, char *fmt, ... )
{
  va_list  argptr;
  char str[140];
  int cnt;
  va_start( argptr, format );
  cnt = vsprintf( str, fmt, argptr );
  outtextxy( xloc+1, yloc+1, str );
  va_end( argptr ); 
  return( cnt );
}
/****************************************************************/
int InitConsole()
{
 CmdString[0] = '\0';
 return TRUE;
}
ConsoleCmd GetConsoleCmd()
{
 char cmd[10];
 int pos=0,i;
 while (pos<10)
 {
  cmd[pos] = CmdString[pos];
  if ((cmd[pos]<'A')
   ||(cmd[pos]>'Z' && cmd[pos]<'a')
   ||(cmd[pos]>'z')
   )/*該字符不是字母*/
  {
   cmd[pos] = '\0';
   break;
  }
  ++pos;
 }
 cmd[9] = '\0';
 for (i=0; i<6; i++)
 {
  if (strcmp(cmd, StrCmd[i])==0)
   return (ConsoleCmd)(i);
 }
 return -1;
}
UINT GetData(int n)
{
 char ch, buf[10];
 int pos=0, space=0,i;
 while (space<n && pos<20)/*未到達要讀取數(shù)據(jù)的位置*/
 {
  ch = CmdString[pos++];
  if (ch==' ')/*如果找到空格*/
   ++space;
 }
 for (i=0; i<10; i++)
 {
  buf[i] = CmdString[pos+i];
  if (buf[i]<'0' || buf[i]>'9')/*不是數(shù)字*/
  {
   if (i==0)/*第一個字符便不是數(shù)字*/
    return 0;
   buf[i] = '\0';
   break;
  }
 }
 return (UINT)atoi(buf);
}
int ExecuteCmd()
{
 switch (GetConsoleCmd())
 {
 case CMD_EXIT:
  return FALSE;
 case CMD_PAUSE:
  flushall();
  bar(18,HN(28),197,HN(28)+HEIGHT-2);
  gprintf(18,HN(28),"press any key...");
  getch();
  flushall();
  break;
 case CMD_PROC:
  InsertProc(GetData(1),GetData(2),GetData(3));
  UpdateBatchs();
  break;
 case CMD_READY:
  UnSuspendProc(GetData(1));
  UpdateBatchs();
  break;
 case CMD_HIBAT:
  AddBatch();
  UpdateBatchs();
  break;
 case CMD_LOBAT:
  DeleteBatch();
  UpdateBatchs();
  break;
 default: break;
 }
 return TRUE;
}
int CmdKeyDown(char ch)
{
 static int pos = 0;
 int ret;
 if (ch == ENTER)
 {
  CmdString[pos] = '\0';
  ret = ExecuteCmd();
  pos=0;
  CmdString[0] = '\0';
  return ret;
 }
 else if (ch == BACKSPACE)
 {
  if (pos>0)
   CmdString[--pos] = '\0';
  return TRUE;
 }
 else
 {
  CmdString[pos] = ch;
  CmdString[++pos] = '\0';
  if (pos>20)
   pos=20;
  return TRUE;
 }
}
/****************************************************************/
/*main函數(shù)*/
int main()
{
 clock_t start=0, end=0;
 char ch;
 if (!InitConsole())
 {
  printf("can;t initialize console");getch();
  return FALSE;
 }
 if (!InitMem())
 {
  printf("can't initialize memory");getch();
  return FALSE;
 }
 if (!InitBatchs(3))
 {
  printf("can't initialize system batchs");getch();
  return FALSE;
 }
 if (!InitGraph())
 {
  printf("can't initialize graphics system");getch();
  return FALSE;
 }
 DrawFrame();
 DrawAllProc();
 DrawMemTable();
 DrawConsole();
 DrawConsoleHelp();
 while (TRUE)
 {
  start = end = clock();
  while (!kbhit())
  {
   start = clock();
   if ((start-end)/18.2 >= 1)/*時間過了一秒*/
   {
    start = end = clock();
    DrawConsoleEcho();
    PassSeconds(1);
    DrawAllProc();
    DrawMemTable();
   }
  }
  ch = getch();
  if (ch == ESC)
   return TRUE;
  if ((ch>='0' && ch<='9')/*如果字符是數(shù)字*/
   || (ch>='A' && ch<='Z')
   || (ch>='a' && ch<='z')/*或是字母*/
   || (ch==ENTER)/*如果是回車*/
   || (ch==' ')/*是空格*/
   || (ch==BACKSPACE)/*是退格*/
   )
  {
   if (CmdKeyDown(ch)==FALSE)/*如果執(zhí)行了exit命令*/
    return TRUE;
   else if (ch==ENTER)/*如果執(zhí)行了命令*/
   {
    DrawAllProc();
    DrawMemTable();
   }
   DrawConsole();
  }
 }
 return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产a级毛片一区| 日本韩国欧美一区| 美女一区二区视频| 亚洲国产一区二区三区| 伊人一区二区三区| 亚洲三级在线观看| 亚洲精品日产精品乱码不卡| 亚洲欧洲日本在线| 亚洲视频中文字幕| 一区二区成人在线| 五月婷婷色综合| 日韩av一区二区三区| 蜜桃一区二区三区在线观看| 麻豆精品在线播放| 国产老妇另类xxxxx| 成人天堂资源www在线| av成人老司机| 在线观看视频一区二区欧美日韩| 一本在线高清不卡dvd| 欧美日韩一本到| 日韩三级视频中文字幕| 久久综合久久综合久久综合| 欧美国产精品中文字幕| 综合久久一区二区三区| 亚洲一区二区欧美| 日韩电影一二三区| 国产成人在线观看| 99久久精品费精品国产一区二区| 欧洲色大大久久| 7777精品伊人久久久大香线蕉超级流畅| 制服丝袜一区二区三区| 精品电影一区二区| 亚洲欧洲日韩一区二区三区| 午夜天堂影视香蕉久久| 国产中文字幕精品| av毛片久久久久**hd| 欧美男男青年gay1069videost| 日韩写真欧美这视频| 国产精品免费视频网站| 午夜精品久久久久| 国产精品羞羞答答xxdd| 欧美主播一区二区三区美女| 日韩精品一区二区在线观看| 欧美日韩精品一区二区三区四区| 国产不卡高清在线观看视频| 色噜噜狠狠色综合中国| 日韩欧美激情一区| 国产精品欧美久久久久一区二区| 亚洲第一会所有码转帖| 久久爱www久久做| 在线精品视频小说1| 久久影视一区二区| 亚洲福中文字幕伊人影院| 国产一区二区中文字幕| 欧洲亚洲国产日韩| 欧美激情中文字幕一区二区| 天天综合色天天| av电影一区二区| 日韩欧美亚洲另类制服综合在线 | 一区二区三区欧美亚洲| 蜜乳av一区二区| 色综合av在线| 国产亚洲人成网站| 日韩电影免费一区| 色狠狠色噜噜噜综合网| 久久综合九色综合久久久精品综合 | 精品sm在线观看| 亚洲激情自拍偷拍| 福利一区二区在线| 精品福利二区三区| 日本在线观看不卡视频| 色一情一伦一子一伦一区| 国产欧美综合在线| 麻豆国产精品视频| 欧美午夜不卡视频| 一区精品在线播放| 欧美日韩国产bt| 欧美最猛性xxxxx直播| 中文字幕免费不卡在线| 精品中文av资源站在线观看| 欧美日韩久久一区二区| 亚洲视频在线观看一区| 午夜a成v人精品| 国产欧美精品一区| 久久精品国产免费| 7777精品伊人久久久大香线蕉最新版| 亚洲欧美自拍偷拍色图| 成人美女视频在线看| 久久影音资源网| 激情偷乱视频一区二区三区| 91精品国产欧美一区二区成人| 亚洲国产美国国产综合一区二区| 91老师片黄在线观看| 综合av第一页| 91在线国内视频| 国产精品国产三级国产aⅴ原创| 国产成人精品在线看| 久久色中文字幕| 国产福利精品导航| 久久久久久久国产精品影院| 激情综合色综合久久综合| 欧美精品一区二区三区一线天视频 | 91精品国产综合久久福利| 婷婷开心久久网| 欧美一区二区三区电影| 久久国产综合精品| 欧美成人aa大片| 国产一区二区影院| 欧美极品aⅴ影院| 99视频在线精品| 亚洲裸体xxx| 欧美探花视频资源| 水野朝阳av一区二区三区| 在线播放中文一区| 蜜桃av一区二区在线观看 | 日韩影院精彩在线| 日韩欧美在线观看一区二区三区| 美脚の诱脚舐め脚责91| 精品国产伦一区二区三区观看方式 | 成人一区二区三区在线观看| 国产精品无遮挡| 色婷婷亚洲综合| 日日夜夜一区二区| 2017欧美狠狠色| 成人免费电影视频| 亚洲精品成人悠悠色影视| 欧美日韩精品一区二区三区四区| 视频精品一区二区| 久久综合精品国产一区二区三区| 国产99久久久精品| 一区二区在线看| 欧美一卡二卡在线| 国产专区欧美精品| 1区2区3区欧美| 欧美巨大另类极品videosbest | 国产亚洲精品福利| 91猫先生在线| 男女男精品视频网| 欧美激情一区二区在线| 欧洲一区二区三区免费视频| 久久国产综合精品| 亚洲欧美日韩国产手机在线| 欧美精选一区二区| 国产成人午夜电影网| 亚洲中国最大av网站| 精品精品欲导航| 色综合视频一区二区三区高清| 日韩成人一区二区| 国产精品乱码久久久久久| 欧美日韩免费在线视频| 国产精品88av| 亚洲国产成人高清精品| 国产亚洲欧洲一区高清在线观看| 色婷婷久久综合| 精品一区二区成人精品| 亚洲美女免费视频| 久久亚洲精品国产精品紫薇| 在线观看日韩毛片| 国产麻豆91精品| 肉肉av福利一精品导航| 1024亚洲合集| 久久精品夜夜夜夜久久| 欧美区在线观看| 99久久精品免费精品国产| 麻豆91在线播放| 亚洲一区二区av电影| 在线精品亚洲一区二区不卡| 亚洲精品综合在线| 欧美r级电影在线观看| 色天使色偷偷av一区二区| 国产麻豆一精品一av一免费| 亚洲成av人综合在线观看| 国产精品国产自产拍高清av王其| 欧美一级日韩不卡播放免费| 色婷婷亚洲一区二区三区| 国产福利一区二区三区| 久久精品国产99久久6| 亚洲国产欧美在线| 国产精品久久久久久久久晋中| 欧美变态凌虐bdsm| 欧美男男青年gay1069videost | 欧美精品一二三| 成人精品国产一区二区4080| 老司机精品视频在线| 亚洲一区二区av在线| 亚洲天堂a在线| 国产精品国产三级国产aⅴ入口 | 国产三级久久久| 精品乱人伦一区二区三区| 欧美久久一二三四区| 欧美色中文字幕| 色av综合在线| 色综合天天综合狠狠| 成人免费va视频| 成人午夜电影网站| 国产69精品一区二区亚洲孕妇| 国产一区高清在线| 韩国理伦片一区二区三区在线播放| 日韩高清不卡在线| 奇米色777欧美一区二区|