Proces izračunavanja preostalog vremena. Planiranje (računanje). Tehnički direktor Centra za inovativne tehnologije i rješenja "Jet Infosystems"


Sve što je opisano u prethodnih nekoliko odjeljaka bilo je više usmjereno na daljnje istraživanje problema intrinzičnog vremena procesa, a u znatno manjoj mjeri na praktične primjene. Kako bismo popunili ovu prazninu, ocrtajmo jedan od načina izračunavanja pravog vremena procesa na temelju statističkih podataka o njegovoj evoluciji.

Razmotrimo jednodimenzionalni proces čije stanje karakterizira realna varijabla x. Pretpostavimo da se promatranja dinamike procesa vrše u astronomskom vremenu t, tako da su t = t k i x = x k, k = 1, ..., n fiksni momenti promatranja i odgovarajuće vrijednosti stanja procesa. Postoji mnogo različitih matematičkih metoda koje omogućuju konstruiranje krivulja koje ili prolaze kroz točke (t k, Xk), ili im se približavaju na "najbolji način". Rezultirajuće funkcije x = x (t) stvaraju, u našem umu, dojam da proces koji se razmatra ovisi o mehaničkom gibanju nebeskih tijela i stoga se njegovo stanje izražava kroz astronomsko vrijeme t. S takvim se zaključkom moglo računati; ako nije bilo stalnih poteškoća u pokušaju predviđanja daljnjeg tijeka procesa. Za veliki 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 nesklada između teorije i eksperimenta obično se pokušava objasniti neuspješno odabranom metodom obrade, ali bit stvari možda nije u tome.

Svaki proces koji nas zanima odvija se u Svemiru. On, naravno, "osjeća" utjecaj kretanja nebeskih tijela. Međutim, ovaj utjecaj može biti „nekrut“, nedeterministički. To se posebno može očitovati u činjenici da u određenim intervalima tijeka astronomskog vremena stanje procesa ostaje nepromijenjeno. Prisjetimo se s tim u vezi prethodnog primjera sa zatvorenom praznom prostorijom izoliranom od vanjskog svijeta. Pustimo samo jednog živog da uleti u sobu. U roku od nekoliko dana promjene stanja sustava kućna muha ovisit će o kretanju muhe, budući da se promjene u stanju kućice ne mogu očekivati. Pritom je teško zamisliti da je ponašanje muhe čvrsto povezano s tijekom astronomskog vremena.

Nakon tako duge digresije, prijeđimo na opis algoritma za izračunavanje ispravnog vremena procesa.

U ovom se algoritmu kao prirodna mjera vremena bira jedinica za izračun lokalnih maksimuma. Osim toga, uzimaju se u obzir mogući dijelovi stacionarnog stanja procesa, u kojima, kao što je ranije navedeno, vlastito vrijeme zaustavlja. Budući da se o istovjetnosti dvaju stanja može govoriti samo u granicama točnosti mjerenja, onda se u budućnosti koristi neki pozitivni broj e - dopuštena mjerna pogreška.

Dakle, ulazni podaci za algoritam su prirodni broj n, pozitivan broj 8, nizovi (tk) i (xk), k = 1, ..., n. Radi praktičnosti programiranja, algoritam je prikazan u obliku četiri uzastopno izvršavana modula.

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

Modul 1 uključuje sljedeće postupke:

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

U p.p. 1, 2, uvedeni su brojači s određenim početnim vrijednostima:

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

Provjerite uvjet k ^ n. Ako je zadovoljan, idite na točku 6, u suprotnom idite na točku 11.

Provjerite nejednakost x k --x k = e. Ako vrijedi, prijeđite na točku 7, u suprotnom idite na stavku 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 sva vremena, počevši od tk, smanjuju za iznos tki-tk.

p = str. Povratak na stavku 4.

Tv = t k; 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 dimenzije n - k 1 + 1 i zatim se vratite na stavku 2.
  • 11. Ispišite m, (T), (X,) i (P,), gdje je i = l, ..., m. Kraj.

Objasnimo značenje elemenata pratećeg niza P. Iz prethodnog teksta proizlazi da je vrijednost pk jednaka broju onih elemenata niza (xk) koji slijede odmah, a razlikuju se od x pi + . .. +, +, za manje od e. Također imajte na umu da je pi + ... + pm = n.

Primjer 1. Zadano: 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), vidi sl. 9, a.

Kao rezultat modula 1, dobivamo m = 11,

(G) = (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19); (X,) = (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+ (XL), = 1, ..., t. Ovaj modul u nizu (TJ otkriva trenutke vremena [TM a], 1 = 1 m (ml

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

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

Ovaj modul je dizajniran za izgradnju niza (m (-g) po formuli

Gdje je TV 6 [TMp, TMn + i]

Varijabla m je vlastito vrijeme generirano promjenom varijable x. Njegova prirodna mjera je jedinica lokalnog maksimuma.

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

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

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

t: 0; 0,2; 0,6; jedan; 1,33; 1,44;

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

Dakle, razmatrani algoritam omogućuje razvoj koncepta pravog vremena procesa na temelju podataka o promjeni stanja 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. U obradi eksperimentalnih podataka vjerojatno biste trebali isprobati različite opcije. Ako se iz nekog razloga eksperimentator odlučio za jedno od specifičnih pravih vremena i istovremeno primio nizove (m4 i (xk), tada bi u sljedećoj fazi trebao koristiti neke matematičke metode da aproksimira eksperimentalne točke (m *, x ) neka približna svjetska linija procesa x = x (t) Ekstrapolirajući ovu liniju izvan početnog intervala promatranja, može predvidjeti daljnji tijek procesa.

Zanimljivo je spomenuti računski eksperiment namijenjen procjeni mogućnosti korištenja predloženog algoritma. Kao eksperimentalni materijal odabrani su podaci o godišnjim otjecanjima rijeke. Vakhsh (Tadžikistan) za 40 prethodnih godina. Za isto vremensko razdoblje uzete su informacije o dinamici Wolfovog broja – najčešće korištenog integralnog indeksa sunčeve aktivnosti. Potonje je uzeto kao osnova za razvoj pravog vremena procesa sunčeve aktivnosti. Do novog vremena, informacije o troškovima rijeke su se transformirale. Vakhsh, a zatim, tijekom razdoblja promatranja, data je teorijska ovisnost brzine protoka vode u funkciji pravog vremena sunčeve aktivnosti. Karakteristična značajka rezultirajućeg rasporeda je gotovo periodično ponašanje maksimalnih i minimalnih troškova. Troškovi, međutim, ne ostaju konstantni.

Prebacivanje verzije prethodnog algoritma je algoritam s najmanje preostalog vremena. U skladu s ovim algoritmom, planer svaki put odabire proces s najmanje preostalim vremenom izvršenja. U tom slučaju također je potrebno unaprijed znati vrijeme izvršenja zadataka. Kada stigne novi zadatak, njegovo ukupno vrijeme izvršenja uspoređuje se 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 vam omogućuje brzo posluživanje kratkih zahtjeva.

Troslojno planiranje

Batch sustavi omogućuju implementaciju troslojnog planiranja, kao što je prikazano na slici. Kako novi zadaci ulaze u sustav, prvo se stavljaju u red čekanja pohranjen na disku. Ulaz planer pristupa odabire posao i prenosi ga u sustav. Ostali zadaci ostaju u redu.

Čim zadatak uđe u sustav, za njega će se kreirati odgovarajući proces koji odmah može ući u borbu za pristup procesoru. Ipak, moguća je situacija kada ima previše procesa i svi ne stanu u memoriju, a onda će neki od njih biti prebačeni na disk. Druga razina raspoređivanja određuje koji se procesi mogu pohraniti u memoriju, a koji na disk. Ovo je gotovo planer memorije .

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

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

2. Koliko dugo proces koristi procesor?

3. Kolika je veličina procesa (mali procesi se ne miješaju)?

4. Koliko je važan proces?

Treća razina planiranja odgovorna je za pristup procesoru za procese koji su u stanju pripravnosti. Kad se priča o "planeru", obično je tako procesorski planer ... Ovaj planer koristi bilo koji algoritam prikladan situaciji, sa ili bez prekida. Već smo razmotrili neke od ovih algoritama, a s drugima ćemo se upoznati.

Planiranje u interaktivnim sustavima.

Ciklično planiranje.

Jedan od najstarijih, najjednostavnijih, poštenih i najčešće korištenih algoritama je kružni algoritam raspoređivanja. Svaki proces dobiva određeni vremenski interval procesora, takozvani vremenski odsječak. Ako se proces još uvijek izvodi na kraju vremenskog odsječka, prekida se i kontrola se prenosi na drugi proces. Naravno, ako se proces blokira ili prerano završi, u tom trenutku dolazi do kontrolnog prijelaza. Provedba kružnog rasporeda je jednostavna. Planer samo treba držati spreman popis procesa. Kada proces dosegne svoje vremensko ograničenje, šalje se na kraj popisa.

Jedina zanimljiva točka ovog algoritma je kvantna duljina. Prebacivanje s jednog procesa na drugi traje neko vrijeme - trebate spremati i učitavati registre i memorijske kartice, ažurirati tablice i popise, spremati i ponovno učitavati memorijsku predmemoriju itd. učinkovitost, ali prevelika količina može rezultirati sporim odgovorom na kratke interaktivne upite. Kvantna vrijednost od oko 2 0 -5 0 ms često je razuman kompromis.

Planiranje prioriteta.

U algoritmu cikličkog raspoređivanja, postoji važna pretpostavka da su svi procesi jednaki. U računalnoj situaciji s velikim brojem korisnika to možda nije slučaj. Recimo, na fakultetu prije svega treba služiti dekane, zatim profesore, tajnice, čistačice, pa tek onda studente. Potreba da se uzmu u obzir takvi vanjski čimbenici vodi do prioritetnog planiranja. Osnovna ideja je jednostavna: svakom procesu dodjeljuje se prioritet, a kontrola se prenosi na proces spreman za pokretanje s najvišim prioritetom.

Nekoliko redova.

Jedan od prvih prioritetnih planera implementiran je u kompatibilnom sustavu dijeljenog vremena (CTSS), a glavni problem CTSS sustava bio je presporo prebacivanje procesa, jer je u memoriji računala IBM 7094 postojao samo jedan proces. Svaki prekidač značio je izbacivanje trenutnog procesa na disk

i čitanje novog procesa s diska. Programeri CTSS-a brzo su shvatili da bi učinkovitost bila bolja da se procesima, ograničenim kapacitetom procesora, dodijeli veći dio vremena nego da im se daju male rezove, ali često. S jedne strane, to će smanjiti broj swapova s ​​memorije na disk, a s druge će dovesti do pogoršanja vremena odziva, kao što smo već vidjeli.

Kao rezultat, razvijeno je rješenje s prioritetnim klasama. Procesima klase s najvećim prioritetom dodijeljen je jedan kvant, procesima sljedeće klase - dva kvanta, sljedećem - četiri kvanta i tako dalje. Kada je proces potrošio svo vrijeme koje mu je dodijeljeno, prešao je u niža klasa.

Kao primjer, razmotrite proces koji treba izvesti izračune preko 100 kvanta. Prvo će mu se dati jedan kvant, a zatim će se pumpati na disk. Sljedeći put će dobiti 2 quanta, zatim 4, 8,16, 32, 64, iako koristi samo 37 od 64. U ovom slučaju trebat će mu samo 7 prijenosa (uključujući početno preuzimanje) umjesto 100, što bi biti potrebno korištenjem cikličkog algoritma. Osim toga, kako uronite u red čekanja prioriteta, proces će sve rjeđe pokretati, prepuštajući procesor kraćim procesima.

"Najkraći proces je sljedeći"

Budući da algoritam Najkraći zadatak minimizira prosječno vrijeme obrta u sustavima skupne obrade, željeli bismo ga koristiti i u interaktivnim sustavima. U određenoj mjeri to je moguće. Interaktivni procesi najčešće slijede obrazac "čekanje naredbe, izvršavanje naredbe, čekanje naredbe, izvršavanje naredbe..." Uzimajući u obzir izvršenje svake naredbe kao zaseban zadatak, ukupno prosječno vrijeme odgovora možete minimizirati tako da najprije započevši najkraći zadatak. Jedini problem je

u otkrivanju koji je od neriješenih procesa najkraći.

Jedna od metoda temelji se na procjeni duljine procesa na temelju prethodnog ponašanja procesa. Time započinje proces s najkraćim procijenjenim vremenom. Pretpostavimo da je procijenjeno vrijeme izvršenja naredbe T 0, a procijenjeno vrijeme sljedećeg lansiranja T 1. Možete poboljšati procjenu vremena uzimajući ponderirani zbroj tih vremena na T 0 + (1 - a) T 1. Odabirom odgovarajuće vrijednosti za a, možemo učiniti da algoritam procjene brzo zaboravi na prethodna lansiranja ili, obrnuto, dugo ih pamti. 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 lansiranja, težina T 0 u procjeni će se smanjiti na 1/8.

Metoda procjene sljedeće vrijednosti u nizu kroz ponderirani prosjek prethodne vrijednosti i prethodne procjene često se naziva starenjem. Ova metoda je primjenjiva u mnogim situacijama kada je potrebna procjena iz prethodnih vrijednosti. Najlakši način za ostvarenje starenja je na a = 1/2. Na svakom koraku samo trebate

dodajte novu vrijednost trenutnoj procjeni i prepolovite zbroj (pomicanjem 1 bita udesno).

Zajamčeno planiranje.

Temeljno drugačiji pristup planiranju je davanje stvarnih obećanja korisnicima, a zatim njihovo ispunjenje. Evo jednog obećanja koje je lako dati i lako ispuniti: ako n korisnika dijeli procesor s vama, dobit ćete 1/n procesorske snage.

A na sustavu s jednim korisnikom i n pokrenutih procesora, svaki će dobiti 1/n ciklusa procesora.

Da bi ispunio ovo obećanje, sustav mora pratiti dodjelu CPU-a između procesa od trenutka kada je svaki proces kreiran. Sustav zatim izračunava količinu procesorskih resursa na koje proces ima pravo, kao što je vrijeme od kreiranja podijeljeno s n. Sada možete izračunati omjer vremena danog procesu i vremena na koje ima pravo. Rezultirajuća vrijednost 0,5 znači da je procesu dodijeljena samo polovica onoga što je trebalo biti, a 2,0 znači da je proces dobio dvostruko više nego što je trebao. Zatim se proces započinje s najmanjim omjerom do

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

Planiranje lutrije.

Algoritam se temelji na distribuciji lutrijskih listića procesima za pristup različitim resursima, uključujući procesor. Kada planer treba donijeti odluku, lutrija se odabire nasumično, a 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 pobjede. Ako je samo 100 ulaznica i njih 20 u jednom procesu, tada će dobiti 20% vremena procesora. Za razliku od planera prioriteta, gdje je vrlo teško procijeniti što znači, recimo, prioritet 40, u planiranju lutrije sve je očito. Svaki proces će dobiti postotak resursa koji je otprilike jednak postotku ulaznica koje ima.

Planiranje lutrije ima nekoliko zanimljivih svojstava. Na primjer, ako proces dobije nekoliko listića tijekom kreiranja, tada su u sljedećoj lutriji njegove šanse za dobitak proporcionalne broju listića.

Interakcioni procesi mogu razmjenjivati ​​karte prema potrebi. Dakle, ako klijentski proces pošalje poruku poslužiteljskom procesu, a zatim blokira, može proslijediti sve svoje karte poslužiteljskom procesu kako bi povećao mogućnost pokretanja poslužitelja. Kada proces poslužitelja izađe, može vratiti sve ulaznice.

Pošteno planiranje.

Do sada smo pretpostavljali da se svaki proces kontrolira bez obzira tko je gazda. Stoga, ako korisnik 1 kreira 9 procesa, a korisnik 2 kreira 1 proces, tada će korištenjem cikličkog rasporeda ili u slučaju jednakih prioriteta korisnik 1 dobiti 90% procesora, a korisnik 2 samo 10.

Kako bi izbjegli takve situacije, neki sustavi obraćaju pažnju na vlasnika procesa prije zakazivanja. U ovom modelu svaki korisnik dobiva dio procesora, a planer bira proces u skladu s tom činjenicom. Ako je u našem primjeru svaki od korisnika imao

Obećano je 50% procesora, onda će dobiti 50% procesora, bez obzira na broj procesa.

Planiranje u sustavima u stvarnom vremenu.

Vrijeme igra bitnu ulogu u sustavima u stvarnom vremenu. Najčešće jedan ili više vanjskih fizičkih uređaja generira ulazne signale, a računalo mora na njih adekvatno odgovoriti unutar zadanog vremenskog razdoblja.

Sustavi u stvarnom vremenu dijele se na tvrdi sustavi u stvarnom vremenu , što znači da za svaki zadatak postoje kratki rokovi (moraju se ispuniti), i fleksibilni sustavi u stvarnom vremenu u kojima su kršenja vremenskog rasporeda nepoželjna, ali prihvatljiva. U oba slučaja program je podijeljen u nekoliko procesa od kojih je svaki predvidljiv. Ovi procesi su najčešće kratki i završavaju svoj posao u roku od jedne sekunde. Kada se pojavi vanjski signal, na planeru je da osigura da se raspored poštuje.

Vanjske događaje na koje sustav mora reagirati možemo podijeliti na periodično(pojavljuje se u redovitim intervalima) i neperiodični(nastaje nepredvidivo). Može postojati nekoliko periodičnih tokova događaja koje sustav mora obraditi. Ovisno o vremenu utrošenom na obradu svakog od događaja, sustav možda neće moći obraditi sve događaje na vrijeme.


Slične informacije.


Često se programeri, osobito oni neiskusni, izgube kada se od njih traži da odrede rokove za zadatke. Međutim, sposobnost planiranja je vrlo korisna i neophodna vještina koja pomaže ne samo u poslu, već i u životu. Odlučili smo pitati stručnjake kako naučiti kako 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 izvršenja zadatka:

  1. Iskustvo u obavljanju ovakvih zadataka i radu s ovim tehnološkim skupom. Ako morate učiniti nešto bitno novo, morate biti posebno oprezni s procjenom.
  2. Iskustvo s ovim klijentom. Poznavajući kupca, možete okvirno predvidjeti neke dodatne zahtjeve i količinu uređivanja.
  3. Kvaliteta koda za rad. To je najutjecajniji čimbenik, zbog kojeg sve može biti jako odgođeno i općenito ići ne po planu. Ako projekt ima testove, svugdje 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 prezasićenim implicitnim ovisnostima. Stvari kao što su "čarobne funkcije" (kada je iz koda teško vidjeti konačni stog poziva) i dupliciranje koda (kada trebate urediti nekoliko neovisnih odjeljaka da biste promijenili bilo koju funkcionalnost) također mogu zakomplicirati stvari.

Da biste naučili kako pravilno procijeniti vrijeme rada, morate stalno vježbati. Na početku svog rada radio sam upravo ovo: procijenio sam vrijeme za dovršetak svakog nadolazećeg zadatka, čak i ako to nitko nije zahtijevao, a zatim sam promatrao koliko točno uspijevam ući u svoju procjenu. U procesu dovršavanja zadatka primijetio sam za koje radnje je potrebno više vremena. Ako je nešto uvelike povećalo termin, zapamtio je ovaj trenutak i uzeo ga u obzir u sljedećim procjenama.

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

Također je korisno analizirati razloge propuštenih rokova nakon svakog većeg kršenja roka. Ako nemate dovoljno kvalifikacija, morate poraditi na svojim slabim točkama. Ako je problem organizacijski - razumjeti što je spriječilo normalan rad.

Promicati niže

, Tehnički direktor Centra za inovativne tehnologije i rješenja "Jet Infosystems"

Veliki broj članaka posvećen je metodama za procjenu složenosti projekta, uključujući trajanje rada i pojedinačne zadatke. Međutim, do sada je to bio uzrok sukoba kako unutar projektnog tima tako i u komunikaciji s naručiteljem.

Glavni pomoćnik u ocjenjivanju je iskustvo. Pokušajte nekako povezati novi zadatak s već obavljenim. Ako sastavljate izvješće, pogledajte koliko je dugo trajalo slično izvješće u prošlosti. Ako radite nešto novo, pokušajte se rastaviti na poznate dijelove i cijeniti ih. Ako je zadatak potpuno nov, odvojite malo vremena za učenje (još bolje - ovaj put uskladite s osobom koja postavlja zadatak).

Obratite pozornost na popratne faze - ako trebate razviti uslugu, tada u ocjenu treba uključiti i testiranje jedinica (a možda ne samo jedinice), priprema testnih podataka će potrajati određeno vrijeme. Razmislite o integraciji s drugim uslugama i tako dalje. Odvojite vrijeme da popravite greške koje pronađete sami ili uz pomoć testera. Puno se vremena može izgubiti na “nevidljive” zadatke. Na primjer, postoji procjena za razvoj i postoji procjena za testiranje, ali prijenos artefakta na testiranje može se povezati s postavljanjem štandova. Stoga je važno mentalno zamisliti cijeli proces kako ništa ne biste propustili.

Nakon utvrđivanja intenziteta rada potrebno je u kalendar uključiti nova radna mjesta, ne zaboravljajući na druge zadatke i aktivnosti koje se odvijaju paralelno.

I ne zaboravite da su planovi beskorisni, ali planiranje je neprocjenjivo. Naučite prilagođavati planove na vrijeme, zainteresirati sve i pravovremeno eskalirati kako propušteni rokovi nikoga ne bi iznenadili.

Promicati niže

Pitanje na koje se ne može kratko odgovoriti. Da je lako, onda ne bi bilo problema propuštanja rokova.

Kako bi rokovi razvoja bili predvidljiviji, prvo morate razumjeti razloge zašto programeri neprestano griješe.

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

Da se poslužimo jednostavnom analogijom, 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 duljine 20 metara. Ako ste kopali prije, vaša procjena radnog vremena bit će puno bliža stvarnom trajanju posla.

Drugi razlog je taj što su programeri inherentno optimistični. Odnosno, s obzirom na zadatak, odabirom opcije implementacije za njega, procjenom poboljšanja, programer očekuje da će sve raditi kako on očekuje. I ne razmišlja o problemima koje će susresti na putu. Često ih ne može predvidjeti. Na primjer, postoji zadatak koji programer može izvršiti pomoću softverske biblioteke otvorenog koda treće strane. U fazi procjene pronašao ju je na internetu, pročitao njen opis – odgovara mu. I čak je ispravno procijenio obim svog rada koji će ugraditi u korištenje ove knjižnice. Ali uopće nije predvidio da će doći do greške u okruženju njegovog softverskog proizvoda u ovoj biblioteci.

Programer će morati ne samo ugraditi korištenje knjižnice u svoj kod, već i popraviti pogrešku u samoj knjižnici. I često programer ne daje vrijeme da ispravi svoje pogreške. Kao što statistika pokazuje, testiranje i ispravljanje pogrešaka može potrajati oko 50% vremena utrošenog na kodiranje. Brojka ovisi o kvalifikacijama programera, okruženju, korištenim razvojnim praksama (na primjer, jedinični testovi značajno skraćuju ovo vrijeme i ukupno trajanje/radni intenzitet razvojnog zadatka ispada manjim).

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

Treći razlog su nepredviđeni zahtjevi. Nijedno od područja proizvodnje materijala s kojima kupci vole uspoređivati ​​razvoj softvera nema toliki niz novih zahtjeva. Zamislite prolazak bagera koji je iskopao 19 metara od 20 i čuo od kupca želju da jarak ne ide ravno, već poput zmije s ramenom dužinom od 97 centimetara.

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

Najlakši način da svoja očekivanja približite stvarnosti jest upotrijebiti duhovito pravilo "Pi". Nakon što ste dobili procjenu od programera (u smislu vremena ili intenziteta rada), morate je pomnožiti s brojem Pi (= 3,14159). Što je programer iskusniji napravio procjenu, taj koeficijent može biti niži.

Imperativ je vježbati razlaganje izvornog problema na male probleme veličine ne više od 4 sata. Što je dekompozicija detaljnija, to su veće šanse da će procjena biti bliska stvarnom uloženom trudu / trajanju.
Ako se vratimo na dodjelu pričuve – ovo vrijeme treba izdvojiti na kraju projekta. Loša je praksa napraviti pričuvu i uključiti je za svaki zadatak. Parkinsonov zakon "Rad ispunjava sve vrijeme koje mu je dodijeljeno" provodi se rigorozno.

Ako sažeti kratki "ukupno", tada će vam za ispravno određivanje vremena rada biti korisne sljedeće radnje:

  • izvršiti dekompoziciju rada, razbiti zadatak na što detaljnije korake;
  • izrada prototipa;
  • ograničiti provedbu prethodno nepredviđenih zahtjeva. To ne znači da ih nije potrebno raditi, ali je preporučljivo istaknuti te zahtjeve i dogovoriti se s naručiteljem za promjenu vremena i troškova za njihovu provedbu;
  • uzeti u obzir vrijeme za stabilizaciju otopine;
  • koristiti prakse za poboljšanje kvalitete koda, na primjer, pisanje jediničnih testova;
  • položiti opću pričuvu.

Pa, i zapamtite da ako činjenica premašuje vašu procjenu za 30%, onda je ovo vrlo dobar rezultat.

Promicati niže

Za najtočniju procjenu potrebno vam je iskustvo u stvarnom razvoju i to u određenom području. Ali postoje opća pravila koja će pomoći da se izbjegnu pogreške u planiranju i problemi pri predaji posla kupcu. Ova pravila bih opisao na sljedeći način.

Prvo morate razumjeti zadatak. Čini se da je to očito i da se ne odnosi izravno na procjenu vremena, ali zapravo je ključna točka. Čak i kod ozbiljnih velikih projekata, jedan od glavnih čimbenika neuspjeha i kašnjenja je problem u definiranju zahtjeva. Za programere početnike, nažalost, ovo je ozbiljan problem - oni ne čitaju TOR ili ga čitaju i razumiju vrlo selektivno (pamtili su i ispunili pet od deset točaka, a ostalo su zapamtili kada je rezultat dostavljen). Jasno je da se pogrešno shvaćeni zadatak ne može pravilno provesti na vrijeme.

Dalje - procijenite vrijeme za sam razvoj. Posebnost programiranja je da ne postoje apsolutno identični zadaci. To čini naš rad zanimljivijim, ali je otežano vrijeme. Ovdje dobro funkcionira razgradnja, t.j. dijeljenje složenog jedinstvenog zadatka u niz malih, poznatih podzadataka. A svaki se od njih već može adekvatno procijeniti u satima. Zbrajamo procjene podzadataka - i dobivamo procjenu cjelokupnog problema.

Obično ova procjena uključuje samo izravne troškove kodiranja. Ovo je nedvojbeno najvažniji dio razvoja, ali daleko od jedinog (i često - ne najobimnijeg). Kompletna provedba zadatka također uključuje čitanje i pojašnjenje tehničke specifikacije, sastanke s kolegama ili kupcem, otklanjanje pogrešaka i testiranje, izradu dokumentacije, predaju rezultata (demonstracija kupcu i eventualne izmjene na temelju njegovih komentara). Koliko će vam vremena trebati za ove radnje, pokazat će samo iskustvo. U početku je važno barem ne zaboraviti ih uzeti u obzir u izračunima, a približnu procjenu vremena možete zatražiti od iskusnijih kolega.

Dakle, uzimamo procjenu troškova rada kodiranja, dodajemo procjenu troškova dodatnog rada - i dobivamo željenu procjenu vremena za završetak zadatka. Ali to nije sve! Potrebno je navesti planirani datum završetka zadatka. Bilo bi pogrešno jednostavno uzeti i podijeliti troškove rada (u satima) s 8 sati i dodati ih tekućem datumu. U stvarnom životu programer nikada (pa, gotovo nikad) ne radi 100% vremena na jednom određenom zadatku. Zasigurno ćete morati potrošiti vrijeme na drugi posao - važan, ali nije izravno povezan s glavnim. Na primjer, pomoć kolegama, obuka, izvještavanje itd. Obično se pri planiranju smatra da se 60-70% radnog vremena troši izravno na rad na trenutnom projektu. Osim toga, 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), onda uzmite u obzir njihovo zaposlenje, raspored rada itd.

Ovdje su osnovna pravila koja će, po mom mišljenju, pomoći programeru da izbjegne probleme u procjeni i poštivanju rokova. Osim toga, ključno je stjecanje vlastitog iskustva kako u provedbi zadataka tako i u ocjenjivanju. Na primjer, vrlo je korisno, nakon dovršetka zadatka, usporediti svoju početnu procjenu sa stvarnim vremenskim okvirom i donijeti zaključke za budućnost. I, naravno, vrijedi proučiti tuđe iskustvo. Preporučio bih na temu knjige S. McConnella "Koliko košta softverski projekt" i S. Arkhipenkova "Predavanja o upravljanju softverskim projektima".

Promicati niže

Prilikom procjene i planiranja rokova potrebno je:

  1. Rastavite zadatak na male funkcionalne dijelove tako da postoji jasno razumijevanje koliko će vremena trebati da se razvije svaki takav dio.
  2. Paralelno s dekompozicijom, sigurno će se pojaviti dodatna pitanja o funkcionalnosti koja nisu opisana u opisu problema. Na takva pitanja potrebno je dobiti odgovore, jer se to izravno odnosi na obim posla, a time i na vrijeme.
  3. Dodajte neki postotak rizika konačnoj procjeni. To se utvrđuje empirijski. Možete početi, na primjer, s rizicima od 10-15%.
  4. Shvatite koliko je sati dnevno programer spreman izdvojiti za zadatak.
  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 potreban broj dana za završetak. Uzimamo u obzir vikende i druge dane kada se programer neće moći nositi sa zadatkom, kao i datum početka rada (programer nije uvijek spreman preuzeti zadatak na posao istog dana). Tako dobivamo datum početka i završetka rada.

Promicati niže

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, za povećanje parametra za određeni postotak. Nadalje, različiti odjeli tvrtke formiraju poslovne zadatke za sve IT timove. Rokovi za ove zadatke dobivaju početnu grubu procjenu, koju često formiraju svi članovi tima - menadžer, analitičar, programer i tester. Dobivši ovu ocjenu, poslovanje daje prioritet zadacima, uzimajući u obzir strateške ciljeve tvrtke. U tome pomažu i višestruki strateški ciljevi, s njima postaje očito da svi radimo za neki zajednički cilj, nema te situacije kada netko vuče samo u njihovom smjeru. Prikupljamo sprintove od točno procijenjenih zadataka. Neki timovi ih imaju na tromjesečnoj bazi, neki imaju mjesečnu. Ekipe daju točnu procjenu nekoliko problema koji, prema preliminarnim procjenama, spadaju u sljedeći sprint. Veliki zadaci dijele se na niže razine, za svaki od njih je odgovoran određeni izvođač, a on je taj koji daje točnu ocjenu.

U ovoj fazi važno je ne zaboraviti dodati dodatno vrijeme za ispravljanje bugova, jer samo oni koji ne rade ništa ne griješe. To dobro razumiju i vlasnik proizvoda i poslovni korisnici. Istodobno, potrebna vremenska granica mora biti primjerena: nitko neće razumjeti programera koji jednostavnom zadatku postavi predug rok, od njega će se tražiti da opravda odluku. Najteže je objasniti poduzeću zašto je potrebno vrijeme za refaktoriranje. Zahvalni smo našoj tvrtki na činjenici da s vremena na vrijeme uspijevamo, jer u konačnici refaktoriranje dovodi do lakše infrastrukture i dovođenja stvari u red u kodu, što povećava stabilnost sustava i može značajno ubrzati razvoj novih funkcije.

Ponekad se događaju greške u procjeni. Po mom mišljenju, nemoguće je da razvojni odjel u velikim tvrtkama s razvijenom infrastrukturom to u potpunosti izbjegne. U ovom slučaju važno je da programer na vrijeme obavijesti svog menadžera o tome što se događa, a on zauzvrat ima vremena upozoriti poslovanje i "nadigrati" nešto u općim planovima tvrtke. U takvom načinu rada puno je ispravnije raditi nego bjesomučno pokušavati napraviti ono što traje 5 dana u 3 dana, a zatim se utopiti u velikom broju pogrešaka koje su nastale zbog takve žurbe.

Promicati niže

Točan odgovor na oba dijela pitanja [kako naučiti kako pravilno planirati i isporučiti projekt na vrijeme - Ed.] - iskustvo. Ne postoje drugi načini "poznavanja zena". Prema teoriji odlučivanja, bilo koja vrsta točnih zaključaka može se izgraditi samo na temelju analize niza već dostupnih podataka. I što je više ovih podataka, točnija je konačna prognoza i procjena.

Riječima Herberta Shawa: "Iskustvo je škola u kojoj čovjek uči kakva je budala prije bio." Otuda slijedi prilično jednostavan zaključak: ako programer već ima iskustvo koje je u korelaciji sa zadatkom, može se osloniti na njega, ako ne, na iskustvo svojih „kolega u radnji“.

Zatim, morate shvatiti da je izravno zakazivanje zadatak koji ljudi rade vrlo, vrlo loše, posebno u razvoju. Dobra je praksa prilikom procjene datuma dospijeća uvesti "korekcione faktore" na izvornu procjenu. Ova metrika može varirati u rasponu od 1,5 do 3, ovisno o iskustvu programera i ukupnosti stupnjeva neizvjesnosti zadataka riješenih unutar projekta.

Promicati niže

Važno je uzeti u obzir mnoge čimbenike u određivanju vremena.

Na primjer radno iskustvo. Koliko jasno zamišljate opseg nadolazećeg posla? Jeste li već radili ovako nešto? Jasno je da što više iskustva, to će se posao brže obaviti.

Dobro napisan tehnički zadatak ima značajnu ulogu u određivanju rokova. S ovim na našim prostorima stvari su jako teške. Često klijent sam ne zna što želi, pa vam savjetujem da potrošite dan ili dva dodatno, ali od klijenta dobijete jasnu ideju o željenom rezultatu. Važno je da ovo predstavljanje bude recipročno. I tek nakon toga možete početi pregovarati o iznosu i uvjetima.

Također, uvijek uključite rizike. Za početnike preporučujem pomnoženje procijenjenog vremena isporuke s dva. Uostalom, bolje je isporučiti projekt prije roka i rasti kao stručnjak u očima kupca, umjesto da ga pošaljete kasnije i uništite svoju reputaciju.

Promicati niže

Opća preporuka - programer treba naučiti kako pravilno razložiti zadatke, uvijek tražiti moguće zamke, oslanjati se na vlastito iskustvo i ne zaboraviti na vrijeme upozoriti kupce i kolege ako se zadatak ne može riješiti u navedenom vremenskom okviru.

Izgraditi jasan plan puno je teže nego odrediti rok za određeni zadatak. Pritom je važno ne samo isporučiti projekt na vrijeme, već i osigurati da sustav koji ste razvili ispravno rješava poslovne probleme. Ovdje IT timovima pomažu različite 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 shvatiti kako ćemo s njima surađivati ​​u projektu, kojih se principa pridržavamo.

Inače, Agile tema sada postaje bliska poslovnoj, pa čak iu 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 dugih razgovora s kupcem. Zaboravite na desetke stranica koje opisuju nepotrebne tehničke detalje, kao što je brzina pojavljivanja padajućih izbornika. Dajte kupcu priliku da isproba srednju verziju sustava, tada će vam biti puno lakše razumjeti jedni druge.

Agilni tim sve zajedno planira i određuje optimalnu razinu troškova rada koja će biti potrebna za rješavanje određenog problema. Na primjer, jedna od tehnika se zove "Poker Planning", gdje svaki sudionik anonimno daje svoju procjenu potrebnog radnog opterećenja 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, tim se svakodnevno okuplja na 15-minutnom sastanku, kada svi u par minuta pričaju o statusu svojih trenutnih zadataka, uključujući i prijavu nastalih poteškoća. Tim brzo otklanja uočeni problem, stoga kupac što brže gleda sljedeću fazu rada programera. Programeri ne odgađaju rokove za dovršetak zadataka zbog nespremnosti da još jednom povuku tim ili uzaludnih pokušaja da to sami shvate, ubijajući dragocjeno vrijeme. Inače, s takvim mini statusima programeri imaju želju pokazati svoju najbolju stranu, pokazati da ste odgovorni za svoj rad. To stvarno motivira i samodisciplinira.

Uvod

Svrha radionice o organizaciji proizvodnje je proširiti i produbiti teorijska znanja, usaditi potrebne vještine za rješavanje najčešćih problema u praksi na organizaciji i planiranju proizvodnje.

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

Prisutnost metodičkih uputa i kratkih teorijskih podataka u svakoj temi omogućuje korištenje ove radionice u dopisnim tečajevima.


Proračun trajanja proizvodnog ciklusa

Trajanje proizvodnog ciklusa služi kao pokazatelj učinkovitosti proizvodnog procesa.

Proizvodni ciklus- vrijeme boravka predmeta rada u proizvodnom procesu od trenutka puštanja u promet sirovina do trenutka puštanja u promet gotovog proizvoda.

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

1) na prirodnim ili tehnološki - oni su zbog prirode proizvoda;

2) organizacijski(pauze između smjena).

Trajanje proizvodnog ciklusa sastoji se od sljedećih komponenti:

Ciklus T = t oni + t jedenje + t tr + t k.k. + t m. o. + t m.ts.

gdje t oni- vrijeme tehnoloških operacija;

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

t tr - vrijeme prijevoza predmeta rada;

t c.c. - vrijeme kontrole kvalitete;

t m.o - interoperativno vrijeme spavanja;

t m.ts. - vrijeme provedeno u međuodjelskim skladištima;

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

Proračun trajanja proizvodnog ciklusa ovisi o vrsti proizvodnje. U masovnoj proizvodnji trajanje proizvodnog ciklusa određuje se vremenom kada je proizvod u toku, t.j.

Ciklus T = t u M,

gdje t v- ciklus oslobađanja;

M- broj radnih mjesta.

Pod, ispod takt oslobađanja treba razumjeti vremenski interval između puštanja u promet jednog proizvedenog proizvoda i sljedećeg proizvoda.

Ciklus oslobađanja određen je formulom

t in = Teff / V,

gdje Teff- efektivni fond radnog vremena radnika za obračunsko razdoblje (smjena, dan, godina);

V- obujam proizvodnje za isto razdoblje (u prirodnim jedinicama).

Primjer: T cm = 8 sati = 480 min; T traka = 30 min; → Teff = 480 - - 30 = 450 min.

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

U masovnoj proizvodnji, gdje se obrada provodi u serijama, trajanje tehnološkog ciklusa se ne određuje po jedinici proizvodnje, 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: sekvencijalno, paralelno i mješovito (serijsko-paralelno).


ja... Na dosljedan pokretnih dijelova, svaka sljedeća operacija počinje tek nakon završetka prethodne. Vrijeme ciklusa za sekvencijalno kretanje dijelova bit će jednako:

gdje n - broj dijelova serije koja se obrađuje;

t komi- dionica vremena za operaciju;

C i- broj radnih mjesta po i th operacija;

m- broj operacija tehnološkog procesa.

Daje se serija od 5 komada. Šarža se prolazi uzastopno kroz 4 operacije; trajanje prve operacije - 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.

Prednost sekvencijalnog načina pomicanja dijelova je što omogućuje rad opreme bez zastoja. Ali njegov je nedostatak što je trajanje proizvodnog ciklusa u ovom slučaju najveće. Osim toga, na radnim mjestima stvaraju se značajne zalihe dijelova, što zahtijeva dodatni proizvodni prostor.

II... Na paralelno kretanje serije, pojedini dijelovi se ne odgađaju na radnim mjestima, već se pojedinačno odmah prebacuju u sljedeću operaciju, bez čekanja da se završi obrada cijele serije. Dakle, uz paralelno kretanje serije dijelova na svakom radnom mjestu, istovremeno se izvode različite operacije na različitim dijelovima iste serije.

Trajanje serijske obrade s paralelnim kretanjem proizvoda naglo se smanjuje:

dl .

gdje n n- broj dijelova u prijenos serije(transportna pošiljka), t.j. broj proizvoda koji se istodobno prenose iz jedne operacije u drugu;

Dl - najduži radni ciklus.

Uz paralelno pokretanje serije proizvoda, dijelovi cijele serije obrađuju se kontinuirano samo na onim radnim mjestima gdje dugi poslovi slijede kratke. U slučajevima kada kratke operacije slijede duge, t.j. dulje (u našem primjeru - treća operacija), izvršenje ovih operacija se izvodi s prekidima, t.j. oprema 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 shemu paralelnog kretanja dijelova (slika 2):

Slika 2

III... Za otklanjanje prekida u obradi pojedinih dijelova serije u svim operacijama, primijeniti paralelno-serijski ili mješoviti način pokretanja, u kojem se dijelovi (nakon njihove obrade) prenose u sljedeću operaciju jedan po jedan, ili u obliku "transportnih" zaostataka (po nekoliko komada) na način da se izvođenje operacija ne prekida se ni na jednom radnom mjestu. Kod mješovite metode kontinuitet obrade preuzima se od sekvencijalne metode, a od paralelne metode prijelaz dijela iz operacije u operaciju neposredno nakon njegove obrade. Kod mješovitog načina puštanja u proizvodnju, vrijeme ciklusa određuje se formulom

kor .

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

m-1 broj poravnanja.

Ako je sljedeća operacija duža od prethodne, ili joj je vremenski jednaka, tada se ova operacija pokreće jedan po jedan, odmah nakon obrade prvog dijela u prethodnoj operaciji. Ako je, naprotiv, sljedeća operacija kraća od prethodne, tada postoje praznine u prijenosu dio po dio. Da biste ih spriječili, potrebno je akumulirati transportnu rezervu takvog volumena, koja je dovoljna za osiguranje rada u naknadnoj operaciji. Da biste praktički pronašli ovu točku na grafikonu, potrebno je prenijeti posljednji detalj serije i odgoditi trajanje njezina izvršenja udesno. Vrijeme obrade za sve ostale dijelove serije ucrtano je lijevo na grafikonu. Početak obrade prvog dijela pokazuje trenutak kada transportnu pričuvu iz prethodne operacije treba prenijeti u ovu operaciju.

Ako su susjedne operacije iste po trajanju, tada se samo jedna od njih prihvaća kao kratka ili duga (slika 3.).

Slika 3

T zadnja para = 5 (10 + 20 + 10 + 30) - (5-1) (10 + 10 + 10) = 350-120 = 230 min.

Glavni načini za smanjenje trajanja proizvodnog ciklusa su:

1) Smanjenje radnog intenziteta izrade proizvoda poboljšanjem obradivosti proizvedene strukture, korištenjem računala, uvođenjem naprednih tehnoloških procesa.

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

3) Smanjenje raznih planiranih i neplaniranih pauza na radu na temelju racionalnog korištenja načela znanstvene organizacije proizvodnog procesa.

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

5) Unaprjeđenje procesa transporta, skladištenja i kontrole i njihovo vremensko preklapanje s procesom obrade i montaže.

Smanjenje trajanja proizvodnog ciklusa jedan je od ozbiljnih zadataka organizacije proizvodnje, jer utječe na promet obrtnih sredstava, smanjenje troškova rada, smanjenje skladišnog prostora, potrebu za transportom itd.

Zadaci

1 Odredite trajanje ciklusa obrade 50 dijelova u sekvencijalnom, paralelnom i sekvencijalno-paralelnom tipu kretanja u proizvodnom procesu. Obrada dijelova sastoji se od pet operacija, koje traju min: t 1 =2; t 2 =3; t 3 =4; t 4 =1; t 5 = 3. Druga operacija se izvodi na dva stroja, a svaki drugi na jednom. Veličina paketa za prijenos je 4 komada.

2 Odredite trajanje ciklusa obrade 50 dijelova sa sekvencijalnim, paralelnim i sekvencijalno-paralelnim tipovima kretanja u proizvodnom procesu. Obrada dijelova sastoji se od četiri operacije, koje traju min: t 1 =1; t 2 =4; t 3 =2; t 4 = 6. Četvrta operacija se izvodi na dva stroja, a svaki drugi na jednom. Veličina paketa za prijenos je 5 komada.

3 Serija dijelova od 200 komada obrađuje se paralelnim uzastopnim kretanjem u procesu proizvodnje. Obrada dijelova sastoji se od šest operacija, čije trajanje je 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 ostalih operacija se izvodi na jednom stroju. Odredite kako će se promijeniti vrijeme ciklusa obrade za seriju dijelova ako se paralelno sekvencijalna varijanta gibanja u proizvodnji zamijeni paralelnom. Veličina paketa za prijenos je 20 komada.

4 Serija od 300 komada obrađuje se njezinim paralelnim uzastopnim kretanjem u procesu proizvodnje. Obrada dijelova sastoji se od sedam operacija, koje traju 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. Transfer šarža - 30 komada. Kao rezultat poboljšane proizvodne tehnologije, trajanje treće operacije smanjeno je za 3 minute, sedme - za 2 minute. Odredite kako se ciklus serije mijenja.

5 Daje se serija praznih komada, koja se sastoji od 5 komada. Serija se prolazi kroz 4 operacije: trajanje prve je 10 minuta, druge 20 minuta, treće 10 minuta, a četvrte 30 minuta. Odredite trajanje ciklusa pomoću analitičkih i grafičkih metoda za sekvencijalno kretanje.

6 Daje se serija praznih komada, koja se sastoji od četiri komada. Serija se prolazi kroz 4 operacije: trajanje prve je 5 minuta, druge 10 minuta, treće 5 minuta, a četvrte 15 minuta. Odredite vrijeme ciklusa analitički i grafički uz paralelno kretanje.

