江南大學什麼是獨占設備對獨占設備如何分配
㈠ 獨占設備採用哪種分配方式
獨占設備通常採用靜態分配方式。
即在一個作業執行前,將作業要使用回的這類設備分配給答作業,在作業執行期間均歸該作業佔用,直到作業執行結束才歸還。
http://wenku..com/link?url=hg5kv7QZ-f4uf3MTnhVDuajnr1E0z9ED-87nKqAwuC-_SGubqQt2XEgB_-
㈡ 從資源分配的角度可將設備分為獨占設備、共享設備和什麼網路體系結構是網路功能和什麼的集合
獨占設備、共享設備,虛擬設備.
網路的體系結構定義:指計算機網路的各層及其協內議的集合容(architecture).或精確定義為這個計算機網路及其部件所應完成的功能.計算機網路的體系結構綜合了OSI和TCP/IP的優點,本身由5層組成:應用層,運輸層,網路層,物理層和數據鏈路層.
㈢ 什麼是獨占設備,對獨占設備如何分配
獨占設備,可共享設備只適用於前兩種分配技術,即共享設備技術和獨占設備技術,但考慮性能要盡量用前者,即共享設備技術來分配;獨占設備只適用於後兩種分配技術,即獨占設備技術和虛擬設備技術,且盡可能採用後者,即虛擬設備技術。
獨占設備的分配
1、基本的設備分配程序
---- 當某進程提出I/O請求後,系統的設備分配程序可按下述步驟進行設備分配:
1)分配設備
-- 首先根據I/O請求中的物理設備名,查找系統設備表(SDT),從中找出該設備的DCT(設備分配表),再根據DCT中的設備狀態欄位,可知
該設備是否正忙。若忙,便將請求I/O進程的PCB掛在設備隊列上;否則,便按照一定的演算法來計算本次設備分配的安全性。如果不會導致系統
進入不安全狀態,便將設備分配給請求進程;否則,仍將其PCB插入設備等待隊列。
2)分配控制器
-- 在系統把設備分配給請求I/O的進程後,再到其DCT(指向控制器表的指針)中找出與該設備連接的控制器的COCT(控制器控製表),從COCT
的狀態欄位中可知該控制器是否忙碌。若忙,便將請求I/O進程的PCB掛在該控制器的等待隊列上;否則,便將該控制器分配給進程。
3)分配通道
-- 通過COCT中與控制器連接的通道表指針,找到與該控制器連接的通道的CHCT(通道控製表),再根據CHCT內的狀態信息,可知該通道是否
忙碌。若忙,便將請求I/O的進程掛在該通道的等待隊列上;否則,將該通道分配給進程。
-- 只有在設備、控制器和通道三者都分配成功時,這次的設備分配才算成功。然後,便可啟動該I/O設備進行數據傳送。
2、設備分配程序的改進
---- 仔細研究上述基本的設備分配程序後可以發現:
進程是以物理設備名來提出I/O請求的;採用的是單通路的I/O系統結構,容易產生「瓶頸」現象。
為此,應從以下兩方面對基本的設備分配程序加以改進,以使獨占設備的分配程序具有更強的靈活性,並提高分配的成功率。
1)增加設備的獨立性
-- 為了獲得設備的獨立性,進程應使用邏輯設備名請求I/O。這樣,系統首先從SDT中找出第一個該類設備的DCT。
若該設備忙,又查找第二個該類設備的DCT,僅當所有該類設備都忙時,才把進程掛在該類設備的等待隊列上;
而只要有一個該類設備可用,系統便進一步計算分配該類設備的安全性。
2)考慮多通路情況
-- 為了防止在I/O系統中出現「瓶頸」現象(通道不足),通常都採用多通路的I/O系統結構。
此時對控制器和通道的分配同樣要經過幾次反復,即若設備(控制器)所連接的第一個控制器(通道)忙時,應查看其所連接的第二個控制器(通道),
僅當所有的控制器(通道)都忙時,此次的控制器(通道)分配才算失敗,才把進程掛在控制器(通道)的等待隊列上。
而只要有一個控制器(通道)可用,系統便可將它分配給進程。
㈣ 求操作系統課程設計---獨占設備的分配與回收
大神們你們還有么我也想要
㈤ 求操作系統課程設計 《模擬獨占設備的分配和回收 》,請發郵箱[email protected],萬分感謝!!
#define false 0
#define true 1
#define n 4
#define m 10
struct
{
char type[10];
int count;
int remain;
int address;
}equiptype[n];
struct
{
int number;
int status;
int remain;
char jobname[4];
int lnumber;
}equipment[m];
allocate(J,type,mm)
char *J,*type;
int mm;
{
int i,t,j;
i=0;
while(i<n&&strcmp(equiptype[i].type,type)!=0)
i++;
if(i>=n)
{
printf("無該類設備,設備分配失敗");
return(false);
}
if(equiptype[i].remain<1)
{
printf("該類設備不足,分配失敗");
return(false);
}
t=equiptype[i].address;
while(!(equipment[t].status==1 && equipment[t].remain==0))
t++;
equiptype[i].remain--;
equipment[t].remain=1;
strcpy(equipment[t].jobname,J);
equipment[t].lnumber=mm;
}
reclaim (J,type)
char J,type;
{
int i,t,j,k,nn;
i=0;
while(i<n&&strcmp(equiptype[i].type,type)!=0)
i++;
if(i>=n)
{
printf("無該類設備,設備回收失敗");
return(false);
}
t=equiptype[i].address;
j=equiptype[i].count;
k=0;
nn=t+j;
for(;t<nn;t++)
if(strcmp(equipment[t].jobname,J)==0&&equipment[t].remain==1)
{
equipment[t].remain=0;
k++;
}
equiptype[i].remain= equiptype[i].remain+k;
if(k==0)
printf("該作業沒有使用該類設備\n");
}
main( )
{
char J[4];
int i,mm,a;
char type[10];
strcpy(equiptype[0].type,"input");
equiptype[0].count=2;
equiptype[0].remain=2;
equiptype[0].address=0;
strcpy(equiptype[1].type,"printer");
equiptype[1].count=3;
equiptype[1].remain=3;
equiptype[1].address=2;
strcpy(equiptype[2].type,"disk");
equiptype[2].count=4;
equiptype[2].remain=4;
equiptype[2].address=5;
strcpy(equiptype[3].type,"tape");
equiptype[3].count=1;
equiptype[3].remain=1;
equiptype[3].address=9;
for(i=0;i<10;i++)
{
equipment[i].number=i;
equipment[i].status=1;
equipment[i].remain=0;
}
while(1)
{
printf("\n0-退出,1-分配,2-回收,3-顯示");
printf("\n選擇功能項(0~3):");
scanf("%d",&a);
switch(a)
{
case 0 :
exit(0);
case 1 :
printf("輸入作業名、作業所需設備類和設備相對號");
scanf("%s%s%d",J,type,&mm);
allocate(J,type,mm);
break;
case 2:
printf("輸入作業名和作業歸還的設備類");
scanf("%s%s",J,type);
reclaim(J,type);
break;
case 3:
printf("\n輸出設備類表\n");
printf(" 設備類型 設備總量 空閑好設備\n");
for(i=0;i<n;i++)
printf("%9s%8d%9d\n",equiptype[i].type,equiptype[i].count, equiptype[i].remain);
printf("輸出設備表:\n");
printf("絕對號 好/壞 已/未分配 佔用作業名 相對號\n");
for(i=0;i<m;i++)
printf("%3d%8d%9d%12s%8d\n",equipment[i].number, equipment[i].status,equipment[i].remain,equipment[i].jobname,
equipment[i].lnumber);
}
}
}
㈥ 18、對於系統中的獨占設備,為預防出現死鎖,應採用的最佳分配策略是
死鎖的四個必要條件
操作系統中有若干進程並發執行,它們不斷申請、使用、釋放系統資源,雖然系統的進
程協調、通信機構會對它們進行控制,但也可能出現若干進程都相互等待對方釋放資源才能
繼續運行,否則就阻塞的情況。此時,若不藉助外界因素,誰也不能釋放資源,誰也不能解
地等待永遠不會發生的條件,系統處於停滯狀態,這就是死鎖。
產生死鎖的原因主要是:
(1) 因為系統資源不足。
(2) 進程運行推進的順序不合適。
(3) 資源分配不當等。
如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則
就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可能產生死鎖。
產生死鎖的四個必要條件:
(1) 互斥條件:一個資源每次只能被一個進程使用。
(2) 請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3) 不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4) 循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之
一不滿足,就不會發生死鎖。
死鎖的解除與預防:
理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和
定資源的合理分配演算法,避免進程永久占據系統資源。此外,也要防止進程在處於等待狀態
的情況下佔用資源。因此,對資源的分配要給予合理的規劃。
要防止死鎖的發生可破壞其四個條件,但破壞四個條件其中的一個條件是不實際的,我想知道是哪個條件?1資源獨佔2保持申請3循環等待4不可剝奪。
㈦ 獨占設備的分配與回收 1、設計目的:掌握獨占設備的分配流程,會使用安全性演算法檢查設備分配是否安全
你們有嗎?
㈧ 磁碟是典型的獨占型設備,分配不當有可能引起進程死鎖 這句話為什麼錯誤
硬碟是共享設備啊
