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

Kako se gasi servis ?

[es] :: Linux :: Kako se gasi servis ?

Strane: 1 2

[ Pregleda: 7235 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.eunet.yu.

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: Kako se gasi servis ?14.04.2006. u 11:25 - pre 219 meseci
ilaj, uopšte ne mogu da trošim vreme objašnjavajući

Citat:
ilaj:1. kernel se moze konfigurisati da tom programu-servisu da najvecu mogucu instancu i prioritet,sta se time postize? Pa kada aplikacija posalje zahtev kernelu za pisanje kernel(preko CPU-a) to tumaci u vidu prekida zar ne


Ne. Sistemski poziv može biti (kod nekih OS-ova) implementiran kao softverski prekid, ali je to za ovu priču potpuno irelevantno.

Citat:
ilaj:e sada aplikacija od kernela ceka odobrenje zar ne ,


Ne.

Citat:
ilaj:kernel kada primi zahtev za upis interpretira to kao prekid obavestava o tome instancu i interfejs servisa-programa koja uzgred ima veci prioritet od aplikacije koja trazi upis ,program-servis kada je obavesten iz prve ruke u zahtevu za upis stopira ceo proces


Kernel će resetovati fajl i zatim obavestiti aplikaciju. A obaveštavanje (inotify) je implementirano preko IOCTL interfejsa, što znači da bi servis morao da polluje neki device fajl u beskonačnoj petlji. Imao bi sve vreme aktivan proces sa visokim prioritetom koji zauzima 100% procesorskog vremena. Ako mi ne veruješ, probaj da napišeš.

Citat:
ilaj:e sada tu su moguce dve varijante ili da vrati povratnu informaciju kernelu da kernel stopira proces ili da sam taj program-servis stopira(pauzira) datu aplikaciju(to necu sada razmatrati jer je analiza verovatno od par strana a ovo sto ja pisem je hipoteza).


Pa ne može proces sam da stopira drugi proces. Mora da traži od kernela da on to uradi. Ne poznaješ najosnovnije koncepte operativnih sistema.

Citat:
ilaj: 2. Brzina datog procesa moze se obaviti u par ciklusa za koje kernel nema sanse da otvori
fajl deskriptor i inicijalizuje fajl sistem drajver (izracunaj).


Nema šta da računam, sve će se desiti pre nego što servis i stigne na red da primi taj event. Inače, fajl sistem drajver se inicijalizuje prilikom podizanja sistema.

Citat:
ilaj: 3. Gde si ti procitao da su prekidi upuceni na HDD?


Evo ovde:

Citat:
ilaj:Mislim u ovoj varijanti taj "aplikacioni servis" stalno slusa prekide upucene na hdd



Citat:
ilaj: 4. Odgovor na tvoje pitanje preko kog interfejsa se slusa kernel je ni preko jednog postojeceg.
Jednostavno ti napravis novi super optimizovani interfejs koji ce da u par ciklusa da primi obavestenje od kernela , i stopira aplikaciju ili to zatrazi od kernela a kada stopira onda proverava zadata pravila(cak ne mora da se ceka ni povratna informacija da je aplikacija stopirana jer mora biti, pa se odmah moze pristupiti analizi pravila).Nemoj mi samo reci da to ne moze da se napravi/napise.


Nisi shvatio pitanje, pitanje se odnosilo na interfejs KERNELA a ne na interfejs servisa. No nije bitno.

Citat:
ilaj: 5. Sustina je u tome da se kernel moze iskonfigurisati (bez njegovih izmena) da cim primi
odgovarajuci prekid posalje obavestenje gorepomenutom interfejsu pre nego sto pocne da otvara fajl deskriptor i drajver a i fajl deskriptor radi na manjem prioritetu od tog interfejsa.


Kako može kernel kod da radi na manjem prioritetu od userland programa? :o) Pošto vidim da se mučiš sa nekim osnovnim konceptima, predlažem da nabaviš neku knjigu tipa "Osnove operativnih sistema" i pročitaš je.

Citat:
ilaj:
Ja sam previse umoran da bih jos pisao o ovome ali ne zelim bez nepobitnih argumenata da verujem
da se ne moze bez modifikacije kernela spreciti nezeljeni upis podataka (bilo kakvom metodom).
Ako mi nepobitno dokazes da to nije moguce(ne samo ovo sto sam ja napisao vec uopste bez diranja kernela) sve sto sam napisao smatracu za spam i FUD .


Evo, nepobitan dokaz, na kontra-primeru gde takav pristup ne može da funkcioniše. Recimo da neki proces, na jednoprocesorskoj mašini, hoće da resetuje neki fajl na fajl sistemu, ovako:

Code:
open ("testfile", O_TRUNC);


Kada kernel dobije sistemski poziv, sistem radi u kernel-modu. Kernel će resetovati fajl jer se to zahtevalo (O_TRUNC), što podrazumeva izmenu i-node-a tog fajla. Zatim će proveriti u okviru tog istog i-node-a listu procesa koji treba da prime obaveštenje o modifikaciji fajla. Tek kada se ponovo pređe u user-mode, onda može da dođe na red tvoj servis (i to pod uslovom da mu je prioritet dovoljno visok, i da je baš on prvi sledeći proces u run queue-u schedulera) i da primi preko inotify interfejsa od kernela informaciju da je fajl izmenjen. Međutim u tom trenutku podataka više nema, tako da je svaki pokušaj da se zaustavi proces koji je uputio sistemski poziv u startu zakasnio. U najboljem slučaju tvoj servis će znati da je fajl izmenjen pre nego za to što sazna proces koji ga je izmenio, ali to je opet prekasno.

Citat:
bojan_bozovic A imas kernele koji su monolitni (nema modula), npr. FreeBSD, NetBSD.


1) Mešaš koncepte -- to što je arhitektura kernela monolitna ne znači da on ne može da učitava module u run-time-u.
2) A pored toga, i FreeBSD i NetBSD imaju podršku za kernel module, tako da ni to nije tačno.

int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3292
*.pat-pool.le.sbb.co.yu.

Sajt: angelstudio.org


+392 Profil

icon Re: Kako se gasi servis ?14.04.2006. u 11:46 - pre 219 meseci
Ahem, greske se desavaju ;-)
 
Odgovor na temu

random
Vladimir Vrzić
Beograd

Član broj: 85
Poruke: 3866
*.fpn.bg.ac.yu.

Sajt: www.last.fm/user/vrza


+4 Profil

icon Re: Kako se gasi servis ?19.04.2006. u 12:27 - pre 219 meseci
Ala se društvo brzo razbežalo sa ove teme :o).
int rand(void);

Those who do not understand Unix are condemned to reinvent it, poorly.

Upali lampicu — koristi Jabber!
 
Odgovor na temu

[es] :: Linux :: Kako se gasi servis ?

Strane: 1 2

[ Pregleda: 7235 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

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