
- •Безпека інформаційно- комунікаційних систем
- •Isbn 966-552-167-5
- •1.1. Термінологія
- •1.1.1. Системи, в яких здійснюється захист інформації
- •1.1.2. Завдання захисту інформації
- •1.1.3. Загрози і вразливості
- •1.1.4. Комплексна система захисту інформації
- •1.1.5. Об'єкти захисту та їхні властивості
- •1.1.6. Розроблення й оцінювання захищених систем
- •1.2. Загрози безпеці інформації
- •1.2.1. Класифікація загроз
- •1.2.2. Перелік типових загроз безпеці
- •1.2.3. Класифікація атак
- •1.2.4. Методика класифікації загроз stride
- •1.2.5. Модель загроз
- •1.3. Порушники
- •1.3.1. Визначення терміну «хакер»
- •1.3.2. Наслідки віддій порушників
- •1.3.3. Модель порушника
- •2.1. Рівні інформаційно-комунікаційної системи
- •2.2. Функціональні сервіси безпеки і механізми, що їх реалізують
- •2.2.1. Таксономія функцій систем захисту
- •2.3. Основні підсистеми комплексу засобів захисту
- •2.3.1. Підсистема керування доступом
- •2.3.2. Підсистема ідентифікації й автентифікації
- •2.3.3. Підсистема аудита
- •Підсистема забезпечення цілісності
- •Криптографічна підсистема
- •3.1. Історична довідка
- •3.2. Основні поняття
- •3.3.1. Симетричне шифрування
- •3.3.2. Асиметричне шифрування
- •4.1. Загальні поняття теорії захисту інформації
- •4.2. Позначення, аксіоми та визначення
- •4.3. Основні типи політик безпеки
- •4.4. Математичні моделі безпеки
- •4.4.1. Моделі дискреційної політики безпеки
- •4.4.2. Моделі мандатної політики безпеки
- •5.1. Передумови виникнення вразливостей у комп'ютерних системах
- •5.2. Класифікація вад захисту
- •5.2.1. Класифікація вад захисту за причиною їх появи
- •5.2.2. Класифікація вад захисту за їх розміщенням у системі
- •5.2.3. Класифікація вад захисту за етапами їх появи
- •5.3. Класифікація помилок, що виникають у процесі програмної реалізації системи
- •5.4. Помилки переповнення буфера
- •5.4.1. Переповнення буфера у стеку
- •5.4.2. Переповнення буфера у статичній або динамічній пам'яті
- •5.4.3. Помилка переповнення в один байт
- •5.5. Помилки оброблення текстових рядків
- •5.5.1. Використання конвеєра
- •5.5.2. Переспрямування введення-виведення
- •5.5.3. Спеціальні символи
- •5.6. Люки
- •5.6.1. Режим debug у програмі sendmail
- •6.1. Класифікація шкідливого програмного забезпечення
- •6.2. Програмні закладки
- •6.2.1. Функції програмних закладок
- •6.2.2. Шпигунські програми
- •6.2.3. «Логічні бомби»
- •6.2.4. Люки — утиліти віддаленого адміністрування
- •6.2.5. Несанкціонована робота з мережею
- •6.2.6. Інші програмні закладки
- •6.3. Комп'ютерні віруси
- •6.3.1. Файлові віруси
- •6.3.2. Завантажувальні віруси
- •6.3.3. Макровіруси
- •6.3.4. Скриптові віруси
- •6.3.5. Захист від комп'ютерних вірусів
- •6.4. Мережні хробаки
- •6.4.1. Класифікація мережних хробаків
- •6.4.2. Хробак Морріса
- •6.4.3. Сучасні мережні хробаки
- •6.5. «Троянські коні»
- •6.5.1. Соціальна інженерія
- •6.5.2. Класифікація «троянських коней»
- •6.5.3. Шпигунські троянські програми
- •6.5.4. Троянські інсталятори
- •6.5.5. «Троянські бомби»
- •6.6. Спеціальні хакерські утиліти
- •6.6.1. Засоби здійснення віддалених атак Засоби проникнення на віддалені комп'ютери
- •6.6.2. Засоби створення шкідливого програмного забезпечення
- •6.6.3. Створення засобів атак
- •7.1. Призначення стандартів інформаційної безпеки
- •7.2. Стандарти, орієнтовані на застосування військовими та спецслужбами
- •7.2.1. «Критерії оцінювання захищених комп'ютерних систем» Міністерства оборони сша
- •7.2.2. Інтерпретація і розвиток tcsec
- •7.2.3. Керівні документи Державної технічної комісії при Президенті Російської Федерації
- •7.3. Стандарти, що враховують специфіку вимог захисту в різних системах
- •7.3.1. Європейські критерії безпеки інформаційних технологій
- •7.4. Стандарти, що використовують
- •7.4.1. Концепція профілю захисту
- •7.4.2. Федеральні критерії безпеки
- •8.1. Законодавча і нормативна база захисту
- •8.1.1. Закон України «Про захист інформації
- •8.1.2. Нормативні документи системи
- •8.2. Оцінювання захищеності інформації,
- •8.2.1. Особливості термінології
- •8.2.2. Критерії захищеності інформації в комп'ютерних системах від несанкціонованого доступу
- •8.2.3. Класифікація автоматизованих систем
- •8.3. Керівні документи з вимогами до захисту інформації в інформаційних системах певних типів
- •8.3.1. Вимоги із захисту конфіденційної інформації
- •8.3.2. Вимоги до захисту інформації веб-сторінки від несанкціонованого доступу
- •9.1. Основні відомості
- •9.2. Базові поняття
- •9.3.2. Оцінювання об'єкта за «Загальною методологію»
- •9.3.3. Матеріали, необхідні для проведення кваліфікаційного аналізу
- •9.3.4. Три етапи здійснення кваліфікаційного аналізу
- •9.4. Структура основних документів «Загальних критеріїв»
- •9.4.1. Профіль захисту
- •9.4.2. Завдання з безпеки
- •1. Вступ.
- •5. Вимоги безпеки.
- •8. Обґрунтування.
- •10.1. Завдання апаратного захисту
- •10.2. Підтримка керування пам'яттю
- •10.2.1. Віртуальні адреси
- •10.2.2. Віртуальна пам'ять
- •10.2.3. Трансляція адрес
- •10.4. Особливості архітектури процесорів Intel х86
- •10.4.2. Селектори та дескриптори сегментів і сторінок
- •10.5.2. Сегментно-сторінковий розподіл пам'яті
- •10.6. Керування задачами
- •10.6.1. Виклик процедур
- •10.6.2. Виклик задач
- •10.6.3. Привілейовані команди
- •11.1. Загрози безпеці операційних систем
- •11.1.1. Сканування файлової системи
- •11.1.2. Викрадення ключової інформації
- •11.1.3. Добирання паролів
- •11.1.4. Збирання сміття
- •11.1.5. Перевищення повноважень
- •11.1.6. Програмні закладки
- •11.1.7. «Жадібні» програми
- •11.2. Поняття захищеної операційної системи
- •11.2.1. Підходи до побудови захищених операційних систем
- •11.2.2. Принципи створення захищених систем
- •11.2.3. Адміністративні заходи захисту
- •11.2.4. Політика безпеки
- •11.3.1. Основні функції кзз
- •11.3.2. Розмежування доступу
- •11.3.3. Ідентифікація, автентифікація й авторизація
- •11.3.4. Аудит
- •12.1. Історія створення unix
- •12.2. Архітектура системи
- •12.3.1. Модель безпеки системи unix
- •12.3.2. Підсистема ідентифікації й автентифікації
- •12.3.3. Підсистема розмежування доступу
- •12.3.4. Підсистема реєстрації
- •12.4. Адміністрування засобів безпеки unix 12.4.1. Особливості адміністрування
- •12.4.2. Утиліти безпеки
- •12.4.3. Характерні вразливості системи unix
- •13.1. Основні відомості про систему
- •13.1.1. Стисло про історію створення системи
- •13.1.2. Відповідність вимогам стандартів безпеки
- •13.2.1. Основні концепції
- •13.2.2. Компоненти системи захисту
- •13.3. Розмежування доступу
- •13.3.1. Основні принципи реалізації системи розмежування
- •13.3.2. Суб'єкти доступу Windows
- •13.3.3. Об'єкти доступу Windows
- •13.3.4. Стандартні настроювання прав доступу
- •13.3.5. Ідентифікація й автентифікація
- •13.3.6. Реалізація дискреційного керування доступом
- •13.4. Аудит
- •14.1. Обґрунтування застосування захищених ос для створення систем оброблення конфіденційної інформації
- •14.2. Система Trusted Solaris
- •14.2.1. Основні характеристики середовища Trusted Solaris
- •14.2.2. Керування доступом у середовищі Trusted Solaris
- •14.2.3. Окреме зберігання позначеної мітками
- •14.2.4. Адміністрування безпеки у середовищі Trusted Solaris
- •14.3. Операційна система Фенікс
- •14.3.1. Архітектура системи
- •14.3.2. Засоби захисту
- •14.3.3. Дискреційна модель ієрархічного керування
- •14.3.4. Засоби керування доступом
- •14.3.5. Перегляд протоколу аудита
- •14.3.5. Програмні інтерфейси системи
- •14.3.7. Застосування операційної системи Фенікс
- •15.1. Основні відомості про комп'ютерні мережі
- •15.1.1. Відкриті системи
- •15.1.2. Модель взаємодії відкритих систем
- •15.1.3. Стеки протоколів
- •15.2. Інтернет
- •15.2.1. Організація
- •15.2.2. Адресація
- •15.2.3. Маршрутизація
- •15.3. Загрози безпеці інформації у мережах
- •15.4. Безпека взаємодії відкритих систем
- •15.4.1. Сервіси безпеки
- •15.4.2. Специфічні механізми безпеки
- •15.4.3. Універсальні механізми безпеки
- •15.4.5. Подальший розвиток міжнародних стандартів
- •16.1. Протоколи прикладного рівня
- •16.1.1. Протокол Telnet
- •16.1.2. Протокол ftp
- •16.1.3. Мережні служби unix
- •16.2. Транспортні протоколи
- •16.2.1. Протокол udp
- •16.2.2. Протокол tcp
- •16.3. Протокол ip
- •16.3.1. Призначення й можливості протоколу iPv4
- •16.3.2. Атаки на протокол iPv4, пов'язані з адресацією Підміна адреси відправника
- •16.3.3. Атаки, що ґрунтуються на помилках оброблення фрагментованих пакетів
- •16.3.4. Можливості, закладені у протокол iPv6
- •16.4.1. Особливості протоколу
- •16.4.2. Модель загроз
- •16.4.3. Механізми захисту
- •16.4.4. Рішення з безпеки
- •Interdomain Route Validation
- •16.4.5. Оцінювання захищеності
- •16.5. Протоколи керування мережею 16.5.1. Протокол ісмр
- •16.5.2. Протокол snmp
- •17.1. Система електронної пошти
- •17.1.1. Архітектура системи електронної пошти
- •17.1.2. Формат повідомлення електронної пошти
- •17.1.3. Протокол smtp
- •17.1.4. Протокол рорз
- •17.1.5. Протокол імар4
- •17.1.6. Загрози, пов'язані з використанням електронної пошти
- •17.1.7. Анонімне відсилання електронної пошти
- •17.1.8. Атаки через систему електронної пошти
- •17.2.1. Принципи веб-технології
- •17.2.2. Протокол http
- •17.2.3. Динамічні сторінки
- •17.2.4. Уразливості серверного програмного забезпечення
- •17.2.5. Уразливості у сценаріях
- •17.2.7. Міжсайтовий скриптінг
- •17.2.8. Захист сервера від атак
- •17.2.9. Атака на клієнта
- •17.2.10. Безпека Java
- •18.1. Архітектура захищених мереж
- •18.1.1. Протидія прослуховуванню трафіку
- •18.1.2. Сегментація мережі
- •18.1.3. Резервування мережного обладнання і каналів зв'язку
- •18.2. Міжмережні екрани
- •18.2.1. Можливості міжмережних екранів
- •18.2.2. Рівні реалізації
- •18.2.3. Особливості персональних брандмауерів
- •18.2.4. Недоліки міжмережного екрана
- •18.3. Системи виявлення атак
- •18.3.1. Можливості систем виявлення атак
- •18.3.2. Різні типи систем виявлення атак
- •18.3.3. Інформаційні джерела
- •18.3.4. Аналіз подій у системах виявлення атак
- •18.3.5. Відповідні дії систем виявлення атак
- •18.4. Додаткові інструментальні засоби
- •18.4.1. Системи аналізу й оцінювання вразливостей
- •18.4.2. Перевірка цілісності файлів
- •Передавання інформації через захищені мережі
- •19.1. Захист інформації, що передається відкритими каналами зв'язку
- •19.2. Віртуальні захищені мережі
- •19.2.1. Різні види віртуальних захищених мереж
- •Vpn віддаленого доступу
- •19.2.2. Проблеми побудови віртуальних захищених мереж
- •19.3. Рівні реалізації віртуальних захищених мереж
- •19.3.1. Захист віртуальних каналів на сеансовому рівні
- •19.3.2. Захист віртуальних каналів на мережному рівні
- •19.3.3. Захист віртуальних каналів на канальному рівні
- •19.4. Вимоги нормативної бази до реалізації віртуальних захищених мереж в Україні
- •20.1. Порядок проведення робіт зі створення комплексної системи захисту інформації
- •20.1.1. Структура комплексної системи захисту інформації
- •20.1.2. Створення комплексної системи захисту інформації
- •Обґрунтування потреби у створенні системи захисту
- •20.2.2. Обстеження середовищ функціонування
- •20.2.3. Визначення й аналіз можливих загроз безпеці
- •20.2.4. Розроблення політики безпеки
- •20.2.5. Перелік вимог до захищеної системи
- •20.3. Розроблення технічного завдання на створення комплексної системи захисту інформації
- •20.4. Створення і впровадження комплексної системи захисту інформації
- •20.4.1. Розроблення проекту Порядок розроблення проекту
- •20.4.2. Введення комплексної системи захисту інформації в дію та оцінювання захищеності інформації в інформаційно-телекомунікаційних системах
- •20.4.3. Супроводження комплексної системи захисту інформації
- •21.1. Вимоги до кваліфікаційного аналізу
- •21.2. Організація державної експертизи
- •21.2.1. Положення про державну експертизу
- •21.2.2. Рекомендації з оформлення програм і методик проведення експертизи комплексної системи захисту інформації
- •21.3. Сертифікація засобів технічного захисту інформації
- •22.1. «Типове положення про службу захисту інформації в автоматизованій системі»
- •22.1.1. Загальні положення
- •22.1.2. Завдання та функції служби захисту інформації
- •22.1.3. Права й обов'язки служби захисту інформації
- •22.1.4. Взаємодія служби захисту інформації з іншими підрозділами та із зовнішніми організаціями
- •22.1.5. Штатний розклад і структура служби захисту інформації
- •22.1.6. Організація заходів служби захисту інформації та їх фінансування
- •22.2. Рекомендації щодо структури
- •22.2.1. Завдання захисту інформації в ас
- •22.2.2. Класифікація інформації, що обробляють в ас
- •22.2.3. Компоненти ас і технології оброблення інформації
- •22.2.4. Загрози інформації в ас
- •22.2.5. Політика безпеки інформації в ас
- •22.2.6. Календарний план робіт із захисту інформації в ас
- •22.3. Iso/iec 27002 «Інформаційні технології — Методики безпеки — Практичні правила управління безпекою інформації»
- •22.3.1. Загальні відомості про стандарт
- •22.3.2. Структура й основний зміст стандарту
- •22.3.3. Інші стандарти серн 27000
- •Грайворонський Микола Владленович Новіков Олексій Миколайович безпека інформаційно-комунікаційних систем
- •21100, М. Вінниця, вул. 600-річчя, 19.
10.4. Особливості архітектури процесорів Intel х86
У цьому підрозділі мова йтиме про 32-розрядні процесори Intel, здатні працювати в захищеному режимі: 80386, 80486, різні процесори Pentium і Celeron. Ці процесори підтримують зворотну сумісність і мають багато спільних рис. Саме під час проектування процесора 80386 близько 20 років тому компанія Intel розробила програмну модель процесора, яку використовують і дотепер. Кожна нова модель процесора має суттєві відмінності, які здебільшого стосуються розширення його можливостей завдяки додаванню нових наборів команд, арифметичних пристроїв, груп регістрів. Ці процесори можуть мати кардинально змінену внутрішню будову, що дає змогу з більшими швидкістю та інтелектом виконувати задану послідовність команд, але мало торкаються зовнішньої, доступної програмісту структури процесора, яка, власне, і становить його програмну модель. У цьому розділі ми розглянемо лише ті функції процесорів х86, які забезпечують захист областей пам'яті та підтримують ізоляцію процесів під час їх квазіпаралельного
виконання,
а також наведемо необхідні для їх
розуміння відомості, що стосуються
набору і структури регістрів процесора.
Детальнішу інформацію про процесори
Intel
х86
можна знайти, наприклад, у [63, 92, 94].
10.4.1.
Регістри процесорів х86
Сучасні
процесори Pentium,
як відомо, мають потужне «серце» з
усіма ознаками
архітектури RISC:
великим регістровим файлом із 40
універсальними регістрами,
механізмом
перевпорядкування команд і перейменування
регістрів. Арифметичні та логічні
виконуючі пристрої процесора фактично
працюють зовсім з іншою
системою
команд — це мікрокоманди, на які
спеціальні пристрої декодування
«розбирають»
вихідний програмний код. Але все це
недоступне ззовні, а програм
на
модель процесора визначає набір
команд, що має типові ознаки архітектури
CISC,
зокрема, порівняно невелику кількість
доступних програмісту регістрі
и
процесора, багато способів
адресації операндів і команди, що
поєднують арифметичні та логічні
операції з адресацією операндів у
пам'яті.
Регістри
процесора х86 поділено на групи, і
майже кожен із них має своє
специфічне
призначення. Далі перелічено основні
такі групи:
регістри
загального призначення;
покажчик
інструкцій (або програмний лічильник)
і регістр прапорців;
♦
регістри сегментів;
регістри
системних адрес;
регістри
керування;
регістри
налагодження і тестування;
регістри
математичного сопроцесора;
регістри
розширень (ММХ, ХММ).
У
табл. 10.1 наведено основні відомості
про деякі з регістрів [63, 94]. |
Регістри процесорів Intel х86 |
|
Позначення |
Назва |
Особливості використання |
Регістри загального призначення |
|
|
cax/ax/ah/al |
Акумулятор (Accumulator register) |
Основний регістр для зберігання операндів арифметичних і логічних команд; у деяких командах адресується неявно, тому його використання обов'язкове |
ebx/bx/bh/bl |
Базовий регістр (Base register) |
Використовується для зберігання базової адреси деякого об'єкта в пам'яті |
ecx/cx/ch/cl |
Лічильник (Counter register) |
Використовується в командах, які виконують дії, що повторюються, наприклад для організації циклів (команда loop); такі команди можуть аналізувати значення есх (есх=0 — умова виходу з циклу) і автоматично зменшувати есх на одиницю за кожного проходження |
Таблиця 10.1 (продовження) |
||
Позначення |
Назва |
Особливості використання |
cdx/dx/dh/dl |
Регістр даних |
Використовується разом із акумулятором для |
|
(Data register) |
зберігання операндів; у деяких командах його використання обов'язкове, позаяк адресація може здійснюватися неявно |
esi/si |
Індекс джерела |
Ці два регістри використовуються в так званих |
|
(Source Index |
ланцюгових операціях, коли здійснюється |
|
register) |
послідовне оброблення елементів, що утворюють |
cdi/di |
Індекс одержувача (Destination Index register) |
ланцюг або неперервний ряд (наприклад, копіювання рядка символів або масиву значень |
|
з одної області пам'яті до іншої); при цьому початкова адреса області-джерела заноситься в esi, початкова адреса області-одержувача — в edi, а кількість елементів, що копіюються — в есх |
|
esp/sp |
Покажчик стека |
Показує вершину стека в поточному сегменті стека; |
|
(Stack Pointer |
значення цього регістра автоматично змінюється |
|
register) |
після виконання операцій записування у стек і зчитування із стеку (push/pushf/pop/popf) |
ebp/bp |
Покажчик бази |
Може показувати на довільні дані всередині стека |
|
(Base Pointer |
й активно використовується для передавання даних |
|
register) |
через стек, наприклад під час виклику процедури; ebp може також показувати на будь-які дані, зокрема в сегменті даних (в останньому випадку його часто використовують разом з ebx) |
Покажчик інструкцій і регістр прапорців |
||
еір/ір |
Покажчик |
Вказує на команду, яку процесор має виконати |
|
інструкцій |
наступною (точніше, яку він наступною має |
|
(Instruction |
завантажити на конвеєр оброблення). Заміна вмісту |
|
Pointer register) |
цього регістра викликає переключення процесора на іншу команду або послідовність команд. Таку заміну не можна виконувати явно, проте її може бути здійснено автоматично після виконання деяких команд: команд переходу jmp (а також численних команд умовних переходів), команд виклику процедур call, команд організації циклів loop. Залежно від того, яку адресацію використано у програмі — 32- або 16-розрядну — процесор працює з 32-розрядним регістром еір або з його молодшою половиною ір, сумісною із програмним кодом для процесорів 8086 |
eflags/ flags |
Регістр прапорців |
Окремі біти цього регістра — прапорці — мають |
|
(Flag register) |
певне функціональне призначення. Вони апаратно встановлюються в результаті виконання певних команд та (або) умов. Значення прапорців перевіряються під час виконання майже всіх команд і можуть впливати як на результат їх виконання, так і на режим роботи процесора. Молодша половина регістра eflags повністю аналогічна регістру flags процесора 8086 |
Таблиця 10.1 (продовження) |
||
Позначення |
Назва |
Особливості використання |
Регістри сегментів |
|
|
CS |
Сегмент коду |
Адресує сегмент коду, який виконується |
|
(Code Segment |
процесором. Для переходу в інший сегмент коду |
|
register) |
необхідно завантажити нове значення в регістр cs, причому явних команд для цього не існує: це здійснюється автоматично під час виконання процесором команд jmp або call |
SS |
Сегмент стека |
Адресує сегмент стека, з яким у поточний момент |
|
(Stack Segment |
працює процесор. Для організації іншого стека |
|
register) |
необхідно завантажити в ss нове значення, при |
|
цьому потрібно зберегти поточне значення ss, щоб мати змогу повернутися назад |
|
ds |
Сегмент даних |
Адресує дані в оперативній пам'яті, з якими працює |
|
(Data Segment |
процесор; сегмент ds є основним і адресується |
|
register) |
неявно |
es, gs, fs |
Додаткові |
Адресують дані в оперативній пам'яті, з якими |
|
сегменти даних |
працює процесор; ці сегменти даних потребують |
|
(Extension Data |
явної адресації за допомогою спеціальних префіксів) |
|
Segment register) |
у командах |
Регістри системних адрес |
|
|
gdtr |
Регістр глобальної |
Має 48 розрядів, з-поміж яких 32 старших розряди |
|
таблиці |
становлять лінійну базову адресу глобальної таблиці |
|
дескрипторів |
дескрипторів у пам'яті, а 16 молодших розрядів |
|
(Global Descriptor |
задають розмір таблиці |
|
Table Register)" |
|
Idtr |
Регістр локальної |
16-розрядний регістр, що містить селектор, який |
|
таблиці |
вказує на дескриптор у глобальній таблиці, що |
|
дескрипторів |
описує спеціальний сегмент (локальну таблицю |
|
(Local Descriptor |
дескрипторів процесу), який виконується в даний |
|
Table Register) |
момент |
idtr |
Регістр таблиці |
48-розрядний регістр, за будовою аналогічний |
|
дескрипторів |
регістру gdtr |
|
переривань |
|
|
(Interrupt |
|
|
Descriptor Table |
|
|
Register) |
|
tr |
Регістр задачі |
16-розрядний регістр, що містить селектор, який |
|
(Task Register) |
вказує на дескриптор у глобальній таблиці, що описує спеціальний сегмент (сегмент стану задачі (TSS)), який містить контекст поточного процесу |
Регістри керування |
|
|
cr0 |
|
Містить прапорці, які суттєво впливають на роботу процесора і відображають глобальні (не залежні від конкретної задачі) ознаки його функціонування. Деякі важливі системні прапорці з цього регістра: ре (Protect Enable), біт 0 — вмикає захищений режим роботи процесора; cd (Cache Disable), біт 30 — вмикає використання внутрішньої кеш-пам'яті (кеш першого рівня); pg (Paging), біт 31 — вмикає сторінкову трансляцію адрес |
У
регістрах загального призначення
зберігаються операнди арифметичних і
логічних операцій, компоненти адрес і
покажчики на комірки пам'яті. Всього є
вісім 32-розрядних регістрів загального
призначення: еах, ebx,
есх, edx,
esi,
edi,
esp,
ebp.
Для сумісності з програмами, написаними
для попередніх 16-розрядних моделей
процесорів, підтримуються звернення
за іменами до молодших 16 розрядів
кожного з цих регістрів і до окремих
байтів із молодшої половини чотирьох
арифметичних регістрів. Наприклад, еах
— 32-розрядний регістр, ах — його розряди
від 0 до 15, аl
— його розряди від 0 до 7, ah
—
його розряди від 8 до 15. Переважну
більшість цих регістрів програмісти
можуть використовувати на свій розсуд,
але в окремих командах деякі регістри
мають певне значення, що впливає на їх
основне використання і назву.
Адресувати
будь-який об'єкт у пам'яті можна лише
через сегмент, якому він належить. У
програмній моделі процесорів х86
передбачено шість сегментних регістрів:
cs,
ss,
ds,
es,
gs,
fs.
Кожен
із них адресує певний сегмент у пам'яті.
Залежно від типу сегмента існують
обмеження на методи доступу до нього,
про які мова йтиме далі. Деякі з сегментів
адресуються неявно через відповідний
сегментний регістр.
Усі
регістри сегментів 16-розрядні, такими
вони були ще у процесорі 8086 (регістри
gs
і fs
було додано у пізніших моделях
процесорів). У реальному режимі роботи
процесора в ці регістри заносяться 16
старших розрядів 20-розрядних базових
адрес сегментів, які є фізичними адресами
початку відповідного сегмента в
оперативній пам'яті. У захищеному режимі
може підтримуватись як 16-, так і
32-розрядна адресація (починаючи з
процесора Pentium
Pro,
реалізовано підтримку 36-розрядної
адресації, але її особливості ми не
розглядатимемо). Слід зазначити, що
в сегментні регістри заносяться так
звані селектори сегментів, які адресують
не самі сегменти, а їхні дескриптори.
Докладніше ці структури і роботу з ними
буде розглянуто у підрозділі 10.4.2.
Регістри
системних адрес
містять покажчики на системні таблиці,
призначені для керування пам'яттю та
диспетчеризації процесів. Доступ до
сегментів у пам'яті здійснюється
через дескриптори, розміщені у двох
доступних процесу таб-
Таблиця 10.1 (закінчення) |
|
Позначення Назва |
Особливості використання |
сг2 |
Призначений для роботи сторінкового механізму |
|
віртуальної нам'яті. Містить лінійну віртуальну адресу |
|
команди, яка викликала виняткову ситуацію 14 |
|
(відсутність сторінки в пам'яті). Обробник цієї |
|
виняткової ситуації після завантаження необхідної |
|
сторінки в пам'ять має змогу відновити роботу |
|
програми, передавши керування на адресу з сг2 |
сгЗ |
Призначений для роботи сторінкового механізму |
|
віртуальної пам'яті. Містить фізичну базову адресу |
|
каталогу сторінок |
сг4 |
Містить прапорці-ознаки підтримки різних |
|
архітектурних елементів, упроваджених у різних |
|
моделях процесорів, наприклад, 36-розрядної |
|
адресації, 4-мегабайтових сторінок тощо |
лицях. Одну з них, яка містить дескриптори, що описують програмний код і дані спільні для всіх процесів (бібліотеки, драйвери пристроїв тощо), та численні системні об'єкти, називають глобальною (Global Descriptor Table, GDT). Друга таблиця, локальна (Local Descriptor Table, LDT), доступна лише тому процесу, який виконується в даний момент. Кожний процес має власну локальну таблицю. На ці таблиці вказують відповідно регістри gdtr і Idtr. Також окремий регістр (idtг) вказує на таблицю дескрипторів переривань (Interrupt Descriptor Table, IDT).
Для диспетчеризації процесів основною структурою даних є контекст проце су, який знаходиться у спеціальному системному об'єкті та в обраній розробника ми процесора х86 термінології називається сегментом стану задачі (Task Status Segment, TSS). Цей об'єкт описує дескриптор, на який вказує регістр ts.
Сегменти, що вказують на глобальні системні об'єкти (gdtr та idtr), містять базові лінійні адреси цих об'єктів, а також задають розмір об'єктів. Сегменти, що вказують на локальні для кожного процесу об'єкти (Idtr та tr), містять лише се лектори, які адресують відповідні дескриптори у глобальній таблиці. Отже, таблиця GDT містить дескриптори, що описують сегменти стану задач і локальні таблиці дескрипторів усіх процесів, які викопуються в системі. Для переходу до виконання іншого процесу необхідно лише завантажити у регістри Idtr та tr від повідні дескриптори.
Процесори х86 мають п'ять 32-розрядних регістрів, призначених для загального керування системою (сг0-сг4). З-поміж цих регістрів доступні 4, регістр cr1 зарезервовано для подальшого застосування. Доступ до них мають лише програми, які виконуються з рівнем привілеїв 0 (тобто в нульовому кільці захисту).
Регістри налагодження і тестування, регістри математичного сопроцесора, регістри розширень, на кшталт ММХ (цілочислове мультимедійне розширення), ХММ (мультимедійне розширення з плаваючою крапкою) та інші у цій книжці не розглядатимуться.