Една операционна система работи в тясна
близост до хардуерната система, която
всъщност е нейна основа. Операционната
система има определени
потребности, които могат да бъдат осигурени
само от хардуера. За пълното разбиране на
операционната система Линукс, трябва да сме
наясно и с лежащия в основата хардуер.
Тази глава накратко представя
хардуерните особености на
модерния PC.
Когато списанието "Popular Electronics" от
януари 1975 год. публикува на заглавната си
страница илюстрацията на Altair 8080, можеше да
се каже, че революцията е започнала. Altair 8080,
наречен така под влиянието на един от
ранните епизоди на Star Trek, можеше да се
сглоби от любители на електрониката при
домашни условия за 397$. С неговия Intel 8080
процесор и 256 байта памет, без монитор и
клавиатура, той беше изключително слаб от
гледна точка на днешните стандарти. Неговият
създател Ed Roberts въведе понятието "personal
computer" за да опише своето изобретение, но
това понятие днес се отнася за почти всеки
компютър, който можете да вдигнете без
чужда помощ. Съгласно тази дефиниция дори и
някои от най-мощните Alpha AXP системи са РС.
Ентусиазираните
хакери видяха възможностите на Altair
и започнаха да пишат софтуер и да
изграждат хардуер за него. За тези
първи пионери, това беше
олицетворение на свободата,
свободата от огромните системи
управлявани и пазени от една
елитна каста. Много бърз напредък
беше постигнат от прекъсналите
колежани, които бяха запленени от
този феномен, да имаш
компютър в къщи, на кухненската
маса. Появи се много разнообразен
хардуер и хакерите бяха щастливи
да напишат софтуер за тези нови
машини. Парадоксално беше, че IBM
твърдо подкрепи тази идея за
модерен PC, с пускането на IBM PC през
1981 год. и представянето му на
пазара в началото на 1982 год. С
неговия Intel 8088 процесор, 64К
памет (с възможност за разширение
до 256К), две флопи-дискови
устройства и цветен графичен
адаптер (Colour Graphics Adapter) с 25 реда
по 80 знака, не беше много мощен от
гледна точка на сегашните стандарти, но
се продаваше добре. През 1983 год.
беше последван от IBM PC-XT
притежаващ лукса на 10 Mb твърд
диск. Скоро отделни компоненти на IBM PC
се произвеждаха и от други компании,
например като Compaq и така архитектурата на
РС, де факто се стандартизира. Това
стандартизиране помогна за да се
появи конкуренция между
множеството хардуерни компании и
до снижаване на цените, за щастие
на потребителите. Много от
архитектурните елементи на
системите на тези ранни РС са се
прехвърлили и в съвременните.
Дори и система базирана на мощния Intel Pentium
Pro, използва начина на адресиране на Intel 8086.
Когато Linus Torvalds започна писането
на това, което по-късно става Линукс е използвал добре
подбран хардуер, един Intel 80386 PC.
При един поглед на РС отвън. в най-общия случай
се виждат: кутия, клавиатура, мишка
и монитор. На предната част на кутията
има копчета, малък дисплей показващ
няколко цифри и флопи. Повечето системи
днес имат и CD ROM, а ако е необходимо
устройство за съхраняване на данни, то може
да има и лентово устройство за резервни
копия. Общо тези устройства са известни
като периферни.
Макар, че процесорът има
всеобщ контрол върху системата, той не е
единственото интелигентно устройство в нея.
Всички контролери на периферните
компоненти, например IDE контролера, имат
някакво ниво на интелигентност. В РС на дънната платка са
разположени: процесорът, паметта, няколко
слота за ISA и PCI периферни контролери. Някои
от контролерите, например IDE, могат да бъдат
разположени директно на дънната платка.
1.1 Процесор
Процесорът, CPU (Central Processing Unit) или още
микропроцесорът, е сърцето на една
компютърна система. Микропроцесорът прави
изчисления, изпълнява логически операции и
управлява потоците от данни като използва
затова инструкции, които чете от паметта и
след това ги изпълнява. В ранната епоха на
компютрите, функционалните компоненти на
процесора са били отделни (и във физически
смисъл доста големи) единици. Тогава и възниква
понятието CPU (Central Processing Unit). В модерните
процесори всички тези отделни компоненти
са обединени в една интегрална електронна
схема, гравирана върху малка силиконова
пластина. Понятията: процесор, CPU (Central
Processing Unit) и микропроцесор се използват
взаимозаменяемо в тази книга.
Процесорът работи с данни представени в
двоичен вид; тези данни се състоят от
единици и нули.
Тези нули и единици
съответствуват на електрически ключ с
положения "включен" и "изключен".
Например десетичното число 42 има
значението на "4 десетици и 2 единици",
двоичните числа са поредица от нули и
единици, всяка от които представя степен на
числото 2. В този смисъл, степента показва,
колко пъти числото се умножава само по себе
си.Например: 10 на степен 1 е 10, 10 на степен 2 (102)
е 10х10, 10 на степен 3 (103) е 10х10х10 и т. н.
Двоичното число 0001 е равно на десетичното
1, двоичното число 0010 е равно на
десетичното 2, двоичното число 0011 е равно на
десетичното 3 и т. н. Така десетичното число
42 е равно на двоичното 101010 или (2 + 8 + 32 или 21 + 23 + 25).
По-често в компютрите вместо двоичен се
използва шестнадесетичен код.
В
шестнадесетичен вид, всеки знак представя
степен на числото 16. Тъй като числата
обозначени с един знак са само от 0 до 9 то
знаците от 10 до 15 се представят с буквите
A, B, C, D, E и F. Например, шестнадесетичното Е е
десетичното 14, а 2А е десетичното 42 (2 по 16 + 10).
Използвайки нотацията на програмния език С
(което правя по-нататък в книгата)
шестнадесетичните числа се предшествуват
от "0x"; така шестнадесетичното 2А
се пише като 0х2А.
Процесорът може да
изпълнява аритметични операции като
събиране, умножение, деление, а също така и
логически операции като "Х по-голямо ли е
от Y?"
Действията на процесора се
ръководят от един външен часовник. Този
системен часовник генерира импулси към
процесора и за всеки такъв импулс,
процесорът извършва определена работа.
Например, процесорът може да изпълнява една
инструкция на всеки импулс. Скоростта на процесора се описва посредством тактовете
на системния часовник. Един 100 MHz процесор
може да приеме 100 000 000 такта за една секунда.
Подвеждащо е да се отчита мощността на
процесора, съобразно тактовата му честота,
тъй като различните процесори изпълняват
различно количество работа за един такт. Но
ако всички фактори са идентични, то по-високата
тактова честота е показател за по-мощен
процесор. Инструкциите, които изпълнява
процесора са доста прости, например "Прочети
съдържанието на паметта от адрес Х и го
запиши в регистър Y" Регистрите са
вътрешна памет на самия процесор и служат
за съхранение на данни и за извършване на
действия с тях. По време на извършваните
операции може да се предизвика едно
прекъсване на текущата работа на процесора
и да се прехвърли посредством друга
инструкция на друго място в паметта. Това
разделяне на работата на малки съставни
части, дава на модерните процесори една
почти безгранична мощ да изпълнява милиони,
дори милиарди инструкции за секунда.
Инструкциите
трябва да бъдат изведени от паметта за да
могат да бъдат изпълнени. Инструкциите от
друга страна могат да се отнасят до данни намиращи
се в паметта, които също трябва да
бъдат изведени оттам и запазени на
подходящо място.
Размерът, броя и вида на
регистрите в процесора зависят изцяло от
неговия тип. Един Intel 4086 има различен тип
регистри в сравнение с един Alpha AXP процесор,
например за Intel те са с ширина 32 бита, а при Alpha AXP
са с ширина 64 бита. Обикновено, обаче всеки
процесор има няколко общи регистъра и малко
по-малко на брой регистри със специално
предназначение:
Program Counter (PC) - Програмен брояч
Този регистър съдържа адреса на
следващата инструкция, която трябва да
бъде изпълнена. Съдържанието на
програмния брояч се допълва всеки път,
когато се извежда една инструкция от
паметта.
Stack Pointer (SP) - Указател на стека
Процесорите трябва да имат достъп до
големи обеми от паметта за четене/писане (RАМ),
което от своя страна изисква да се улесни
временното съхранение на данни.Регистърът
Указател на стека е един такъв начин за лесно
съхраняване и извеждане на временни данни
във външната (RAM) памет. Обикновено
процесорът има специални инструкции,
позволяващи му да въвежда и по-късно да
извежда данни от този регистър.Стекът
работи на принципа "това което е
въведено последно се извежда първо". С
други думи, ако въведете две стойности в
последователност x и y, то извеждането на
стойности от стека ще започне с у.
Стековете
създавани от някои процесори се
разширяват в посока към горните слоеве на
паметта, докато при други това нарастване
става в посока към долните участъци. Има
процесори поддържащи и двата типа
нарастване, например ARM.
Processor Status (PS) - Статус на Процесора
Инструкциите могат да извеждат и
резултати, например "съдържанието на
регистър Х по-голямо ли е от съдържанието
на регистър Y", ще изведе съответния
резултат "вярно"
или "невярно". Регистърът Статус на
процесора пази тези и други данни за
моментното състояние на процесора.
Например, повечето процесори имат най-малко
два начина на работа, режим кърнъл (главен
ръководител) и режим потребител. Регистърът
Статус на процесора трябва да пази
информация за текущия режим на
процесора.
Във всяка система, различните видове
памет са подредени в йерархична структура,
като паметта е разположена на различни
места и работи с различна скорост. Най-бързата
памет е известна като кеш памет и се
характеризира, като памет, която се
използва за временно съхранение на
елементи от главната памет. Този вид памет е
много бърза, но и доста скъпа, затова
повечето процесори имат вградена в себе си
малък обем такава памет. Повечето системи
са с кеш памет, която е вградена на дъното.
Някои процесори имат два вида кеш-памет,
една за инструкциите и една за данните, а
при други кеш-паметта е обща. Alpha AXP
процесорът има вградени два вида кеш-памет,
една за данни (D-кеш) и една за инструкции (I-кеш).
Външната памет (B-кеш) смесва заедно D-кеш и I-кеш.
И накрая идва главната памет, която е много
по-бавна и определено може да се каже, че се
влачи в сравнение с гореспоменатите.
Кеш-паметта и главната памет трябва да са
кохерентни. Така че, ако една дума от
главната памет се пази на едно или на повече
места в кеш-паметта, то системата трябва да
осигури идентичността на съдържанието на паметите.
Тази задача за осигуряване на
кохерентността на кеш-паметта се изпълнява
както от хардуера така и от операционната
система. Това е вярно и за редица други
основни задачи на системата, когато хардуер
и софтуер трябва да са в близко
сътрудничество за постигане на поставените
цели.
Отделните компоненти на дънната платка си
комуникират посредством многобройни
свързващи системи наричани шини.
Системната шина се разделя по логически
признаци на три вида: адресна шина, шина за
данни и контролна шина. Адресната шина
определя адресите на паметта за трансфера
на данни.Шината за данни осигурява
трансфера на данни. Тя е двупосочна и
позволява да се четат и правят записи към и
от процесора. Контролната шина има различни
писти, които служат за разпределение на
времеви и контролни сигнали в системата.
Съществуват няколко вида шини, например PCI и
ISA шините са начини за свързване на
периферни компоненти към системата.
1.4 Контролери и
периферия
Периферните компоненти са физически
устройства, като видеокарта или диск и се
управляват от чипове, които се намират или
на дънната платка или на самата карта на
която са монтирани. Например IDE диска се
управлява от IDE контролер, SCSI диска - от SCSI
контролер и т. н. Повечето съвременни
системи използват PCI и ISA шините за да комуникират
помежду си, а и с останалите
компоненти от системата. Главният процесор
има задачата да управлява и
контролира цялата система, а контролерите са
процесори подобни на него и могат да бъдат разглеждани като
негови помощници
Всички контролери са различни, но общото е,
че имат съответните регистри, които ги управляват.
Софтуера на процесора трябва да може да
чете и да прави записи в регистрите на
контролерите. Една от възможностите на
регистъра е да пази данни за направена
грешка. Друга една възможност се използва
за контролни цели, т.е. да могат да се
променят функциите на контролера. Всеки
контролер на шината може да бъде
индивидуално адресиран от процесора. Това е
така, защото драйверите на отделните
устройства могат да правят запис в
съответния регистър и така да контролират
устройството. IDE контролера е един добър
пример за това, защото така е възможен
независим достъп до всяко отделно дисково
устройство. Друг добър пример е PCI шината,
позволяваща самостоятелен достъп до всяко
устройство (например видеокартата)
поотделно.
1.5 Адресни пространства
Системната шина свързва процесора с
паметта и е отделена от останалите шини
свързващи процесора с другите хардуерни
компоненти.. Най-общо, тази област от
паметта, където се пазят данните за
периферните компоненти се нарича I/O (Input/Output)
област. Тя от своя страна може да се разделя
на подобласти, но ние няма да разглеждаме
този въпрос за момента. Процесорът може да
достига, както системната област на
паметта, така и I/O областта, докато
контролерите нямат пряк достъп до
системната област, а само с помощта на
процесора. От гледна точка на устройството,
да речем флопи диск контролера, ще се види
само тази област от паметта, където са
неговите регистри (ISA), а не системната
област. Обикновено процесора има различни
инструкции за достъп до паметта и I/O
областта. Например, това може да бъде
инструкция от вида "прочети един байт от
адрес 0x3f0 и го запиши в регистър Х"
Това е начина по който процесора контролира
хардуерните компоненти, като чете и пише в
техните регистри в I/O областта на паметта.Мястото
в I/O областта на паметта, където се намират
регистрите на най-основните периферни
компоненти (IDE контролерите, серийни
портове, флопи диск контролер и т.н.) е
определено и е общоприето в течение на
развитието на РС архитектурата през
годините. Адресът 0x3f0 от I/O областта
например е адрес на един от контролните
регистри на серийния порт (СОМ1).
Има случаи когато контролерите трябва да
четат или записват големи обеми от данни
директно от или към системната памет.
Например, когато данни на потребителя
трябва да се запишат на твърдия диск. Direct Memory Access
(Директен достъп до паметта) контролерите
служат за да се осигури пряк достъп на
периферни компоненти до системната памет,
но този достъп все пак става под зоркото
наблюдение и контрол на процесора.
1.6 Таймери
За всички операционни системи е важно да
имат справка за времето, така че в
съвременните РС има периферия наречена Real Time Clock
(Часовник за реално време). Той подсигурява
две неща: точното време и един прецизен времеви
интервал. Той има собствено
захранване, така че върви и когато РС е
изключен, затова винаги се знае точното
време и датата. Времевия интервал позволява
на операционната система точно да планира
времето на някои основни дейности.
© 1996-1999 David A Rusling