Prikazujem rezultate 1 do 8 od 8

Tema: Učionica >> Razvoj OS-a

  1. #1
    Senior Member Small step for mankind
    Datum registracije
    Aug 2007
    Lokacija
    Latitude:45.286° Longitude:18.688°
    Postova
    2.150

    Učionica >> Razvoj OS-a

    S obzirom da me operacijski sustavi već neko vrijeme opsjedaju, odlučio sam napisati tekst da se malo oslobodim stresa i da mislim na nešto učinkovito. Sutra ispit iz engleskog, CPE. I mogu reći da me je trta... Nazad na operacijske sustave... Najlogičnija ulazna točka u ovaj tekst jest odgovoriti što je to operacijski sustav, pa ćemo krenuti od toga...



    Operacijski Sustav je softverska komponenta računalnog sustava koja u osnovi sadrži osnovni set sistemskih programa koji zajedno u cjelini upravljaju i dijele resurse podležnog hardvera. Cijelo računalo, u nadi da omogući lagano korištenje računalnih laicima, dizajnirano je koristeći apstrakcijske slojeve. Sam OS nalazi se na vrhu HALa (ne, HAL 9000 nego Hardware Abstraction Layer). HAL se sastoji od hardvera, firmwarea, assemblera, kernela i na vrhu OSa i aplikacija koje se na njemu vrte. Možemo zamijetiti da OS zapravo služi kao domaćin aplikacijama koje se vrte na njemu, tj. on radi sav prljavi posao sa low level komuniciranjem sa hardverom te nudi ljepuškast set funkcija koji olakšavaju kreiranje aplikacija. Većinom su aplikacije ovisne o određenom OS, ali postoje neke koje su dovoljno fleksibilne da mogu skakati između OS-ova (cross-platform). OS nudi mnoštvo korisnih rutina i servisa aplikacijama i samim korisnicima koji omogućuju olakšano služenje računalom. Aplikacije, naravno, do tih servisa/rutina dolaze kroz APIe (Application Programming Interface) ili različitih poziva sustava. Također, jedna od posebnosti operacijskih sustava je interakcija na ljudima ugodniji način. Kako su se računala razvijala, tako i ljudska domišljatost rasla... Prvobitno smo imali tekstualni UI koji se svodio na puko unošenje naredbi na koje nam je računalo vraćalo proračune tj. podatke, a danas imamo nešto jako lijepo što se zove GUI (Graphical User Interface) koji omogućuju veoma zadovljavajuću i jednostavnu interakciju između čovjeka i računala.

    Danas najpoznatiji OS-ovi su: Microsoft Windows, Mac OS X, Linux i Solaris... No, Windows uvjerljivo drži prvo mjesto na listi najpopularnijeg OS-a... S obzirom da bi ovo trebao biti kratki uvod, sutra ujutro ću prije ispita još malo doći se smiriti pa baciti tekst o kernelima, tipovima istih, teoriji izrade OS-a, pogledat ćemo ispod haube te na kraju koncentrirati se na praktični rad koristeći programski jezik C++, iako je C veoma poznat u svijetu OS-ova i njihova razvoja.
    Gdje je nestao mozak
    gdje se skriva on
    iz vagona pameti
    na tračnice ispao...

  2. #2
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Učionica >> Razvoj OS-a

    lijepo... ja znam win maaaaalo... jako maaaaaaaalo...

    koji fakin ispit??
    It's time to kick some ass...

  3. #3
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: Učionica >> Razvoj OS-a

    zanimljivo .. jedva čekam drugi dio

    btw, što je s RayLibom ?
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  4. #4
    Senior Member Small step for mankind
    Datum registracije
    Aug 2007
    Lokacija
    Latitude:45.286° Longitude:18.688°
    Postova
    2.150

    Re: Učionica >> Razvoj OS-a

    = Citat = Izvorno postao Luka
    zanimljivo .. jedva čekam drugi dio

    btw, što je s RayLibom ?
    RayLib je još uvijek aktivan samo što ja stalno nešto novo eksperimentiram pa malo ću vjerojatno promijeniti spektar stranice... Ispričavam se što nisam jutros napisao drugi dio, malo sam duže odspavao... Inače, ispit... Ispit je CAE (Certificate in Advanced English), sad sam se vratio, uzrujah se zbog gluposti, bilo je jednostavno ^^
    Gdje je nestao mozak
    gdje se skriva on
    iz vagona pameti
    na tračnice ispao...

  5. #5
    Senior Member Small step for mankind
    Datum registracije
    Aug 2007
    Lokacija
    Latitude:45.286° Longitude:18.688°
    Postova
    2.150

    Re: Učionica >> Razvoj OS-a

    Napravio sam si mali ledeni kakao i evo, krećemo... Dakle, prva tema su kerneli...

    KERNEL

    Prošli put smo spominjali HAL i među nabrojanim, susreli smo se i sa kernelom koji se nalazi odmah ispod OSa. U osnovi, kernel je jezgra svakog OS-a, njegova centralna komponenta. Rekli smo da OS treba moći raspolagati resursima računala, a upravo tome kerneli služe. Kernel upravlja memorijom, uređajima, nudi sučelje za aplikacije da dođu do resursa računala itd. Ono što kernel često radi jest i multitasking s kojim smo upoznati vjerojatno svi (Alt Tab ^^).

    Što zasad možemo zaključiti jest činjenica da je kernel najniži apstrakcijski sloj za manipuliranje resursima koji aplikacija mora koristiti da bi izvršila svoj zadatak. Navedene zadatke moguće je obaviti na više načina jer kernel nije strogo zacrtan da se mora napraviti to i to, nego je više otvoren programeru da on odabere kako želi rješiti problem. Imamo dva glavna tipa kernela... Monolitički kernel i mikrokernel. Dakako, ima varijacija između ta dva koji pokušavaju uravnotežiti "uloženo i dobiveno". Pa krenimo po redu...

    Monolitički kernel

    Glavni cilj ovakvog kernela jest efikasnost rada cjelokupnog sustava. Monolitički kernel funkcionira zajedno sa svim driverima uređaja i kernela unutar prostora jedne adrese koji se vrti u kernel modu. Kao što sam rekao, ovakav pristup daje poprilično dobre performanse, ali činjenica da se sve događa u prostoru jedne adrese znači da ako krepa jedan driver, cijeli sustav pada. Većini najpoznatiji sustav koji je koristio ovakav kernel jest Windows 9x.

    Mikrokernel

    Ovakav kernel nastoji vrtiti većinu svojih servica i drivera uređaja u userspaceu što rezultira u povećanoj stabilnosti i sigurnosti na računalima koji imaju zadovoljavajuću memorijsku zaštitu. Problem kod modernih, ali i starijih implementacija ovakvog kernela je katastrofalno spora brzina.

    Definitivno ste zamijetili da svaki od ponuđenih rješenja dakako ima mnoštvo mana tako da uspješan OS programer će definitivno implementirati neke svoje solucije na predstojeći problem. Od ostalih modela kernela možemo spomenuti hibridne kernele, modularne kernele, nanokernele, exokernele koji su u svojoj osnovi zapravo pomiješani monolitički i mikro kernel. Nemojte se zavarati, imaju i oni svojih mana... No njima se trenutno nećemo baviti. U sljedećem tekstu, pozabavit ćemo se ekstenzivno čim se kernel zapravo bavi jer smo ovdje pokrili tek kratku definiciju kernela.
    Gdje je nestao mozak
    gdje se skriva on
    iz vagona pameti
    na tračnice ispao...

  6. #6
    Senior Member Small step for mankind
    Datum registracije
    Aug 2007
    Lokacija
    Latitude:45.286° Longitude:18.688°
    Postova
    2.150

    Re: Učionica >> Razvoj OS-a

    Pokrili smo ukratko što je to kernel... Vrijeme je da se zadubimo u fascinirajuću jezgru operacijskog sustava! Rekli smo da se većina OS-ova bazira na konceptu kernela, a to je direktna posljedica potrebe da se računalni sustav podijeli na apstrakcijske slojeve (HAL!) te da nam kernel služi kao najniži apstrakcijski sloj za manipuliranje resursima računalnog sustava. Dakle, ukratko, ako se prisjetimo HALa

    {
    - OS i njegove aplikacije
    - Kernel
    - Assembler
    - Firmware
    - Hardver
    }

    vidimo da je kernel zapravo najniži sloj koji je implementiran u softveru. Osobno vjerujem da bi programer bez dizajniranja kernela i korištenja apstrakcijskih slojeva poludio i završio u Vrapčevu. A to ne želimo, ne? Mislim da sam već rekao u prošlom tekstu, ali da ponovimo, kernel se također naziva jezgra (eng. core) OS-a.

    Kad upalimo računalo, prva stvar koja se budi jest kernel koji se izvršava u nadzornom modu (eng. supervisor mode) nakon čega sam kernel izvrši inicijalizaciju samoga sebe i pokreće prvi proces i parkira se u pozadini i čeka sistem da ga pozove na dužnost. Što je pisac htio reći, kada aplikacija na OS-u pozove nešto što zahtjeva pažnju kernela, on uskače na principu interrupta. Dakle, hardver javlja kernelu da ima eventova oko kojih se treba pobrinuti. Sam razvoj kernela je jedan od najzahtjevnijih programskih izazova u računalnoj industriji te uključuje mnogo oranja moždanih vijuga. Nema mjesta za pogreške, svaka može i jest kobna za sustav, kao kula od karata, ako je jedan zid nestabilan sve pada. Esencijalno o čem se kernel skrbi jesu low level sređivanje procesa, komunikacija između procesa, manipulacija PCBa (Process Control Block, u biti to je podatkovna struktura u kernelu koja sadrži podatke potrebne za upravljanjem određenim procesom), rukovanje interruptovima, sinkronizacija procesa...

    Down the road we go...

    Možda ste primijetili da cijelo vrijeme laprdekam o resursima... A što su to zapravo resursi? Resursi... Resursi sustava su njegova memorija, CPU, I/O uređaji u osnovi...

    CPUSilitiga procesor je centralni dio hardvera računala, koji je odgovoran za vršenje programa na njemu. Povezan je s kernelom na simbiotičan način. Kernel ima odgovornost tj. dužnost da odluči za koje će se programe alocirati procesor ili jezgre jednog procesora ili više procesora...

    Ulazni/Izlazni uređaji (I/O), tu naravno ulaze tipkovnica, miš, HDD-ovi, printeri, zasloni, kamere, zvučnici itd. Kernel alocira zahtjeve od aplikacija da izvrše neki I/O na zahtjevanom uređaju i da ponudi metode na koji se može koristiti uređaj.

    Memorija računala koristi se da bi se na nju pohranili programske instrukcije ili podaci, logično, oboje se mora nalaziti u memoriji da bi se program uspješno izvršavao. Često više programa će zahtjevati pristup memoriji, i tražiti sve više memorije (daš im prst, pojedu ruku) dok ne preliju čašu. Tu uskače kernel koji sa svojom čeličnom šakom odlučuje koliko će memorije dobiti svaki proces i donijeti odluku kad dođe do nestašice memorije.

    Ono što je od velike važnosti jest domena samog kernela odakle se sve izvršava (poznato kao address space) i zaštitni mehanizam koji odlučuje dokle koji program smije ići (kasnije ću vas upoznati sa "prstenjem"). Kernel također nudi metode sinkronizacije i komunikacije između procesa koje smo spomenuli u prethodnom tekstu (ovo je poznato kao IPC iliti Inter-process communication)

    Upravljanje procesima

    Da bi objasnili osnovno, najlogičnije bi bilo krenuti od upravljanja procesima... Pa nek bude tako pošto je glavni zadatak kernela da dozvoli izvršavanje aplikacija i ponudi im podršku sa mogućnostima poput hardverskih apstrakcija... Proces definira kojim dijelovima memorije aplikacija može pristupiti. Dakle, dio kernela koji upravlja procesima mora uzeti u obzir hardversku opremu za zaštitu memorije. Da bi se aplikacija izvršila, kernel mora postaviti adresni prostor za aplikaciju, učitati file koji sadrži kôd aplikacije (strojni jezik jer je kompiliran) u memoriju, postavlja stack za program i grana ga u danu lokaciju unutar programa dok pokreće njegovo izvršavanje. Objašnjavati multitasking zasad je nepotrebno i samo bi zasitilo količinu teksta tako da ćemo njemu kasnije posvetiti temu. Naravno raspravit ćemo i teoriju multithreadinga kasnije...

    Upravljanje memorijom

    Kernel, po svojim standardnim parametrima i specifikacijama, ima potpun pristup memoriji sustava i mora dozvoliti procesima siguran način da pristupe memoriju koju zahtjevaju. Vritual addressing je jedan od načina da se to uradi, uglavnom koristeći paging ( ili swapping ) i segmentation ( koji se također koristi uz ili sam za zaštitu memorije ). Virtualno adresiranje dozvoljava kernelu da napravi danu fizičku adresu virtualnom, a svaki virtualni adresni prostor može biti različit, varira od procesa... Memorija koju jedan proces koristi na određenoj trenutnoj virtualnoj adresi može biti drugačija od one koju drugi proces koristi na točno istoj adresi. Što ovo omogućuje jest da se program ponaša kao da je sam samcat, standalone, što posljedično sprečava urušavanje drugih aplikacija ako jedna od njih naleti na fatalnu grešku.

    Virtualna adresa programa može imati referencu prema nečemu što nije trenutno u (radnoj) memoriji. Sloj indirekcije ustupljen korištenjem virtualnog adresiranja prostora dozvoljava OSu da koristi neke drugi načine da pohrani podatke te čita iz njih, naravno, radi se o HDDu... On će pohraniti ono što bi inače ostalo u memoriji. Takvim pristupom, OS je sposoban dozvoliti programima da koriste više memorije nego što sustav ima dostupno. Iz toga možemo izvući pitanje, što kad je podatak potreban trenutno van memorije, na HDDu npr... U tom slučaju CPU signalizira kernel da se to dogodilo (interrupt ^^) i onda kernel reagira ispisivanjem sadržaja sa inaktivnog memorijskog bloka na disk i zamjenjuje ga sa onim potrebnim... Ova šema poznata je kao demand paging o kojem ćete saznati više kroz ovaj "kurs". Još jedna čarolija virtualnog adresiranja jest stvaranje virtualnih particija memorije u dva nespojena područja, jedan rezerviran za kernel, a drugi za aplikacije (userspace)... Ako se sjetite, o ovom smo ukratko raspravili kada smo govorili o modelima kernela (monolitički i mikrokerneli). Aplikacije ne mogu pristupiti memoriji kernela, što osigurava stabilnost, o čemu smo već raspravili prije isto...

    Upravljanje uređajima

    Softver bez hardvera tj. različitih vanjskih HID uređaja ili periferija nema baš nekog smisla, tako da bi neke korisne stvari radili, potrebno je razviti segment kernela kojeg poznajemo kao menadžmentom uređaja. A kernel kao posrednik između OS i aplikacija te podležnog hardvera služi kao kurir. Ono što je kernel dužan raditi jest kontrolirati i stalno nadgledati trenutno dostupne uređaju, tako da zna reagirati na određene interrupte... Svi smo upoznati sa P'n'P sustavom (Plug 'n' Play)... Jednostavno "upiknemo" uređaj i sustav ga indentificira skeniranjem dotad slobodnih ulaznih portova. Hardverski ih poznajemo kao Universal Serial Bus ilitiga USB i Peripheral Component Interconnect ilitiga PCI. Ovaj segment uvelike ovisi o programeru i nema nekih općih smjernica tako da jednostavno nema potrebe za filozofiranjem na ovu temu.

    ----------------------------------------------

    Sad kad smo pokrili plitke dubine razvoja kernela, vrijeme je da raspravimo sistemske pozive koji su prijeko potrebni da bi OS mogao raditi išta korisno... Dakle, možemo implementirati/ponuditi API (Application Programming Interface) što je u biti biblioteka koja u osnovi nudi pozive koje obrađuje naš ljepuškasti kernel. Trenutačno ovo je sve što trebate znati o ovome... Kasnije ćemo definirati različite načine na koje može stimulirati neki event i probuditi kernel koji voli zadrijemati na posla kad se ništa ne događa.

    ----------------------------------------------

    Evo, proširili smo naše poznavanje kernela, nadam se da ste uživali u ovom tekstu i da će vam koristiti u budućnosti, a sljedeća tema koju ćemo pokriti jest sigurnosni elementi dizajna kernela, zaštitno prstenje i tako dalje... A nakon toga... Monolitički kernel u detalje... S varijacijama...
    Gdje je nestao mozak
    gdje se skriva on
    iz vagona pameti
    na tračnice ispao...

  7. #7
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: Učionica >> Razvoj OS-a

    procitat cu sutra
    It's time to kick some ass...

  8. #8

    Re: Učionica >> Razvoj OS-a

    bravo bravo
    AMD Athlon 64, 6000+ X2
    4 GB Ram 800 MHZ
    8800 GT, 1GB

    http://www.programiranje.big-forum.net

Slične teme

  1. Razvoj igara - Na pocetku...
    By kemal in forum Programiranje i izrada igara
    Odgovora: 3
    Posljednji post: 23-10-2010, 23:07
  2. Razvoj nove igre: tražim crtaće
    By WishFish in forum Programiranje i izrada igara
    Odgovora: 0
    Posljednji post: 17-09-2009, 00:08
  3. Razvoj i nastanak kemije
    By la50 in forum Pomagaj brate!
    Odgovora: 5
    Posljednji post: 10-09-2008, 18:50

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •