Модули операционной системы, входящие в состав ядра, загружаются в оперативную память

Обновлено: 21.11.2024

I, определение и типы

Операционная система ( ОС ) может считаться самой важной программой, работающей на компьютере. Каждый компьютер общего назначения должен иметь операционную систему, обеспечивающую программную платформу, поверх которой могут работать другие программы (прикладное программное обеспечение). Это также основная программа управления компьютером, которая планирует задачи, управляет хранилищем и обеспечивает связь с периферийными устройствами. Центральным модулем операционной системы является «ядро». Это часть операционной системы, которая загружается первой и остается в основной памяти. Поскольку он остается в памяти, важно, чтобы ядро ​​было как можно меньше, но при этом предоставляло все основные службы, необходимые для других частей операционной системы и приложений. Как правило, ядро ​​отвечает за управление памятью, процессами и задачами, а также управление дисками.

Как правило, прикладное программное обеспечение должно быть написано для работы поверх определенной операционной системы. Таким образом, ваш выбор операционной системы в значительной степени определяет приложения, которые вы можете запускать. Для ПК наиболее популярными операционными системами являются Windows 95/98, MS-DOS (Microsoft-Disk Operating System), OS/2, но доступны и другие, такие как Linux, BeOS�

Для больших систем операционная система имеет еще большие обязанности и полномочия. Это как гаишник: следит, чтобы разные программы и одновременно запущенные пользователи не мешали друг другу. Операционная система также отвечает за безопасность, гарантируя, что неавторизованные пользователи не получат доступ к системе. С этой точки зрения операционные системы можно классифицировать следующим образом:

Операционная система является 16-разрядной операционной системой, если она одновременно обрабатывает 16 бит данных, например: DOS. С другой стороны, Windows 98 и OS/2 Warp являются 32-разрядными операционными системами, поскольку они могут одновременно обрабатывать 32 бита данных.

Сетевая операционная система (NOS) – это операционная система, которая позволяет компьютерам находиться в сети и управляет различными аспектами сети. Некоторые примеры: Windows для рабочих групп, Windows NT, AppleTalk, DECnet и LANtastic�

II, Управление хранилищем

Операционная система имеет систему управления файлами для организации и отслеживания файлов. Хотя все операционные системы предоставляют собственную систему управления файлами, вы можете установить другую систему управления файлами, взаимодействующую с операционной системой и обеспечивающую дополнительные функции, такие как улучшенные процедуры резервного копирования и более строгая защита файлов. Наиболее часто используемая файловая система — иерархическая, использующая каталоги для организации файлов в древовидную структуру. Может быть одна древовидная структура на единицу хранения или одна древовидная структура, включающая все единицы хранения и представленная некоторыми специальными каталогами.

Каталог – это файл особого типа, используемый для организации других файлов. Он содержит бухгалтерскую информацию о файлах, которые, образно говоря, находятся под ними. Вы можете думать о каталоге как о папке или кабинете, который содержит файлы и, возможно, другие папки. На самом деле, во многих графических пользовательских интерфейсах вместо каталога используется термин «папка».

В компьютерных руководствах каталоги и файловые структуры часто описываются в виде перевернутого дерева. Файлы и каталоги на любом уровне содержатся в каталоге над ними. Самый верхний каталог называется корневым каталогом. Каталог, который находится ниже другого каталога, называется подкаталогом. Каталог над подкаталогом называется родительским каталогом.

Чтобы получить доступ к файлу, вам может потребоваться указать имена всех каталогов над ним, то есть указать его путь доступа (сокращенно: path ). Абсолютный путь файла — это список имен всех каталогов над ним от корня. Операционная система также отслеживает каталог, в котором вы сейчас работаете. Пути, которые не начинаются с корневого каталога, операционная система предполагает, что они начинаются с рабочего каталога; это относительные пути. Каждая операционная система имеет свои правила указания путей. В системах DOS, например, корневой каталог называется '\', родительский каталог может называться '..', а каждый подкаталог отделяется дополнительной обратной косой чертой. В UNIX корневой каталог называется /, а за каждым подкаталогом следует косая черта. В среде Macintosh каталоги разделяются двоеточием.

\DOS\Example.txt и \Other\Mine\Account.xls

..\DOS\Example.txt и Mine\Account.xls

Подстановочный знак — это специальный символ, обозначающий один или несколько символов. Многие операционные системы и приложения поддерживают подстановочные знаки для идентификации файлов и каталогов. Это позволяет выбрать несколько файлов с одной спецификацией.Например, в DOS и Windows звездочка (*) — это подстановочный знак, обозначающий любую комбинацию букв, а вопросительный знак — это подстановочный знак, обозначающий любую отдельную букву. Таким образом, спецификация файла «m*» относится ко всем файлам, начинающимся с m. Точно так же спецификация «m*.doc» относится ко всем файлам, которые начинаются с m и заканчиваются на .doc. Многие текстовые процессоры также поддерживают подстановочные знаки для выполнения текстового поиска.

Разные операционные системы налагают разные ограничения на имена файлов. Большинство операционных систем, например, запрещают использование определенных символов (особенно подстановочных знаков) в имени файла и налагают ограничение на длину имени файла (DOS ограничивает имя файла до 8 символов и расширение до 3 символов). В пределах одного каталога имена файлов должны быть уникальными. Однако два файла в разных каталогах могут иметь одно и то же имя. Некоторые операционные системы, такие как UNIX и операционная система Macintosh, позволяют файлу иметь более одного имени, называемого псевдонимом, ссылкой или символической ссылкой.

При открытии файла операционная система временно присваивает ему номер, который называется дескриптором файла. Операционная система использует дескриптор файла внутри при доступе к файлу. Специальная область основной памяти зарезервирована для дескрипторов файлов, и размер этой области определяет, сколько файлов может быть открыто одновременно. Например, в DOS и Windows вы можете установить максимальное количество открытых файлов с помощью оператора FILES= в файле CONFIG.SYS, который содержит некоторые параметры конфигурации ОС.

Для поиска файлов на диске операционная система использует таблицу: Таблица размещения файлов ( FAT ). Из-за фрагментации файл может быть разделен на множество разделов, разбросанных по диску. FAT отслеживает все эти фрагменты. В системах DOS файлы FAT хранятся в скрытых файлах, называемых файлами FAT. VFAT — это сокращение от Virtual File Allocation Table, файловой системы, используемой в Windows для рабочих групп и Windows 95. VFAT — это 32-разрядная версия старой 16-разрядной FAT, которая поддерживает длинные имена файлов. Новая версия VFAT доступна в Windows 95 OSR 2 и Windows 98: FAT32, которая увеличивает количество битов, используемых для адресации кластеров, а также уменьшает размер каждого кластера. В результате он может поддерживать большие диски (до 2 терабайт) и более эффективное хранение (меньше свободного места).

NTFS — это сокращение от NT File System, одной из файловых систем операционной системы Windows NT (Windows NT также поддерживает файловую систему FAT). В NTFS есть функции для повышения надежности, такие как журналы транзакций, помогающие восстанавливаться после сбоев диска. Чтобы контролировать доступ к файлам, вы можете установить разрешения для каталогов и/или отдельных файлов. Файлы NTFS недоступны из других операционных систем, таких как DOS. Для больших приложений NTFS поддерживает составные тома, что означает, что файлы и каталоги могут быть распределены по нескольким физическим дискам.

Чтобы подготовить носитель данных, обычно диск, к чтению и записи, его необходимо отформатировать. Когда вы форматируете диск, операционная система стирает с диска всю учетную информацию, проверяет диск, чтобы убедиться, что все сектора надежны, помечает плохие сектора (то есть те, которые поцарапаны) и создает внутренние таблицы адресов, которые она позже использует. чтобы найти информацию. Вы должны отформатировать диск, прежде чем сможете его использовать.

III, Пользовательский интерфейс

Как и большая часть программного обеспечения, операционная система имеет пользовательский интерфейс. Пользовательский интерфейс — это часть программы, которая связывает компьютер с человеком-оператором (пользователем). Существуют также интерфейсы для подключения программ, для подключения устройств и для подключения программ к устройствам.

Первым и старейшим типом интерфейса является интерфейс, управляемый командами. Это относится к программам и операционным системам, которые принимают команды в виде специальных слов или букв. Напротив, говорят, что программы, которые позволяют вам выбирать из списка опций в меню, управляются меню. Программное обеспечение, управляемое командами, часто более гибкое, чем программное обеспечение, управляемое меню, но его труднее освоить, поскольку оно требует изучения командного языка. Этот язык представляет собой язык программирования, с помощью которого пользователь общается с операционной системой или приложением. Например, язык команд DOS включает в себя команды DIR, COPY и DEL, и это лишь некоторые из них. Часть операционной системы, отвечающая на команды операционной системы, называется командным процессором. Когда отображается командная строка, командный процессор ожидает команды. После ввода команды командный процессор анализирует синтаксис, чтобы убедиться, что команда действительна, а затем либо выполняет команду, либо выдает предупреждение об ошибке. Другой термин для командного процессора — интерпретатор командной строки.

Графический пользовательский интерфейс (GUI) позволяет вводить команды, указывая и нажимая на объекты, которые появляются на экране. Он использует графические возможности компьютера, чтобы упростить использование программы.Хорошо спроектированные графические пользовательские интерфейсы могут освободить пользователя от изучения сложных командных языков. С другой стороны, многие пользователи считают, что интерфейс, управляемый командами, работает более эффективно, особенно если они уже знают командный язык.

Графические пользовательские интерфейсы, такие как Microsoft Windows и интерфейс Apple Macintosh, содержат следующие основные компоненты:

Первый графический пользовательский интерфейс был разработан Исследовательским центром Xerox Corporation в Пало-Альто в 1970-х годах, но только в 1980-х годах и с появлением Apple Macintosh графические пользовательские интерфейсы стали популярными. Одной из причин их медленного принятия было то, что они требуют значительной мощности процессора и высококачественного монитора, которые до недавнего времени были чрезмерно дорогими.

Помимо своих визуальных компонентов, графические пользовательские интерфейсы также упрощают перемещение данных из одного приложения в другое. Настоящий графический интерфейс включает стандартные форматы для представления текста и графики. Поскольку форматы четко определены, разные программы, работающие под общим графическим интерфейсом, могут совместно использовать данные. Это позволяет, например, скопировать график, созданный программой для работы с электронными таблицами, в документ, созданный текстовым процессором («копировать-вставить»). Для этого операционная система реализует буфер обмена, который представляет собой специальный файл или область памяти (буфер), где данные временно хранятся перед копированием в другое место.

Выражение "перетаскивание" описывает приложения, которые позволяют перетаскивать объекты в определенные места на экране для выполнения над ними действий. Например, в среде Macintosh или в Windows 95/98 можно перетащить документ на значок корзины, чтобы удалить его. При правильной реализации функция перетаскивания работает быстрее и интуитивно понятнее, чем альтернативные варианты, такие как выбор параметров из меню или ввод команд.

Получите полный доступ к Understanding the Linux Kernel, 3-е издание и более 60 000 других книг с бесплатной 10-дневной пробной версией O'Reilly.

Есть также прямые онлайн-мероприятия, интерактивный контент, материалы для подготовки к сертификации и многое другое.

Каждая компьютерная система включает в себя базовый набор программ, называемый операционной системой . Самая важная программа в наборе называется ядро . Он загружается в оперативную память при загрузке системы и содержит множество важных процедур, необходимых для работы системы. Другие программы являются менее важными утилитами; они могут предоставить пользователю широкий спектр интерактивных возможностей, а также выполнять все задачи, для которых пользователь купил компьютер, но основная форма и возможности системы определяются ядром. Ядро предоставляет ключевые средства для всего остального в системе и определяет многие характеристики более высокого программного обеспечения. Поэтому мы часто используем термин «операционная система» как синоним «ядру».

Операционная система должна выполнять две основные задачи:

Взаимодействовать с аппаратными компонентами, обслуживая все низкоуровневые программируемые элементы, входящие в состав аппаратной платформы.

Предоставить среду выполнения приложениям, работающим в компьютерной системе (так называемые пользовательские программы).

Некоторые операционные системы позволяют всем пользовательским программам напрямую работать с аппаратными компонентами (типичным примером является MS-DOS). Напротив, Unix-подобная операционная система скрывает все низкоуровневые детали, касающиеся физической организации компьютера, от приложений, запускаемых пользователем. Когда программа хочет использовать аппаратный ресурс, она должна отправить запрос в операционную систему. Ядро оценивает запрос и, если оно решает предоставить ресурс, взаимодействует с соответствующими аппаратными компонентами от имени пользовательской программы.

Для реализации этого механизма современные операционные системы полагаются на наличие определенных аппаратных функций, которые запрещают пользовательским программам напрямую взаимодействовать с низкоуровневыми аппаратными компонентами или получать доступ к произвольным участкам памяти. В частности, аппаратное обеспечение предоставляет как минимум два различных режима выполнения для ЦП: непривилегированный режим для пользовательских программ и привилегированный режим для ядра. Unix называет их User Mode и Kernel Mode соответственно.

В оставшейся части этой главы мы познакомим вас с основными концепциями, лежащими в основе разработки Unix за последние два десятилетия, а также Linux и других операционных систем. Хотя эти концепции, вероятно, знакомы вам как пользователю Linux, в этих разделах мы попытаемся рассмотреть их немного глубже, чем обычно, чтобы объяснить требования, которые они предъявляют к ядру операционной системы. Эти общие соображения относятся практически ко всем Unix-подобным системам. Мы надеемся, что другие главы этой книги помогут вам понять внутреннее устройство ядра Linux.

Многопользовательские системы

Многопользовательская система — это компьютер, способный одновременно и независимо выполнять несколько приложений, принадлежащих двум или более пользователям.Одновременно означает, что приложения могут быть активны одновременно и конкурировать за различные ресурсы, такие как ЦП, память, жесткие диски и т. д. Независимо означает, что каждое приложение может выполнять свою задачу, не заботясь о том, что делают приложения других пользователей. Переключение с одного приложения на другое, конечно же, замедляет работу каждого из них и влияет на время отклика, которое видят пользователи. Многие сложности ядер современных операционных систем, которые мы рассмотрим в этой книге, присутствуют, чтобы свести к минимуму задержки в каждой программе и предоставить пользователю максимально быстрые ответы.

Многопользовательские операционные системы должны включать несколько функций:

Механизм аутентификации для подтверждения личности пользователя

Механизм защиты от ошибочных пользовательских программ, которые могут блокировать работу других приложений в системе

Механизм защиты от вредоносных пользовательских программ, которые могут вмешиваться в действия других пользователей или следить за ними

Механизм учета, который ограничивает количество единиц ресурсов, назначенных каждому пользователю

Для обеспечения надежных механизмов защиты операционные системы должны использовать аппаратную защиту, связанную с привилегированным режимом ЦП. В противном случае программа пользователя могла бы получить прямой доступ к схемам системы и преодолеть наложенные ограничения. Unix – это многопользовательская система, обеспечивающая аппаратную защиту системных ресурсов.

Пользователи и группы

В многопользовательской системе у каждого пользователя есть личное пространство на компьютере; как правило, ему принадлежит некоторая квота дискового пространства для хранения файлов, получения личных почтовых сообщений и т.д. Операционная система должна гарантировать, что приватная часть пользовательского пространства видна только ее владельцу. В частности, он должен гарантировать, что ни один пользователь не сможет использовать системное приложение с целью нарушения личного пространства другого пользователя.

Все пользователи идентифицируются по уникальному номеру, называемому ID пользователя или UID . Обычно только ограниченному числу лиц разрешается пользоваться компьютерной системой. Когда один из этих пользователей начинает рабочий сеанс, система запрашивает логин и пароль . Если пользователь не вводит правильную пару, система отказывает в доступе. Поскольку пароль считается секретным, обеспечивается конфиденциальность пользователя.

Чтобы выборочно делиться материалами с другими пользователями, каждый пользователь должен быть членом одной или нескольких групп пользователей , которые обозначаются уникальным номером, называемым идентификатором группы пользователей . Каждый файл связан ровно с одной группой. Например, доступ можно настроить так, чтобы пользователь, владеющий файлом, имел права на чтение и запись, группа имела права только на чтение, а другим пользователям в системе было отказано в доступе к файлу.

В любой Unix-подобной операционной системе есть специальный пользователь с именем root или superuser . Системный администратор должен войти в систему как пользователь root для работы с учетными записями пользователей, выполнения задач обслуживания, таких как резервное копирование системы и обновление программ и т. д. Пользователь root может делать практически все, потому что операционная система не применяет к ней привычные механизмы защиты. В частности, пользователь root может получить доступ ко всем файлам в системе и управлять каждой запущенной пользовательской программой.

Процессы

Все операционные системы используют одну фундаментальную абстракцию: процесс . Процесс может быть определен либо как «экземпляр исполняемой программы», либо как «контекст выполнения» работающей программы. В традиционных операционных системах процесс выполняет одну последовательность инструкций в адресном пространстве ; адресное пространство — это набор адресов памяти, на которые процесс может ссылаться. Современные операционные системы допускают процессы с несколькими потоками выполнения, то есть несколькими последовательностями инструкций, выполняемых в одном и том же адресном пространстве.

Многопользовательские системы должны обеспечивать среду выполнения, в которой несколько процессов могут быть активны одновременно и конкурировать за системные ресурсы, в основном ЦП. Системы, допускающие параллельные активные процессы, называются мультипрограммными или многопроцессорными . [*] Важно отличать программы от процессов; несколько процессов могут выполнять одну и ту же программу одновременно, а один и тот же процесс может выполнять несколько программ последовательно.

В однопроцессорных системах только один процесс может занимать центральный процессор, поэтому одновременно может выполняться только один поток выполнения. Как правило, количество процессоров всегда ограничено, поэтому одновременно могут выполняться только несколько процессов. Компонент операционной системы, называемый планировщиком, выбирает процесс, который может выполняться. Некоторые операционные системы допускают только невытесняемые процессы, что означает, что планировщик вызывается только тогда, когда процесс добровольно освобождает ЦП.Но процессы многопользовательской системы должны быть вытесняемыми ; операционная система отслеживает, как долго каждый процесс удерживает ЦП, и периодически активирует планировщик.

Unix — это многопроцессорная операционная система с вытесняемыми процессами. Даже когда ни один пользователь не вошел в систему и не запущено ни одно приложение, несколько системных процессов контролируют периферийные устройства. В частности, несколько процессов прослушивают системные терминалы, ожидая входа пользователя в систему. Когда пользователь вводит имя для входа, процесс прослушивания запускает программу, которая проверяет пароль пользователя. Если личность пользователя подтверждается, процесс создает другой процесс, запускающий оболочку, в которую вводятся команды. Когда графический дисплей активирован, один процесс запускает оконный менеджер, и каждое окно на дисплее обычно запускается отдельным процессом. Когда пользователь создает графическую оболочку, один процесс запускает графические окна, а второй процесс запускает оболочку, в которой пользователь может вводить команды. Для каждой пользовательской команды процесс оболочки создает другой процесс, который выполняет соответствующую программу.

Операционные системы, подобные Unix, используют модель процесса/ядра . У каждого процесса есть иллюзия того, что он единственный процесс на машине и имеет монопольный доступ к службам операционной системы. Всякий раз, когда процесс выполняет системный вызов (то есть запрос к ядру, см. главу 10), аппаратное обеспечение меняет режим привилегий с режима пользователя на режим ядра, и процесс запускает выполнение процедуры ядра со строго ограниченной целью. Таким образом, операционная система действует в контексте выполнения процесса, чтобы удовлетворить его запрос. Всякий раз, когда запрос полностью удовлетворен, процедура ядра заставляет аппаратное обеспечение вернуться в режим пользователя, и процесс продолжает выполнение с инструкции, следующей за системным вызовом.

Архитектура ядра

Как указывалось ранее, большинство ядер Unix являются монолитными: каждый уровень ядра интегрирован во всю программу ядра и работает в режиме ядра от имени текущего процесса. Напротив, микроядерные операционные системы требуют от ядра очень небольшого набора функций, обычно включающих несколько примитивов синхронизации, простой планировщик и механизм межпроцессного взаимодействия. Несколько системных процессов, которые выполняются поверх микроядра, реализуют другие функции уровня операционной системы, такие как распределители памяти, драйверы устройств и обработчики системных вызовов.

Хотя академические исследования операционных систем ориентированы на микроядра , такие операционные системы, как правило, медленнее, чем монолитные, потому что явный обмен сообщениями между различными уровнями операционной системы имеет свою цену. Однако операционные системы с микроядром могут иметь некоторые теоретические преимущества перед монолитными. Микроядра вынуждают системных программистов применять модульный подход, поскольку каждый уровень операционной системы представляет собой относительно независимую программу, которая должна взаимодействовать с другими уровнями через четко определенные и понятные программные интерфейсы. Более того, существующую микроядерную операционную систему можно легко перенести на другие архитектуры, поскольку все аппаратно-зависимые компоненты обычно инкапсулированы в код микроядра. Наконец, микроядерные операционные системы, как правило, лучше используют оперативную память (ОЗУ), чем монолитные, потому что системные процессы, которые не реализуют необходимые функции, могут быть заменены или уничтожены.

Для реализации многих теоретических преимуществ микроядер без снижения производительности ядро ​​Linux предлагает модули . Модуль — это объектный файл, код которого может быть связан с ядром (и отсоединен от него) во время выполнения. Объектный код обычно состоит из набора функций, которые реализуют файловую систему, драйвер устройства или другие функции на верхнем уровне ядра. Модуль, в отличие от внешних слоев микроядерных операционных систем, не запускается как отдельный процесс. Вместо этого она выполняется в режиме ядра от имени текущего процесса, как и любая другая статически связанная функция ядра.

Основные преимущества использования модулей включают в себя:

Поскольку любой модуль может быть связан и разъединен во время выполнения, системные программисты должны ввести четко определенные программные интерфейсы для доступа к структурам данных, обрабатываемым модулями. Это упрощает разработку новых модулей.

Даже если модуль может полагаться на определенные аппаратные функции, он не зависит от фиксированной аппаратной платформы. Например, модуль драйвера диска, основанный на стандарте SCSI, работает как на IBM-совместимом ПК, так и на Hewlett-Packard Alpha.

Незначительное использование основной памяти

Модуль можно связать с работающим ядром, когда требуется его функциональность, и разъединить, когда он больше не нужен; это весьма полезно для небольших встроенных систем.

После компоновки объектный код модуля эквивалентен объектному коду статически компонуемого ядра. Следовательно, не требуется явная передача сообщений при вызове функций модуля. [*]

[*] Некоторые многопроцессорные операционные системы не являются многопользовательскими; пример — Microsoft Windows 98.

[*] Небольшое снижение производительности происходит, когда модуль связан и отключен. Однако этот штраф можно сравнить со штрафом, вызванным созданием и удалением системных процессов в микроядерных операционных системах.

Получите Понимание ядра Linux, 3-е издание прямо сейчас с онлайн-обучением O’Reilly.

Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.

Ядро — это компьютерная программа, которая является сердцем и ядром операционной системы. Поскольку операционная система контролирует систему, ядро ​​также контролирует все в системе. Это самая важная часть операционной системы. Всякий раз, когда система запускается, ядро ​​​​является первой программой, которая загружается после загрузчика, потому что ядро ​​​​должно обрабатывать остальную часть системы для операционной системы. Ядро остается в памяти до завершения работы операционной системы.

Ядро отвечает за низкоуровневые задачи, такие как управление дисками, памятью, задачами и т. д. Оно обеспечивает интерфейс между пользователем и аппаратными компонентами системы. Когда процесс делает запрос к ядру, он называется системным вызовом.

Ядро снабжено защищенным пространством ядра, которое представляет собой отдельную область памяти, и эта область недоступна для других прикладных программ. Таким образом, код ядра загружается в это защищенное пространство ядра. Помимо этого, память, используемая другими приложениями, называется пользовательским пространством. Поскольку это два разных пространства в памяти, связь между ними немного медленнее.

Функции ядра

Ниже приведены функции ядра:

  • Доступ к ресурсам компьютера. Ядро может получать доступ к различным ресурсам компьютера, таким как ЦП, устройства ввода-вывода и другие ресурсы. Он действует как мост между пользователем и ресурсами системы.
  • Управление ресурсами. Обязанностью ядра является совместное использование ресурсов между различными процессами таким образом, чтобы каждый процесс имел одинаковый доступ к ресурсам.
  • Управление памятью. Каждому процессу требуется определенный объем памяти. Таким образом, память должна быть выделена и освобождена для его выполнения. Все это управление памятью осуществляется ядром.
  • Управление устройствами: периферийные устройства, подключенные к системе, используются процессами. Таким образом, распределением этих устройств управляет ядро.

Режим ядра и пользовательский режим

Есть определенные инструкции, которые должны выполняться только ядром. Таким образом, ЦП выполняет эти инструкции только в режиме ядра. Например, управление памятью должно выполняться только в режиме ядра. В пользовательском режиме ЦП выполняет процессы, заданные пользователем в пользовательском пространстве.

Типы ядра

<р>1. Монолитные ядра

Монолитные ядра — это ядра, в которых пользовательские службы и службы ядра реализованы в одном и том же пространстве памяти, т. е. в этом случае не используется разная память для пользовательских служб и служб ядра. При этом размер ядра увеличивается, а это, в свою очередь, увеличивает размер операционной системы. Поскольку нет отдельного пространства пользователя и пространства ядра, выполнение процесса будет быстрее в монолитных ядрах.

  • Он обеспечивает планирование ЦП, планирование памяти, управление файлами только через системные вызовы.
  • Выполнение процесса происходит быстро, поскольку нет отдельного пространства памяти для пользователя и ядра.
  • Отказ какой-либо службы приводит к сбою системы.
  • Если необходимо добавить новые службы, необходимо изменить всю операционную систему.
<р>2. Микроядро

Микроядро отличается от монолитного ядра тем, что в микроядре пользовательские службы и службы ядра реализованы в разных пространствах, т. е. мы используем пространство пользователя и пространство ядра в случае микроядер. Поскольку мы используем пространство пользователя и пространство ядра отдельно, это уменьшает размер ядра, а это, в свою очередь, уменьшает размер операционной системы.

Поскольку мы используем разные пространства для пользовательских служб и службы ядра, связь между приложением и службами осуществляется с помощью синтаксического анализа сообщений, что, в свою очередь, снижает скорость выполнения.

  • Если необходимо добавить новые услуги, их можно легко добавить.
  • Поскольку мы используем пространство пользователя и пространство ядра отдельно, взаимодействие между ними может сократить общее время выполнения.
<р>3. Гибридное ядро

Гибридное ядро ​​представляет собой комбинацию монолитного ядра и микроядра. Он использует скорость монолитного ядра и модульность микроядра.

Гибридные ядра — это микроядра, в которых есть некоторый «несущественный» код в пространстве ядра, чтобы код выполнялся быстрее, чем в пользовательском пространстве. Таким образом, некоторые службы, такие как сетевой стек или файловая система, запускаются в пространстве ядра, чтобы снизить нагрузку на производительность, но, тем не менее, код ядра выполняется как серверы в пользовательском пространстве.

<р>4. Наноядро

В Nanokrnel, как следует из названия, весь код ядра очень мал, т. е. код, выполняющийся в привилегированном режиме оборудования, очень мал. Термин наноядро используется для описания ядра, которое поддерживает разрешение часов в наносекундах.

<р>5. Экзоядро

Exokernel — это ядро ​​операционной системы, разработанное параллельно MIT и группой распределенных операционных систем. Здесь, в этом типе ядра, защита ресурсов отделена от управления, что, в свою очередь, позволяет нам выполнять настройку для конкретного приложения.

Идея Exokernel не в том, чтобы реализовать все абстракции. Но идея состоит в том, чтобы наложить как можно меньше абстракций, и при этом абстракция должна использоваться только тогда, когда это необходимо. Таким образом, в Exokernel не будет силовой абстракции, и это особенность, которая отличает его от монолитного ядра и микроядра. Но недостатком этого является сложная конструкция. Дизайн экзоядра очень сложен.

Это все для этого блога. Надеюсь, вам понравился этот блог.

Делитесь этим блогом со своими друзьями, чтобы распространять информацию. Посетите наш канал YouTube для получения дополнительной информации. Вы можете прочитать другие блоги здесь.

Ядро — это центральный компонент операционной системы, который управляет работой компьютера и оборудования. Он в основном управляет операциями с памятью и процессорным временем. Это основной компонент операционной системы. Ядро действует как мост между приложениями и обработкой данных, выполняемой на аппаратном уровне с использованием межпроцессного взаимодействия и системных вызовов.

Ядро сначала загружается в память при загрузке операционной системы и остается в памяти до тех пор, пока операционная система снова не будет закрыта. Он отвечает за различные задачи, такие как управление дисками, управление задачами и управление памятью.

Он решает, какой процесс должен быть выделен процессору для выполнения, а какой процесс должен храниться в оперативной памяти для выполнения. В основном он действует как интерфейс между пользовательскими приложениями и оборудованием. Основной целью ядра является управление связью между программным обеспечением, т. е. приложениями пользовательского уровня, и оборудованием, т. е. процессором и дисковой памятью.

    Чтобы установить связь между приложением пользовательского уровня и оборудованием.

Типы ядра:

<р>1. Монолитное ядро.
Это один из типов ядра, в котором все службы операционной системы работают в пространстве ядра. Он имеет зависимости между компонентами системы. Он содержит огромные строки сложного кода.

Пример:

<р>2. Micro Kernel –
Это тип ядра с минималистским подходом. Он имеет виртуальную память и планирование потоков. Он более стабилен с меньшим количеством служб в пространстве ядра. Это помещает отдых в пользовательское пространство.