7 Daje se serija praznih komada, koja se sastoji od 5 komada. Serija se prolazi kroz 4 operacije: trajanje prve je 10 minuta, druge 20 minuta, treće 10 minuta, a četvrte 30 minuta. Odredite trajanje ciklusa pomoću analitičkih i grafičkih metoda za sekvencijalno-paralelno kretanje.

8 Odrediti trajanje tehnološkog ciklusa obrade serije od 180 komada. s paralelnim i uzastopnim verzijama njegova kretanja. Izgradite grafove obrade. Veličina prijenosne serije - 30 kom. Vremena i broj poslova u operacijama su sljedeći.

(vrijeme od posla ne postaje podrška sve do prvog trenutka kada se počne izvršavati na resursima); minimiziranje kašnjenja ili vrijeme odziva(vrijeme od rada postaje uključeno dok se ne završi u slučaju periodične aktivnosti, odnosno dok sustav ne odgovori rukama prvog izlaska korisnika u slučaju interaktivne aktivnosti); ili maksimiziranje pravda(jednaka količina procesorskog vremena za svaki proces, ili općenito, odgovarajuće trenutke u vremenu prema prioritetu i radnom opterećenju svakog procesa). U praksi, ovi ciljevi su često u suprotnosti (npr. propusnost naspram latencije), pa će planer napraviti odgovarajući kompromis. Prednost se mjeri bilo kojim od gore navedenih problema, ovisno o potrebama i zadacima korisnika.

OS / 360 i nasljednici

Aix

U AIX verziji 4 postoje tri moguća značenja politike raspoređivanja niti:

  • Prvo, izašao je prvi: nakon što je nit s ovom politikom zakazana, ona se izvršava do završetka, ako nije blokirana, dobrovoljno se odriče kontrole nad procesorom ili otpremanje postaje s višim prioritetom niti. Samo s tokovima s fiksnim prioritetom može se imati politika raspoređivanja FIFO.
  • Round Robin: Ovo je slično rasporedu sheme AIX verzije 3 na kružni način na temelju vremenskih isječaka od 10 ms. Kada PP nit ima kontrolu na kraju vremenskog slota, ona se pomiče na rep reda niti s istim prioritetom. Samo niti s fiksnim prioritetom mogu imati politiku rasporeda Round Robin.
  • OSTALO: Ovu politiku definira POSIX1003.4a u implementaciji. U AIX verziji 4, ovo je pravilo definirano kao ekvivalent RR, osim što se primjenjuje na niti s nefiksiranim prioritetom. Ponovno izračunavanje vrijednosti prioriteta pokrenute niti po prekidu 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še asinkronih procesa. Ove aplikacije mogu nametnuti lagano opterećenje na sustav ako se pretvore u strukturu s više niti.