Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

malo teorije..

[es] :: Kernel i OS programiranje :: malo teorije..

Strane: 1 2

[ Pregleda: 9277 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


+5 Profil

icon malo teorije..17.05.2003. u 16:34 - pre 254 meseci
ovako.. mene generalno ne zanima mnogo programiranje na ovako niskom nivou (osim možda menadžera virtuelne memorije i sličnih zajebancija), ali sam pomalo zaintrigiran da proširim svoje vidike.. ;)

1) razlika između fork-ova (tj procesa) i tredova.

ja sam prvenstveno win programer, pa nisam mnogo upoznat sa forkovanjem.. a i sa tredovima sam samo par puta praktično radio.. malo u javi, i malo u delphiju, (što je u suštini čist windows treding samo lepo wrapovan u klase kako to samo borland zna ;)

znači ne interesuju me veliki textovi, već nekoliko ključnih stavki u kojima se razlikuju..


2) zašto se ne pišu programi u ring0.

skoro na temi gde je objavljeno da je novi win uključio deo web servera u kernel (čitaj ring0), ja sam se zapitao zašto se to inače ne radi..

šta recimo sprečava apače, ili bilo koji drugi server/program da uradi isto.. koje su prednosti a koje mane tog postupka.. i kako sve to izgleda na linuxu (a i na win imam samo blagu predstavu kako to izgleda..)
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..17.05.2003. u 18:38 - pre 254 meseci
1. Ukratko, nit (thread) je „lakši“ proces. To znači da pokretanje niti oduzima manje procesorskog vremena, i da ima manje informacija vezanih za njih (zbog bržeg učitavanja).

Takođe, najčešće niti jednog procesa dele isti memorijski prostor, ali to zavisi od samog operativnog sistema i vrste niti.

2. ring0 = rad na samom procesoru do mile volje = neportabilno i nebezbedno

Loše napisan program u „ring0“ može da sruši čitav sistem. Za proces sa takvim privilegijama, bolje je biti siguran da on neće da brlja po tuđoj memoriji (pošto mu je apsolutno sva memorija na raspolaganju), pa čak može i samo jezgro da zezne. Uopšte, pisanje programa u ring0 je odstupanje od mehanizama zaštite koji su uvedeni upravo zbog loših programa. Znači, ako bismo sve programe pisali u ring0, to je vraćanje na W95 i DOS, i zanemarivanje svega što je naknadno došlo.

Prednosti koje program ima u „ring0“ je to što može svemu da pristupa neposredno: kešu operativnog sistema za fajlove, celoj memoriji, celom disku, svim uređajima (mrežnim karticama, itd.), tj. nema posrednika (API je vrsta posrednika, a svi znamo: što više posrednika, to duže traje postupak).

Apache, IIS i drugi serveri se mogu napraviti potpuno nezavisno od toga da li bilo kakva podrška postoji u jezgru. Tako, npr. Linux već 2–3 godine sadrži khttpd (Kernel HTTPd), koji istina retko ko koristi. On omogućava upravo to što MS sada ugrađuje u jezgro WS2003: brže služenje stranica.

On može da sarađuje sa bilo kojim drugim softverom (Apache, zar bi neko još nešto ;-), a radi na vrlo jednostavan način: ako stranica postoji na disku, pošalji je direktno (a to je onda veoma brzo), ako je potrebno dinamički nešto obraditi, onda prosledi zahtev serveru. MS je sigurno više toga preneo u jezgro kako bi postigao veće ubrzanje.


Takođe, problem ring0 je prisutan i sa drajverima. Npr. Linux je „monolitno“ jezgro, tj. drajveri rade sa istim privilegijama kao i samo jezgro. Zato, loš drajver može da radi na sistemu šta god poželi. Kod „mikrokernela“, drajveri su takođe izolovani, i sve što radi u ring0 je kod veličine neretko ispod 30kb. Tu je veliki problem brzina IPC-a (pošto se sve preko njega odvija), a istraživanja u ovoj oblasti razvoja operativnih sistema relativno kratko znaju za kvalitetna rešenja (rešenja koja su uporediva sa monolitnim jezgrima po pitanju brzine).

Ova vrsta dizajna je u mogućnosti da čak onemogući i sve vrste „prekoračenja bafera“, ali retke su implementacije koje idu do tih detalja. A samo zamislimo šta će nam nuditi sledeći „buffer overflow“ u Windows-u (najverovatnije ništa novo, pošto pretpostavljam da se i IIS dosad izvršavao sa dovoljnim privilegijama ;-)).

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: malo teorije..10.06.2003. u 17:17 - pre 253 meseci
Steta sto nema rejting sistema vise - sada bih dao cistu desetku ovom tekstu...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
*.telemaxx.net



+7169 Profil

icon Re: malo teorije..10.06.2003. u 18:18 - pre 253 meseci
Citat:

Znači, ako bismo sve programe pisali u ring0, to je vraćanje na W95 i DOS, i zanemarivanje svega što je naknadno došlo.