Пример:

<р>3. Гибридное ядро.
Это сочетание монолитного ядра и микроядра. Он обладает скоростью и конструкцией монолитного ядра, а также модульностью и стабильностью микроядра.

Пример:

    Преимущество:
    сочетает в себе как монолитное ядро, так и микроядро.

<р>4. Exo Kernel —
это тип ядра, который следует сквозному принципу. Он имеет наименьшее количество аппаратных абстракций. Он выделяет физические ресурсы приложениям.

Пример:

    Преимущество:
    наименьшее количество аппаратных абстракций.

<р>5. Наноядро.
Это тип ядра, который предлагает аппаратную абстракцию, но без системных служб. Микроядро также не имеет системных служб, поэтому Микроядро и Наноядро стали аналогами.

Пример:

    Преимущество:
    он предлагает аппаратные абстракции без системных служб.

Операционную систему иногда называют «первой программой», позволяющей запускать другие программы. Однако обычно он хранится в виде файла (или, чаще, набора файлов) на диске. Как эта «первая» программа запускается?

Передняя панель PDP–11/70

Операционная система загружается в процессе начальной загрузки, более кратко известном как загрузка. Загрузчик — это программа, задачей которой является загрузка более крупной программы, например операционной системы.

Когда вы включаете компьютер, его память обычно не инициализируется. Следовательно, нечего бегать. Ранние компьютеры имели аппаратное обеспечение, которое позволяло оператору нажатием кнопки загружать последовательность байтов с перфокарт, перфоленты или ленточного накопителя. Переключатели на передней панели компьютера будут определять источник данных и целевой адрес памяти. В некоторых случаях программное обеспечение загрузчика было жестко подключено как энергонезависимая память (на ранних компьютерах это была сетка проводов с разрезами в соответствующих местах, где требовался 0-бит).

В ранних системах миникомпьютеров и микрокомпьютеров оператор компьютера использовал переключатели на передней панели компьютера, чтобы переключать код для загрузки более крупной программы, программируя каждую ячейку памяти, а затем запуская программу. Эта программа может делать что-то простое, например считывать последовательные байты в память с бумажной ленты, прикрепленной к телетайпу.

В более поздних системах постоянная память будет содержать небольшой загрузчик, обладающий базовыми интеллектуальными возможностями для чтения, скажем, первого сектора (512 байт) диска.

Поскольку эта первоначальная программа должна была быть как можно меньше, она должна была иметь минимальные возможности. Часто случалось, что загрузчик загружал другой загрузчик, называемый загрузчиком второго этапа, который был более сложным. Этот загрузчик второго этапа будет иметь проверку ошибок, среди возможных других функций, таких как предоставление пользователю выбора операционных систем для загрузки, возможность загрузки диагностического программного обеспечения или включение диагностических режимов в операционной системе. Этот многоэтапный загрузчик, когда загрузчик загружает больший загрузчик, называется цепной загрузкой.

Загрузчик часто выполняет некоторую инициализацию ядра системного оборудования, а затем загружает операционную систему. После загрузки операционной системы загрузчик передает ей управление и больше не нужен. Операционная система сама инициализируется, настроит системное оборудование (например, настроит управление памятью, установит таймеры, установит прерывания) и при необходимости загрузит драйверы устройств.

Чтобы конкретизировать пример процесса загрузки, давайте взглянем на 32-разрядные Intel-совместимые ПК (через некоторое время мы перейдем к 64-разрядным системам). Эта архитектура известна как IA-32 (32-разрядная архитектура Intel) и определяет набор инструкций большинства микропроцессоров Intel, начиная с Intel 80386, представленного в 1986 году. Она по-прежнему поддерживается в новейших процессорах Intel.

Ожидается, что ПК на базе IA-32 будет иметь BIOS (базовую систему ввода/вывода, которая включает прошивку загрузчика) в энергонезависимой памяти (в прошлом ПЗУ и флэш-память NOR в наши дни). BIOS является потомком BIOS ранних систем CP/M, поскольку содержит низкоуровневые функции для доступа к некоторым базовым системным устройствам, таким как дисковый ввод-вывод, чтение с клавиатуры и доступ к видеодисплею. Он также содержит код для загрузки загрузчика этапа 1.

Когда ЦП сбрасывается при запуске, компьютер начинает выполнение в ячейке памяти 0xffff0 (архитектура IA–32 использует форму адресации сегмент:смещение; сегмент кода устанавливается на 0xf000, а указатель инструкции устанавливается на fff0 ) .

Процессор запускается в реальном режиме, что дает ему доступ только к 20-битному адресному пространству памяти и обеспечивает прямой доступ к вводу-выводу, прерываниям и памяти (в игру вступают 32-битная адресация и виртуальная память). при переключении процессора в защищенный режим). Адрес 0xffff0 фактически находится в конце ПЗУ BIOS и содержит инструкцию перехода в область BIOS, содержащую код запуска.

При запуске BIOS выполняет следующую последовательность действий:

  1. Самопроверка при включении питания (POST)
  2. Определить BIOS видеокарты (чипа) и выполнить его код для инициализации видеооборудования.
  3. Обнаружение любых других BIOS устройств и вызов их функций инициализации
  4. Отображение начального экрана BIOS
  5. Выполните краткий тест памяти (узнайте, сколько памяти в системе)
  6. Установите параметры памяти и накопителя
  7. Настройка устройств Plug & Play (обычно устройств с шиной PCI)
  8. Назначить ресурсы (каналы DMA и IRQ)
  9. Определить загрузочное устройство

Когда BIOS идентифицирует загрузочное устройство (обычно это один из нескольких дисков, помеченных как загрузочный диск), он считывает блок 0 с этого устройства в ячейку памяти 0x7c00 и переходит туда.

Этап 1: основная загрузочная запись

  • Загрузчик первого этапа (≤ 440 байт)
  • Подпись диска (4 байта)
  • Таблица разделов диска, которая определяет отдельные области диска (16 байт на раздел × 4 раздела)

Этап 2: Загрузочная запись тома

После того как BIOS передает управление началу MBR, который был загружен в память, код MBR просматривает свою таблицу разделов и загружает загрузочную запись тома (VBR) для этого раздела. VBR — это последовательность последовательных блоков, начиная с первого блока диска назначенного раздела. Первый блок VBR идентифицирует тип и размер раздела и содержит начальный загрузчик программы (IPL), который представляет собой код, загружающий дополнительные блоки, составляющие загрузчик второй ступени. В системах, производных от Windows NT (например, Windows Server 2012, Windows 8), IPL загружает программу NTLDR, которая затем загружает операционную систему.

Одна из причин, по которой низкоуровневым загрузчикам сложно загрузить полную ОС, особенно такую, которая может состоять из нескольких файлов, заключается в том, что для этого требуется возможность анализировать структуру файловой системы. Это означает понимание того, как располагаются каталоги и имена файлов и как найти блоки данных, соответствующие конкретному файлу. Без большого количества кода гораздо проще просто читать последовательные блоки. Загрузчик более высокого уровня, такой как Microsoft NTLDR, может читать форматы файлов NTFS, FAT и ISO 9660 (CD).

За пределами Windows

Существует множество вариантов загрузки других операционных систем на ПК с процессором Intel. Одним из популярных загрузчиков в системах Linux является GRUB или GRand Unified Bootloader. GRUB также является многоэтапным загрузчиком. BIOS, разумеется, делает то же, что и всегда: идентифицирует загрузочное устройство, загружает основную загрузочную запись и передает управление этому только что загруженному коду. В GRUB MBR обычно содержит загрузчик первого этапа, называемый GRUB Stage 1. Этот загрузчик этапа 1 загружает GRUB Stage 2. Загрузчик этапа 2 предоставляет пользователю выбор операционных систем для загрузки и позволяет пользователю указать любую дополнительные параметры загрузки для этих систем (например, установить максимальный объем памяти, включить отладку). Затем он считывает ядро ​​выбранной операционной системы и передает ему управление.

Особая проблема с использованием GRUB для загрузки Windows заключается в том, что Windows не совместима с мультизагрузкой. Мультизагрузка — это спецификация Free Software Foundation по загрузке нескольких операционных систем с использованием одного загрузчика. В этом случае GRUB имитирует обычный процесс загрузки Windows. Он загружает загрузчик, который обычно находится в MBR (или запускает программу меню загрузки Windows). С этого момента GRUB исчезает, Windows понятия не имеет, что произошло, и вступает во владение собственный процесс загрузки Windows.

До свидания, BIOS. Здравствуй, UEFI

Поскольку 64-разрядные архитектуры пришли на смену 32-разрядным, BIOS стал выглядеть довольно устаревшим. Intel намеревалась создать спецификацию преемника BIOS, в котором не было бы ограничений на выполнение кода запуска в 16-битном режиме с 20-битной адресацией. Эта спецификация называется Unified Extensible Firmware Interface или UEFI. Хотя он разработан Intel, с 2005 года им управляет Unified EFI Forum. Он используется во многих новых 64-разрядных системах, включая Mac, которые также имеют устаревшую поддержку BIOS для запуска Windows.

Загрузка с UEFI

Благодаря UEFI больше нет необходимости в основной загрузочной записи для хранения загрузчика этапа 1; UEFI умеет анализировать файловую систему и загружать файл сам по себе, даже если этот файл не занимает смежные блоки диска. Вместо этого UEFI считывает таблицу разделов GUID (глобальный уникальный идентификатор) (GPT), которая находится в блоках сразу после блока 0 (где MBR все еще находится по устаревшим причинам). GPT описывает структуру таблицы разделов на диске. Исходя из этого, загрузчик EFI идентифицирует системный раздел EFI. Этот системный раздел содержит загрузчики для всех операционных систем, установленных на других разделах устройства. Для систем Windows с поддержкой EFI UEFI загружает Диспетчер загрузки Windows (bootmgfw.efi). Для более старых 64-разрядных систем NT EFI загружал IA64ldr. Для Linux есть много вариантов. Двумя распространенными способами являются использование EFI-совместимой версии GRUB (Grand Unified Bootloader) и загрузка файла, такого как grub.efi, или загрузка EFI load load elilo.efi, загрузчик EFI.

В целом, даже при использовании UEFI преобладающий подход заключается в загрузке загрузчика, предназначенного для конкретной операционной системы, а не в загрузке этой операционной системы напрямую. Однако потребность в многоэтапном процессе загрузки, требующем загрузки нескольких загрузчиков, больше не требуется.

Все наше обсуждение до сих пор было сосредоточено на загрузке с архитектурой на базе ПК Intel (включая архитектуры, совместимые с IA-32/IA-64, например, от AMD).Это доминирующая архитектура в современных ПК (от ноутбуков до серверов), но существует очень много устройств не Intel, особенно во встроенных устройствах, таких как сотовые телефоны. А что с ними?

Существует множество реализаций процесса загрузки. Многие встроенные устройства не загружают операционную систему, но уже хранят ее в энергонезависимой памяти (например, во флэш-памяти или ПЗУ). Те, которые загружают ОС, такие как телефоны Android на базе ARM, например, будут выполнять код в постоянной памяти (обычно во флэш-памяти NOR), когда устройство включено. Этот загрузочный код встроен в ASIC ЦП на некоторых устройствах, поэтому вам не нужна отдельная микросхема флэш-памяти на плате.

При перезагрузке системы (включая включение питания) процессор находится в режиме супервизора (SVC), а прерывания отключены. В системах на базе ARM процессор начинает выполнение по адресу 0x00000000. Флэш-память, содержащая код запуска, отображается на адрес 0x00000000 при сбросе. Этот код выполняет различные инициализации, включая настройку таблицы векторов исключений в DRAM и копирование кода приложения из ROM в DRAM (в DRAM код выполняется быстрее). Код переназначает DRAM на адрес 0, тем самым скрывая флэш-память (процессор имеет бит REMAP для изменения отображения флэш-памяти). Затем инициализируется система памяти. Это включает в себя настройку защиты памяти и настройку системных стеков. Затем инициализируются устройства ввода/вывода, а процессор переключается в пользовательский режим. Загрузочная прошивка обнаруживает загрузочный носитель, загружает и запускает загрузчик второго уровня (при необходимости). Загрузчик второго этапа часто представляет собой GRUB для больших систем или uBoot для встроенных систем. Этот загрузчик второго этапа загружает операционную систему и передает ей управление.

