Re: Jak funguji programy v Linuxu
To |
Debian CZ/SK project discussion list <czdebian-l zavinac debian bod cz> |
From |
Peter Trsko - dogmaT <dogmat zavinac gmail bod com> |
Date |
Wed, 25 Jan 2006 22:30:04 +0100 |
Mail-followup-to |
Debian CZ/SK project discussion list <czdebian-l zavinac debian bod cz> |
User-agent |
Mutt/1.5.11 |
On Wed, 25 Jan, 2006, f bod mach zavinac email bod cz wrote:
> Takze kod ELF pracuje stejne jako com? Odesila prikazy primo na
> procesor, nebo jej musi jadro nejdrive zpracovat a pak teprve samo
> jadro odesle urcity prikaz nebo preruseni procesoru?
Vo vsetkych OS vychadzajucich z unixu ide vsetko cez jadro. V Linuxe
program vola konkretne volanie jadra cez int 0x80, to je jedine
prerusenie povolene programu. Parametre volaniu jadra sa ukladaju do
registrov a ak sa nezmestia potom do zasobnika.
Volania jadra maju aj interface pre C. Pre zoznam volani jadra:
man syscalls
Stranka pre tuto uroven znalosti programovania a programov pod
linuxom je:
http://linuxassembly.org
Pre lepsi popis formatu ELF treba vyhladat Executable and Linkable
Format Specification.
Urcenie ci je subor spustitelny alebo nie sa robi pomocou nastavenia
executable bitu v pravach suboru, preto nie je problem s priponou a
moze byt nazvany akokolvek. Exustuje aj misc spustitelny subor, co je
vlastne subor ktory ma prvy riadok:
#!/cesta/interpret
pricom dojde k spusteniu /cesta/interpret a subor je mu predany ako
vstup.
Instalacia programov nie je problem, pretoze program sa nemusi nikde
registrovat, jedina nutnost je aby sedeli jeho vnutorne nastavene
cesty s cestami k jeho sucastiam, ale to sa da volit pri kompilacii.
Sucasti programov sa zvacsa davaju do standardizovanych adresarov.
Treba si pozriet standardnu adresarovu strukturu linuxu.
Este musia byt pritomne vsetky dynamicke kniznice s ktorymi je
dynamicky zlinkovany. O dynamicke linkovanie sa stara dynamicky
linker:
man ld.so
Cesty kde su kniznice su hlavne /lib, /usr/lib pripadne
/usr/local/lib. Programom ldd sa da zistit ake kniznice su s danym
programom zlinkovane.
Unixove systemy su spate s programovacim jazykom C, do ktoreho boli
velmi rychlo po vzniku prepisane (existuje prienik mnoziny vyvojarov
prveho unixu a mnoziny tych co vymysleli C:-)). Preto by bolo dobre sa
pozriet na neaku knihu/prirucku/howto o programovani v C pod
unixom/linuxom, kde je mozne dozvediet sa viac o tom ako je unixovy
program zviazany zo systemom. Tusim sa da nieco take najst na:
http://www.manualy.sk
Pridavam sa k tomu, ze je to strasne siroka problematika. Bolo by
vhodne klast konkretnejsie otazky, alebo naznacit oblast zaujmu. No
toto nie je moc zameranie tejto konferencie, preto by bolo vhodnejsie
googlit a citat.
--
(dogmaT
(icq 303140614)
(jabber dogmat_at_njs_dot_netlab_dot_cz)
(mail dogmat_at_dogmat_dot_us)
(web http://dogmat.us))
Partial thread listing:
- Re: Jak funguji programy v Linuxu, (pokračuje)
tichý mikrofon
Marek Nožka