Operētājsistēmas vissvarīgākā funkcija ir racionāli organizēt visu tās aparāt un informācijas resursu izmantošanu. Pie pamatresursiem ir pieskaitāmi procesori, atmiņas, ārējie rīki, dotie un programmas. Izskaitļojoša sistēma var darboties ar atšķirīgu efektivitātes pakāpi, jo tai piemīt vieni un tie paši aparātresursi, kurus vada dažādas OS. Tāpēc operētājsistēmas iekšējo mehānismu pārzināšana ļauj nepamatoti spriest par tās ekspluatācijas iespējām un raksturojumiem. Kaut gan arī OS ar vienu programmu ir nepieciešams risināt resursu vadības uzdevumus (piemēram, atmiņas sadalījums starp OS un pielikumu), lielākās grūtības te rodas ar OS multiprogrammās, kurās par resursiem sacenšas uzreiz vairāki pielikumi.
Eksistē diezgan apjomīga operētājsistēmas līdzekļu klase, ar kuras palīdzību tiek nodrošināta savstarpēja procesu un plūsmu sinhronizācija. Nepieciešamība plūsmu sinhronizācijā rodas tikai multiprogrammas operētājsistēmā un ir saistīta ar savstarpēju izskaitļošanas sistēmas aparāt un informācijas resursu izmantošanu. Sinhronizācija nepieciešama, lai izvairītos no sacīkstēm un strupceļiem, kad notiek doto apmaiņa starp plūsmām, kad ir doto sadale un kad tiek nodrošināta pieeja pie procesora un ievad / izvadierīcēm.
Daudzās operētājsistēmās šie līdzekļi tiek saukti par savstarpējās darbības starpprocesu līdzekļiem - Inter Process Communications (IPC), kas atspoguļo vārda „process” pirmatnējo vēsturisko izpratni attiecībā pret „plūsma” izpratni. Parasti pie IPC līdzekļiem pieskaita ne tikai starpprocesu sinhronizāciju, bet arī starpprocesu apmaiņu ar dotiem.
Plūsmas izpildei multiprogrammas vidē vienmēr ir asinhronisks raksturs. Ir ļoti grūti ar pilnīgu pārliecību teikt, kurā izpildes pakāpē process būs noteiktā brīdī. Pat vienprogrammas režīmā ne vienmēr var precīzi noteikt uzdevuma izpildes laiku. Šis laiks daudzos gadījumos ir būtiski atkarīgs no doto nozīmes, kas, savukārt, ietekmē ciklu skaitu, programmas sazarošanas virzienu, ievad / izvadoperāciju laiku utt. Tā kā sākumdotie atšķirīgos uzdevuma ievadīšanas momentos var būt dažādi, atsevišķu soļu izpildīšanas laiks un uzdevumi kopumā ir visai nenoteikts lielums.
Vēl nenoteiktāks ir programmas izpildes laiks multiprogrammas sistēmā. Plūsmu pārtraukšanas momenti, to atrašanās laiks rindās uz sadalāmajiem resursiem, plūsmu izvēles kārtība izpildei – visi šie notikumi ir dažādu apstākļu savienošanas rezultāts un var būt interpretēti kā nejauši. Labākā gadījumā var novērtēt izskaitļošanas procesa visticamākos raksturojumus, piemēram, tā izbeigšanas varbūtību par doto laika periodu.
Tādā veidā plūsmas vispārīgā gadījumā (kad programmētājs neveica speciālus mērus pēc to sinhronizācijas) plūst neatkarīgi, nesinhroni vienam pret otru. Tas ir taisnīgi attiecībā pret viena procesa plūsmām, kas veic vispārīgas programmas kodu, kā arī attiecībā pret dažādu procesu plūsmām, kurās katra veic savu programmu. Jebkura procesu savstarpējā darbība, kas saistās ar to sinhronizāciju, ir domāta procesu saskaņošanas ātrumiem, kas notiek šādā ceļā: plūsma līdz kādam notikumam tiek apturēta un tad secīgi aktivizāta, līdz ko iestājas nākamais notikums. Sinhronizācija ir jebkuras savstarpējās darbības pamats. Vai šī savstarpējā darbība ir saistīta ar resursu sadali vai apmaiņu ar dotiem? Piemēram, plūsma – saņēmējs ir spiests vērsties uz dotiem tikai pēc tam, kad tie ir ievietoti buferī ar plūsmas – sūtītāja palīdzību. Gadījumā, ja plūsma – 1 saņēmējs vērsās pie dotiem līdz brīdim, kad tie nonāca buferī, tai ir jābūt apturētai. …