亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用操作系統(tǒng)進程調(diào)度算法分析城市擁堵問題

        2022-07-18 08:56:52韓沐軒徐艷
        電子測試 2022年12期
        關鍵詞:進程高速公路

        韓沐軒,徐艷

        (成都錦城學院 計算機與軟件學院,四川成都,611731)

        1 研究背景與意義

        現(xiàn)在的城市交通存在以下一些問題:一、城市交通的基礎設施不夠完善。二、城市交通的設計不合理。三、城市交通的管理缺乏有效的機制。城市的交通問題將會影響一個城市的各個方面比如:擁堵的交通將會增加人們通勤的時間從而影響一個城市的經(jīng)濟發(fā)展、堵車也會浪費更多的資源并且產(chǎn)生更多的有害氣體污染空氣、同時面對一些緊急事情的處理上也會因為交通的擁堵可能造成一些嚴重的損失。計算機的操作系統(tǒng)和城市的交通系統(tǒng)在很多方面都十分的相似,因此我們可以通過計算機操作系統(tǒng)來幫助我們分析并解決城市的交通擁堵問題。所以,通過計算機操作系統(tǒng)的知識來解決交通擁堵對于中國城市未來的發(fā)展具有十分深遠的意義。

        2 城市老城區(qū)道路擁堵問題

        老城區(qū)的規(guī)劃和建造時間較早,然而隨著城市的發(fā)展和汽車保有量的不斷增加,這導致了老城區(qū)交通道路早已不能滿足如今的道路需要。因此,對老城區(qū)的交通道路進行相應的重新修建或者適當?shù)母脑欤@將會大大提高生活在附近居民的生活質(zhì)量以及出現(xiàn)的便利性。同時,在一些人文氣息濃厚的老城區(qū)通過交通條件的改善也會使其更加具有吸引力,從而帶動城市的旅游業(yè)和經(jīng)濟的發(fā)展[1]。

        2.1 城市老城區(qū)道路擁堵的解決辦法

        這時我們可以從操作系統(tǒng)原理中引入多線程的概念來幫助解決問題。一個程序可以有多個線程同時進行工作,這里的程序可以比作從老城區(qū)的A點到B點這個過程,而多線程可以比作從A點到B點的道路可以同時通過多輛汽車。然后通過下面的程序可以幫助我們更加直觀的了解多線程在解決老城區(qū)道路擁堵時起到的重要作用,我們設置a代表的是同方向汽車的數(shù)量,m代表車輛通過所需時間,用循環(huán)來實現(xiàn)得到每個車道通過所需時間,x代表為車道數(shù),當x越大時m的值就越小。

        綜上所述我們可以得出結(jié)論就是當汽車的總量相同時車道數(shù)越多所需通過的時間越短。因此,老城區(qū)的交通擁堵問題可以通過擴建道路來進行緩解。

        3 高速公路事故擁堵問題

        高速公路時常會因為雨雪天氣導致的道路的摩擦阻力減小等環(huán)境因素,駕駛?cè)藛T的安全意識淡薄、沒有遵守交通規(guī)則、駕駛水平較差或者存在疲勞駕駛等人為因素,汽車的輪胎使用時間過長導致的摩擦力變小或者制動的機械結(jié)構(gòu)損壞等汽車因素,從而導致發(fā)生嚴重的交通事故,進而導致產(chǎn)生了高速公路的交通擁堵現(xiàn)象[2]。

        3.1 針對高速公路事故擁堵的解決辦法

        我國高速公路的建設標準一般都是單向兩車道以上,然而高速公路發(fā)生的事故一般都會涉及兩個車道及以上,這會導致高速公路單方向可通行的車道可能只有一個,但是因為高速公路事故導致?lián)矶碌能囕v會有兩三個車道,當交通警察抵達事故地點對后續(xù)車輛進行疏通時應該怎么樣安排不同車道的疏通順序才能使大家的擁堵時間變少呢?操作系統(tǒng)中的進程調(diào)度算法將會幫助交通警察更加高效的疏通道路。

        首先,我們需要引入的算法有:先來先服務算法(FCFS)、短作業(yè)優(yōu)先算法(SJF/SPF)、時間片輪轉(zhuǎn)算法(RR)。

        先來先服務算法(FCFS):按照進程進入就緒隊列的先后時間來進行排隊,先來的先執(zhí)行后來的后執(zhí)行,優(yōu)點是簡單,缺點是對于后面進入的進程不公平、而且使用這個算法有很大的不確定性,因為你并不能缺點是短進程先來還是長進程先來,而且通常會導致平均周期很長。

        短作業(yè)優(yōu)先算法(SJF/SPF):當有多個進程在就緒隊列中排隊時,其中短進程優(yōu)先執(zhí)行并且當有更短的進程進入就緒隊列后會發(fā)生搶占讓更短的進程優(yōu)先執(zhí)行。在平均周期上會比先來先服務算法更短,然而這個也有缺點就是對短進程公平而對長進程不公平,在某些長進程的重要性上大于短進程時就會降低工作效率。

        時間片輪轉(zhuǎn)算法(RR):規(guī)定一個固定的時間片例如1秒,當就緒隊列的第一個進程運行1秒之后就會排在隊列的最后一個,然后就是第二個進程運行1秒后排在之前第一個進程的后面,這樣一直重復循環(huán)。時間片輪轉(zhuǎn)算法的優(yōu)點就是對不管是長進程還是短進程都是公平的,但是對于該算法最大的缺點就是對時間片的設定上面,時間片過短會導致調(diào)度程序剝奪處理器的次數(shù)增加而讓系統(tǒng)的開銷增大,時間片過長會導致時間片輪轉(zhuǎn)算法變成效率較低的先來先服務算法[3]。

        3.1.1 不同算法疏通道路的分析與比較

        我們假定一個高速同向是三車道,因為前方發(fā)生了事故導致有兩個車道無法正常使用,現(xiàn)在有A、B、C三個個車道的車輛等待通行,其中A車道車輛到達事故地點時間為12:00通過需花費3分鐘,B車道車輛到達事故地點時間為12:02通過需花費6分鐘,C車道車輛到達事故地點時間為12:04通過需花費4分鐘,這時候交通警察該什么順序疏通三個車道的車輛從而使得大家的平均等待時間最短。以下代碼是通過C語言實現(xiàn)三種調(diào)度算法在該問題的運用:

        (1)先來先服務(FCFS)程序:

        void FCFS(vector &pcb,int &n)

        {Input(pcb,n);

        TimeBubbleSort(pcb,n);

        float tursum=0.0;

        float Time=0;//運行總時間

        for(int i=0;i

        {if(i==0)

        {pcb[0].fintime=pcb[0].sertime;

        Time=pcb[0].fintime;}

        Else

        {if(pcb[i].arrtime>Time){//如果前一個進程運行完成下一個進程沒有到達Time=pcb[i].arrtime;}

        pcb[i].fintime=pcb[i].sertime+Time;//更新一下程序運行的總時間

        Time=pcb[i].fintime;}

        pcb[i].turtime=pcb[i].fintime-pcb[i].arrtime;

        tursum+=pcb[i].turtime;}

        Output(pcb,n,tursum);

        }

        (2)短進程優(yōu)先算法(SJF):

        void SJF(vector &pcb,int n)

        {Input(pcb,n);

        //先按照到達時間排序

        TimeBubbleSort(pcb,n);

        float Time=0;

        bool flaghave=false;

        float tursum=0.0;

        //一次運行一個進程

        //第一個進程一定先運行

        pcb[0].fintim=pcb[0].sertime;

        pcb[0].flagrun=true;

        pcb[0].turtime=pcb[0].fintime-pcb[0].arrtime;

        Time=pcb[0].fintime;

        tursum+=pcb[0].turtime;

        for(int i=1;i

        {flaghave=false;

        //找出當前數(shù)組中還沒有運行的第一個pcb

        //不會存在全部運行過的情況,因為上面的for循環(huán)是n-1次,所以肯定剛好把下標從1~n-1的訪問完

        int Minser=0;

        for(int index=1;index

        {if(!pcb[index].flagrun)

        {Minser=index;break;}

        }

        //找到之后,從第一個節(jié)點開始向后訪問,判斷有沒有到達時間小于Time的有:再找出服務時間最小的

        for(int j=1;j

        {if((pcb[j].arrtime

        {flaghave=true;

        if(pcb[j].sertime

        Minser=;}

        }

        //沒有:當前進程就是到達時間最小的,直接運行它,Minser不用變

        if(!flaghave){Time=pcb[Minser].arrtime;}

        //計算當前進程的各個時間

        pcb[Minser].fintime=Time+pcb[Minser].sertime;

        pcb[Minser].turtime=pcb[Minser].fintimepcb[Minser].arrtime;

        pcb[Minser].flagrun=true;

        Time=pcb[Miner].fintime;

        tursum+=pcb[Minser].turtime;

        }

        Output(pcb,n,tursum);

        }

        時間片輪轉(zhuǎn)算法(RR):

        void RR(vector &pcb,int n,int time)

        {Input(pcb,n);

        //先按到達時間排序

        Time_BubbleSort(pcb,n);

        queuepq;

        //第一個一定先運行

        //先將pcb[0]push進去

        pcb[0].flagpush=true;

        pq.push(pcb[0]);

        int q=time;//時間片

        float Time=0;//程序的運行時間

        bool flagall=false;//是否全部入隊

        while((!pq.empty())||(!flagall))

        {--q;++Time;

        //如果有進程到達入隊

        //如果已經(jīng)全部入過隊了就不用判斷了省時間

        if(!flagall)

        {for(int i=1;i

        {if((pcb[i].arrtime==Time)&&(!pcb[i].flagpush))

        {pcb[i].flagpush=true;pq.push(pcb[i]);

        if(pq.size()==n)

        flagall=true;break;

        }

        }

        //判斷是否所有的進程都進入了隊列作用是當有一個進程執(zhí)行完但是后面有進程沒有到達時要一直++Time

        for(inti=0;i

        {if(pcb[i].flagpush=false)

        flagall=false;

        }

        }

        //隊列不為空就去訪問隊列為空有兩種情況:1.所有進程運行完了2.當前進程運行完了,但是下一個沒有到達,這個不用管,會繼續(xù)while循環(huán)

        if(!pq.empty())

        {//自身的完成時間+1

        ++pq.front().run_time;

        //如果運行完了隊首出隊換下一個運行

        if(pq.front().run_time==pq.front().sertime)

        {pq.front().fintime=Time;

        For(int i=0;i

        {if(pcb[i].name==pq.front().name)

        {pcb[i]=pq.front();break;}

        }

        pq.pop();

        q=time;}

        else{//沒有運行完后面還有別的進程掛到隊尾運行的下一個進程

        if(!pq.empty()&&pq.size()>1)

        {if(q==0)

        {q=time;pq.push(pq.front());pq.pop();}

        }

        }

        }

        //一個進程運行完但是另一個沒有進來時間片會輪完所以要更新

        if(q==0)

        q=time;

        }

        float tursum=0;

        //計算后面每一個的各個時間

        for(int i=0;i

        {pcb[i].turtime=pcb[i].fintime-pcb[i].arrtime;

        tursum+=pcb[i].turtime;

        }

        Output(pcb,n,tursum);

        }

        代碼運行結(jié)果如下圖1所示:

        因此我們可以得出了一個更深層的結(jié)論,每個算法其實都有自己的優(yōu)點和缺點,在某些適合該算法的情況下效率最高,但是在實際使用中通常都是幾個算法相互結(jié)合起來使用以達到最高的效率。

        圖1 三種算法的結(jié)果

        4 結(jié)語

        我們是真的可以利用操作系統(tǒng)中的一些原理問題進行分析,然后將其拆分使之可以靈活地運用在如何去解決城市或者城市與城市之間的交通擁堵問題。當然單單使用合適的方法并不能解決擁堵問題,同時我們也需要增大駕駛?cè)藛T考取駕照的難度使其能夠減少因駕駛不當而造成的交通擁堵,城市規(guī)劃部門的合理規(guī)劃和長遠規(guī)劃更是十分重要。

        猜你喜歡
        進程高速公路
        高速公路養(yǎng)護與管理探討
        債券市場對外開放的進程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        為什么高速公路上不用路燈照明
        高速公路與PPP
        高速公路上的狗
        小說月刊(2014年4期)2014-04-23 08:52:20
        GPS在高速公路中的應用
        河南科技(2014年18期)2014-02-27 14:15:06
        我國高等教育改革進程與反思
        Linux僵死進程的產(chǎn)生與避免
        男女平等進程中出現(xiàn)的新矛盾和新問題
        俄羅斯現(xiàn)代化進程的阻礙
        人妻精品视频一区二区三区| 99久久免费只有精品国产| 永久黄网站免费视频性色| 中文字幕亚洲乱码熟女在线| 婷婷综合久久中文字幕蜜桃三电影 | 小12萝8禁在线喷水观看| 欧美激情精品久久999| 素人系列免费在线观看| 国产av在线观看91| 色佬精品免费在线视频| 日韩精品无码中文字幕电影| 中出内射颜射骚妇| 久久男人av资源网站无码| 久久这黄色精品免费久| 精品无码国产一区二区三区麻豆| 国产高清一区二区三区视频| 亚洲熟妇色xxxxx欧美老妇y| 美日韩毛片| 亚洲av人片在线观看调教| 媚药丝袜美女高清一二区| 亚洲国产精品va在线看黑人| 伊人色综合九久久天天蜜桃| 久久久高清免费视频| 青青草好吊色在线视频| 亚洲精品无码精品mv在线观看| 让少妇高潮无乱码高清在线观看 | 亚洲发给我的在线视频| 大又大又粗又硬又爽少妇毛片| 日韩插啊免费视频在线观看| 久久与欧美视频| 干出白浆视频在线观看| 亚洲视频在线观看| 日本欧美小视频| 国产人妖一区二区av| 亚洲大尺度无码无码专区| 好男人日本社区www| 最新手机国产在线小视频| 国产精品一区二区偷拍| 免费无码毛片一区二区app| 久久久国产精品樱花网站| 国产精品黄色在线观看|