
- •Многоуровневая структура компьютера
- •Операционная система
- •Функции ос
- •Архитектуры ядра ос
- •Эволюция операционных систем их классификация и основные идеи
- •Режимы работы процессора и кольца защиты.
- •Особенности создания, компиляции и загрузки модуля ядра
- •Клавиатура
- •Архитектура и характеристики процессора
- •Базовая микроархитектура микропроцессора
- •Программная модель процессора х86
- •Содержимое регистра флагов.
- •Расширение базовой архитектуры микропроцессора
- •Память Иерархическая структура памяти. Ключевой принцип построения памяти эвм и его иерархическая организация.
- •Классификация запоминающих устройств
- •Принцип работы кэш памяти.
- •Факторы влияющие на эффективность кэш-памяти.
- •Способ отображения.
- •Алгоритм замещения информации заполненной кэш-памяти
- •Алгоритм согласования содержимого основной памяти и кэш-памяти.
- •Организация кэш-памяти.
- •Принципы организации оперативной памяти пэвм
- •Организация микросхем памяти
- •Характеристики функционирование и типы динамического озу.
- •Типы памяти
- •13.2. Память ddr
- •13.3. Память rdram (Rambus dram)
- •Устройства ввода/вывода
- •Структура связи между основными устройствами вычислительной системы.
- •1 Прямые межпроцессорные связи.
- •2 Через память
- •3 Межпроцессорные связи через коммуникационные каналы.
- •Контроллер прерываний.
- •Прямой доступ к памяти (dma)
- •Следующий набор регистров общий для всех каналов.
- •Контролер имеет 4 режима работы:
- •Типы передачи пдп:
- •Цикл обмена пдп
- •Видеоадаптер
- •Системный таймер
Режимы работы процессора и кольца защиты.
Процессор создается с учетом предоставления определенного количества колец защиты, ОС должна быть разработана для работы в той же структуре колец. ОС должна быть способной защитить себя от пользователей и приложений для этого она должна иметь возможность отличать свои операции от операций пользователя и их приложений. Кольца защиты предоставляют жесткие рамки, определяющие что могут делать процессы и к чему иметь доступ. Процессы работающие в рамках внутреннего кольца имеют больше привилегий по сравнению с процессами, работающими на внешних кольцах. С внутренним кольцом разрешается работать только самым надежным процессам. Внутреннее кольцо дает процессам полный доступ к ячейкам памяти, периферийным устройствам, системным драйверам и критичным параметрам конфигурации, поэтому это кольцо должно быть наиболее защищенным. В различных ОС количество колец может отличаться. Процессы работающие на внутреннем кольце работают в защищенном режиме процессора, а процессы на внешних кольцах - в реальном режиме. Кольцо 0 – ядро ОС
К
ольцо
1 – вынесены остальные части ОС
Кольцо 2 – драйверы и утилиты ввода/вывода
Кольцо 3 – приложения и действия пользователей
В линуксе 2 кольца 0 и 3. Лекция 3 Структура ядра ОС Linux
Переключение между реальным и защищенным режимами работы процессора, то есть переход между пространством ядра и пользователя, осуществляется по средствам системных вызовов.
Интерфейс системных вызовов реализует базовые функции (например: чтение, запись).
Системные вызовы открывают в прикладной программе доступ к системной информации, системе консольного ввода/вывода, к файловой системе, к системе управления памятью и процессами, позволяют организовать обращение к драйверам. Системные вызовы могут выполняться напрямую либо через библиотеку glibc. Преимущество использования библиотеки:
Библиотека выполняет роль защитной прослойки, защищая приложение от возможных ошибок связанных например с тем что в ядре изменился синтаксис системных вызовов. Библиотека предоставляет POSIX совместимый интерфейс
Используя системные вызовы напрямую недобросовестные программисты могут нарушить работу всей системы, изменив ее реакцию на какое либо событие.
Программа выполняя библиотечную функцию находится в пользовательском режиме, библиотечные функции обращаются к системным вызовам. Например библиотечная функция printf() вызывает системный вызов write() которой вывод строку на стандартное устройство вывода. Системные вызовы выступает от имени библиотечных функций, но работают уже в привилегированном режиме. После завершения работы системного вызова, управление опять передаются библиотечным функциям, происходит обратный переход в пространство пользователя. Чтобы исполнить системный вызов процесс заполняет регистры микропроцессора, соответствующими значениями (в регистр eax помещается номер системного вызова, в остальные регистры ebx, ecx, edx, edi, esi, ebp помещаются до 6 параметров этого вызова) и выполняет инструкцию программного прерывания с номером int 80h. Интерфейс системных вызовов может быть архитектурно зависим. Архитектурно зависимая часть реализация интерфейсов находится в подкаталоге linux/arch, а архитектурно не зависимая в каталоге linux/kerned (тут походу ошибка).
Архитектурно независимый код ядра состоит из нескольких модулей.
Управление процессами в подкаталоге ./linux/proc – это управление отдельными виртуализированными объектами. В пространстве ядра эти процессы называют потоками, а в пространстве пользователя – процессы.
Задачи управления процессами: создание нового процесса, остановка процесса их взаимодействие и синхронизация, включая совместное использование… фжыдвоафоажфоывжалжфдывлаоцу.
Управление памятью. Исходные коды находятся в библиотеке ./linux/mm. Для повышения эффективности память реализуется в виде страниц. В linux имеются средства для управления имеющейся памятью и аппаратными механизмами для установления соответсвия между физической и виртуальной памятью. Для хранения информации по странице физической памяти, ее физический адрес, принадлежность, режим использования и другое используется специальная структура page размером 40 байт. При наличии большого числа пользователей, для решения задачи ее исчерпания реализуется механизм подкачки (страницы удаляются из оперативной памяти и переносятся на жесткий диск).
Виртуальная файловая система. ./linux/fs представляет собой абстракцию интерфейса к многочисленным файловым системам (которых более 50).
ПРопущено
Архитектурно зависимый код. Находится в каталоге /arch. К архитектурно зависимой части также относятся и драйверы устройств
Ла ла ла системный вызов, на си будет выглядеть handle=open(‘file.txt”, O_RDWR).
На ассемблере:
Mov eax, 5
Mov ebx, filename
Mov eax, 02
Int 80h
Взаимодействие с аппаратурой из пространства пользователя возможно 2-мя способами: с использованием прерываний (системных вызовов); через порты ввода/вывода. Предпочтительным является 2-ой.
Доступ к устройствам через порты в/в может относительно безопасно выполнятся на 2-ух уровнях абстракции:
Файл виртуального устройства |dex| port отображает пространство портов и при наличии необходимых прав доступа позволяет пользовательскому процессу выполнять чтение или запись в порты средствами файлового ввода/вывода (open, close, read, write).
Доступ к портам на уровне модуля ядра выполняется классическими ассемблеровыми инструкциями int и out.
Точкой схождения 2-ух уровней абстракции является написание модуля ядра связанного с созданием собственного файла устройства в каталоге dev. Таким образом, можно зарезервировать конкретные аппаратные ресурсы и проследить связь действий над ними с соответствующими операциями на уровне правил абстракции.