Osnove osnova rada računala

poruka: 5
|
čitano: 11.454
|
moderatori: DrNasty, pirat, XXX-Man, Lazarus Long, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
offline
Osnove osnova rada računala

 

 

Ne znam kud pa puknem ovo, pa ću onda jednostavno ovdje...

 

Znači, kao što je ovdje bilo rečeno OVDJE, pokušati ću jednom mjesečno baciti tutorijal o nečemu za što se pokaže interes. Naravno, ako Vam se ovaj tutorijal svidio, trk na ovu stranicu i stavljajte glasove / prijedloge što već. Isto tako ako se nađe još koja nadobudna duša, nek opali...

Za početak bih zamolio da se u ovoj temi drži samo teme, a sve moje pravopisne, gramatičke, mentalne i vjerske pogreške slobodno komentirajte u gore navedenoj temi (znači ova).

Za sve one kojima smeta što neke riječi pišem na engleskom jeziku - drop dead!

_____________________________________________________________________________________________________________________________________________________

 

 

Za početak ću dati osnovni pregled računala koji treba vjerojatno za 90% tema ako bi dublje ulazili u analizu. Krenimo...

 

RAČUNALO

Računalo se satoji od hardwarea i softwarea (prije nego prosječan forumaš mi krene pisati PM poruku tipa -"WTF!!!!111 Ovo je bugov forum, ne Kozmo!", nek barem pročita sve do kraja), ali i datawarea, networkweare i humanweara. Zlobnici bi rekli i bloatwarea.

Dataware su svi podaci koji se nalaze u ISu (informacijskom sustavu, u ovome trenutku mi promatramo IS koji se sastoji od samo 1 računala).

Networkware je mrežna komponenta ISa (ona se pojavljuje kada postoje barem dva end-pointa koja su umrežena).

Humanware su ljudi koji koriste taj IS.

Bloatware inače nije dio IS, već se tako naziva oni podaci i softver koji ne nepotreban (na neki način smeće).

 

Što je računalo? Ako gledamo von Neumannovu definiciju (slika 1), računalo je svaka naprava koja se sastoji od kontrolne jedinice, aritmetičko-logičke jedinice, memorije i ulazni-izlaznih naprava. Drugim rječima, po njemu, danas, možemo klasificirati nešto kao računalo ako ima CPU, RAM i I/O (input/output).

 

CPU

Kao što je rečeno, CPU se sstoji od kontrolne jedinice, aritmetičko-logičke, ali i niza registara. Registre zamislite kao male džepiće u koje procesor može spremati podatke.

Generalna, gruba podjela registara koji se nalaze u procesoru si slijedeći:

  • adresni registar (služi za adresiranje spremnika i ostalih djelova računala)
  • podatkovni reg (razmjena podataka između spremnika i ostalih djelova računala)
  • instrukcijski ref (prijenos instrukcija)
  • programsko brojilo (pokazuje na slijedeću instrukciju koji CPU treba izvesti)
  • registar kazaljke stoga (objašnjeno ispod)
  • registar stanja (niz zastavica koje signaliziraju posebno stanje u procesoru)
  • opći registri (tu se trpa sve ostalo :D)

 

Gore je spomenut stog. Što je stog? Stog je jedna struktura podataka u kojoj se podaci tako slažu da onaj podatak koji je zadnji došao, prvi će biti i maknut sa stoga. Zamislite stog kao tanjur sa palačinkama. Ona zadnja palačinka koja je došla u tanjur, ta će prva biti pojedena. Ovakav način manipulacije podacima nazivamo LIFO (last in, first out).

Suprotnost stogu je hrpa (heap). Iz nje će se prvo povući podatak koji je prvi ušao u hrpu. Hrpa je recimo red čekanja. Onaj koji je prvi došao kod doktora na pregled bit će i prvi pregledan. Ovakvu manipulaciju podacima nazivamo FIFO (first in, first out).

 

Pseudokod kojim možemo opisati rad procesora je slijedeći (ovo je samo za dočarati rad, njegov rad je ipak nešto kompleksiji).

 

 

