Često se programeri, osobito oni neiskusni, zbune kada se od njih traži da postave rokove za dovršetak zadataka. Međutim, sposobnost planiranja je vrlo korisna i potrebna vještina koja pomaže ne samo u poslu, već iu životu. Odlučili smo pitati stručnjake kako naučiti pravilno planirati i isporučiti projekte na vrijeme.

Kratki zaključci nalaze se na kraju članka.

Programer obično mora uzeti u obzir nekoliko parametara odjednom kako bi procijenio vrijeme potrebno za dovršenje zadatka:

  1. Iskustvo u obavljanju takvih zadataka i radu s ovim tehnološkim skupom. Ako morate učiniti nešto bitno novo, morate biti posebno oprezni u procjeni.
  2. Iskustvo rada s ovim klijentom. Poznavajući kupca, neke možete okvirno predvidjeti dodatni zahtjevi i količinu izmjena.
  3. Kvaliteta koda s kojim ćete raditi. To je najutjecajniji čimbenik zbog kojeg sve može potrajati dugo i uglavnom ne ići po planu. Ako projekt ima testove, posvuda postoje samo eksplicitne ovisnosti i funkcionalnost je dobro izolirana, sve nije tako strašno. Mnogo je gore ako imate posla s naslijeđenim kodom bez testova ili s kodom preopterećenim implicitnim ovisnostima. Stvari kao što su "čarobne funkcije" (kada je teško vidjeti konačni skup poziva iz koda) i dupliciranje koda (kada trebate urediti nekoliko neovisnih odjeljaka da biste promijenili neke funkcije) također mogu zakomplicirati stvari.

Da biste naučili kako pravilno procijeniti radne rokove, morate stalno vježbati. Na početku svog rada radio sam upravo ovo: procjenjivao sam vrijeme za dovršavanje bilo kojeg pristiglog zadatka, čak i ako ga nitko nije zahtijevao, a zatim sam gledao koliko sam točno uspio ući u svoju procjenu. Dok je izvršavao zadatak, bilježio je koje su radnje dulje trajale. Ako je nešto značajno povećalo razdoblje, zapamtio sam ovaj trenutak i uzeo ga u obzir u sljedećim procjenama.

Objektivnoj procjeni vremena potrebnog isključivo za rad, treba dodati malu rezervu za pokrivanje situacija više sile. Često se procjenjuje kao postotak izvršenja glavnog zadatka, ali za svakoga je drugačije: netko dodaje 20% vremena, netko - 10%, a netko - 50%.

Također je korisno analizirati razloge propuštanja rokova nakon svakog težeg kršenja roka. Ako nemate dovoljno kvalifikacija, morate raditi na sebi slabe točke. Ako je problem bio organizacijski, shvatite što ga je spriječilo da normalno radi.

Promaknuti Degradirati

, tehnički direktor centra za inovativne tehnologije i rješenja "Jet Infosustavi"

Velik broj članaka posvećen je metodama za procjenu radnog intenziteta projekta, uključujući trajanje rada i pojedinačne zadatke. No, to još uvijek uzrokuje sukobe kako unutar projektnog tima tako iu komunikaciji s kupcem.

Glavni pomoćnik u procjeni je iskustvo. Pokušajte nekako usporediti novi zadatak s već obavljenim. Ako radite izvješće, pogledajte koliko je dugo trebalo slično izvješće u prošlosti. Ako radite nešto novo, pokušajte to raščlaniti na poznate dijelove i procijeniti ih. Ako je zadatak potpuno nov, odvojite vrijeme za učenje (još bolje, uskladite ovo vrijeme s osobom koja postavlja zadatak).

Obratite pozornost na popratne faze - ako trebate razviti uslugu, tada procjena mora uključivati ​​i jedinično testiranje (a možda i ne samo jedinično testiranje), priprema testnih podataka će potrajati. Trebali biste razmisliti o integraciji s drugim uslugama itd. Ostavite vremena za ispravljanje nedostataka koje pronađete sami ili uz pomoć testera. Puno vremena može se izgubiti na "nevidljive" zadatke. Na primjer, postoji procjena za razvoj i postoji procjena za testiranje, ali prijenos artefakta za testiranje može uključivati ​​postavljanje postolja. Stoga je važno mentalno vizualizirati cijeli proces kako ništa ne biste propustili.

Nakon utvrđivanja složenosti, potrebno je u kalendar uvrstiti nove poslove, ne zaboravljajući ostale zadatke i aktivnosti koje idu paralelno.

I ne zaboravite da su planovi beskorisni, ali planiranje nema cijenu. Naučite pravovremeno prilagoditi planove, informirati sve uključene i pravovremeno eskalirati kako propušteni rokovi nikoga ne bi iznenadili.

Promaknuti Degradirati

Pitanje na koje se ne može odgovoriti u kratki oblik. Da je jednostavno, onda problem propuštanja rokova ne bi postojao.

Da bismo razvojne rokove učinili predvidljivijima, prvo moramo razumjeti razloge zašto programeri stalno griješe.

Prvi razlog je taj što je većina zadataka koje programer radi jedinstvena u jednom ili drugom stupnju. To jest, najvjerojatnije, programer će prvi put raditi sličan zadatak. Nema dobru ideju koliko će ovaj posao trajati. Ako je to programer sa solidnim iskustvom i morao je obaviti sličan zadatak, njegova će procjena biti bliža stvarnosti.

Poslužimo se jednostavnom usporedbom – ako nikada niste kopali jarke, ne možete točno reći koliko će vam vremena trebati da iskopate rov širine 30 cm, dubine 60 cm i dužine 20 metara. Ako ste već kopali, vaša procjena radnog vremena bit će puno bliža stvarnom trajanju radova.

Drugi razlog je taj što su programeri po prirodi optimisti. To jest, pri razmatranju zadatka, odabiru opcije implementacije za njega i ocjenjivanju poboljšanja, programer očekuje da će sve raditi kako on očekuje. I ne razmišlja o problemima na koje će naići na tom putu. Često ih ne može predvidjeti. Na primjer, postoji zadatak koji programer može implementirati koristeći biblioteku softvera otvorenog koda treće strane. U fazi ocjenjivanja pronašao ga je na internetu, pročitao njegov opis - odgovara mu. Čak je i točno procijenio količinu posla koju bi morao obaviti da bi ugradio u korištenje ove knjižnice. Ali on uopće nije predvidio da oni oko njega softverski proizvod pojavit će se pogreška u ovoj knjižnici.

Programer će morati ne samo ugraditi korištenje biblioteke u svoj kod, već i popraviti grešku u samoj biblioteci. I često programer ne daje vremena za ispravljanje svojih pogrešaka. Statistike pokazuju da testiranje i ispravljanje pogrešaka može oduzeti oko 50% vremena utrošenog na kodiranje. Brojka ovisi o kvalifikacijama programera, okruženju i razvojnim praksama koje se koriste (na primjer, jedinični testovi značajno skraćuju ovo vrijeme i krajnje trajanje/intenzitet rada razvojnog zadatka je manji).

Ako se vratimo na analogiju s kopačem, kopač nije očekivao da će mu se lopata slomiti i da će morati dva sata tražiti novi rez.

Treći razlog su nepredviđeni zahtjevi. Ni u jednom drugom području proizvodnje materijala, s kojim korisnici toliko vole uspoređivati ​​razvoj softvera, ne postoji toliki protok novih zahtjeva. Zamislite prolazak kopača koji je od 20 metara kopao 19 i od kupca čuo želju da jarak ne ide pravocrtno, nego zmijski s krakom dužine 97 centimetara.

Kako se sa svime time nositi i kako živjeti u uvjetima takve neizvjesnosti? Smanjenje neizvjesnosti i stvaranje vremenskih rezervi.

Najlakši način da svoja očekivanja približite stvarnosti je korištenje razigranog Pi pravila. Nakon što ste od programera primili procjenu (u smislu vremena ili intenziteta rada), trebate je pomnožiti s Pi (= 3,14159). Što je programer iskusniji izvršio procjenu, to ovaj omjer može biti manji.

Obavezna je praksa rastavljanja izvornog problema na male zadatke koji ne traju više od 4 sata. Što je dekompozicija detaljnija, veće su šanse da će procjena biti približna stvarnoj složenosti/trajanju.
Ako se vratimo na raspodjelu pričuve, ovo vrijeme treba raspodijeliti na kraju projekta. Loša je praksa napraviti rezervu i uključiti je za svaki zadatak. Strogo se poštuje Parkinsonov zakon "Posao ispunjava sve vrijeme koje mu je dodijeljeno".

Ukratko, kako bi se ispravno odredili rokovi za dovršetak radova, bit će korisne sljedeće radnje:

  • izvršite dekompoziciju posla, razlažući zadatak na što detaljnije korake;
  • izraditi prototipe;
  • ograničiti provedbu prethodno nepredviđenih zahtjeva. To ne znači da ih nije potrebno izvršiti, ali je preporučljivo istaknuti te zahtjeve i dogovoriti s kupcem promjene u vremenu i troškovima za njihovu provedbu;
  • uzeti u obzir vrijeme potrebno za stabilizaciju otopine;
  • koristiti prakse za poboljšanje kvalitete koda, kao što je pisanje jediničnih testova;
  • položiti opću pričuvu.

Zapamtite da je to vrlo dobar rezultat ako činjenica premašuje vašu procjenu za 30%.

Promaknuti Degradirati

Za najtočniju procjenu potrebno vam je iskustvo u stvarnom razvoju i to konkretno u određenom području. Ali također postoji opća pravila, što će pomoći u izbjegavanju pogrešaka u planiranju i problema prilikom predaje posla kupcu. Ovako bih opisao ta pravila.

Prvo morate razumjeti problem. Ovo se čini očiglednim i nije izravno povezano s vremenskim procjenama, ali zapravo je ključna točka. Čak i u ozbiljnim glavni projekti Jedan od glavnih faktora neuspjeha i kašnjenja je problem u definiranju zahtjeva. Za programere početnike, nažalost, to je ozbiljan problem - ne čitaju tehničke specifikacije ili čitaju i razumiju vrlo selektivno (od deset točaka zapamtili su i ispunili pet, a ostalo su zapamtili prilikom slanja rezultata). Jasno je da se krivo shvaćen zadatak ne može pravilno implementirati na vrijeme.

Sljedeće je procijeniti samo vrijeme razvoja. Osobitost programiranja je u tome što ne postoje apsolutno identični zadaci. To nam čini posao zanimljivijim, ali je teže procijeniti rokove. Ovdje dobro funkcionira dekompozicija, tj. dijeljenje složenog, jedinstvenog problema u niz malih, poznatih podzadataka. I svaki od njih već se može prilično adekvatno procijeniti u satima. Zbrojimo procjene podzadataka i dobijemo procjenu za cijeli zadatak.

Takva procjena u pravilu uključuje samo troškove samog kodiranja. Ovo je, naravno, najvažniji dio razvoja, ali daleko od jedinog (i često ne najobimnijeg). Potpuni završetak zadatka također uključuje čitanje i razjašnjavanje specifikacije, sastanke s kolegama ili kupcem, otklanjanje pogrešaka i testiranje, izradu dokumentacije, isporuku rezultata (demonstracija kupcu i moguće izmjene na temelju njegovih komentara). Samo će vam iskustvo točno reći koliko će vam trebati da dovršite ove radnje. U početku je važno, u najmanju ruku, ne zaboraviti ih uzeti u obzir u izračunima, a možete pitati iskusnije kolege za približnu procjenu vremena.

Dakle, uzimamo procjenu troškova rada za kodiranje, dodajemo procjenu troškova za dodatni rad- i dobivamo potrebnu procjenu vremena za izvršenje zadatka. Ali to nije sve! Morate navesti planirani datum završetka zadatka. Bilo bi pogrešno jednostavno podijeliti troškove rada (u satima) s 8 sati i dodati ih trenutnom datumu. U stvarnoj praksi programer nikad (dobro, gotovo nikad) ne radi 100% vremena na jednom specifičnom zadatku. Sigurno ćete potrošiti vrijeme na drugi posao - važan, ali ne i izravno povezan s glavnim. Na primjer, pomoć kolegama, obuka, pisanje izvještaja itd. Obično se pri planiranju smatra da se 60-70% radnog vremena provodi izravno radeći na trenutnom projektu. Dodatno, morate uzeti u obzir moguća kašnjenja koja će vas spriječiti u kontinuiranom radu na zadatku. Na primjer, ako za to trebate komunicirati s drugim ljudima (kolegama, kupcima), tada uzmite u obzir njihovu dostupnost, raspored rada itd.

Evo osnovnih pravila koja će, po mom mišljenju, pomoći programeru da izbjegne probleme u procjeni i ispunjavanju rokova. Osim toga, ključno je akumulirati vlastito iskustvo kako u provedbi zadataka tako iu ocjenjivanju. Na primjer, vrlo je korisno nakon dovršetka zadatka usporediti svoju početnu procjenu sa stvarnim rokovima i donijeti zaključke za budućnost. I, naravno, vrijedi proučiti tuđa iskustva. Preporučio bih knjige na temu S. McConnella “Koliko košta softverski projekt” i S. Arhipenkova “Predavanja o upravljanju softverskim projektima”.

Promaknuti Degradirati

Prilikom procjene i planiranja rokova morate:

  1. Rastavite zadatak na male funkcionalne dijelove na takav način da postoji jasno razumijevanje koliko će vremena trebati za razvoj svakog takvog dijela.
  2. Paralelno s dekompozicijom, sigurno će se pojaviti dodatna pitanja o funkcionalnosti koja nije opisana u postavci problema. Odgovore na ovakva pitanja potrebno je dobiti jer se to izravno odnosi na opseg posla, a samim time i na vrijeme.
  3. Konačnoj procjeni dodajte određeni postotak rizika. To se utvrđuje empirijski. Možete početi, na primjer, s rizicima od 10–15%.
  4. Shvatite koliko je sati dnevno programer spreman posvetiti izvršavanju zadatka.
  5. Konačnu procjenu podijelimo s brojem sati koje izdvajamo po danu i dobijemo broj dana potrebnih za implementaciju.
  6. Fokusiramo se na kalendar i potrebna količina dana za dovršetak. U obzir uzimamo vikende i druge dane kada programer neće moći raditi na zadatku, kao i datum početka rada (programer nije uvijek spreman preuzeti zadatak isti dan). Tako dobivamo datum početka i završetka rada.

Promaknuti Degradirati

U našoj tvrtki planiranje zadataka uvijek prolazi kroz nekoliko faza. S poslovne strane formuliramo 5-6 strateških ciljeva za godinu. To su zadaci visoke razine, na primjer, povećanje nekog parametra za toliko posto. Zatim, različiti odjeli tvrtke formuliraju poslovne zadatke za sve IT timove. Rokovi za ove zadatke dobivaju inicijalnu grubu procjenu koju često formiraju svi članovi tima – voditelj, analitičar, programer i tester. Nakon što dobije ovu ocjenu, tvrtka daje prioritet zadacima, uzimajući u obzir strateški ciljevi poduzeća. U tome pomažu međusektorski strateški ciljevi, s njima postaje očito da svi radimo za neku zajedničku stvar, nema takve situacije kada netko vuče samo u svom smjeru. Prikupljamo sprinteve od zadataka točno procijenjenih u smislu rokova. Za neke timove su kvartalni, za druge mjesečni. Za nekoliko zadataka koji će, prema preliminarnim procjenama, ući u sljedeći sprint, timovi daju točnu procjenu. Veliki zadaci dijele se na niže razine, za svaki od njih odgovoran je određeni izvođač, a on daje točnu ocjenu.

Na u ovoj fazi Važno je ne zaboraviti dodati dodatno vrijeme za ispravljanje grešaka, jer samo oni koji ništa ne rade ne griješe. I vlasnici proizvoda i poslovni kupci to vrlo dobro razumiju. Istovremeno, potrebno vrijeme mora biti odgovarajuće: nitko neće razumjeti programera koji postavlja predug rok za jednostavan zadatak; od njega će se tražiti da obrazloži odluku. Najteže je objasniti poduzeću zašto je potrebno vrijeme za refaktor. Zahvalni smo našoj tvrtki što s vremena na vrijeme u tome i uspijevamo, jer u konačnici refaktoring dovodi do pojednostavljenja infrastrukture i sređivanja koda, što povećava stabilnost sustava i može značajno ubrzati razvoj novih funkcija.

Ponekad se greške u procjeni ipak događaju. Razvojni odjel u velike tvrtke S razvijenom infrastrukturom to je, po mom mišljenju, nemoguće u potpunosti izbjeći. U ovom slučaju, važno je da programer odmah obavijesti svog menadžera o tome što se događa, a on, zauzvrat, uspije upozoriti poslovanje i "ponoviti" nešto u općim planovima tvrtke. Raditi u ovom načinu puno je ispravnije nego mahnito pokušavati napraviti u 3 dana ono što je potrebno 5, a zatim se utopiti u velike količine pogreške koje proizlaze iz takve žurbe.

Promaknuti Degradirati

Točan odgovor na oba dijela pitanja [kako naučiti pravilno planirati i isporučiti projekt na vrijeme - crvena.] - iskustvo. Ne postoje drugi načini da se "upozna zen". Prema teoriji odlučivanja, točni zaključci mogu se izvući samo na temelju analize niza već dostupnih podataka. A što je više podataka to je konačna prognoza i procjena točnija.

Prema riječima Herberta Shawa: "Iskustvo je škola u kojoj čovjek uči kakva je budala prije bio." To dovodi do prilično jednostavnog zaključka: ako programer već ima iskustvo koje je u skladu sa zadatkom koji mu je pri ruci, može se osloniti na njega; ako nema, može se osloniti na iskustvo svojih "kolega".

Dalje, morate shvatiti da je izravno planiranje rokova zadatak s kojim se ljudi vrlo, vrlo slabo nose, pogotovo u razvoju. Kada se procjenjuju rokovi dospijeća, smatra se dobrom praksom uvesti "faktore prilagodbe" u izvornu procjenu. Ova metrika može biti u rasponu od 1,5 do 3, ovisno o iskustvu programera i ukupnosti stupnjeva nesigurnosti zadataka koji se rješavaju unutar projekta.

Promaknuti Degradirati

Prilikom određivanja rokova važno je uzeti u obzir mnoge čimbenike.

Na primjer, radno iskustvo. Koliko jasno shvaćate opseg posla koji je pred vama? Jeste li već radili nešto slično? Jasno je da što je više iskustva, posao će brže biti završen.

Dobro napisan plan ima značajnu ulogu u određivanju rokova. projektni zadatak. Na našim prostorima s tim je jako teško. Često ni sam klijent ne zna što želi, pa savjetujem da potrošite dan-dva više, ali da klijent ima jasnu ideju željeni rezultat. Važno je da je to razumijevanje obostrano. I tek nakon toga možete početi pregovarati o iznosu i uvjetima.

Također, uvijek uključite rizike. Za početnike preporučujem da procijenjeno vrijeme završetka pomnože s dva. Uostalom, bolje je isporučiti projekt prije roka i rasti kao stručnjak u očima kupca, nego ga isporučiti kasnije i uništiti svoju reputaciju.

Promaknuti Degradirati

Opća preporuka - razvojni programer treba naučiti kako pravilno dekomponirati zadatke, uvijek tražiti moguće zamke, oslanjati se na vlastito iskustvo i ne zaboravite na vrijeme upozoriti kupce i kolege ako se zadatak ne može riješiti u zadanom roku.

Izgradnja jasnog plana puno je teža od određivanja roka za dovršetak jednog zadatka. Pritom je važno ne samo isporučiti projekt na vrijeme, već i osigurati da sustav koji razvijate ispravno rješava poslovne probleme. Tu IT timovima pomažu razne metodologije razvoja softvera: od RUP-a i MSF-a do SCRUM-a i drugih Agile formata. Izbor alata je vrlo opsežan, a mnogi naši kupci žele unaprijed razumjeti kako ćemo raditi s njima u projektu, kojih se načela pridržavamo.

Inače, tema Agile danas postaje bliska kako poslovnim, tako i pojedinačnim projektima javnom sektoru, budući da principi ove metodologije omogućuju vrlo brzu implementaciju projekata, upravljajući očekivanjima korisnika u svakoj iteraciji. Na primjer, u Agile timu praktički nema dugotrajnih razgovora s kupcem. Zaboravite na desetke stranica koje opisuju nepotrebne tehničke detalje, poput brzine pojavljivanja padajućeg popisa. Dajte kupcu priliku da isproba srednju verziju sustava, tada će vam biti mnogo lakše razumjeti jedni druge.

Agile tim sve zajedno planira i određuje optimalna razina troškovi rada koji će biti potrebni za rješavanje određenog problema. Na primjer, jedna od tehnika se zove “Planiranje pokera”, gdje svaki sudionik anonimno daje svoju procjenu potrebnih troškova rada za određeni zadatak. Nakon toga tim utvrđuje prosječnu težinu zadatka u bodovima priče ili radnim satima i raspoređuje zadatke po principu “tko što voli”. Istovremeno, svaki dan se tim okuplja na petnaestominutnom sastanku, kada svi u nekoliko minuta razgovaraju o statusu svojih trenutnih zadataka, uključujući i prijavu eventualnih poteškoća. Tim brzo rješava otkriveni problem, tako da kupac gleda na sljedeću fazu rada programera što je brže moguće. Programeri ne odgađaju dovršetak zadataka zbog nevoljkosti da još jednom gnjave tim ili uzaludnih pokušaja da to sami shvate, ubijajući dragocjeno vrijeme. Usput, kod takvih mini-statusa programeri imaju želju dokazati se najbolja strana, pokažite da svom poslu pristupate odgovorno. To stvarno motivira i samodisciplinira.

Uvod

Svrha radionice o organizaciji proizvodnje je proširivanje i produbljivanje teorijskih znanja, usađivanje potrebnih vještina za rješavanje problema organizacije i planiranja proizvodnje koji se najčešće susreću u praksi.

Radionica uključuje zadatke za glavne dijelove kolegija. Na početku svake teme daju se kratke metodičke upute i teorijske informacije, tipični zadaci s rješenjima i zadaci za samostalno rješavanje.

Dostupnost u svakoj temi metodološka uputstva i kratke teorijske informacije omogućuju korištenje ove radionice za učenje na daljinu.


Izračun trajanja proizvodnog ciklusa

Kao pokazatelj učinkovitosti proces proizvodnje je trajanje proizvodnog ciklusa.

Proizvodni ciklus– razdoblje boravka predmeta rada u procesu proizvodnje od trenutka puštanja u promet sirovina do trenutka puštanja gotovih proizvoda.

Proizvodni ciklus se sastoji od radno vrijeme, tijekom kojih se utroši rad, i vremena pauze. Prekidi se, ovisno o razlozima koji su ih uzrokovali, mogu podijeliti na:

1) uključeno prirodni ili tehnološke - određene su prirodom proizvoda;

2) organizacijski(pauze između smjena).

Trajanje proizvodnog ciklusa sastoji se od sljedećih komponenti:

T ciklus = t oni + t jede + t tr + t k.k. + t m.o. + t m.ts.

Gdje t one– vrijeme tehnoloških operacija;

jede - vrijeme prirodnih procesa (sušenje, hlađenje itd.);

t tr – vrijeme prijevoza predmeta rada;

t k.k. – vrijeme kontrole kvalitete;

t m.o – vrijeme interoperativne skrbi;

t m.c. – vrijeme skladištenja u međutrgovinskim skladištima;

(t tri t k.k. može se kombinirati sa t m.o).

Izračun vremena proizvodnog ciklusa ovisi o vrsti proizvodnje. U masovnoj proizvodnji, trajanje proizvodnog ciklusa određeno je vremenom u kojem je proizvod u proizvodnji, tj.

T ciklus = t u M,

Gdje t V– oslobađajući hod;

M– broj radnih mjesta.

Pod osloboditi udarac potrebno je razumjeti vremenski interval između puštanja jednog proizvedenog proizvoda i sljedećeg proizvoda.

Hod oslobađanja određuje se formulom

t in = Teff /V,

Gdje Tef– efektivni fond radnog vremena za obračunsko razdoblje(smjena, dan, godina);

U– obujam proizvodnje za isto razdoblje (u prirodnim jedinicama).

Primjer: T cm = 8 sati = 480 min; T po = 30 min; → Teff = 480 – – 30 = 450 min.

B = 225 kom; → t u = 450/225 = 2 min.

U serijskoj proizvodnji, gdje se prerada odvija u serijama, trajanje tehnološkog ciklusa ne određuje se po jedinici proizvoda, već za cijelu seriju. Štoviše, ovisno o načinu puštanja serije u proizvodnju, dobivamo različita vremena ciklusa. Postoje tri načina kretanja proizvoda u proizvodnji: sekvencijalni, paralelni i mješoviti (serijski paralelno).


ja. Na sekvencijalni Kod pomicanja dijelova svaka sljedeća operacija počinje tek nakon završetka prethodne. Trajanje ciklusa za uzastopno kretanje dijelova bit će jednako:

Gdje n – broj dijelova serije koja se obrađuje;

t komja- komadno vrijeme za operaciju;

C i– broj radnih mjesta po ja th operacija;

m– broj operacija tehnološkog procesa.

Dana je serija proizvoda koja se sastoji od 5 komada. Šarža prolazi uzastopno kroz 4 operacije; trajanje prve operacije je 10 minuta, druge 20 minuta, treće 10 minuta, četvrte 30 minuta (slika 1).

Slika 1

T ciklus = T zadnji = 5·(10+20+10+30) = 350 min.

Sekvencijalna metoda pomicanja dijelova ima prednost jer osigurava rad opreme bez zastoja. Ali njegov nedostatak je što je trajanje proizvodnog ciklusa u ovom slučaju najdulje. Osim toga, na radilištima se stvaraju značajne zalihe dijelova, što zahtijeva dodatni proizvodni prostor.

II. Na paralelno Tijekom kretanja serije, pojedini dijelovi se ne zadržavaju na radnim stanicama, već se pojedinačno prenose na sljedeću operaciju odmah, bez čekanja da se završi obrada cijele serije. Dakle, uz paralelno kretanje serije dijelova, na svakom radnom mjestu se istovremeno izvode različite operacije na različitim dijelovima iste serije.

Vrijeme obrade serije s paralelnim kretanjem proizvoda naglo je smanjeno:

dl .

Gdje n n– broj dijelova u prijenosna serija(transportna serija), tj. broj proizvoda koji se istodobno prenose iz jedne operacije u drugu;

Duljina – najduži radni ciklus.

Pri paralelnom lansiranju serije proizvoda, dijelovi cijele serije obrađuju se kontinuirano samo na onim radnim mjestima gdje duge operacije slijede kratke. U slučajevima kada kratke operacije slijede duge, tj. duže (u našem primjeru treća operacija), te se operacije izvode diskontinuirano, tj. oprema je u stanju mirovanja. Ovdje se serija dijelova ne može obraditi odmah, bez kašnjenja, jer prethodna (duga) operacija to ne dopušta.

U našem primjeru: n= 5, t 1 = 10; t 2 = 20; t 3 = 10; t 4 = 30; S= 1.

T para = 1·(10+20+10+30)+(5-1)·30=70+120 = 190 min.

Razmotrimo dijagram paralelnog kretanja dijelova (slika 2):

Slika 2

III. Da biste uklonili prekide u obradi pojedinih dijelova serije u svim operacijama, koristite paralelno-serijski ili mješoviti metoda lansiranja u kojoj se dijelovi (nakon obrade) prenose u sljedeću operaciju jedan po jedan ili u obliku "transportnih" serija (više komada) na način da se izvođenje operacija ne prekida ni na jednom radnom mjestu. Kod mješovite metode kontinuiranost obrade preuzeta je od sekvencijalne metode, a prijelaz dijela iz operacije u operaciju neposredno nakon njegove obrade preuzet je od paralelne metode. S mješovitom metodom puštanja u proizvodnju, trajanje ciklusa određeno je formulom

jezgra .

gdje je kor. – najkraći radni ciklus (od svakog para susjednih operacija);

m-1 broj kombinacija.

Ako je sljedeća operacija duža od prethodne ili jednaka po vremenu, tada se ova operacija pokreće pojedinačno, odmah nakon obrade prvog dijela u prethodnoj operaciji. Ako je, naprotiv, sljedeća operacija kraća od prethodne, tada dolazi do prekida tijekom prijenosa komada. Da bi ih spriječili, potrebno je akumulirati transportnu rezervu takvog volumena da je dovoljan da osigura rad pri naknadnoj operaciji. Za praktično pronalaženje ove točke na grafu, potrebno je prenijeti zadnji dio serije i pomaknuti trajanje njegovog izvršenja udesno. Vrijeme obrade za sve ostale dijelove u seriji iscrtano je lijevo na grafikonu. Početak obrade prvog dijela označava trenutak kada se transportni zaostatak iz prethodne operacije mora prenijeti na ovu operaciju.