Mala digresija, ali koliko me pamcenje drzi, Win95 nije izvrsavao aplikacije u nultom prstenu. Medjutim, efektivno je bilo moguce vrlo lako srusiti sistem jer koncept vxd drajvera nije bio najbolji.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..10.06.2003. u 18:26 - pre 253 meseci
Ivane, u pravu si: Windows programi u Windows-u 95 ne rade u ring0, ali si jednu stvar zaboravio: DOS programi su mogli neometano da se izvršavaju u Windows 95, pa sam na to mislio tada (zato i zajedno: DOS i Windows 95). Kasnije je i kroz sama izdanja '95-ice dodavano pomalo zaštite.

Mada, ako je i moje sećanje loše, pa ni DOS programi možda nisu baš mogli sve i svašta da rade u njemu. U svakom slučaju, mogli su da rade dovoljno da budu opasni (koliko DOS virusa se širilo i na tom izdanju Windows-a?).

Leko, hvala ;-)
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: malo teorije..10.06.2003. u 19:06 - pre 253 meseci
Citat:
tOwk:

Takođe, najčešće niti jednog procesa dele isti memorijski prostor, ali to zavisi od samog operativnog sistema i vrste niti.


Ovo nisam znao. Koji operativni sistemi imaju niti koje ne dele isti memorijski prostor? U čemu je onda razlika između procesa i niti na takvim sistemima?
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..10.06.2003. u 19:38 - pre 253 meseci
Nemanja, to je čisto pitanje terminologije. Ne mogu da ti dam konkretan primer, ali znam da sam video par rasprava o tome šta je „thread“, iako je šire prihvaćeno da je i jedinstven adresni prostor njihova karakteristika (pošto je izmena adresnog prostora često jedna od „najskupljih“ operacija).

Isto to kažu i na: http://www.serpentine.com/~bos...s-faq/#5-5-Lightweight-process

Znači, ništa više do neusaglašene terminologije: „niti“ takve vrste su zapravo „lightweight process“ kako kaže comp.programming.threads FAQ.

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

mucky
Aleksandar Mastilović
Freelancer
Novi Sad - Srbija

Član broj: 237
Poruke: 412
*.grnet.gr



+1 Profil

icon Re: malo teorije..10.06.2003. u 19:39 - pre 253 meseci
Mislim da nema nikakve razlike, tj. na takvim sistemima su svi procesi teški (pravi) a ne laki (niti).
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..10.06.2003. u 19:43 - pre 253 meseci
Ne, ima razlike.

Usput, evo i konkretnog primera: „ultra-moderni“ mikrokernel L4, i njegova implementacija Hazelnut koristi upravo izraz „thread“ na ovaj način, ali razlikuje „global“ i „local“.

Pogledajte referencu na http://www.l4ka.org/projects/hazelnut/docs.php (strana 14).

PS. Pretpostavio sam da neki mikrokernel koristi ovakvu terminologiju, a L4 mi je drugi pao na pamet (prvo Mach, ali on razlikuje „task“ i „thread“) ;-)

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.attbi.com



+18 Profil

icon Re: malo teorije..10.06.2003. u 19:44 - pre 253 meseci
Jesi li siguran? Koji OSovi ne podrzavaju niti?
 
Odgovor na temu

mucky
Aleksandar Mastilović
Freelancer
Novi Sad - Srbija

Član broj: 237
Poruke: 412
*.grnet.gr



+1 Profil

icon Re: malo teorije..10.06.2003. u 19:54 - pre 253 meseci
Ajde tovče sad lepo objasni šta si ti hteo reći sa tim svojim terminologijama :)

Po terminologiji koju ja znam, razlika između niti i procesa je u tome što proces
ima sopstveni PCB i memoriju (možda i još ponešto, ne znam) a niti su obično kreirane
od strane user-a (tj. nekog teškog procesa) i dele memoriju (prostor za mašinski kod
uvek, heap i prostor za globalne promenljive ponekad, a stack nikad).

A kako ta tvoja terminologija (ukratko) razlikuje procese?
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..10.06.2003. u 19:56 - pre 253 meseci
Reljam, postoji i pojam „user-space“ niti, tj. „raspoređivač niti“ (thread scheduler) se može implementirati i bez znanja jezgra, ukoliko ono nudi dovoljno mogućnosti (čini mi se da su tajmer i prekidi dovoljni; naravno, multiprogramiranje/multitasking/multiprocesiranje ili kako ko već to voli da zove se takođe može lepo iskoristiti [napomena u vezi terminologije: neko voli da koristi ova tri izraza za fino razlikovanje srodnih ideja, npr. „multiprogramiranje omogućava istovremeno izvršavanje više programa“, „multitasking je isto to za jednog korisnika“, itd.])

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

mucky
Aleksandar Mastilović
Freelancer
Novi Sad - Srbija

Član broj: 237
Poruke: 412
*.grnet.gr



+1 Profil

icon Re: malo teorije..10.06.2003. u 19:57 - pre 253 meseci
Reljam, ja ne znam tačno koji sistem ne podržava niti, ali suština je da
iako kernel ne pravi niti, teški procesi i dalje mogu da ih prave uz pomoć
sopstvenih biblioteka (ceo kod za upravljanje nitima generiše kompajler).
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..10.06.2003. u 20:03 - pre 253 meseci
Citat:
mucky:
Ajde tovče sad lepo objasni šta si ti hteo reći sa tim svojim terminologijama :)


Pa pogledaj referencu za L4 Hazelnut, šta ja da ti pričam ;-)

I to nije „moja“ terminologija.

Citat:
A kako ta tvoja terminologija (ukratko) razlikuje procese?

A zašto misliš da razlikuje? Kao što sam naveo „global threads“ ne dele memorijski prostor u L4 mikrokernelu, a „local threads“ ga dele, a za procese ti ljudi nikad čuli ;-)

No, kako smo mi (ljudi) „inteligentna bića“ i vršimo klasifikaciju pomoću osobina, a ne samo po nazivu (npr. pre ćemo reći da su „stolica“ i „naslon“ srodni, nego „naslon“ i „slon“), reći ćemo da je globalna nit u L4 analogna procesu u većini drugih operativnih sistema, a da je lokalna nit analogna samo niti.

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: malo teorije..10.06.2003. u 20:11 - pre 253 meseci
Jasna mi je razlika između user-space niti kao pthreads na BSD-u i kernel niti ("lakih procesa") kao na Windows-u i Linux-u, a postoje i "hibridne niti" (Solaris) gde se više user niti mapira na jednu kernel nit. Međutim, u svim tim slučajevima niti dele memorijski prostor. Lično, uvek sam smatrao da je deljenje memorijskog prostora granica koja odvaja niti od procesa.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: malo teorije..10.06.2003. u 20:22 - pre 253 meseci
Stvar je što si potpuno u pravu. Ali ne vodiš računa da se radi samo o terminologiji.

Znači, konceptualno, postoje niti i procesi. Niti odlikuje to što dele isti memorijski prostor, i „jeftinije“ je prebacivanje/izmena niti nego procesa.

Terminološki, neko će možda sve ovo uopštiti, i izabrati izraze:
— nit — putanja izvršavanja („thread of execution“), kod koji se izvršava, nezavisno od adresnog prostora i ostalih „peripetija“
— neka lakša nit — u primeru L4 mikrojezgra: „lokalna nit“
— neka teška nit — proces ili u primeru L4 mikrojezgra: „globalna nit“

Znači, u ovom slučaju imamo preslikavanje sa jedne terminologije na drugu:

proces ili nit — nit
nit — neka lakša nit
proces — neka teška nit

U nekim slučajevima je zgodnije ovako uopštiti procese i niti i koristiti jedan izraz za njih, a vi pogodite zašto sam ja baš ovakvo uopštavanje tražio među mikrokernelima ;-)

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

mucky
Aleksandar Mastilović
Freelancer
Novi Sad - Srbija

Član broj: 237
Poruke: 412
*.grnet.gr



+1 Profil

icon Re: malo teorije..11.06.2003. u 02:24 - pre 253 meseci
Čini mi se da se sve svodi na "nije šija neg je vrat" :)
 
Odgovor na temu

PeraT

Član broj: 3403
Poruke: 43
*.ptt.yu



Profil

icon Re: malo teorije..12.06.2003. u 01:08 - pre 253 meseci
A mozda mozemo thread definisati kao jedinicu rada scheduler-a,
a proces kao program u izvrsavanju, a opet program kao tekst
instrukcija?

Nego kada se vec komplikuje ajd neka neko proba da definise
fiber!
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: malo teorije..12.06.2003. u 01:51 - pre 253 meseci
Na Windows-u je fiber neka vrsta niti koja nije "preemptively scheduled" (prevedi, Danilo). Umesto da sistem brine o dodeljivanju CPU vremena, kao što je slučaj sa nitima, kod fiber-a sama aplikacija mora da brine o tome. Inače na Win16 i Mac (pre X-a) sistemima su niti imale istu ovu karakteristiku, pa ih niko nije zvao fiber-ima.
 
Odgovor na temu

c00l_daem0n
Beograd

Član broj: 309
Poruke: 294
*.telekom.yu

Jabber: andrew@elitesecurity.org
ICQ: 53650656


Profil

icon Re: malo teorije..12.06.2003. u 15:23 - pre 253 meseci
Kako biste definisali šta je proces?
Da li je ovo tačna definicija: Proces je skup poslova (task) kojima proces upravlja.

Would you translate me on the other page in face = Da li biste me preveli na drugu stranu ulice
 
Odgovor na temu

[es] :: Kernel i OS programiranje :: malo teorije..

Strane: 1 2

[ Pregleda: 9277 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.