FCFS-ajoitusalgoritmi: Mikä on, esimerkkiohjelma

⚡ Älykäs yhteenveto

Ensimmäiseksi tullutta palvelemme -ajoitus suorittaa prosessit täsmälleen siinä järjestyksessä, että ne saapuvat valmiusjonoon. Se käyttää yksinkertaista, ei-preemptiivistä FIFO-lähestymistapaa, mikä tekee siitä käyttöjärjestelmälle helpoimman toteutettavan suorittimen ajoitusalgoritmin.

  • 🔄 Määritelmä: FCFS määrittää suorittimen sille prosessille, joka sitä ensin pyytää, ja hallitsee valmiusjonoa FIFO-rakenteena (first-in, first-out).
  • ⚙️ Nature: FCFS ei ole preemptiivinen, joten käynnissä oleva prosessi pidättää suorittimen, kunnes se on suorittanut koko purskeaikansa loppuun.
  • 🎟️ Analogia: Kuten lippujonossa, ensimmäisenä saapuva asiakas palvellaan ensin, ja myöhemmin saapuvat odottavat vuoroaan.
  • 📊 Laskelma: Keskimääräinen odotusaika löytyy osa-alueeltatraclaskemalla kunkin prosessin saapumisajan sen aloitusajasta ja laskemalla sitten keskiarvo kaikkien prosessien välillä.
  • 🐢 Saattuevaikutus: Yksi pitkä prosessi eturintamassa pakottaa lyhyemmät työt odottamaan, mikä pidentää keskimääräistä odotusaikaa ja heikentää suorituskykyä.
  • 🤖 Tekoälyn kulma: Koneoppiminen ennustaa purskeaikoja parantaakseen aikataulutusta, ja Copilot auttaa kirjoittamaan ja testaamaan FCFS-koodia nopeasti.

FCFS-aikataulutusalgoritmi Operating System

Mikä on ensin tullutta palvelee -menetelmä?

Ensin tullutta palvella (FCFS) on käyttöjärjestelmän ajoitusalgoritmi, joka suorittaa jonossa olevat pyynnöt ja prosessit automaattisesti niiden saapumisjärjestyksessä. Se on helpoin ja yksinkertaisin suorittimen ajoitusalgoritmi. Tällaisessa algoritmissa prosessi, joka pyytää suoritinta ensimmäisenä, saa suorittimen allokoinnin ensin. Tätä hallitaan FIFO-jonolla. FCFS:n täydellinen muoto on First Come First Serve.

Kun prosessi siirtyy valmiusjonoon, sen piirilevy (PCB, Process Control Block) linkitetään jonon häntään. Joten kun CPU vapautuu, se osoitetaan jonon alussa olevalle prosessille.

FCFS-menetelmän ominaisuudet

Ensin tullutta palvelemme -menetelmän pääominaisuudet on lueteltu alla:

  • On ei-ennaltaehkäisevä ajoitusalgoritmi, joten prosessi pitää suorittimen käytettävissä, kunnes se on suorittanut purskeaikansa loppuun.
  • Työt tehdään aina saapumisjärjestyksessä.
  • Se on helppo toteuttaa ja käyttää.
  • Tämän menetelmän suorituskyky on heikko, ja yleinen odotusaika on melko pitkä.

Esimerkki FCFS-ajoituksesta

Käytännön esimerkki FCFS-menetelmästä on elokuvalipun ostaminen lipputiskiltä. Tässä ajoitusalgoritmissa henkilöä palvellaan jonotusjärjestyksen mukaisesti. Jonossa ensimmäisenä saapuva henkilö ostaa lipun ensin ja sitten seuraava. Tämä jatkuu, kunnes jonossa viimeinen henkilö ostaa lipun. Tätä algoritmia käytettäessä CPU-prosessi toimii samalla tavalla.

Kuinka FCFS toimii? Keskimääräisen odotusajan laskeminen

Ymmärtääksemme, miten algoritmi aikatauluttaa prosesseja, tässä on esimerkki viidestä eri aikoina saapuvasta prosessista. Jokaisella prosessilla on eri purskeaika.

Käsitellä asiaa Räjähdysaika Saapumisaika
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

FCFS-ajoitusalgoritmia käyttämällä näitä prosesseja käsitellään seuraavasti.

Vaihe 1) Prosessi alkaa P4:stä, jonka saapumisaika on 0.

FCFS-ajoitusesimerkki, vaihe 1

Vaihe 2) Aika = 1, P3 saapuu. P4 on edelleen käynnissä. Siksi P3 pidetään jonossa.

FCFS-ajoitusesimerkki, vaihe 2

Vaihe 3) Ajanhetkellä 2 P1 saapuu ja pidetään jonossa.

FCFS-ajoitusesimerkki, vaihe 3

Vaihe 4) Ajanhetkellä 3 P4-prosessi suorittaa suorituksensa loppuun.

FCFS-ajoitusesimerkki, vaihe 4

Vaihe 5) Ajankohtana = 4, P3, joka on ensimmäinen jonossa, aloittaa suorituksen.

FCFS-ajoitusesimerkki, vaihe 5

Vaihe 6) Ajanhetkellä 5 P2 saapuu ja pidetään jonossa.

FCFS-ajoitusesimerkki, vaihe 6

Vaihe 7) Ajanhetkellä 11 P3 suorittaa suorituksensa loppuun.

FCFS-ajoitusesimerkki, vaihe 7

Vaihe 8) Ajanhetkellä 11 P1 aloittaa suorituksen. Sen purskeaika on 6, joten se suorittaa suorituksen loppuun aikavälissä 17.

FCFS-ajoitusesimerkki, vaihe 8

Vaihe 9) Ajanhetkellä 17 P5 aloittaa suorituksen. Sen purskeaika on 4, joten se suorittaa suorituksen loppuun ajanhetkellä 21.

FCFS-ajoitusesimerkki, vaihe 9

Vaihe 10) Ajanhetkellä 21 P2 aloittaa suorituksen. Sen purskeaika on 2, joten se suorittaa suorituksen loppuun aikavälissä 23.

FCFS-ajoitusesimerkki, vaihe 10

Vaihe 11) Lasketaanpa nyt keskimääräinen odotusaika yllä olevalle esimerkille.

FCFS-aikataulutuksen keskimääräinen odotusaika

Waiting time = Start time - Arrival time

P4 = 0 – 0 = 0

P3 = 3 – 1 = 2

P1 = 11 – 2 = 9

P5 = 17 – 4 = 13

P2 = 21 – 5 = 16

Keskimääräinen odotusaika = (0 + 2 + 9 + 13 + 16) / 5 = 40 / 5 = 8

FCFS-aikataulutuksen keskimääräisen odotusajan laskeminen

FCFS:n edut

Tässä ovat FCFS-ajoitusalgoritmin käytön edut ja hyödyt:

  • Se on yksinkertaisin muoto CPU-aikataulutusalgoritmi.
  • Se on helppo ohjelmoida.
  • Se noudattaa suoraviivaista saapumisjärjestystä.

FCFS:n haitat

Tässä ovat FCFS-ajoitusalgoritmin käytön haitat ja haitat:

  • Se on ei-preemptiivinen CPU-ajoitusalgoritmi, joten kun prosessi on allokoitu CPU:lle, se ei koskaan vapauta CPU:ta ennen kuin se on suorittanut sen loppuun.
  • Keskimääräinen odotusaika on korkea.
  • Jonon takana olevat lyhyet prosessit joutuvat odottamaan jonon kärjessä olevan pitkän prosessin valmistumista.
  • Se ei ole ihanteellinen tekniikka aikajakojärjestelmille.
  • Yksinkertaisuuden vuoksi FCFS ei ole kovin tehokas.

UKK

Tuleva ensin palveleminen on ei-preemptiivinen algoritmi. Kun prosessi saa suorittimen käyttöönsä, se suorittaa purskeensa loppuun asti, joten ajoittaja ei voi keskeyttää sitä suorittaakseen uutta tai lyhyempää prosessia.

Konvoivaikutus tapahtuu, kun useita lyhyitä prosesseja odottaa yhden pitkän prosessin takana jonon kärjessä. Tämä yksittäinen pitkä työ nostaa keskimääräistä odotusaikaa ja laskee suorittimen kokonaissuorituskykyä.

Läpimenoaika on yhtä kuin kunkin prosessin valmistumisaika vähennettynä saapumisajalla. Se mittaa kokonaisaikaa, jonka prosessi viettää järjestelmässä saapumisestaan ​​siihen, kun se on suoritettu loppuun suorittimella.

FCFS palvelee saapumisjärjestyksessä. Lyhyin työ ensin palvelee ensin pienintä pursketta lyhyemmän odotusajan saavuttamiseksi, ja Round Robin antaa jokaiselle prosessille kiinteän aikavälin ajan jakamista varten.

Puhdas FCFS ei aiheuta jonon loppumista (nälkiintymistä), koska jokainen prosessi lopulta saavuttaa FIFO-jonon kärjen. Pitkät työt voivat kuitenkin viivästyttää lyhyitä huomattavasti konvoiefektin vuoksi.

FCFS suoritetaan O(n) ajassa, kun prosessit on jo järjestetty saapumisajan mukaan, koska jokainen on aikataulutettu kerran. Lajittelemattomien saapumisten lajittelu saapumisajan mukaan lisää ensin O(n log n) askeleen.

Koneoppimismallit ennustavat prosessien purskeaikoja ja valitsevat tai hienosäätävät aikataulutuskäytäntöjä keskimääräisen odotusajan ja energiankulutuksen lyhentämiseksi. Tutkijat soveltavat näitä tekoälypohjaisia ​​aikatauluttajia pilvipalvelimissa ja datakeskuksissa.

Kyllä. GitHub Copilot voi luoda FCFS-koodia C-kielellä, Javatai Python odotusajan ja läpimenoajan laskelmilla. Tarkista aina saapumisajan lajittelu, tasapisteiden ratkaiseminen ja keskiarvokaavat ennen tulosteeseen luottamista.

Tiivistä tämä viesti seuraavasti: