Unix, bazovye principy i osobennosti
Vse sistemnye dejstviya vypolnyaet yadro operacionnoj sistemy
Unix. YAdro - obychnyj vypolnyaemyj fajl, raspolozhen v fajle /unix
ili /stand/unix ili /vmunix ili /vmlinuz (v zavisimosti ot kon-
kretnoj realizacii). Mozhete posmotret' razmer etogo fajla - ne
malen'kij. Pri nachal'noj zagruzke sistemy yadro celikom zagruzha-
etsya v operativnnuyu pamyat' i v dal'nejshem rezidentno nahoditsya
v nej, vypolnyaya vse neobhodimye raboty.
CHto vhodit v yadro.
DRAJVERY USTROJSTV. I teh, kotorye est', i teh, kotoryh net, no
mogut byt', a takzhe i takie, kotorye nikogda vam ne
ponadobyatsya.
UPRAVLYAYUSHCHIE PODPROGRAMMY: chasti koda, otvetstvennye za
obespechenie raboty pol'zovatel'skih programm - razdelenie
vremeni i prochih resursov sistemy.
SLUZHEBNYE TABLICY I DANNYE YADRA: tablicy tekushchih processov, ot-
krytyh fajlov, upravlyayushchie struktury...
SISTEMNYE VYZOVY. (To, chto MS-DOS nazyvaetsya "21 preryvanie",
mozhno schitat' nekotoroj analogiej/parodiej na sistemnye
vyzovy.) S tochki zreniya programmista eto obychnaya si-shnaya
funkciya, tol'ko vypolnyaet ona sistemno-zavisimye dejstviya,
naprimer: prochitat' dannye iz fajla, ustanovit' setevoe
soedinenie, sozdat' katalog, i t.d. i t.p. Vse sistemnye vyzovy
( a vsego ih bolee 1500 shtuk ) vkompilirovany v telo yadra Unix.
Pol'zovatel'skie programmy, vyzyvayushchie funkcii, yavlyayushchiesya
sistemnymi vyzovami, na samom dele soderzhat tol'ko jump'y na
sootvetstvuyushchie adresa pamyati v yadre. V pol'zovatel'skuyu
programmu sistemnye vyzovy ne vlinkovyvayutsya.
CHto nahoditsya v operativnoj pamyati.
YADRO OPERACIONNOJ SISTEMY.
BUFERNYJ K|SH. CHast' operativnoj pamyati rezerviruetsya pod keshi-
rovanie chteniya i zapisi na disk. Lyubaya operaciya chteniya s diska
privodit k tomu, chto prochitannye bloki pomeshchayutsya v bufernyj
kesh, a iz nego uzhe peredayutsya zaprosivshim dannye programmam.
Esli blok popal v kesh, to vse posleduyushchie obrashcheniya k nemu bu-
dut poluchat' obraz bloka iz kesha, prichem nezavisimo ot togo -
ta zhe samaya programma obrashchaetsya k bloku ili kakaya-libo dru-
gaya. Keshiruetsya takzhe i zapis' na disk, opyat' zhe, razdelyaemaya
mezhdu vsemi vypolnyaemymi programmami.
PROCESSY. Processom v Unix nazyvaetsya vypolnyayushchayasya programma.
Sredstva ekonomii pamyati. Virtual'naya pamyat'.
REENTERABELXNOSTX KODA. Kogda odna i ta zhe programma(vypolnya-
emyj fajl) zapushchena v neskol'kih ekzemplyarah, to v operativnuyu
pamyat' zagruzhaetsya tol'ko odna kopiya vypolnyaemogo assemblernogo
koda na vseh. Kazhdyj vypolnyamyj process ispol'zuet odin i tot
zhe tekst programmy, prosto u kazhdogo processa imeetsya svoj sob-
stvennyj ukazatel' na tekushchij operator.
RAZDELYAEMYE BIBLIOTEKI. (V Windows est' pohozhee ponyatie DLL -
dinamicheski podgruzhaemaya biblioteka). Nekotoroe kolichestvo chas-
to vypolnyaemyh funkcij (naprimer, printf, da i mnogo drugih)
oformlyaetsya v vide special'nym obrazom podgotovlennoj bibliote-
ki (SHARED LIBRARY). Pri kompilyacii programmy, ispol'zuyushchej
razdelyaemye biblioteki, eti funkcii ne linkuyutsya vnutr' koda
programmy. Oni "vydergivayutsya" iz biblioteki na stadii
vypolneniya programmy. |tim my ekonomim mesto na diske i v
operativnoj pamyati: v programmah otsutstvuet kod razdelyaemyh
funkcij, a v operativnoj pamyati eta funkciya prisutstvuet v
odnom ekzemplyare na vseh.
SWAPING. Kazhdyj Unix-process funkcioniruet v svoem sobstvennom
32-h bitnom virtual'nom adresnom prostranstve, ne peresekayushchem-
sya s drugimi. Adresnoe prostranstvo processa mozhet byt' bol'-
shim, chem fizicheskaya operativnaya pamyat'. Virtual'naya pamyat' pod-
derzhivaetsya s pomoshch'yu PAGING'a - razresheniya virtual'nyh adresov
v fizicheskie "na letu", s podkachkoj otsutstvuyushchih stranic
pamyati so swap-oblasti na zhestkom diske.
Na samom dele SWAPING'a kak takovogo v Unix'e net, vmesto nego
primenyaetsya gorazdo bolee gibkij PAGING. (swaping - po oprede-
leniyu, eto POLNAYA vygruzka programmy na swap-oblast' s cel'yu
osvobozhdeniya mesta v operativnoj pamyati).
Oblast' pamyati, zanyataya programmoj, razdelena na tri chasti: TEXT
(vypolnyaemye kody programmy), DATA (staticheskie dannye program-
my), STACK (dinamicheskie dannye). Kogda operacionka osvobozhdaet
mesto v pamyati za schet TEXT'a, to ona ne zanimaetsya sbrosom
ego na disk. Ona srazu pomechaet ego kak svobodnyj. Dejstvi-
tel'no, kogda potrebuetsya zagruzit' TEXT obratno v pamyat', ego
mozhno budet vzyat' iz samogo vypolnyaemogo fajla s programmoj.
Takaya ekonomiya imeet odin pobochnyj effekt. Fajl programmy, ko-
toraya v dannyj moment vypolnyaetsya, nevozmozhno unichtozhit'. Ope-
racionnaya sistema soobshchit v etom sluchae: "text file busy", i
otkazhetsya vypolnyat' udalenie.
BIT NAVYAZCHIVOSTI. (sticky bit). Vypolnyaemaya programma mozhet
imet' dopolnitel'nyj atribut. Tak nazyvaemyj "bit navyazchivos-
ti". Kogda takaya programma zakanchivaet vypolnenie, operacionka
(po vozmozhnosti) staraetsya ne zanimat' pamyat', v kotoroj naho-
dilsya tekst programmy. Sootvetstvenno, povtornyj ee zapusk pro-
izojdet ochen' bystro - ved' programma vse eshche zagruzhena v pa-
myat', ee ne trebuetsya zachityvat' s diska. Nuzhno prosto peredat'
na nee upravlenie.
Fajlovaya sistema v Unix - "derevyannaya", sostoit iz fajlov i
katalogov. Na kazhdom razdele diska sozdaetsya sobstvennaya neza-
visimaya fajlovaya sistema. Otdel'nye fajlovye sistemy "sceplyayut-
sya" vmeste, v edinoe obshchee derevo direktorij. Takaya operaciya
nazyvaetsya "montirovaniem". Vyglyadit eto primerno tak:
mount -F ufs /dev/dsk/m197_c0d0s5 /home1
mount -F ufs /dev/dsk/m197_c0d0s4 /usr
df
Poluchit' dostup k fajlam "nesmontirovannoj" fajlovoj sistemy
nevozmozhno. Porochnaya prakika MS-DOSa - skol'ko razdelov, stol'-
ko i "diskov" ( a: b: c: d: e: ... k: l: m: n:) v Unix ne pri-
menyaetsya. V Unix vsegda est' rovno odno obshchee derevo katalogov,
i, po bol'shomu schetu, pol'zovatelyam sovershenno vse ravno, na
kakom imenno diske ili razdele diska raspolozheny ego fajly
/usr/spool/moshkow ili /home1/moshkow/bin/mcopy ...
Fajlovaya sistema Unix keshiruetsya bufernym keshem. Operaciya zapi-
si na disk vypolnyaetsya ne togda, kogda eto prikazyvaet vypolnya-
emyj process, a kogda operacionnaya sistema sochtet nuzhnym eto
sdelat'. |to rezko podnimaet effektivnost' i skorost' raboty s
diskom, i povyshaet opasnost' ee ispol'zovaniya. Vyklyuchenie
pitaniya na "goryachej", rabotayushchej Unix-mashine privodit k
razrusheniyam struktury fajlovoj sistemy.
Pri kazhdoj nachal'noj zagruzke Unix proveryaet - korrektno li by-
la vyklyuchena mashina v proshlyj raz, i esli net - avtomaticheski
zapuskaet utilitu fsck (File System Check) - proverku i remont
fajlovyh sistem..
Vnutrennyaya struktura fajlovoj sistemy Unix
Razdel diska, v kotorom sozdana fajlovaya sistema, razbit na tri
chasti.
SUPERBLOK. Zanimaet 1 Kb.
Soderzhit sluzhebnuyu informaciyu:
Tip fajlovoj sistemy,
Razmer
Nachalo spiska svobodnyh blokov.
. . . chto-to eshche
OBLASTX INOD-ov. Zanimaet primerno 8% obshchego razmera razdela.
inode - Index-node - opisatel' fajla. On soderzhit vsyu informa-
ciyu o fajle, za isklyucheniem imeni fajla, i sobstvenno dannyh
fajla. V inod'e hranitsya:
tip fajla (fajl, katalog, imenovannyj kanal, special'nyj fajl)
kto vladelec
prava(atributy) fajla
vremya modifikaci/sozdaniya fajla
adresa blokov, iz kotoryh sostoit fajl
chto-to eshche ...
OBLASTX DANNYH. V etoj oblasti raspolozhenvIRTUALXNAYAYAy bloki s dannymi faj-
lov. Nezanyatye bloki provyazany v SPISOK SVOBOD-
NYH BLOKOV
Fajly byvayut dvuh osnovnyh tipov. FAJL, KATALOG.
FAJL - on i est' fajl.
KATALOG - fajl fiksirovannogo formata: sostoit iz strochek s
imenami fajlov, vhodyashchih v katalog
imya_fajla1 Nomer_Inoda1
imya_fajla2 Nomer_Inoda2
. . .
CHtoby poluchit' dostup k fajlu po imeni, operacionnaya sistema
1. nahodit eto imya v kataloge, soderzhashchem fajl,
2. beret Nomer_Inoda fajla,
3. po nomeru nahodit inod v oblasti inod'ov,
4. iz inod'a beret adresa blokov, v kotoryh raspolozheny dann-
ye fajla,
5. po adresam blokov schityvaet bloki iz oblasti dannyh.
Vse.
Format indeksnogo opisatelya fajla.
Oblast' inodov razbita na 64-h bajtnye struktury - inod'y.
V inod'e hranitsya:
Tip fajla (fajl/katalog/special'nyj fajl/fifo/socket)
Atributy (prava dostupa)
Vladelec fajla
Gruppa-vladelec fajla
Vremena sozdaniya, modifikacii, poslednego dostupa k fajlu
Dlina fajla
Adres 1-go bloka fajla
Adres 2-go bloka fajla
...
Adres 10-go bloka fajla
Adres bloka kosvennoj adresacii (bloka s 256 adresami blokov)
Adres bloka 2-j kosvennoj adresacii
(bloka s 256 adresami blokov s adresami)
Adres bloka 3-j kosvennoj adresacii
(bloka s adresami blokov s adresami blokov s adresami)
Tochnyj format struktury fajlovoj sistemy sm.
man fs
Last-modified: Sun, 07 Aug 2005 11:19:51 GMT