sve dok je procesor uključen{

dohvati instrukciju iz programskog brojila;

dekodiraj instrukciju;

odredi operaciju koju treba izvršiti;

povećaj vrijednost programskog brojila za jedan;

odrediti od kuda dolaze operandi;

odrediti kuda pohraniti rezultat;

dohvatiti operande na aritmetičko-logičku jedinicu;

pohraniti rezultat;

}

 

 

 

Rad procesora možemo promatrati kroz dvije faze - fetch i execute. U fetch fazi on dobavlja instrukciju / podatke. U execute fazi on izvršava instrukciju.

 

Da nije sve ovako idilično i jednostavno, brinu se sve naprave oko procesora koje mu zagorčavaju život - prekidima.

Procesorov život je takav da ga stalno neko pokea i šalje mu PM (lol, Facebook) da ga upravo on sada treba. I to - miš, tipkovnica, ekran, grafička, mreža,... Svi oni nešto hoće!

 

Da bi shvatili kako procesor preživljava u takvom okruženju, trebamo prvo dva nova pojma.

Dretva (thread) - to shvatimo kao niz instrukcija u izvođenju. Recimo jedna od dretvi u stvarnom... Ovaj AFK životu, bi bila kod otvaranja vrata - primi kvaku, stisni kvaku, napravi korak unazad, povuci ruku prema sebi, prođi kroz okvir vratiju.

Isto tako i svaka radnja u računalnom sustavu ima svoj neki tok izvođenja.

Proces - to je skup resursa i okolina u kojoj se program izvodi. Program je statični niz instrukcija pohranjen na nekom mediju (sve dok je on tamo niz 0 i 1 na hardu, on je program - kad mu se dodaju vremenska svojstva - početak izvođenja, trajanje, završetak izvođenja - on je proces). Sa stajališta CPUa, proces se sastoji od minimalno jedne dretve.

 

Eh sada oboružani tim znanjem, kako procesor handle prekide? Ovdje trebamo upoznati jednog procesorovog prijatelja - sklop za prihvat prekida. On prihvaća prekid, prepoznaje njegov prioritet i po potrebi javlja procesoru - "Ej, ovoga ti prosljeđujem". Nešto kao izbacivač na ulaznim vratima...

Eh sad smo se dotakli prioriteta. Prioritet jednostavno govori koliko je nešto važno. Prekid sa nižim prioritetom neće doći na red prije prekida sa višim prioritetom, bez obzira jel on došao prije ili poslije njega u red čekanja.

 

I kako sad rade prekidi? Kada procesoru se signalizira - "Ej, imaš prekid!" On, pohrani sadržaj svih registara (osim PCa čiji sadržaj prebaci na stog), uđe u prekidni način rada, obradi prekid, vrati se iz prekidnog načina rada, te povrati sadržaj svih registara i programskog brojila (PC = programsko brojilo). Što je on napravio sa ovim pohranjivanjem sadržaja svih registara? Jednostavno je odložio trenutnu dretvu u izvođenju, uzeo drugu (prekidnu), izvršio ju, i ponovno vratio na staru dretvu i nastavio ju izvoditi.

Ovo što smo upravo opisali je ništa drugo do realizacije multitaskinga na jednoprocesorkom računalu.

 

I sada oboružani ovim znanjem možemo napraviti jedan mali myth-busters. Kada čujete da nekoga da njegov mobitel ima višedretvenost (a da nije neki od onih bjesnih koji stvarno imaju dvojezgrene procesore), možete mu se nasmijati u lice. Ako pažljivo pogledate gornji pseudokod, vidjet ćete da proc nije u stanju obrađivati dvije radnje u istom trenutku, već ide slijedno jednu po jednu. Privid da mobitel (ili računalo) može odvijati više radnji odjednom je upravo u ovim brzim izmjenama sadržaja registara (koji se zove, btw, kontekst). Ne da na većina mobitela ne može imati višedretvenost, već starija računala, recimo PIII (Pentium IV neću spominjati jer tamo postoji HT, zbog kojeg bi mogao pobrati batine od nekih, a pošto bi bili donekle i u pravu, mislim da na sudu ne bih imao prevelike šanse, pogotovo jer bih bio i okarakteriziran kao novinar - ne bi me začudilo da na kraju moram ja platiti sudske troškove...), ne mogu ju ostvariti.

 

MEMORIJA (STORAGE)

 

E ovdje neću opisivati kako radi, već kako su podaci zapisani.

Sam fizički zapis u računalu je ostvaren u binarnoj sustavi (Kozmo, jel?). Iako mi sebi taj sustav prikazujemo preko 0 i 1, čisto tehnički gledano, nigjde u računalu nemamo 0 i 1, već određena pobuđena stanja (ima napona / nema napona, nodulacija signala ovakva ili onakva, magnetizirano sa ovim ili onim polom i sl.).

 

Ti podaci u memoriji su zapisani u jednom velikom nizu 0 i 1. Dogovorno, osnovna jedinica informacije (pa tako i grupiranja tih 0 i 1) je bajt koji je sastoji od 8 bitova. Svaki individualni znak predstavlja bit (znači saka 0 i 1 je jedan bit).

Računalo može grupirati te bajtove (nakupine 8 bitova) na različite načine. Može recimo uzeti 2 bajta i prikazati neki jedinični podatak (ako se ne varam, UTF8 to radi). Koliko ih on uzima da bi nešto interpretirao čisto zavisi o arhitekturi ISa i programeru.

 

Sad kad to znamo, ajmo se malo igrati sa nizovima 0 i 1.

Recimo...

00000001 - 1 ili 128?

Zavisi koju interpretaciju koristimo - big-endian ili small-endian. Kod big-endiana počinjemo sa "najjačim" bitom (128, drugim rječima gornja interpretacija bi bila da je rezultat 1), dok kod small-endiana je obrnuto.

Kod računala, small i big endian na razini bitova baš i nema toliko smisla gledati, već na razini bajtova.

Ako recimo u memoriji imamo pohranjeno niz bitova prikazan u heksadecimalnom sustavu 4F A2, da li mi onda to interpretiramo kao 4F A2 ili F4 2A ili 2A F4? To sve zavisi koliko smo bajtova upotrijebili da bi opisali neki podatak ili koji tip interpretacije koristimo.

 

Pored ove interpretacije, postoji još interpretacija na višim razinama (koje mi poznamo kao .txt, .doc, .jpg, .mp3) i tako dalje, no otop potom u nekom drugom tutorijala, za uvod je ovo dovoljno.

______________________________________________________________

 

Na kraju što je važno zapamtiti iz ovoga:

  1. okvirno kako procesor radi i komunicira sa okolinom
  2. da nule i jedinice ne postoje, već određena stanja u hardwareu
  3. da ono što se nama čini logičnim kada bi išli čitati podatke na samoj fizičkoj razini možda nije isto kako ih računalo interpretira

 

Eh da, još jedna stvar... Operacijski sustav i svi programi rade samo jednu stvar - pišu i čitaju iz fileova. Te fileove možemo shvatiti kao međurazinu između apstraktne koju čine programi i fizičke koju čini hardware. Znači, što rade programi - čitaju i pišu po fileovima.

 

Ovako, još jedna stvar (i posljednja) koja mi pada na pamet i koju bi bilo dobro ju usvojiti je pristup ISu koji je posebno izražen u sigurnosti ISa, a naziva se, ironično ili ne, CIA.

CIA je akronim za - Confidentiality Integrity Availability / Autheticity

 

To bi ukratko značilo da - svaki IS treba biti izgrađen (i funkcionirati) na način da podacima smiju pristupati jedino osobe koje su ovlaštene da bi pristupale njima (C). Nadalje, integritet kaže da podaci moraju biti u nekome od dopuštenih stanja i da se mogu jedino modificirati onako kako je to zamišljeno u sustavu. Ovo je malo nategnuto. Zapravo da objasnim integritet, trebao bih objasniti poslovna pravila... Ukratko... Recimo da ste vi na papir napisali - Danas je sunčan dan! Potom dođe pas i zagrizao papir i sada na papiru piše - Danas je sunč i onda nakon toga ste još prolili sok po poruci pa se trenutno može jedino pročitati - Da   je sunč, e onda je narušen integritet podataka. Da bi zaštitili integritet, recimo, trebalo bi poruku staviti u fascikl. Na kraju, IS mora biti dostupan svakom legitimnom korisniku u svakom trenutku (ili barem u svakom trenutku kada on treba IS).

 

Zašto ovo navodim? Zato jer ovdje postoji jedna tendencija da se na neki problem odgovori svim živim oružjem raspoloživo u arsenalu. Recimo u temi kod zaštite WiFi, navodi se da bi se trebalo, postaviti WAP2-PSK, onemogućiti broadcasting SSIDa, uključiti MAC filtering...

Sve je to super divno i krasno, ali user te mreže, recimo, ukoliko kupi novi mobitel i želi se prikopčati na tu mrežu, mora prolaziti kroz proces dodavanja nove MAC adrese na whitelistu routera. Što je zapravo nepotrebno... Realno gledajući ako netko  zna razbiti WPA2-PSK zaštitu (sa dovoljnim brojem znakova), tome zaobilaženje MAC filtera je vjerojatno dječja igra. Inače, WPA2-PSK još uvijek nije razbijen... Drugim rječima, zaštitu mreže smo nezamjetno povećali, a drastično smo smanjili dostupnost mreže (svaki puta dodaj novu MAC adresu) - narušavamo A u CIA.

 

I tu je to važno za shvatiti- u cijeloj toj nauci o ISovima, postoje ti mini trade-offovi. Featurom X povećavamo sigurnost, ali korisnik je nezadovoljan. Ovim modulom povećavamo integritet podataka, ali sustav radi 15% sporije. I u AFK životu kada se bacimo ISom, treba pronači balans između tih stvari.

 

I to bi za danas bilo to... Ovime smo sami sebi udarili jednu dobru osnovu za neke zanimljivije stvari kasnije!

 

Na kraju tutorijala vratite se na početak i opet pročitajte prvi odlomak :)

 

EDIT: A nekoga u Buga zbog "U tekstu je pronađen nedozvoljen komad HTMLa" ću za jaja objesniti. Moram napisati tekst, kopirati ga u Notepad i natrag u browser... Niti u jednom trenutku ništa niti kopirao niti se služio ičime što nije na traci iznad boxa za tekst.

 

von Neumannov model von Neumannov model
You can patch technical vulnerabilities as they evolve, but there is no patch for stupidity, or rather gullibility. - Kevin Mitnick
Poruka je uređivana zadnji put sub 23.7.2011 14:50 (Bukva).
Moj PC  
26 0 hvala 24
13 godina
offline
Osnove osnova rada računala

Svaka čast.. Lijepo sročeno, no rekao bih da je ovo viša matematika za početnika. 
I ovo ne ide s naslovom teme "Osnove osnova" {#} NHF.

 

Još jednom, svaka čast. 

Stvar koja me opisuje: http://www.youtube.com/watch?v=EExdBDd0rcA
Moj PC  
1 0 hvala 0
14 godina
protjeran
offline
Re: Osnove osnova rada računala
Bukva kaže...

 

 

 

EDIT: A nekoga u Buga zbog "U tekstu je pronađen nedozvoljen komad HTMLa" ću za jaja objesniti. Moram napisati tekst, kopirati ga u Notepad i natrag u browser... Niti u jednom trenutku ništa niti kopirao niti se služio ičime što nije na traci iznad boxa za tekst.

 

 Chrome?

Ako je jedini zivot koji imam onaj na BUG-u, da li to znaci da ja nemam zivota?
15 godina
offline
Re: Osnove osnova rada računala

Ma da... Znam da se njih dvoje baš ne vole, al eto...

 

No dobro, to za neku drugu temu, da sad tu ne odemu u {#}

You can patch technical vulnerabilities as they evolve, but there is no patch for stupidity, or rather gullibility. - Kevin Mitnick
12 godina
neaktivan
offline
Osnove osnova rada računala

ovo se uči u 1 srednje > informatika! {#}

 
0 12 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice