Главная » Статьи для тега "системного"

Реализация системных вызовов

Добавлено Дата: 1 May, 2012 категория: Ядро Linux

Реализация системного вызова  в ОС  Linux  не  связана с поведением обработчика системных вызовов. Добавление нового  системного вызова  в операционной системе Linux  является сравнительно простым делом.  Тяжелая работа  связана с разработкой и реализацией самого   системного вызова.  Регистрация  его  в ядре  проста. Давайте рассмотрим шаги, которые необходимо предпринять, чтобы  написать новый системный  вызов  в операционной системе Linux.

Читать »

Переменная jiffie s

Добавлено Дата: 17 April, 2012 категория: Ядро Linux

Глобальная  переменная  jiffi e s   содержит  количество  импульсов  системного таймера, которые были получены со  времени загрузки системы. При загрузке ядро устанавливает значение этого параметра в  нуль  и  он  увеличивается на  единицу при каждом прерывании системного таймера. Так  как  в секунду возникает HZ прерываний системного таймера, то  за  секунду значение переменной  jiffie s увеличивается на  HZ.  Время работы системы (uptime) поэтому равно jiffies/H Z  секунд.

Читать »

Управление процессами

Добавлено Дата: 15 April, 2012 категория: Ядро Linux

роцесс   одно  из  самых  важных  абстрактных понятий в Unix-подобных операционных системах1. По  сути, процесс—  это  программа, т.е.  объектный код, хранящийся на  каком-либо  носителе информации и  находящийся в  состоянии исполнения. Однако процесс — это  не  только  исполняемый программный код, который  для  операционной  системы Unix  часто  называется text section (сегмент  текста или  сегмент кода).  Процессы также  включают в себя  сегмент данных (data  section),  содержащий глобальные переменные;  набор   ресурсов,  таких  как  открытые файлы и ожидающие на  обработку сигналы; адресное пространство и один  или  более  потоков

Читать »

Обработчик прерываний таймера

Добавлено Дата: 26 March, 2012 категория: Ядро Linux

Теперь, когда  мы разобрались, что такое  jiffie s и HZ, а также  какова  роль системного таймера, рассмотрим реализацию обработчика прерываний системного таймера.  разбит  на две части:  часть, зависимую от аппаратной платформы, и независимую часть.

Читать »

Контекст системного  вызова

Добавлено Дата: 25 March, 2012 категория: Ядро Linux

Как уже обсуждалось в главе 3, "Управление процессами",  при выполнении  системного  вызова ядро работает в контексте  процесса.  Указатель curren t указывает на текущее задание, которое и есть процессом,  выполняющим системный вызов.

В контексте  процесса ядро может переходит в приостановленное состояние  (например,  если системный вызов блокируется при вызове функции или явно вызывает функцию  schedule ()), а также является полностью вытесняемым.  Эти два момента важны.  Возможность  переходить в приостановленное состояние  означает,  что системный  вызов может использовать большую часть функциональных возможностей ядра. Как будет видно из главы 6, "Прерывания  и обработка прерываний",  наличие возможности  переходить в приостановленное состояние значительно упрощает программирование  ядра7. Тот факт, что контекст процесса является  вытесняемым,  подразумевает,  что, как и в пространстве  пользователя,  текущее задание может быть вытеснено другим заданием. Так как новое задание может выполнить тот же системный  вызов,  необходимо убедиться, что системные  вызовы являются реентерабельными. Это очень похоже на требования,  выдвигаемые для симметричной  мультипроцессорной  обработки.  Способы  защиты,  которые обеспечивают реентерабельность, описаны  в главе 8, "Введение в синхронизацию выполнения  кода ядра", и в главе 9, "Средства синхронизации в ядре".

Читать »

Вызовы syscall

Добавлено Дата: 25 March, 2012 категория: Ядро Linux

Системные вызовы (часто  называемые syscall в ОС  Linux)  обычно реализуются в виде  вызова  функции. Для  них  могут  быть  определены один   или  более  аргументов (inputs), которые могут  приводить к тем  или  иным побочным эффектам3 , например к записи данных  в файл  или  к копированию некоторых данных  в область  памяти, на которую указывает переданный  указатель. Системные  вызовы также  имеют  возвращаемое значение типа  long 4 , которое указывает на  успешность выполнения  операции  или  на возникшие ошибки. Обычно, но  не всегда, возвращение отрицательного значения указывает на  то, что  произошла ошибка. Возвращение нулевого значения обычно (но  не  всегда)  указывает на  успешность выполнения операции. Системные вызовы ОС  Unix  в  случае  ошибки записывают специальный код  ошибки в  глобальную  переменную errno . Значение этой  переменной может  быть  переведено в удобочитаемую формy  с помощью библиотечной функции perro r () .

Читать »

В заключение  о системных вызовах

Добавлено Дата: 21 March, 2012 категория: Ядро Linux

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

Читать »

Информация  о времени  в ядре

Добавлено Дата: 18 March, 2012 категория: Ядро Linux

Концепция времени для компьютера является несколько неопределенной. В действительности, для  того  чтобы  получать  информацию о времени и управлять  системным временем, ядро должно  взаимодействовать с системным аппаратным обеспечением. Аппаратное обеспечение предоставляет системный таймер, который используется ядром  для измерения времени. Системный таймер  работает  от электронного эталона времени, такого  как  цифровые электронные часы  или  тактовый генератор процессора. Интервал времени системного таймера  периодически истекает (еще говорят таймер срабатывает— hitting, popping) с определенной запрограммированнойчастотой.Этачастотаназываетсячастотойимпульсовтаймлра,(tickrate). Когда  срабатывает системный таймер, он генерирует прерывание, которое  ядро  обрабатывает с помощью специального обработчика прерывания.

Читать »

Мастер Wizard

Добавлено Дата: 11 February, 2012 категория: Delphi

Рис. 17.3. Записи о мастерах Delphi в системном  реестре

Интерфейс мастера

Мастер  Wizard  позволяет без  использования редактора реестра добавлять, моди фицировать и удалять из системного реестра записи о мастерах, размещенных в биб лиотеках DLL. Сначала  рассмотрим модуль InitWiz.pas, содержащий класс мастера (листинг 17.2).Листинг 17.2. Модуль InitWiz.pas, содержащий класс мастера DLL

Читать »