Ako su susjedne operacije jednakog trajanja, tada se samo jedna od njih smatra kratkom ili dugom (slika 3).

Slika 3

T zadnji parovi = 5·(10+20+10+30)-(5-1)·(10+10+10) = 350-120 = 230 min.

Glavni načini smanjenja vremena proizvodnog ciklusa su:

1) Smanjenje radnog intenziteta izrade proizvoda poboljšanjem obradivosti izrađenog dizajna, uporabom računala i uvođenjem naprednih tehnoloških procesa.

2) Racionalna organizacija procesa rada, uređenje i održavanje radnih mjesta na temelju specijalizacije i kooperacije, ekstenzivne mehanizacije i automatizacije proizvodnje.

3) Smanjenje raznih planiranih i neplaniranih pauza na poslu na temelju racionalne uporabe načela znanstvena organizacija proces proizvodnje.

4) Ubrzanje reakcija kao rezultat povećanja tlaka, temperature, prijelaza na kontinuirani proces itd.

5) Poboljšanje procesa transporta, skladištenja i kontrole te njihovo vremensko kombiniranje s procesom obrade i montaže.

Smanjenje trajanja proizvodnog ciklusa jedan je od ozbiljnih zadataka organizacije proizvodnje jer utječe na promet obrtni kapital, smanjenje troškova rada, smanjenje skladišnog prostora, transportnih potreba itd.

Zadaci

1 Odredite trajanje ciklusa obrade 50 dijelova sa sekvencijalnim, paralelnim i serijsko-paralelnim tipom kretanja u proizvodnom procesu. Proces obrade dijelova sastoji se od pet operacija, čije je trajanje min. t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 =3. Druga operacija se izvodi na dva stroja, a svaka na jednom. Veličina serije prijenosa je 4 komada.

2 Odrediti trajanje ciklusa obrade 50 dijelova sa sekvencijalnim, paralelnim i serijsko-paralelnim tipom kretanja u proizvodnom procesu. Proces obrade dijelova sastoji se od četiri operacije, čije je trajanje min. t 1 =1; t 2 =4; t 3 =2; t 4 =6. Četvrta operacija izvodi se na dva stroja, a svaki drugi na jednom. Veličina serije prijenosa je 5 komada.

3 Serija dijelova od 200 komada obrađuje se paralelno-sekvencijalnim kretanjem tijekom procesa proizvodnje. Proces obrade dijelova sastoji se od šest operacija, čije je trajanje min. t 1 =8; t 2 =3; t 3 =27; t 4 =6; t 5 =4; t 6 =20. Treća operacija se izvodi na tri stroja, šesta na dva, a svaka od preostalih operacija na jednom stroju. Odredite kako će se promijeniti trajanje ciklusa obrade za seriju dijelova ako se paralelno-sekvencijalna verzija kretanja u proizvodnji zamijeni paralelnom. Veličina serije prijenosa je 20 komada.

4 Serija dijelova od 300 komada obrađuje se paralelno-sekvencijalnim kretanjem tijekom procesa proizvodnje. Proces obrade dijelova sastoji se od sedam operacija, čije je trajanje min. t 1 =4; t 2 =5; t 3 =7; t 4 =3; t 5 =4; t 6 =5; t 7 =6. Svaka operacija se izvodi na jednom stroju. Prijenosna serija – 30 komada. Kao rezultat poboljšanja tehnologije proizvodnje, trajanje treće operacije smanjeno je za 3 minute, sedme - za 2 minute. Odredite kako se mijenja ciklus obrade serije dijelova.

5 Dana je serija praznina koja se sastoji od 5 komada. Serija prolazi kroz 4 operacije: prva traje 10 minuta, druga 20 minuta, treća 10 minuta, četvrta 30 minuta. Odrediti trajanje ciklusa analitičkim i grafičkim metodama sa sekvencijalnim kretanjem.

6 Dana je serija praznina koja se sastoji od četiri komada. Serija prolazi kroz 4 operacije: prva traje 5 minuta, druga 10 minuta, treća 5 minuta, četvrta 15 minuta. Odrediti trajanje ciklusa analitičkim i grafičkim metodama s paralelnim kretanjem.

7 Dana je serija praznina koja se sastoji od 5 komada. Serija prolazi kroz 4 operacije: prva traje 10 minuta, druga 20 minuta, treća 10 minuta, četvrta 30 minuta. Odrediti trajanje ciklusa analitičkim i grafičkim metodama za serijsko-paralelno gibanje.

8 Odredite trajanje tehnološkog ciklusa za obradu serije proizvoda od 180 komada. s paralelnim i sekvencijalnim varijantama njegova kretanja. Izrada grafikona procesa obrade. Veličina transfer lota je 30 kom. Vremenski standardi i broj poslova u pogonima su sljedeći.

(vrijeme od posla postaje uključeno dok se ne završi u slučaju periodične aktivnosti ili dok sustav ne odgovori i ne preda prvi korisnički izlaz u slučaju interaktivne aktivnosti); ili maksimizacija pravda(jednaka količina CPU vremena za svaki proces, ili općenito odgovarajuća vremena prema prioritetu i opterećenju svakog procesa). U praksi su ti ciljevi često u sukobu (npr. propusnost u odnosu na kašnjenje), tako da će planer napraviti odgovarajući kompromis. Preferencije se mjere bilo kojim od gore navedenih pitanja, ovisno o potrebama i ciljevima korisnika.

OS/360 i nasljednici

AIX

U AIX verziji 4, postoje tri moguće postavke za politiku raspoređivanja niti:

  • Prvi, prvi izašao: Jednom kada je nit s ovom politikom zakazana, izvodi se do završetka, osim ako je blokirana, dobrovoljno prepusti kontrolu nad procesorom ili nit višeg prioriteta postane dispetchable. Samo niti s fiksnim prioritetom mogu imati FIFO politiku rasporeda.
  • Round Robin: Ovo je slično AIX Version 3 planeru kruga koji kruži na temelju vremenskih odsječaka od 10 ms. Kada PP nit ima kontrolu na kraju vremenskog odsječka, pomiče se na kraj reda niti s istim prioritetom. Samo niti s fiksnim prioritetom mogu imati Round Robin politiku raspoređivanja.
  • OSTALO: Ovu politiku implementacija definira POSIX1003.4a. U AIX verziji 4, ova politika je definirana kao ekvivalentna RR-u, osim što se primjenjuje na niti s fiksnim prioritetom. Ponovno izračunavanje vrijednosti prioriteta pokrenute niti za svaki prekid znači da nit može izgubiti kontrolu jer je njezina vrijednost prioriteta porasla više od druge niti. Ovo je ponašanje AIX verzije 3.

Niti su prvenstveno od interesa za aplikacije koje se trenutno sastoje od višestrukih asinkronih procesa. Ove aplikacije mogu malo opteretiti sustav ako se pretvore u strukturu s više niti.

AIX 5 implementira sljedeća pravila raspoređivanja: FIFO, kružni postupak i pošteni kružni postupak. Politika FIFO sastoji se od tri različite implementacije: FIFO, FIFO2 i FIFO3. Robin-ova kružna politika se zove SCHED_RR u AIX-u, a pravedna kružna politika se zove SCHED_OTHER.

Linux

Linux 2.4

Brain Fuck Scheduler (BFS), kojeg je također stvorio Kolivas, alternativa je CFS-u.

FreeBSD

FreeBSD koristi višerazinski red povratnih informacija s prioritetima u rasponu 0-255. 0-63 su rezervirani za prekide, 64-127 za gornju polovicu kernela, 128-159 za korisničke niti u stvarnom vremenu, 160-223 za korisničke niti koje dijele vrijeme i 224-255 za neaktivne korisničke niti. Također, kao i Linux, koristi postavku aktivnog reda čekanja, ali ima i čekanje čekanja.

Sve što je opisano u nekoliko prethodnih odjeljaka bilo je više usmjereno na provođenje daljnjih istraživanja problema vlastitog vremena procesa, au znatno manjoj mjeri na praktične primjene. Ispunjavajući ovu prazninu, prikazat ćemo jedan od načina izračunavanja pravog vremena procesa na temelju statističkih podataka o njegovom razvoju.

Razmotrimo jednodimenzionalni proces, čije stanje karakterizira realna varijabla x. Pretpostavimo da se promatranja dinamike procesa provode u astronomskom vremenu t, tako da su t = t k i x = x k, k =1, ..., n fiksni trenuci promatranja i odgovarajuće vrijednosti navodi proces. Postoji mnogo različitih matematičke metode, što nam omogućuje da konstruiramo krivulje koje ili prolaze kroz točke (t k, Xk) ili im "najbolje pristupaju". Ovako dobivene funkcije x = x(t) stvaraju u našoj svijesti dojam da razmatrani proces ovisi o mehaničkom gibanju nebeskih tijela te se stoga njegovo stanje izražava kroz astronomsko vrijeme t. Ovaj bi se zaključak mogao uzeti u obzir; ako se ne bi javljale stalne poteškoće pri pokušaju predviđanja daljnjeg tijeka procesa. Za velik broj različitih procesa koji nisu izravno povezani s mehaničkim gibanjem nebeskih tijela, teorijska predviđanja dobivena pomoću funkcije x = x(t) izvan intervala promatranja počinju značajno odstupati od naknadnih eksperimentalnih podataka. Razlog nesuglasja između teorije i eksperimenta obično pokušavaju objasniti neuspješno odabranom metodom obrade, ali to možda i nije bit stvari.

Svaki proces koji nas zanima događa se u Svemiru. On svakako "osjeća" utjecaj kretanja nebeskih tijela. Međutim, taj se utjecaj može pokazati "nekrutim", neodlučujućim. To se posebice može očitovati u činjenici da u određenim intervalima astronomskog vremena stanje procesa ostaje nepromijenjeno. S tim u vezi, prisjetimo se ranijeg primjera zatvorene prazne sobe, izolirane od vanjskog svijeta. Pustimo samo jednu živu muhu u sobu. Tijekom nekoliko dana promjene stanja sustava “soba-muha” ovisit će o kretanju muhe, jer se promjene stanja u prostoriji ne mogu očekivati. Pritom je teško zamisliti da je ponašanje muhe usko povezano s tijekom astronomskog vremena.

Nakon što smo napravili tako dugu digresiju, prijeđimo na opisivanje algoritma za izračunavanje vlastitog vremena procesa.

U ovom algoritmu kao prirodna mjera vremena odabrana je jedinica za izračunavanje lokalnih maksimuma. Osim toga, uzimaju se u obzir mogući odsječci stacionarnog stanja procesa, na kojima, kao što je ranije navedeno, prestaje teći pravo vrijeme. Budući da se o identičnosti dvaju stanja može govoriti samo u granicama točnosti mjerenja, u nastavku se koristi određeni pozitivni broj e - dopuštena pogreška mjerenja.

Dakle, ulazni podaci za algoritam su prirodni broj n, pozitivni broj 8, nizovi (tk) i (x k), k = 1, ..., n od četiri sekvencijalno izvedena modula.

Modul 1, pomoću podataka p, e, t k), (x k), u općem slučaju, formira nove nizove 7 = (7+ X = (X t) i vrlo specifičan popratni niz P = (?), gdje je 1 = 1, ..., t i t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.

Modul 1 uključuje sljedeće postupke:

p: = 1, t: = 0, k: = 1.

U str. Uvode se 1, 2 brojača s određenim početnim vrijednostima:

U str. 3, 4 vrijednosti brojača se povećavaju za 1.

Provjerite stanje k^n. Ako je dovršeno, idite na korak 6, u suprotnom idite na korak 11.

Provjerite nejednakost x k --x k = e Ako vrijedi, prijeđite na korak 7, inače idite na korak 9.

7. tii = ti - (tkl - tk), i = k1, ..., str.

Ovaj postupak znači da ako se vrijednosti Xk i Xk 1 ne mogu razlikovati unutar pogreške, tada se sve vremenske točke počevši od tk smanjuju za iznos tki-tk.

r = r. Povratak na točku 4.

Tv = tk; X v:=x k ; p = p v = v+l., tj. formiraju se elementi nizova T, X, P i dodjeljuje se sljedeća vrijednost v.

  • 10. Uzmite (t k, ..., t n I (Xk, - X n) kao početne nizove dimenzija n--k 1 + 1 i zatim se vratite na korak 2.
  • 11. Ispišite m, (T), (X,) i (P,), gdje je i = l, ..., t Kraj.

Objasnimo značenje elemenata pratećeg niza P. Iz prethodnog teksta proizlazi da je vrijednost pk jednaka broju onih elemenata niza (xk) koji neposredno slijede i razlikuju se od x pi+ ... +, + za manje od e Također primjećujemo da je pi+ ... +p m = n.

Primjer 1. Zadano je: n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,

  • 27, 30, 32, 33, 34, 35, 36) i (x,)= (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
  • 5, 4, 3), pogledajte sl. 9, a.

Kao rezultat izvođenja modula 1 dobiva se m = 11,

(G) = (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19) = (4, 6, 3, 2, 4, 3, 2, 4,5,4,3)

i(d.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1), vidi sl. 9, b.

Modul 2. Ulazni podaci za njega su prirodni broj m, kao i nizovi (7+ (X L), = 1, ..., m. Ovaj modul u nizu (TJ identificira trenutke vremena [TM a], 1 = 1 m (ml

Primjer 2. Vrijednosti m, (Tʹ) i (X,] posuđene su iz prethodnog primjera. Nakon završetka modula 2, dobivamo ml = 3, m2 = 8, (Š,) = (3, 8, 17 ), (T*) = (3, 4, 6, 8, 11, 12, 15, 17), vidi također sl. 9, b.

Modul 3. Ulazni podaci ml, m2, (TM n), 1 = 1, ..., ml, (G*), /2 = 1, ..., gn2.

Ovaj modul je dizajniran za konstruiranje niza (t(-r) pomoću formule

Gdje je TV 6 [TMp, TMn+i]

Varijabla t je vlastito vrijeme generirano promjenom varijable x. Njegova prirodna mjera je jedinica za izračunavanje lokalnih maksimuma.

Primjer 3. Početni podaci za T 2) su isti kao vrijednosti ml, m2 ITM, au primjeru 2. . Nakon odgovarajućih izračuna dobivamo N = (0; 0,2; 0,6; 1; 1,33; 1,78; 2).

Modul 4. Generira izlaz rezultata uspostavljanjem korespondencije između vrijednosti m i elemenata x iz niza (xk).

Primjer 4. Na temelju podataka iz primjera 2 i 3, dobiva se sljedeći rezultat, vidi sl. 9, u:

t: 0; 0,2; 0,6; 1; 1.33; 1,44;

x: 6; 3; 2; 4; 3T 0 2;

Dakle, razmatrani algoritam nam omogućuje da razvijemo koncept vlastitog vremena procesa na temelju informacija o promjenama u stanju procesa zabilježenih na astronomskoj vremenskoj skali. Sasvim je jasno da možete koristiti druge algoritme, temeljene, na primjer, na izračunavanju niza lokalnih minimuma ili mješovitog niza koji se sastoji od lokalnih maksimuma i minimuma. Prilikom obrade eksperimentalnih podataka vjerojatno bi trebalo testirati različite mogućnosti. Ako je iz nekog razloga eksperimentator odabrao jedno od specifičnih ispravnih vremena i primio nizove (t4 i (xk), tada bi u sljedećoj fazi trebao koristiti neke matematičke metode za aproksimaciju eksperimentalnih točaka (t*, x) nekom aproksimativnom svjetskom linijom procesa x = x(t). Ekstrapolacijom ove crte izvan početnog razdoblja promatranja može dati predviđanja o daljnjem tijeku procesa.

Zanimljivo je spomenuti računalni eksperiment koji je imao za cilj procijeniti izglede korištenja predloženog algoritma. Kao eksperimentalni materijal odabrani su podaci o godišnjim protocima rijeka. Vakhsh (Tadžikistan) prethodnih 40 godina. U istom vremenskom razdoblju prikupljane su informacije o dinamici Wolfovog broja - najčešće korištenog integralnog indeksa Sunčeve aktivnosti. Potonji je bio osnova za razvoj pravog vremena procesa sunčeve aktivnosti. U moderno doba, informacije o riječnim izdacima su se transformirale. Vakhsh, a zatim tijekom razdoblja promatranja dana je teorijska ovisnost protoka vode kao funkcija vlastitog vremena sunčeve aktivnosti. Karakteristična značajka dobivenog grafikona je gotovo periodično ponašanje maksimalnih i minimalnih troškova. Troškovi, međutim, ne ostaju konstantni.

Zamijenjena verzija prethodnog algoritma je algoritam s najkraćim preostalim vremenom izvršenja. Prema ovom algoritmu, planer svaki put odabire proces s najkraćim preostalim vremenom izvršenja. U ovom slučaju također je potrebno unaprijed znati vrijeme završetka zadatka. Kada stigne novi zadatak, njegovo ukupno vrijeme izvršenja se uspoređuje s preostalim vremenom izvršenja trenutnog zadatka. Ako je vrijeme izvršenja novog zadatka kraće, trenutni proces se obustavlja i kontrola se prenosi na novi zadatak. Ova shema omogućuje brzo servisiranje kratkih zahtjeva.

Troetažno planiranje

Sustavi skupne obrade omogućuju raspoređivanje na tri razine, kao što je prikazano na slici. Kako novi zadaci stižu u sustav, prvo se stavljaju u red čekanja pohranjen na disku. Ulaz planer pristupa odabire zadatak i prenosi ga u sustav. Preostali zadaci ostaju u redu čekanja.

Čim posao uđe u sustav, za njega će se kreirati odgovarajući proces i on se odmah može početi natjecati za pristup procesoru. Međutim, moguće je da postoji previše procesa i da svi ne stanu u memoriju, a onda će neki od njih biti prebačeni na disk. Druga razina rasporeda određuje koji se procesi mogu pohraniti u memoriju, a koji se mogu pohraniti na disk. Ovo je ono što on radi planer memorije .

Planer memorije povremeno pregledava procese na disku kako bi odlučio koje će premjestiti u memoriju. Među kriterijima koje koristi planer su sljedeći:

1. Koliko je prošlo otkako je proces prebačen na disk ili učitan s diska?

2. Koliko dugo proces koristi CPU?

3. Kolika je veličina procesa (mali procesi ne smetaju)?

4. Koja je važnost procesa?

Treća razina raspoređivanja odgovorna je za dopuštanje procesima u stanju spremnosti da pristupe procesoru. Kada govorimo o "planeru", obično mislimo CPU planer . Ovaj planer koristi bilo koji algoritam prikladan za situaciju, sa i bez prekida. Neke od ovih algoritama smo već pogledali, a s drugima ćemo se upoznati kasnije.

Planiranje u interaktivnim sustavima.

Cikličko planiranje.

Jedan od najstarijih, najjednostavnijih, najpravednijih i najčešće korištenih je algoritam cikličkog raspoređivanja. Svaki proces dobiva određenu količinu procesorskog vremena, takozvani vremenski odsječak. Ako proces još uvijek radi na kraju vremenskog odsječka, on se prekida i kontrola se prenosi na drugi proces. Naravno, ako se proces blokira ili rano prekine, u ovoj se točki događa prijelaz kontrole. Implementacija kružnog rasporeda je jednostavna. Planer treba samo održavati popis procesa u stanju spremnosti. Kada proces dosegne svoje vremensko ograničenje, šalje se na kraj popisa.

Jedini zanimljiv aspekt ovog algoritma je duljina kvanta. Prebacivanje s jednog procesa na drugi traje neko vrijeme - potrebno je spremiti i učitati registre i memorijske mape, ažurirati tablice i popise, spremiti i ponovno učitati predmemoriju memorije itd. Zaključak se može formulirati na sljedeći način: premali kvantum će dovesti do čestih promjena procesa i male učinkovitosti, ali prevelikog kvantuma može rezultirati sporim odgovorom na kratke interaktivne zahtjeve. Kvantna vrijednost od oko 2 0 -5 0 ms često je razuman kompromis.

Prioritetno planiranje.

Round robin raspoređivanje ima važnu pretpostavku da su svi procesi jednaki. U situaciji kada je računalo s velikim brojem korisnika to možda i nije slučaj. Na primjer, na fakultetu bi prvo trebali poslužiti dekani, zatim profesori, tajnici, čistačice, pa tek onda studenti. Potreba uzimanja u obzir takvih vanjskih čimbenika dovodi do prioritetnog planiranja. Osnovna ideja je jednostavna: svakom procesu se dodjeljuje prioritet, a kontrola se prenosi na spreman proces s najvećim prioritetom.

Nekoliko redova čekanja.

Jedan od prvih planera prioriteta implementiran je u sustav CTSS (kompatibilni vremenski podijeljeni sustav) bio je taj što je prebacivanje procesa bilo presporo, budući da je računalo IBM 7094 moglo držati samo jedan proces u memoriji. Svaki prekidač je značio rasterećenje trenutnog procesa na disk

i čitanje novog procesa s diska. Razvojni programeri CTSS-a brzo su shvatili da bi učinkovitost bila veća ako bi se procesorski ograničenim procesima dao veći vremenski odsječak nego kad bi im se dali mali vremenski odsječci, ali često. S jedne strane, to će smanjiti broj prijenosa iz memorije na disk, as druge strane, to će dovesti do pogoršanja vremena odziva, kao što smo već vidjeli.

Kao rezultat, razvijeno je rješenje s prioritetnim klasama. Procesima u klasi najvišeg prioriteta dodijeljen je jedan kvant, procesima u sljedećoj klasi dodijeljena su dva kvantuma, procesima u sljedećoj klasi dodijeljena su četiri kvantuma itd. Kada je proces potrošio sve svoje dodijeljeno vrijeme, premješten je na niži kvantum. razreda.

Kao primjer, razmotrite proces koji treba izračunati više od 100 kvanta. Prvo će mu se dati jedan kvantum, a zatim će se pumpati na disk. Sljedeći put dobije 2 kvanta, zatim 4, 8,16, 32, 64, iako od 64 koristi samo 37. U ovom slučaju će biti potrebno samo 7 prijenosa (uključujući početno opterećenje) umjesto 100, što bi bilo potreban korištenjem kružnog algoritma. Osim toga, kako proces ulazi dublje u red čekanja prioriteta, pokretat će se sve rjeđe, dajući procesoru kraće procese.

“Najkraći proces je sljedeći”

Budući da algoritam Najkraći zadatak prvo minimizira prosječno vrijeme obrade u sustavima skupne obrade, željeli bismo ga koristiti iu interaktivnim sustavima. Do određene mjere to je moguće. Interaktivni procesi najčešće slijede obrazac “čekanje naredbe, izvršavanje naredbe, čekanje naredbe, izvršavanje naredbe...” Ako izvršavanje svake naredbe tretirate kao zaseban zadatak, možete minimizirati ukupni prosječni odgovor vremena tako što ćete prvo pokrenuti najkraći zadatak. Jedini problem je

je razumjeti koji je od procesa čekanja najkraći.

Jedna se metoda temelji na procjeni trajanja procesa na temelju prethodnog ponašanja procesa. U tom slučaju pokreće se proces s najkraćim procijenjenim vremenom. Pretpostavimo da je očekivano vrijeme izvršenja naredbe T 0, a očekivano vrijeme sljedećeg izvođenja je T 1 . Moguće je poboljšati procjenu vremena uzimanjem ponderiranog zbroja tih vremena aT 0 + (1 - a)T 1 . Odabirom odgovarajuće vrijednosti za a, možemo učiniti da algoritam procjene brzo zaboravi na prethodna izvođenja ili, obrnuto, pamti ih na duže vrijeme. Uzimajući a = 1/2, dobivamo niz procjena:

T 0, T 0/2 + T 1/2, T 0/4 + T 1/4 + T 2/2, T 0/8 + T 1/8 + T 2/4 + T 3/2.

Nakon tri izvođenja, težina T 0 u procjeni smanjit će se na 1/8.

Metoda procjene sljedeće vrijednosti u nizu pomoću ponderiranog prosjeka prethodne vrijednosti i prethodne procjene često se naziva starenje. Ova metoda je primjenjiva u mnogim situacijama gdje je potrebna procjena iz prethodnih vrijednosti. Najlakši način za implementaciju starenja je na a = 1/2. Na svakom koraku samo trebate

dodajte novu vrijednost trenutnoj procjeni i podijelite zbroj na pola (pomaknuvši udesno za 1 bit).

Zajamčeno planiranje.

Temeljno drugačiji pristup planiranju je dati stvarna obećanja korisnicima i zatim ih ispuniti. Evo jednog obećanja koje je lako izgovoriti i lako održati: ako dijelite procesor s n korisnika, dobit ćete 1/n snage procesora.

A u sustavu s jednim korisnikom i n procesora koji rade, svaki će dobiti 1/n procesorskih ciklusa.

Kako bi ispunio ovo obećanje, sustav mora pratiti raspodjelu CPU-a između procesa od trenutka kada je svaki proces kreiran. Sustav tada izračunava količinu CPU resursa na koje proces ima pravo, kao što je vrijeme od stvaranja podijeljeno s n. Sada možemo izračunati omjer vremena danog procesu i vremena na koje ima pravo. Dobivena vrijednost od 0,5 znači da je proces primio samo polovicu dodijeljene količine, a 2,0 znači da je proces primio dvostruko više nego što je trebao. Zatim se pokreće proces s najmanjim omjerom, sve dok

neće postati veći od onog svog najbližeg susjeda.

Planiranje lutrije.

Algoritam se temelji na raspodjeli srećki procesima za pristup različitim resursima, uključujući i procesor. Kada planer treba donijeti odluku, srećka se odabire slučajnim odabirom i njezin vlasnik dobiva pristup resursu. Što se tiče pristupa CPU-u, "lutrija" se može dogoditi 50 puta u sekundi, a pobjednik dobiva 20 ms CPU vremena.

Važnijim procesima mogu se dati dodatne karte kako bi se povećala vjerojatnost dobitka. Ako postoji samo 100 ulaznica, a njih 20 je u jednom procesu, tada će dobiti 20% vremena procesora. Za razliku od rasporeda prioriteta, u kojem je vrlo teško procijeniti što znači, recimo, prioritet 40, u rasporedu lutrije sve je očito. Svaki proces će dobiti postotak resursa približno jednak postotku ulaznica koje ima.

Planiranje lutrije ima nekoliko zanimljivih svojstava. Na primjer, ako tijekom stvaranja proces primi nekoliko ulaznica, tada su u sljedećoj lutriji njegove šanse za dobitak proporcionalne broju ulaznica.

Komunikacijski procesi mogu razmijeniti karte ako je potrebno. Dakle, ako proces klijenta pošalje poruku procesu poslužitelja i zatim blokira, može proslijediti sve svoje ulaznice procesu poslužitelja kako bi se povećala mogućnost pokretanja poslužitelja. Kada proces poslužitelja završi, može vratiti sve ulaznice.

Pošteno planiranje.

Do sada smo pretpostavljali da se svaki proces kontrolira neovisno o tome tko je njegov vlasnik. Stoga, ako korisnik 1 kreira 9 procesa, a korisnik 2 - 1 proces, tada korištenjem kružnog raspoređivanja ili u slučaju jednakih prioriteta, korisnik 1 će dobiti 90% procesora, a korisnik 2 samo 10.

Kako bi se izbjegle takve situacije, neki sustavi obraćaju pozornost na vlasnika procesa prije zakazivanja. U ovom modelu svaki korisnik dobiva određeni udio u procesoru, a raspoređivač prema toj činjenici odabire proces. Ako je u našem primjeru svaki korisnik imao

obećao 50% procesora, onda će dobiti 50% procesora, bez obzira na broj procesa.

Planiranje u sustavima realnog vremena.

U sustavima stvarnog vremena, vrijeme igra bitnu ulogu. Najčešće jedan ili više vanjskih fizičkih uređaja generiraju ulazne signale, a računalo mora na njih adekvatno odgovoriti u zadanom vremenskom razdoblju.

Sustavi u stvarnom vremenu dijele se na hard real-time sustavi , što znači prisutnost strogih rokova za svaki zadatak (moraju se ispuniti), i fleksibilni sustavi u stvarnom vremenu , u kojem je kršenje vremenskog rasporeda nepoželjno, ali prihvatljivo. U oba slučaja program je podijeljen u nekoliko procesa od kojih je svaki predvidljiv. Ti su procesi najčešće kratki i završe svoj posao unutar sekunde. Kada se pojavi vanjski signal, na rasporedu je da osigura da se raspored održava.

Vanjske događaje na koje sustav mora odgovoriti možemo podijeliti na periodički(događaju se u pravilnim intervalima) i neperiodičan(događa se nepredvidivo). Može postojati nekoliko periodičnih tokova događaja koje sustav mora obraditi. Ovisno o vremenu potrebnom za obradu svakog događaja, sustav možda neće moći obraditi sve događaje na vrijeme.


Povezane informacije.