Старые версии систем Apple Macintosh на базе PowerPC, начиная как минимум с OS 8, а также с OS X, основывались на Open Firmware. Открытая прошивка была разработана Sun и использовалась в компьютерах, отличных от Intel Sun. Как только Apple перешла на системы Intel, она приняла UEFI в качестве встроенного ПО на уровне загрузки.

Старые компьютеры Mac

Открытая прошивка хранится в ПЗУ и, как и BIOS ПК, запускается при включении питания. Поскольку Open Firmware была разработана как независимая от платформы, она реализована на Forth (простой язык на основе стека) и скомпилирована в байт-коды, а не в машинные инструкции. Прошивка содержит интерпретатор байт-кода.

В отличие от BIOS, Open Firmware предоставляет пользователю процессор командной строки, из которого можно редактировать параметры конфигурации системы, такие как уменьшение объема физической памяти, отладка системы или даже запуск сервера telnet, чтобы вы могли взаимодействовать с прошивкой и процессом загрузки с удаленного компьютера через соединение Ethernet.

Перед загрузкой операционной системы Open Firmware создает дерево устройств, исследуя компоненты на основной плате и устройствах расширения.

Как и BIOS ПК, Open Firmware содержит драйверы устройств, которые в процессе загрузки встроенного ПО могут использоваться для доступа к диску, клавиатуре, монитору и сети. Однако все эти драйверы реализованы в FCode, системе байт-кода Forth. Также как и BIOS, эти драйверы используются только в процессе загрузки. Сама операционная система имеет собственные драйверы среды выполнения.

В отличие от BIOS, Open Firmware может анализировать файловые системы HFS/HFS+ (исходная файловая система на компьютерах Mac), поэтому вы можете использовать интерпретатор команд Open Firmware для загрузки загрузочного файла с жесткого диска и его запуска. По умолчанию Open Firmware загружает файл из системного раздела. В системах OS 9 это был файл с именем «Mac OS ROM» в папке System. В системах OS X он загружает /System/Library/CoreServices/BootX. BootX — это загрузчик, который затем загружается в ядро.

Макинтош сегодня

Mac использует UEFI для своей системной прошивки.

При запуске Mac первым выполняется код BootROM. При этом устанавливаются драйверы EFI для соответствующих аппаратных устройств, инициализируются некоторые аппаратные интерфейсы, проверяется наличие достаточного объема памяти и выполняется краткая самопроверка при включении питания. В отличие от BIOS ПК, который ничего не знал о файловых системах и мог только читать необработанные блоки диска, UEFI на Mac был расширен для анализа файловых систем FAT (устаревшие DOS/Windows) и HFS+ (родной Mac) на диске. Он считывает GPT (таблицу разделов GUID) для идентификации разделов диска. Загрузочный том по умолчанию хранится в NVRAM.

Вместо указания пути к загрузчику заголовок тома HFS+ (данные в начале файловой системы HFS+) указывает на благословенный файл или благословенный каталог (см. команду bless. Если каталог благословлен, это указывает прошивке EFI искать в этом каталоге загрузчик. Если файл благословлен, это указывает прошивке EFI загружать этот файл в качестве загрузчика (есть дополнительные варианты, такие как загрузка с несмонтированного тома).

По умолчанию загрузчик находится в папке /System/Library/CoreServices/boot.efi в корневой (часто единственный) раздел диска.

Кроме того, прошивка поддерживает загрузку загрузчика второго уровня или ядра с сетевого сервера (сервера сетевой загрузки).

При загрузке файла boot.efi на экране компьютера отображается металлический логотип Apple. Загрузчик загружает ядро, а также основные расширения драйверов, которые затем запускают launchd, выполняющий различные сценарии и программы запуска. После загрузки ядра под логотипом Apple появляется вращающаяся шестеренка. Когда ядро ​​запускает первый процесс, launchd, экран становится синим.

Описание запуска OS X можно найти в статье Что такое Mac OS X.

Для поддержки загрузки операционных систем на основе BIOS, таких как более старые системы Windows и системы Linux, использующие GRUB или другие загрузчики с поддержкой BIOS, EFI устанавливает компонент «модуль поддержки совместимости» (CSM) из микропрограммы системы. Затем запускается процесс загрузки на основе BIOS. Этот модуль поддержки совместимости загружается только тогда, когда пользователь выбирает Windows в качестве операционной системы по умолчанию для загрузки. Процесс загрузки теперь представляет собой стандартную загрузку на основе BIOS. Основная загрузочная запись (MBR) загружается и выполняется, которая затем находит и загружает загрузочную запись тома раздела Windows (или Linux).

Справочники по загрузке Mac

Ссылки на Mac OS X:

    , Справочная библиотека Mac OS X, Apple Inc. , Справочная библиотека Mac OS X, Apple Inc. , HT2674, Apple Inc. , © 2007 Apple Inc. , Проект rEFIt Sourceforge

Это обновленная версия исходного документа, написанного 14 сентября 2010 г.

© 2003-2015 Пол Кржижановский. Все права защищены.

С вопросами или комментариями по этому сайту обращайтесь к Полу Кржижановски, gro.kp@ofnibew

Все содержимое этого сайта защищено авторским правом в соответствии с национальным и международным законодательством. Никакая часть этого сайта не может быть скопирована, воспроизведена, сохранена в поисковой системе или передана в любой форме или любыми средствами, будь то электронными, механическими или иными, без предварительного письменного согласия владельца авторских прав. Если на этой странице есть что-то, что вы хотите использовать, сообщите мне об этом.

Любые мнения, выраженные на этой странице, не обязательно отражают мнение моих работодателей и могут даже не отражать мое собственное.

Читайте также: