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

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

?? lp.cpp

?? 呵呵 使下就知道了 絕對好啊
?? CPP
字號:
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define maxsize 1024
int Memory[maxsize],flag=0,flag_number=0,count=0;
int spare_memory=maxsize;
struct pcb		//pcb結構體的定義.
{ char name[10];
  int id;
  int state;		//規定0:空白,1:就緒,2:運行,3阻塞.
  int address; 
  int length;
};
typedef struct node   //鏈表的描述.
{ pcb pcb_data;
  struct node *next;
}linklist;               
linklist *null_head=NULL,*ready_head=NULL,*run_head=NULL,*block_head=NULL,*variable=NULL;//空,就緒,運行,阻塞三個隊列的隊頭.
//******************************************************************
linklist *nullpcb_list()                 //空白PCB隊列的建立.
{   
   linklist *head,*s;
	head=NULL;
	int i;
	for(i=9;i>=0;i--)
	{ 
	  s=(linklist *)malloc(sizeof(linklist));
	  s->pcb_data.id=i+1;
	  s->pcb_data.length=-1;
	  s->next=head;
      head=s;
	}
	return head;
}
//********************************************
void Memory_()
{
    for(int i=0;i<=(maxsize-1);i++)
	Memory[i]=0;
}
//********************************************
		void out_put()
		{
		     cout<<"Thanks for using my program !"<<endl
		 	    <<"CopyRight(c) 2004-2018 LIPENG   "<<endl
		 	    <<"This is a program for OS    "<<endl
		 	    <<"Input your command:(please enter 'h' for help)"<<endl
			    <<">";	
		}
		//***************************************************
		void list()
		{
		      cout<<"help: Commmand list:"<<endl
			  <<"C: Creat a process.You must input the name of process."<<endl
			  <<"D: Destroy a process.You must input the name of process."<<endl
			  <<"P: Call a process.You must input the name of process."<<endl
			  <<"E: End the process"<<endl
			  <<"B: Block the process.You must input the name of process."<<endl
			  <<"W: Wakeup the process.You must input the name of process."<<endl
			  <<"T: Time over"<<endl
			  <<"S: Show All the process name."<<endl
			  <<"H: Help."<<endl
		      <<"Enter: Execute a comamd ramdom."<<endl
			  <<"#: Exit the program."<<endl;
		}//*****************************************************************
           
		int not_number(char *number1)//???????????????????????????????????
		{
		   int i=0;
		   int tokenval=0;   
	       while(*(number1+i)!='\0')
 	       {	
			  if((*(number1+i)<'0')||(*(number1+i)>'9'))
			  {
					*(number1+i)='\0';
					flag_number=1;
					tokenval=0;

			  }
			  else
			  {
					tokenval=tokenval*10+*(number1+i)-'0';
				    i++;
			  }
	       }
			return tokenval;
		}
	//*******************************************************
	void memory(int pcbmemory,int sparememory)    ////////////////////////
		{    int w;
			 w=sparememory-pcbmemory;
			 if(w>=0)
			 {
				 cout<<"該進程占據內存  :"<<pcbmemory<<"K"<<endl;
				 cout<<"當前剩余空間    :"<<sparememory<<"K"<<endl;
				 cout<<"創建后內存將剩余:"<<sparememory-pcbmemory<<"K"<<endl;
			 }
			 else
			 {
			    cout<<"您的內存不夠,不能創建該進程!"<<endl;
			    cout<<"該進程占據內存為:"<<pcbmemory<<"K"<<endl;
			    cout<<"當前剩余空間僅為:"<<sparememory<<"K"<<endl;
			 }
		}
//****************************************************************
			linklist *headout(linklist *outhead)	                	//null pcb出隊列函數.
			{   linklist *p;
			    variable=outhead;
				p=outhead->next;
				variable->next=NULL;
				outhead=p;
				return outhead;
			}
			//******************************************************
            
			linklist *else_headout(linklist *outhead,char p_name[10])//非空pcb出隊函數.
			{
				linklist *p,*q;
				int i=0;
				if(outhead->next==NULL)
				{  
					if(strcmp(outhead->pcb_data.name,p_name)==0)
					{
					variable=outhead;
					variable->next=NULL;
					outhead=NULL;
					flag=1;
					return outhead;
					}
					else
					{	cout<<"系統無法找到或操作 '"<<p_name<<"' 進程!"<<endl;
					    flag=0;
					    return outhead;	
					
					}
				}
				else if(strcmp(outhead->pcb_data.name,p_name)==0)
				{   
					q=outhead->next;
					variable=outhead;
					variable->next=NULL;
					outhead=q;
					flag=1;
					return outhead;
				}
				else 
				{		p=outhead;
						while((outhead->next!=NULL)&&(i==0))
						{   
							if(strcmp(outhead->next->pcb_data.name,p_name)==0)
							{   q=outhead->next->next;
								variable=outhead->next;
								variable->next=NULL;
								outhead->next=q;
								flag=1;
								i=1;
							}
							else
							{
								outhead=outhead->next;
							}
						}
						if(i==0)
						{
						  flag=0;
						cout<<"系統無法找到或操作 '"<<p_name<<"' 進程!"<<endl;
						}
						outhead=p;
						return outhead;		
				}

			}
//*****************************************************************
		    linklist *headin(linklist *inhead,linklist *q)		//pcb入隊列函數.
			{   
				linklist *w;
				w=inhead;
				if(inhead==NULL)
				{
					q->next=NULL;
					inhead=q;

					return inhead;
				}
				else
				{
					    for(int i=0;i<=9;i++)
						{  if(inhead->next==NULL)
							{
								i=10;
							}     
							else
							{
							 inhead=inhead->next;
							}
						}
						inhead->next=q;
						q->next=NULL;
						inhead=w;
						return inhead;
				}
			}
//**************************************************************************
			int deal_memory(int *memory,int length_)     //分配內存函數并返回address.
			{  
				int address_,count=0,i=0,j;
				for(int k=0;k<maxsize;k++)
				{
			       while(i<=(maxsize-1))
				   {
					    if(*(memory+i)==0)
						{  address_=i;
						   i=maxsize;
						}	
						else
						{
							i++;
						}
				   }
				   for(j=address_;j<=(address_+length_-1);j++)
				   {	if(*(memory+j)==0)	
						{
							*(memory+j)=1;
							count++;
							if(count==length_)
							{
								k=maxsize;
							}
						}
						else
						{
							i=j;
							j=maxsize;
							k++;	
						}
				   }
				}
				   return address_;
			}
			//***********************************************************
		    void callBackMemory(int address_1,int length_)     //回收內存函數
			{  
				   int j;
				   for(j=address_1;j<=(address_1+length_-1);j++)
				   {
				        Memory[j]=0;  
				   }
			}
//***************************************************************************8
void create()
{   
  if(count<=10)
  {
		char name1[10],input;
		int memory_pcb1;
		char memory_pcb2[10];
		cout<<"please enter the name of pcb:"<<endl;
		cin>>name1;
		strcpy(null_head->pcb_data.name,name1);
		cout<<"請輸入創建該進程所需要的內存(單位:K):"<<endl;
		cin>>memory_pcb2;
        memory_pcb1=not_number(memory_pcb2);
		if(flag_number!=1)
		{
			cout<<"確認是否創建該進程:Y/N?"<<endl;
			cin>>input;
			if(input=='y')
			{
				 null_head->pcb_data.length=memory_pcb1;
	   			 memory(memory_pcb1,spare_memory);
				 null_head=headout(null_head);
				 variable->pcb_data.address=deal_memory(Memory,variable->pcb_data.length);
				 ready_head=headin(ready_head,variable);
				 spare_memory=spare_memory-variable->pcb_data.length;
				 ready_head->pcb_data.state=1;
				 count++;
				 cout<<endl;
				 cout<<"進程 '"<<name1<<"' 已創建成功!"<<endl;
				 cout<<"NAME   :"<<name1<<endl
				  	<<"ID     :"<<variable->pcb_data.id<<endl;
				if(ready_head->pcb_data.state==1)
				 {
	 			 cout<<"STATE  :"<<"READY"<<endl;
				 }
				 cout<<"ADDRESS:"<<variable->pcb_data.address<<endl
					<<"LENGTH :"<<variable->pcb_data.length<<endl;
			}
			else if(input=='n')
			{	  
				  cout<<"您剛才創建的名為 '"<<name1<<"' 的進程已被系統成功刪除!"<<endl;
			}
			else 
			{
				cout<<"該命令非法!"<<endl;
			}
		}
		else
		{
			    cout<<"該數字非法!!!"<<endl;
				flag_number=0;
		}
  }
  else
  {
	cout<<"PCB已無剩余,不可再申請!"<<endl;
  }
}
//*********************************************************************

void call()
{
	char name_call[10];
	if(ready_head==NULL)
	{
		cout<<"系統中無READY進程!"<<endl;
	}
	else if(run_head!=NULL)
	{
		cout<<"系統中存在正在運行的進程,該進程無法運行,請等待..."<<endl;
	}
    else
	{   
		cout<<"Please enter the name you want to call:"<<endl;
	    cin>>name_call;
		ready_head=else_headout(ready_head,name_call);
		if(flag==1)
		{
		variable->pcb_data.state=2;
		run_head=headin(run_head,variable);
		cout<<"進程 '"<<run_head->pcb_data.name<<"' 開始運行!"<<endl;
		flag=0;
		}
		else
		{
		cout<<"系統中無 '"<<name_call<<"' 進程!"<<endl;
		}
	}
}
//***************************************************************************
void destroy()
{	char name_destroy[10];
	if(run_head==NULL)
	{
		cout<<"系統中無READY進程!"<<endl;
	}
	else
	{   
		cout<<"Please enter the name you want to destroy:"<<endl;
	    cin>>name_destroy;
		run_head=else_headout(run_head,name_destroy);
		if(flag==1)
		{
		null_head=headin(null_head,variable);
		callBackMemory(variable->pcb_data.address,variable->pcb_data.length);
		variable->pcb_data.state=0;
        spare_memory=spare_memory+variable->pcb_data.length; 
		cout<<"進程 '"<<variable->pcb_data.name<<"' 已被系統刪除!"<<endl
			<<"PCB '"<<variable->pcb_data.name<<"' 原占用系統內存 "<<variable->pcb_data.length<<" K已釋放!"<<endl;
		flag=0;
		count--;
		}
		cout<<"系統剩余空間: "<<spare_memory<<" K"<<endl;
	}  
}
//*********************************************************************************
void end()
{
	char name_end[10];
	if(run_head==NULL)
	{
		cout<<"系統中無RUN進程!"<<endl;
	}
	else
	{   
		cout<<"Please enter the name you want to block:"<<endl;
	    cin>>name_end;
		run_head=else_headout(run_head,name_end);
		if(flag==1)
		{
		ready_head=headin(ready_head,variable);
		variable->pcb_data.state=1;
		cout<<"進程 '"<<variable->pcb_data.name<<"' 已進入就緒狀態!"<<endl;
		flag=0;
		}
	}
}
//***********************************************************************************
void block()
{	
	char name_block[10];
	if(run_head==NULL)
	{
		cout<<"系統中無RUN進程!"<<endl;
	}
	else
	{   
		cout<<"Please enter the name you want to block:"<<endl;
	    cin>>name_block;
		run_head=else_headout(run_head,name_block);
		if(flag==1)
		{
		block_head=headin(block_head,variable);
		variable->pcb_data.state=3;
		cout<<"進程 '"<<variable->pcb_data.name<<"' 已進入阻塞狀態!"<<endl;
		flag=0;
		}
	}
}
//**************************************************************************************
void wakeup()
{
	char name_wakeup[10];
	if(block_head==NULL)
	{
		cout<<"系統中無阻塞進程!"<<endl;
	}
	else
	{   
		cout<<"Please enter the name you want to wakeup"<<endl;
	    cin>>name_wakeup;
		block_head=else_headout(block_head,name_wakeup);
		if(flag==1)
		{
		ready_head=headin(ready_head,variable);
		variable->pcb_data.state=1;
		cout<<"進程 '"<<variable->pcb_data.name<<"' 已進入就緒狀態!"<<endl;
		flag=0;
		}
	}
}
//******************************************************************************
void time()
{
	cout<<"time over"<<endl;
}
//******************************************************************************
void show()
{	linklist *run,*ready,*block,*null_;
	cout<<"  READY      :  ";
	ready=ready_head;
	while(ready_head!=NULL)
	{
	cout<<ready_head->pcb_data.name<<"  -->  ";
	ready_head=ready_head->next;
	}
	ready_head=ready;
	cout<<"NULL"<<endl;
	cout<<"  RUN        :  ";
	run=run_head;
	while(run_head!=NULL)
	{
	cout<<run_head->pcb_data.name<<"  -->  ";
	run_head=run_head->next;
	}
	run_head=run;
	cout<<"NULL"<<endl;
	cout<<"  BLOCK      :  ";
	block=block_head;
	while(block_head!=NULL)
	{
	cout<<block_head->pcb_data.name<<"  -->  ";
	block_head=block_head->next;
	}
	block_head=block;
	cout<<"NULL"<<endl;
	int i=0;
	null_=null_head;
	while(null_head!=NULL)
	{
        i++;
	    null_head=null_head->next;
	}
	null_head=null_;
	cout<<"  空白PCB個數:   "<<i<<" 個."<<endl;
	cout<<"  進程共占用內存 "<<maxsize-spare_memory<<" K,剩余空間: "<<spare_memory<<" K"<<endl;
}
//********************************************************************************
void enter()
{
	cout<<"The system is executing a command random..."<<endl;
}
void exit()
{
    char c;
	cout<<"Will you exit this system?Y/N..."<<endl;
	cin>>c;
	if(c=='y')
	{
		exit(0);
	}
}
void main()
{    
	 Memory_();
	 null_head=nullpcb_list();
	 out_put();
  	 char in_put;
  	 cin>>in_put;
   	 while(in_put)
  	 {
  	     switch(in_put)
  	     {
     	   case('h'):	list();
				break; 
		   case('c'):   create();
				break;
		   case('d'):   destroy();
			    break;
	   	   case('p'):   call();
				break;
	   	   case('e'):   end();
				break;
	   	   case('b'):   block();
				break;
	  	   case('w'):   wakeup();
				break;
	 	   case('t'):   time();
				break;
		   case('s'):   show();
				break;
		   case('\n'):  enter();
				break;
		   case('#'):   exit();
				break;
		   default:     cout<<"The word you enter is wrong~!"<<endl;
				break;
	     }
	     cin>>in_put;
       }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费观看| www.av精品| 91麻豆免费观看| 日韩一区和二区| 成人性视频免费网站| 欧美蜜桃一区二区三区| 中文成人综合网| 激情综合五月婷婷| 91麻豆精品国产自产在线| 亚洲日本青草视频在线怡红院| 美女网站视频久久| 欧美日韩国产bt| 一区二区三区.www| 色哟哟在线观看一区二区三区| 久久影音资源网| 蜜乳av一区二区三区| 在线欧美小视频| 亚洲精品自拍动漫在线| 国产不卡在线一区| 久久精品一区蜜桃臀影院| 久久99国产精品麻豆| 欧美疯狂做受xxxx富婆| 亚洲国产成人porn| 欧美日本在线播放| 婷婷成人综合网| 91精品国产色综合久久久蜜香臀| 一区二区三区四区在线| www.日韩精品| 国产精品麻豆一区二区| 日韩午夜av电影| 免费高清在线视频一区·| 欧美精品日韩一区| 日本强好片久久久久久aaa| 欧美美女一区二区三区| 视频在线观看一区| 5566中文字幕一区二区电影| 亚洲第一福利视频在线| 欧美日本一区二区| 麻豆精品精品国产自在97香蕉| 91麻豆精品国产91久久久 | 欧美日韩精品系列| 日韩精品电影在线| 日韩女优av电影| 久久成人久久爱| 国产精品免费网站在线观看| 丁香婷婷综合色啪| 亚洲少妇最新在线视频| 欧美无人高清视频在线观看| 午夜精品影院在线观看| 日韩欧美国产一二三区| 国产乱色国产精品免费视频| 亚洲国产精品ⅴa在线观看| 91在线免费看| 视频在线观看91| 2024国产精品| 色偷偷成人一区二区三区91| 日韩精品一二三区| 国产亚洲欧美一区在线观看| 91香蕉国产在线观看软件| 亚洲国产一区视频| 国产偷国产偷亚洲高清人白洁| 色综合久久综合中文综合网| 欧美aa在线视频| 国产精品婷婷午夜在线观看| 欧美性生活大片视频| 精品亚洲成av人在线观看| 国产精品久久看| 6080午夜不卡| 91论坛在线播放| 久久精品国产网站| 亚洲综合在线第一页| 久久毛片高清国产| 在线区一区二视频| 成人午夜在线播放| 日本美女一区二区| 亚洲精品免费在线播放| 精品1区2区在线观看| 91毛片在线观看| 狠狠色丁香久久婷婷综合丁香| 一区二区视频在线| 国产欧美精品一区| 欧美精品丝袜久久久中文字幕| 成人精品小蝌蚪| 久久se这里有精品| 婷婷国产在线综合| 亚洲精品视频一区| 中文在线一区二区| 日韩欧美一级精品久久| 欧美色偷偷大香| 99久久99久久久精品齐齐| 精品写真视频在线观看| 视频一区视频二区中文字幕| 亚洲欧美日韩国产手机在线| 国产喂奶挤奶一区二区三区| 欧美一区二区大片| 亚洲免费在线视频| 国产精品视频一二| 久久色视频免费观看| 91麻豆精品国产| 欧美色网站导航| 91蜜桃网址入口| 91免费视频网| 91在线观看美女| 成人黄色在线网站| 高清不卡一区二区在线| 国产米奇在线777精品观看| 蜜臂av日日欢夜夜爽一区| 日韩黄色在线观看| 日本亚洲一区二区| 视频在线在亚洲| 日本少妇一区二区| 久久成人18免费观看| 狠狠网亚洲精品| 国产高清不卡一区| 成人免费观看视频| www.日本不卡| 91精彩视频在线| 欧美午夜一区二区三区免费大片| 欧美亚洲综合网| 91.com视频| 日韩欧美高清dvd碟片| 欧美va亚洲va| 久久久久亚洲蜜桃| 国产精品福利一区二区| 国产精品久久久久一区二区三区共| 久久久精品tv| 亚洲精品免费一二三区| 亚洲成人免费视| 美女精品自拍一二三四| 精品一区二区日韩| 99免费精品在线观看| 91久久人澡人人添人人爽欧美| 91免费版在线| 欧美一区二区三区啪啪| 精品欧美乱码久久久久久1区2区| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲国产经典视频| 一区二区三区成人| 美国欧美日韩国产在线播放| 国产乱色国产精品免费视频| 91视频观看视频| 91精品国产福利在线观看 | 日韩视频免费直播| 2021国产精品久久精品| 欧美国产一区二区在线观看| 亚洲欧美一区二区三区国产精品 | 欧美丰满美乳xxx高潮www| 日韩欧美一级二级| 亚洲欧洲日本在线| 婷婷成人激情在线网| 国产91精品一区二区麻豆网站| 色婷婷综合久久久久中文| 欧美一区二区视频在线观看2022| 国产欧美视频一区二区三区| 亚洲一级不卡视频| 国产69精品久久久久777| 欧美亚洲高清一区二区三区不卡| 亚洲精品一区二区三区蜜桃下载| 国产精品国产三级国产有无不卡| 日韩黄色小视频| 99久久99久久精品免费看蜜桃| 91精品国产91综合久久蜜臀| 日韩毛片视频在线看| 久99久精品视频免费观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 久久久精品免费免费| 亚洲成人免费在线观看| av亚洲产国偷v产偷v自拍| 91精选在线观看| 亚洲一区二区三区四区在线| 国产一区二区美女| 91精品国产福利| 亚洲妇女屁股眼交7| 成人黄色777网| 日韩美女视频一区二区在线观看| 一区二区欧美在线观看| 成人久久久精品乱码一区二区三区| 精品少妇一区二区三区视频免付费| 一区二区日韩电影| 91免费观看在线| 中文字幕一区二区5566日韩| 狠狠色丁香婷婷综合| 精品国产乱码久久久久久蜜臀| 午夜久久久久久久久久一区二区| 99精品国产99久久久久久白柏| 久久欧美一区二区| 国产一区二区女| 久久久久综合网| 国产 日韩 欧美大片| 国产情人综合久久777777| 韩国女主播一区| 久久久精品国产免大香伊| 国产精品一区专区| 久久久欧美精品sm网站| 国产乱码字幕精品高清av| 26uuu精品一区二区在线观看| 久久99久久99| 国产亚洲制服色| 成人av一区二区三区| 国产精品国模大尺度视频|