Programování V Unixu
Total Page:16
File Type:pdf, Size:1020Kb
Programov´an´ıv UNIXu (NSWI015) verze: 24. ˇr´ıjna2017 (c) 2011 { 2017 Vladim´ırKotal (c) 2005 { 2011, 2016 { 2017 Jan Pechanec (c) 1999 { 2004 Martin Beran SISAL MFF UK, Malostransk´en´am.25, 118 00 Praha 1 • Toto jsou ofici´aln´ımateri´alypro v´yuku pˇredmˇetu Programov´an´ıv UNIXu (k´odpˇredmˇetuNSWI015) na Matematicko-fyzik´aln´ıfakultˇeUniverzity Kar- lovy. • Tyto materi´alyjsou uveˇrejnˇeny pod licenc´ı Creative Commons BY-NC-SA 3.0. Soubory k uk´azkov´ympˇr´ıklad˚umuveden´ev´yˇsejsou Public Domain, po- kud v nich nen´ıuvedeno jinak. • Tento pˇredmˇetje 2/1, cviˇcen´ıbude jednou za dva t´ydny. • Vˇsechny informace, kter´ebudete potˇrebovat, a materi´alyk pˇredn´aˇscejsou na http://mff.devnull.cz/, vˇcetnˇeaktu´aln´ıverze tˇechto pozn´amkov´ych slajd˚u (http://mff.devnull.cz/pvu/slides/). Dˇr´ıve, neˇzzaˇcnetemateri´alypou- ˇz´ıvat, pˇresvˇedˇctese, ˇzenen´ınovˇejˇs´ıverze! • Uk´azkov´epˇr´ıkladyjsou na http://mff.devnull.cz/pvu/src/, pokud se budu v pozn´amk´ach odkazovat na konkr´etn´ıpˇr´ıklad,link zde uveden´yslouˇz´ıjako koˇrenov´yadres´aˇr. • Je potˇrebase zapsat na cviˇcen´ıv SISu. • Z´apoˇcetje za z´apoˇctov´yprogram. • Zkouˇska m´ap´ısemnoua ´ustn´ıˇc´ast. • Zkouˇsetse bude to, co bude odpˇredneseno(kromˇet´ematna vyplnˇen´ıpˇr´ıpadnˇe zbyl´ehoˇcasu).Vˇetˇsinainformac´ıje ve slajdech, ale ˇradad˚uleˇzit´ych podrob- nost´ım˚uˇzechybˇet. 1 • Pˇredpoklady: { Uˇzivatelsk´aznalost UNIXu, programov´an´ıv shellu na ´urovni pˇredn´aˇsky ,,Uvod´ do UNIXu" (NSWI095) { Znalost jazyka C { Znalost z´akladn´ıch pojm˚uteorie operaˇcn´ıch syst´em˚u • Tento text je pr˚ubˇeˇznˇedoplˇnov´an,ChangeLog zaˇc´ın´ana stranˇe 242. Upo- zornˇen´ına chyby pros´ımpos´ılejtena kontakty, kter´enajdete na v´yˇseuveden´e str´ance. Obsah • ´uvod, v´yvoj UNIXu a C, program´atorsk´en´astroje • z´akladn´ıpojmy a konvence UNIXu a jeho API • pˇr´ıstupov´apr´ava, perifern´ızaˇr´ızen´ı,syst´emsoubor˚u • manipulace s procesy, spouˇstˇen´ıprogram˚u • sign´aly • synchronizace a komunikace proces˚u • s´ıt'ov´akomunikace • vl´akna,synchronizace vl´aken • ??? - bude definov´anopozdˇeji,podle toho kolik zbyde ˇcasu • Budeme se zab´yvat hlavnˇeprincipy UNIXu a programov´an´ım pro UNIX pouze v jazyce C. • Pˇredn´aˇska je pˇrev´aˇznˇeo syst´emov´ych vol´an´ıch, tj. rozhran´ımmezi uˇzivatelsk´ymprostorem a j´adrem. • Pˇripopisu API se budeme drˇzetnormy Single UNIX Specification, version 4 (SUSv4). Syst´emy, kter´etuto specifikaci podporuj´ı,mohou pouˇz´ıvat oznaˇcen´ı UNIX V7. Pˇredchoz´ıverzi SUSv3 splˇnuj´ıposledn´ıverze syst´em˚uSolaris, AIX, HP-UX a Mac OS X na r˚uzn´ych architektur´ach (http://www.opengroup.org/ openbrand/register/xy.htm). • Pro konkr´etn´ıpˇr´ıklady budu pouˇz´ıvat vˇetˇsinou syst´emy FreeBSD a Linux. 2 Obsah • ´uvod, v´yvoj UNIXu a C, program´atorsk´en´astroje • z´akladn´ıpojmy a konvence UNIXu a jeho API • pˇr´ıstupov´apr´ava, perifern´ızaˇr´ızen´ı,syst´emsoubor˚u • manipulace s procesy, spouˇstˇen´ıprogram˚u • sign´aly • synchronizace a komunikace proces˚u • s´ıt'ov´akomunikace • vl´akna,synchronizace vl´aken • ??? - bude definov´anopozdˇeji,podle toho kolik zbyde ˇcasu Literatura v ˇceˇstinˇe 1. Skoˇcovsk´y,L.: Principy a probl´emy operaˇcn´ıhosyst´emu UNIX. Science, 1993 2. Skoˇcovsk´y,Ludˇek: UNIX, POSIX, Plan9. L. Skoˇcovsk´y, Brno, 1998 3. Jelen, Milan: UNIX V - programov´an´ıv syst´emu. Grada, Praha 1993 4. Linux - Dokumentaˇcn´ıprojekt. Computer Press, 1998; http://www.cpress.cz/knihy/linux 5. Herout, Pavel: Uˇcebnicejazyka C. 2 d´ıly. Kopp, Cesk´eˇ Budˇejovice, 2004 (4., respektive 2. pˇrepracovan´evyd´an´ı) 3 Ohlednˇeunixu doporuˇcujisp´ıˇseliteraturu v anglick´emjazyce. 1. Vˇsestrann´y´uvod do UNIXu, ale dost struˇcn´a;Skoˇcovsk´yje autorem v´ıce ˇcesk´ych knih o unixu, ale dnes jsou jiˇzv´ıcenebo m´enˇezastaral´e. 2. Pokroˇcilejˇs´ıpohled, ale pˇredpokl´ad´apˇredbˇeˇzn´eznalosti, m´ısty tˇeˇzko stravi- teln´a. 3. Programov´an´ıv C pro UNIX System V, pr´acese soubory a s procesy, Sys- tem V IPC, nepopisuje napˇr.vl´aknaa s´ıtˇe. 4. O Linuxu bylo samozˇrejmˇev ˇceˇstinˇevyd´anomnoho dalˇs´ıch knih. 5. Vynikaj´ıc´ıknihy o jazyce C. Literatura - design a principy syst´emu 1. Uresh Vahalia: UNIX Internals: The New Frontiers. Prentice Hall; 1st edition, 1995 2. Bach, Maurice J.: The Design of the UNIX Operating System. Prentice Hall, 1986 3. McKusick, M. K., Neville-Neil, G. V.: The Design and Implementation of the FreeBSD Operating System. Addison-Wesley, 2004 4. McDougall, R.; Mauro, J.: Solaris Internals. Prentice Hall; 2nd edition, 2006. 5. Linux Documentation Project. http://tldp.org/ Tyto knihy se zab´yvaj´ıstavbou unixu, pouˇzit´ymialgoritmy, strukturami apod., nejsou to kniho o programov´an´ıpod t´ımto syst´emem. 1. Skvˇel´akniha, zab´yv´ase obecn´ymimyˇslenkami UNIXu a porovn´av´asyst´emy SVR4.2, 4.4BSD, Solarix 2.x a Mach. 12/2005 mˇelovyj´ıtdruh´e,doplnˇen´e vyd´an´ı.Po nˇekolika letech ˇcek´an´ıpˇrestalodruh´evyd´an´ıfigurovat v listingu na amazon.com, a tedy se budeme muset zˇrejmˇesm´ıˇrits t´ım,ˇzenevyjde. 2. Klasick´akniha o UNIXu, popis struktury a funkc´ıj´adraUNIX System V Rel. 2, ˇc´asteˇcnˇei 3; pˇrestoˇzeje to kniha z dneˇsn´ıhopohledu jiˇzzastaral´a, lze ji poˇr´adjednoznaˇcnˇedoporuˇcit,protoˇzeto je jedna z nejlepˇs´ıch knih, co byla kdy o UNIXu naps´ana.V roce 1993 vyˇselˇcesk´ypˇreklad, Principy operaˇcn´ıhosyst´emu UNIX, SAS. 4 3. Popis struktury a funkc´ıj´adraFreeBSD 5.2; tato kniha navazuje na klasickou knihu The Design and Implementation of the 4.4 BSD Operating System od stejn´ehoautora (resp. jeden ze ˇctyˇr,uveden´yjako prvn´ı). 4. Nejlepˇs´ıkniha o operaˇcn´ımsyst´emu Solaris. Obsahuje podrobn´einformace o tom, jak tento syst´emfunguje vˇcetnˇenejnovˇejˇs´ıch vˇec´ız verze 10 jako jsou z´ony, Crypto Framework, DTrace, Least Privilege model a dalˇs´ı. 5. Domovsk´astrana Linux dokumentaˇcn´ıhoprojektu. Literatura - programov´an´ı 1. Stevens, W. R., Rago, S. A.: Advanced Programming in UNIX(r) Environment. Addison-Wesley, 2nd edition, 2005. 2. Rochkind, M. J.: Advanced UNIX Programming, Addison-Wesley; 2nd edition, 2004 3. Stevens, W. R., Fenner B., Rudoff, A. M.: UNIX Network Programming, Vol. 1 { The Sockets Networking API. Prentice Hall, 3rd edition, 2004 4. Butenhof, D. R.: Programming with POSIX Threads, Addison-Wesley; 1st edition, 1997 5. UNIXov´especifikace, viz http://www.unix.org 6. manu´alov´estr´anky(zejm. sekce 2, 3) 1. Pravdˇepodobnˇenen´ı lepˇs´ı knihy o programov´an´ı pod unixem (neobsahuje s´ıt'ov´eprogramov´an´ı,to je v knize 3). 2. Aktualizovan´evyd´an´ıdalˇs´ız klasick´ych knih o programov´an´ıpod unixem. Obsahuje i s´ıt'ov´eprogramov´an´ıa aˇcsamozˇrejmˇenen´ıtak podrobn´ajako spo- jen´ıknih 1 a 3, m˚uˇzeto b´ytnˇekdynaopak v´yhodou. Tuto knihu jednoznaˇcnˇe doporuˇcuji,pokud chcete nˇecokupovat a chcete m´ıtpro zaˇc´atekjen jednu knihu. Pokud bych ji mˇelcharakterizovat jednou vˇetou,bylo by to, ˇzeautor vid´ıa dok´aˇze uk´azatsouvislosti, coˇzje velmi vz´acn´avlastnost. 3. Klasick´akniha o s´ıt'ov´emprogramov´an´ı,jedna z nejlepˇs´ıch k tomuto t´ematu; existuje i druh´yd´ıl UNIX Network Programming, Volume 2: In- terprocess Communications, kter´ase zab´yv´akomunikac´ımezi procesy (roury, POSIX IPC, System V IPC, synchronizace vl´aken, RPC). 4. Velmi dobr´aa podrobn´akniha o programov´an´ıs vl´akny. 5. Domovsk´astr´anka posledn´ıch specifikac´ırozhran´ıUNIXu. 5 6. Podrobn´ypopis jednotliv´ych funkc´ı (v Linuxu bˇeˇznˇene zcela dostaˇcuj´ıc´ı; manu´alov´estr´ankyv tomto syst´emu jsou ˇcastohorˇs´ıkvality neˇzu syst´em˚u ostatn´ıch). 7. Kniha, kter´ase neveˇslana slajd a kter´apˇrekraˇcujeobsah t´etopˇredn´aˇsky: Gallmeister, B. R.: POSIX.4 Programmers Guide: Programming for the Real World, O'Reilly; 1st edition, 1995. V´yborn´akniha s kr´asnou ob´alkou o real-time rozˇs´ıˇren´ıch POSIXu. Viz tak´estrany 155a 159. ... a spousta dalˇs´ıch knih, online dokumentac´ıa internetov´ych zdroj˚u,posledn´ı dobou vych´az´ıpomˇernˇehodnˇeknih o Linuxu, zamˇeˇren´ych na pouˇz´ıv´an´ıi programov´an´ı. ... jdˇetena http://www.amazon.com/ a zadejte kl´ıˇcov´eslovo \unix". Pokud byste z Amazonu nˇecokupovali, dejte pozor na to, ˇzemnoho knih m´aaktu- alizovan´avyd´an´ıi po nˇekolika m´aloletech, nˇekdyi levnˇejˇs´ıneˇzta p˚uvodn´ı, kter´ajsou vˇsakst´alena skladu a v on-line nab´ıdce;tak at' zbyteˇcnˇenekoup´ıte starˇs´ıvyd´an´ıneˇzto aktu´aln´ı.Nav´ıcse vyplat´ızkontrolovat i u pˇr´ısluˇsn´eho vydavatelstv´ı,ˇzenen´ıv brzk´edobˇenapl´anov´anovyd´an´ınov´e{ tato informace nˇekdyna Amazonu je, nˇekdyne. ... na Amazonu se m˚uˇzevyplatit nakoupit knihy z druh´eruky, protoˇzejsou ˇcasto v´yraznˇelevnˇejˇs´ıneˇzknihy nov´e.Probl´emje, ˇzevˇetˇsinounen´ımoˇzn´eje poslat pˇr´ımodo CR,ˇ ale mus´ıv´amje nˇekdopˇriv´ezt. Literatura - historie UNIXu • Peter Salus: A Quarter Century of UNIX, Addison-Wesley; 1st edition (1994) • Libes D., Ressler, S.: Life With Unix: A Guide for Everyone, Prentice Hall (1989) • Open Sources: Voices from the Open Source Revolution, kapitola Twenty Years of Berkeley Unix From AT&T-Owned to Freely Redistributable; O'Reilly (1999); on-line na webu: http://oreilly.com/openbook/opensources/book/index.html ... mnoho materi´al˚una webu; ˇcastovˇsakobsahuj´ıc´ıne zcela pˇresn´einformace • Kapitola o BSD Unixu z Open Sources napsan´aMarshallem Kirk McKusic- kem je opravdu v´yborn´a. 6 (Pre)historie UNIXu • 1925 { Bell Telephone Laboratories { v´yzkumv komunikac´ıch (napˇr.1947: transistor) v r´amci AT&T • 1965 { BTL s General Electric a MIT v´yvoj OS Multics (MULTIplexed Information and Computing System) • 1969 { Bell Labs opouˇst´ıprojekt, Ken Thompson p´ıˇse assembler, z´akladn´ıOS a syst´emsoubor˚upro PDP-7 • 1970 { Multi-cs ) Uni-cs ) Uni-x • 1971 { UNIX V1, a portov´anna PDP-11 • prosinec 1971 { prvn´ıedice UNIX Programmer's Manual • AT&T = American Telephone and Telegraph Company • Multics byl syst´em,kter´yv´yznamnˇeovlivnil dalˇs´ıv´yvoj operaˇcn´ıch syst´em˚u.