Въведение в системата. Многозадачност и многопотребителност на операционната система. Структура на файловата система и представяне на физическите и логически устройства – директория /dev. Зареждане на операционната система.
Както бе отбелязано в предишната лекция, Линукс е многопотребителска и многозадачна операционна система. Като многозадачна операционна система Linux във всеки един момент от работата си поддържа няколко активни програми в паметта.
Най-важната и същевременно задължителна програма е ядрото (kernel).То се занимава с управлението на хардуера, паметта, разпределя ресурсите на компютъра между обикновените програми, управлява мрежовия трафик, файловата система и прави още куп важни неща.Останалите активно работещи програми се наричат процеси (process).
Процесите могат да си предават един на друг информация по няколко начина, най-важният от които е мрежовата комуникация (networking). Подобно на телефонните разговори между хора, всеки процес може да се опита да се свърже с друг процес, работещ на сьщия или на отдалечен компютър. Ако другият процес 'вдигне телефона' (приеме TCP връзка), започва обмен на информация.
Ако компютърът има един процесор, във всеки един момент може да работи най-много един процес (или ядрото). Но ядрото, използвайки особеностите на хардуера така превключва активните процеси, че създава илюзията за едновременна работа на всички стартирани процеси. Тук новото ядро 2.6 въведе понятието приоритетна многозадачност (preemptible). В предишните версии, ядрото не можеше да бъде прекъсвано по време на работа. При Линукс 2.6 ядрото в повечето случаи може да бъде прекъснато по време на задача, така че другите приложения могат да продължат работата си дори когато нещо работи на много ниско ниво.
Освен многозадачна Линукс е и многопотребителска операционна система. Тя може да съдържа набор от потребители, които се идентифицират пред нея чрез потребителско име и парола. Всеки един потребител има собствена директория, в която може да пази своите файлове (включително и конфигурационните файлове на различните програми), като тази директория е недостъпна за другите потребители. Всяка една Линукс система има един свръхпотребител наречен root. Той администрира система и има пълните права върху нея. Този свръхпотребител се създава при инсталирането на дистрибуцията, като след това той създава другите потребители.
Цялата тази информация(а и още много друга) се пази на твърдият диск на компютъра. Файлова система, най-общо казано се нарича набор от файлове, структурирани по някакъв начин и съхранени върху запомнящо устройство.
Едно от основните предимства на Linux е, че поддържа множество файлови системи. Това го прави особено гъвкав при съвместно съжителство с други операционни системи. Linux без проблем поддържа ext и ext2, msdos, ntfs и vfat, xia, minix, umsdos, iso9660, ufs, proc, sysv, ncp, smb, affs, hpfs, raiserfs и др.
Linux, както и UNIXTM не използват идентификатори (например C:\ или D:\) на устройствата за различните файлови системи, а организират всичко в една единствена йерархична дървовидна структура. Всяка нова файлова система, която трябва да бъде достъпна за Linux се добавя към тази дървовидна структура като нейно под-дърво. Мястото където присъединяваме (монтираме) добавяната файлова система се нарича точка на монтиране и задължително трябва да съществува във файловата система на Linux.
Всеки хард диск трябва да е разделен на дялове, като всеки дял е форматиран на дадена файлова система. Под Линукс тези дялове не са видими докато не се монтират. Дяловете в Линукс се именуват по различен начин спрямо дяловете във Windows. Следната таблица показва точно как се именуват различните дискове в компютъра:
|
IDE0 |
IDE1 |
---|---|---|
master |
hda |
hdc |
slave |
hdb |
hdd |
Дяловете на съответните дискове се номерират с името на диска последвано от номера на дяла. Номерата на дяловете започва от 1 до 4 за основните дялове и от 5 за логическите. Например първия дял на master диска закачен на първия IDE канал (IDE0) е hda1.
Файловата система може да бъде разгледана в два аспекта. На високо ниво под файлова система се разбира разположението на директориите и файловата йерархия в един дял, а на ниско ниво представлява начина на форматиране на блоковото устройство. Тук ще разгледаме файловата система само от високо ниво, тъй като ниското ниво обикновено е в интереса на тесен кръг от специалисти.
Една типична организация на директориите в една Linux система е следната:
/ | |-- X11R6 |
|
В зависимост от конкретната Линукс дистрибуция горната структура може повече или по-малко да се отличава. Монтирането на различните файлови системи може да стане както автоматично при зареждането на системата, така и ръчно с командата mount. Някои дистрибуции даже притежават програма, която следи за прикачването на нови устройства и ги монтира автоматично. Тази програма се нарича automounter и е стартирана непрекъснато. Такива програми, които са стартирани непрекъснато и следят за събития на които реагират се наричат демони.
Както може би прави впечатление, с устройствата под Линукс се работи малко по-различно отколкото под Windows. Тук всяко едно устройство представлява файл от файловата система. Споменатите hda, hdb и т.н всъщност са файлове в директорията /dev. В тази директория се намират и останалите устройства като звукови карти (/dev/dsp), мрежови карти (/dev/eth0 и т.н.), USB устройства и т.н. Тази схема е изключително гъвкава, тъй като операциите по четене и запис в устройствата се свеждат до операциите четене и запис от файлове (опростено казано). Всяко едно устройство може да е или block device или character device. Всеки един файл, който сочи устройство притежава два номера – major и minor. Например едно SCSI устройство /dev/sda2 (втория дял на първия открит SCSI диск), получава major номер 8, който е общ за всички SCSI устройства и minor номер 2, който указва втория дял на диска. Различните видове устройства си разпределят основните и второстепенните номера различно, затова не може да се определи със сигурност колко точно устройства може да има една Линукс система. В ядра до 2.4.х ограничението на основните и второстепенните номера е 255 и в съвременните системи понякога се оказват недостатъчни. Тези ограничения бяха повдигнати с новото 2.6.х ядро – 4096 major устройства и над милион minor.
Важни устройства са:
/dev/hdx(y) – устройствата закачени на IDE контролера на дънната платка. Това може да са хард дискове, CD/DVD устройства и т.н.
/dev/sdx(y) – устройства закачени на SCSI конпролер. може да са хард дискове, CD/DVD устройства и т.н. Понякога някои USB и CD/DVD устройства емулират SCSI, за да работят.
/dev/tty(x) – това са терминалите на Линукс.
/dev/ttyS(x) – серийните устройства. Например /dev/ttyS0 е COM1 под DOS/Windows.
/dev/null – специално устройство от което не може да се чете. Целта му е ненужната информация да се пренасочва към него тъй като не води никъде.
/dev/zero – устройство при четенето от което потребителя може да запълни файл с нули.
Както бе отбелязано по-горе стартирането на Линукс започва от стартирането на ядрото. Това става благодарение на малка част от него записана на специално място на дисковия носител. Тази част сама по себе си не може да управлява компютъра, но тя знае къде да погледне, за да зареди пълното ядро. След като бъде заредено, ядрото започва хардуерна проверка на различните устройства на компютъра и присвояване на определени параметри на тези устройства. Когато хардуерната проверка завърши, Линукс ядрото предава управлението на специална програма наречена init. В този момент тя започва зареждане на стартиращите скриптове, откъдето разбира в какъв режим се стартира системата (графичен, конзолен, многопотребителски или еднопотребителски) и необходимите програми за нормалната работа на операционната система. На този етап се стартират и услугите на системата, които може да са различни видове сървъри, демон за отдалечено управление и т.н. В края на зареждането init зарежда програмата login, която подканя потребителя да въведе потребителско име или парола. Ако е зададен графичен режим, то вместо login се зарежда програмата xdm (X Display Manager), която стартира графичния сървър и графичната среда.