Операционная система Linux
Задачи и интерфейсы Unix-подобных систем. Структура ядра операционной системы Linux и этапы создания процесса. Виртуальное адресное пространство и алгоритм замещения страниц. Работа с сетью и образование сокетов. Сетевая файловая система Ext2, Ext3, NFS.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.11.2012 |
Размер файла | 44,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. LINUX. Задачи и интерфейсы Unix-подобных систем
ОС Linux была разработана программистами для программистов, чтобы использовать ее в такой среде, в которой большинство пользователей являются достаточно опытными и занимаются проектами разработки программного обеспечения, во многих случаях большое количество программистов активно работает над созданием общей системы, поэтому в операционной системе UNIX есть большое количество средств, позволяющих людям работать вместе и управлять совместным использованием информации. Можно выделить следующих два принципа:
1) Принцип наименьшей неожиданности. Данная система реагирует на действия адекватным образом.
2) Мощь и гибкость. Это означает, что в системе должно быть небольшое количество базовых элементов, которые можно комбинировать бесконечным числом способов, чтобы приспособить их для конкретного приложения.
Интерфейс системы Linux.
POSIX (Portable Operation System Interface for Unix) - набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой. Данный стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и не для UNIX систем.
Схема системы Linux:
Режим пользователя:
Пользователь
Интерфейс пользователя
Стандартные обслуживающие программы
Интерфейс библиотечных функций
Библиотечные функции
Режим ядра:
Интерфейс системных вызовов
ОС Linux
Аппаратура
Функция ОС Unix заключается в управлении аппаратным обеспечением и предоставлении всем программам интерфейса системных вызовов. Эти системные вызовы позволяют программам пользователя создавать процессы, файлы и прочие ресурсы, а так же управлять ими. Рассмотрим следующие 3 интерфейса:
Интерфейс системных вызовов, интерфейс библиотечных функций.
Программы делают системные вызовы, помещая аргументы в регистры и выполняя команду эмулированного прерывания для переключения из пользовательского режима в режим ядра. Каждая такая процедура сначала помещает аргументы в нужное место, а затем выполняет команду эмулированного прерывания. Стандарт POSIX определяет, какие библиотечные процедуры должна предоставлять соответствующая его требованиям система, каковы их параметры, что они должны делать и какие результаты возвращать.
Интерфейс пользователя.
Помимо операционной системы и библиотеки системных вызовов, все версии Linux предоставляют большое количество стандартных программ. К этим программа относятся: Командный процессор (оболочка), компиляторы, редакторы, программы обработки текста и утилиты для работы с файлами. При запуске оболочки она инициализируется, а затем выводит на экран символ приглашения к вводу. После того, как пользователь введет командную строку, оболочка извлекает из нее первое слово и ищет программу с таким именем. Если программу удается найти, оболочка запускает ее. При этом работа оболочки приостанавливается на время работы запущенной программы. По завершении программы, оболочка пытается прочитать следующую команду. Оболочка представляет собой обычную пользовательскую программу.
Графические интерфейсы пользователя в Linux поддерживает оконная система X Windowing System (X Window, X 11, X). Она представляет обмен и протоколы отображения для управления окнами на растровых дисплеях unix-подобных систем. X-сервер является главным компонентом, который управляет такими устройствами, как монитор, мышь, клавиатура и т.д. и отвечает за перенаправление ввода от клиентских программ к операционной системе.
2. Структура ядра ОС Linux
Нижний уровень ядра состоит из обработчиков прерываний, которые являются основным средством взаимодействия с устройствами и механизма диспетчеризации на низком уровне. Диспетчеризация производится при возникновении прерываний. При этом код низкого уровня останавливает выполнение работающего процесса, сохраняет его состояние в структуре процессов ядра и запускает соответствующий драйвер.
Ядро Linux можно разделить на 3 части:
1) Компонент ввода-вывода.
2) Компонент управления памятью
3) Компонент управления процессами
Компонент ввода-вывода:
Данный компонент содержит все части ядра, которые отвечают за взаимодействие с устройствами ввода-вывода, выполнение сетевых операций. На самом высоком уровне все операции интегрированы в уровень виртуальной файловой системы. Т.е. выполнение операций чтения из файла, будь он в памяти или на диске это то же самое, что и выполнение операции чтения символа с терминального ввода. На самом низком уровне все операции ввода-вывода проходят через соответствующий драйвер. Все драйверы в Linux классифицируются либо как символьные, либо блочные. Выше уровня драйверов устройств код ядра для каждого типа устройств свой. В зависимости от вида символьного устройства, информация обрабатывается согласно определенной дисциплине линий связи.
Уровень выше сетевых драйверов выполняет функции маршрутизации, обеспечивая отправку правильного пакета к правильному устройству или к блоку обработки протокола. Над сетью располагается интерфейс сокетов, позволяющий программам создавать сокет.
Над дисковыми драйверами располагается планировщик ввода-вывода, который отвечает за упорядочивание и выдачу запросов над дисковой операцией. ОС Lixux имеет несколько одновременно существующих файловых систем. Обобщенный уровень блоков призван скрыть различия реализаций файловой системы в зависимости от аппаратных устройств.
Компонент управления памятью:
В задачи управления памятью входят:
- Обслуживание отображения виртуальной памяти на физическую
- Поддержка кэша страниц, к которым недавно выполнялось обращение
- Поставка в память новых страниц с кодом и данными
Компонент управления процессами:
Основная задача этого компонента - создание и завершение процесса
Планировщик процессов решает каким процессам запускаться в данный момент, а каким приостанавливаться и завершаться. Компонент обработки сигналов обрабатывает поступающие процессам управляющие сигналы.
Все рассмотренные компоненты взаимосвязаны друг с другом. Файловые системы обращаются к файлам через блочные устройства, однако, если в данный момент в памяти отсутствует свободное место, то в данном случае необходимо задействовать компонент управления памятью для выгрузки и загрузки соответствующих страниц.
Интерфейс системных вызовов ядра - все системные вызовы поступают сюда и вызывают эмулированное прерывание, которое переключает исполнение из пользовательского режима в защищенный и передает управление одному из компонентов ядра.
3. Процессы в ОС Linux. Общие понятия
Основными активными сущностями в ос Linux являются процессы. Процессы в Linux - классические, последовательные процессы. Каждый процесс выполняет одну программу и изначально получает один поток управления. У процесса есть один счетчик команд, который отслеживает следующую исполняемую команду. Linux позволяет процессу создавать дополнительные потоки. Также Linux представляет собой многозадачную систему, так, что несколько независимых процессов могут работать одновременно. У каждого процесса в Linux есть пользовательская часть, в которой работает программа пользователя, однако, когда один из потоков делает системный вызов, то происходит эмулированное прерывание с переключением в режим ядра. После этого поток начинает работу в контексте ядра с другой картой памяти, своим стеком ядра, счетчиком команд в режиме ядра и полным доступом ко всем ресурсам машины. Ядро ОC Linux внутренним образом представляет процессы как задачи при помощи структуры задач task_struct. Процесс с одним потоком представляется одной структурой задач, а многопоточный процесс будет иметь по одной структуре задачи для каждого из потоков пользовательского уровня. Само ядро является многопоточным и имеет потоки уровня ядра, которые не связаны ни с какими пользовательскими процессами и выполняют код ядра. Для каждого процесса в памяти находится его дескриптор типа task_struct. Он содержит важную информацию, необходимую ядру для управления всеми процессами. Дескриптор процесса создается при создании процесса. Для совместимости сдругими системами unix процессы в Linux идентифицируются при помощи идентификатора процесса PID (Process Identifier). Ядро организует все процессы в двунаправленный список структур задач. Информация в дескрипторе процесса подразделяется на следующие категории:
1) Параметры блокирования (приоритет процесса, израсходованное за последний учитываемый период времени, количество проведенного в режиме ожидания времени)
2) Образ памяти (указатели на сегмент текста, данных и стека) Когда процесса нет в памяти, то здесь так же хранится, как найти его части на диске.
3) Сигналы (маски, указывающие, какие сигналы перехватываются, какие временно заблокированы, и какие находятся в процессе доставки).
4) Машинные регистры. Когда происходит эмулированное прерывание в ядро, то машинные регистры сохраняются здесь
5) Состояние системного вызова (здесь хранится информация о текущем системном вызове)
6) Таблица дескрипторов файлов (Когда делается системный вызов, использующий дескриптор файла, то файловый дескриптор используется как индекс в этой таблице для обнаружения соответствующей этому файлу структуры данных).
7) Учетные данные (Указатель на таблицу, в которой отслеживается использованное процессом пользовательское и системное время процесса).
8) Стек ядра (фиксированный стек для использования той частью процесса, которая работает в режиме ядра)
9) Разное (текущее состояние процесса, ожидаемое процессом событие, PID процесса, идентификаторы родительского процесса, группы)
4. Процессы в ОС Linux. Этапы создания процесса
Механизмы создания нового процесса. Системный вызов fork создает … называемого родительским процессом (parent process), новый процесс называется дочерним процессом (child process). У родительского и дочернего процесса есть свои собственные образы памяти. Если впоследствии, родительский процесс изменяет свои переменные, то эти изменения остаются невидимыми для дочернего процесса. Сразу после выполнения системного вызова fork, значения всех соответствующих переменных в обоих процессах одинаковы, но после копирования всего адресного пространства родителя, последующие изменения в одном процессе не влияют на другой. Системный вызов fork возвращает дочернему процессу число 0, а родительскому - отличный от нуля PID дочернего процесса. Оба процесса проверяют возвращаемое значение и действуют соответственно. Открытые файлы используются родительскими и дочерними процессами совместно. Это значит, что, если какой-либо файл был открыт в родительском процессе, до выполнения системного вызова fork, то он остается открытым в обоих процессах. Изменения, произведенные с этим файлом любым из процессов видны другому. Если дочерний процесс желает узнать свой идентификатор, то он может воспользоваться системным вызовом getpid. Например, когда дочерний процесс завершается, его родитель получает идентификатор только что завершившегося процесса.
Механизм создания процесса
Для дочернего процесса создается новый дескриптор и пользовательская область, которая заполняется из родительской. Дочерний процесс получает идентификатор, настраивается его карта памяти. Предоставляется доступ к общим файлам. Далее настраиваются регистры дочернего процесса, после чего он готов к запуску.
(картинка в СОС ~756 с)
При вызове fork() происходит следующее:
1) Выделение структуры задач для потомка
2) Заполнение структуры задач потоком данными родителя
3) Выделение памяти для стека и области пользователя дочернего процесса
4) Заполнение области пользователя дочернего процесса
5) Выделение идентификатора для дочернего процесса
6) Настройка дочернего процесса на использование программы родительского процесса
7) Копирование таблицы страниц для данных и стека
8) Настройка совместного использования открытых файлов
9) Копирование регистров родительского процесса в дочерний процесс
При системном вызове exec() происходит следующее:
1) Поиск исполняемого файла
2) Проверка разрешения на выполнение
3) Чтение и проверка заголовка
4) Копирование аргументов, среды в ядро
5) Освобождение нового адресного пространства
6) Копирование аргументов среды в стек
7) Сбрасывание сигнала
8) Инициализация регистров
Когда выполняется системный вызов fork(), вызывающий процесс выполняет эмулированное прерывание в ядро и создает структуру задачи. Большая часть содержимого дескриптора процесса заполняется значениями из дескриптора родителя, затем Linux ищет доступный идентификатор и обновляет элемент хэш-таблицы идентификаторов, чтобы там был указатель на новую структуру задачи. Далее система выделяет дочернему процессу его собственные таблицы страниц, но эти таблицы указывают на страницы родительского процесса, помеченного, как доступные только для чтения. Когда дочерний процесс пытается писать в такую страницу, происходит нарушение защиты. Ядро видит это и выделяет дочернему процессу новую копию этой страницы, которую помечает как доступную для чтения и для записи. Таким образом копируются только те страницы, в которые дочерний процесс пишет. Такой механизм называется копированием при записи. После того, как дочерний процесс начинает работу, его код делает системный вызов exec(), задавая имя команды в качестве параметра, при этом ядро находит и проверяет исполняемый файл, копирует в ядро аргументы и освобождает старое адресное пространство. Далее записывается новое адресное пространство. Сигналы сбрасываются, а все регистры устанавливаются в 0. После этого программа готова к работе.
5. Взаимодействие процессов
В системе Linux процессы могут общаться друг с другом с помощью следующих структур:
1.трубы (pipes) - создается канал между двумя процессами, в который один процесс может писать поток байтов, а другой процесс может его читать.
2.Сигналы (signals) - процессы общаются при помощи программных прерываний. Процессы могут сообщить системе, какие действия следует предпринимать, когда придет сигнал: проигнорировать сигнал, перехватить его, позволить сигналу убить процесс.
SIGABRT - посылается, чтобы прервать процесс и создать дамп памяти
SIGFPE - произошла ошибка при выполнении операции с плавающей точкой
SIGILL - пользователь нажал клавишу delete, чтобы прервать процесс
Процесс может посылать сигналы только членам своей группы, состоящих из его братьев, сестер и прочих потомков
6. Реализация потоков в ОС Linux
В 2000 году в Linux был введен новый системный вызов clone, который размыл отличия между процессами и потоками
Clone(function, stack_ptr, sharing-flags, arf);
Вызов clone создает новый поток либо в новом процессе, либо в текущем, все зависит от флага sharing-flags. Если новый поток находится в текущем процессе, то он совместно с существующими потоками использует адресное пространство и каждая запись в любой байт становится видна всем остальным потокам данного процесса. С другой стороны, если адресное пространство совместно не используется, то последующие записи новых потоков не будут видны старым. В обоих случаях новый поток начинает выполнение функции function с аргументом arg в качестве единственного параметра. Также в обоих случаях новый поток получает свой собственный стек, при этом указатель стека инициализируется параметром stack_ptr. Параметр sharing-flags представляет собой битовый массив. Каждый бит может быть установлен независимо от остальных, и каждый из них определят, копирует ли новый поток эту структуру данных или использует ее совместно с вызывающим потоком.
CLOVE_VM 1 - создать новый поток, 0 - создать новый процесс. Если этот бит установлен, но новый поток добавляется к старым. Если этот бит сброшен, то новый поток получает свое собственное адресное пространство.
CLONE_FS 1 - совместно используется рабочий каталог root и флаг umask. 0 - не использовать их совместно. Даже если у нового потока есть адресное пространство, старый и новый потоки будут использовать совместно общие каталоги.
CLONE_PID 1 - поток получает старый идентификатор. 0 - поток получает свой собственный идентификатор. Это свойство нужно при загрузке системы. Процессам пользователя не разрешается использовать это свойство
CLONE_PARENT 1 - новый поток имеет того же родителя, что и вызывающий, 0 - родителем нового потока является вызывающий.
CLONE_FILES 1 - используются общие дескрипторы файлов, если 0 - копируются
Чтобы сохранять совместимость с другим unix-системами, Linux разделяет структуры задач и процессы. Оба этих поля хранятся в структуре задач.
7. Планирование в ОС Linux
В операционной системе Linux планирование основано на потоках, поскольку потоки реализованы в ядре. Различают три класса потоков:
1. Потоки реального времени, обслуживаемые по алгоритму FIFO
2. Потоки реального времени, обслуживаемые в порядке циклической очереди
3. Потоки разделения времени.
Обслуживаемые по алгоритму FIFO потоки имеют наивысшие приоритеты и не могут вытесняться другими потоками, за исключением того же потока реального времени с более высоким приоритетом, перешедшего в состояние готовности.
Обслуживаемые в порядке циклической очереди потоки реального времени представляют собой то же самое, что и потоки реального времени FIFO, но с тем отличием, что они имеют квант времени и могут вытесняться по таймеру. Такой, находящийся в состоянии готовности, поток выполняется в течение кванта времени, после чего поток помещается в конец своей очереди. Рассмотренные классы имеют более высокий приоритет, чем потоки разделения времени. Потоки реального времени внутри системы Linux представлены приоритетами от 0 до 99, причем 0 - самый высокий, 99 - самый низкий.
Третий класс потоков представлен приоритетами от 100 до 139.
Квант времени - количество тиков таймера, в течение которых процесс может выполняться. Планировщик Linux использует ключевую структуру данных, которая называется очередь исполнения.
Работы планировщика. Планировщик выбирает задачу из активного массива с самым высоким приоритетом. Если квант времени этой задачи истек, то она переносится в список закончивших функционирование (возможно с другим уровнем приоритета). Если задача блокируется (например, в ожидании события ввода-вывода) до истечения ее кванта времени, то после события она помещается обратно в исходный массив, а ее квант уменьшается на количество уже использованного времени. После полного истечения кванта времени она также будет помещена в массив закончивших функционирование. Когда ни в одном из активных массивов больше нет задач, то планировщик просто меняет указатели, чтобы закончившие функционирование массивы стали активными и наоборот. Разным уровням приоритета присваиваются различные кванты времени, больший квант времени присваивается большему приоритету. Существует понятие статического и динамического приоритета. Статический приоритет возникает при создании процесса (потока). Динамический приоритет изменяется во время работы процесса (потока) в соответствии с политикой планирования данной операционной системы. В системе Linux с каждым потоком связывается значение nice. По умолчанию оно равно 0, но может изменяться с помощью системного вызова nice (value) -20<=value<=19. Это значение определяет статический приоритет потока. Поскольку Linux заранее не знает, будет ли задача интенсивно использовать процессор или ввод-вывод, она применяет динамический приоритет для решения данной проблемы.
Динамический приоритет используется в системе linux для того, чтобы:
1. Уделять большее внимание интерактивным потокам
2. Предотвращать излишний расход процессорного времени
Максимальное увеличение приоритета = -5, максимальное снижение приоритета = +5.
Планировщик поддерживает связанную с каждой задачей переменную sleep_avg. Когда задача просыпается, эта переменная получает приращение, а когда задача вытесняется или истекает ее квант, эта переменная уменьшается на соответствующее значение. Планировщик linux пересчитывает новый уровень приоритета при перемещении потока из списка активных в список закончивших функционирование.
Кроме того, планировщик имеет функциональные возможности в отношении многопроцессорных или многоядерных систем, например, с каждым процессором связывается своя очередь выполнения. Планировщик рассматривает только готовые к выполнению задачи, которые помещаются в соответствующие очереди выполнения.
Те задачи, которые не готовы к выполнению и ждут выполнения различных операций ввода-вывода, помещаются в структуру очередь ожидания. Такая очередь связана с каждым событием, которого могут дожидаться задачи. Заголовок очереди ожидания содержит указатель на связный список задач.
8. Загрузка в ОС Linux
Когда включается компьютер, система bios выполняет тестирование при включении (post), а также начальное обнаружение устройств и их инициализацию. Затем в память считывается и исполняется первый сектор загрузочного диска (MBR (master boot record)). Этот сектор содержит небольшую 512-байтовую программу, считывающую автономную программу под названием boot с загрузочного устройства. Программа boot сначала копирует саму себя в фиксированный адрес памяти в старших адресах, чтобы освободить нижнюю память для операционной системы. После этого перемещения программа boot считывет корневой каталог с загрузочного устройства. Затем boot считывает ядро операционной системы и передает ему управление. На этом этапе программа boot завершает свою работу, далее работает ядро системы. Начальный код ядра написан на ассемблере и является машинозависимым. Как правило этот код настраивает стек ядра, определяет тип центрального процессора, вычисляет количество имеющейся в наличии оперативной памяти, отключает прерывания, разрешает работу блока управления памятью и вызывает процедуру main, чтобы запустить остальную часть операционной системы. Далее основную работу по инициализации операционной системы производит код, написанный на языке C. Происходит так называемая логическая инициализация. Затем выделяется память для структур данных ядра. Пример: кэш страниц, структуры таблиц страниц и т. д. Операционная система начинает определение конфигурации компьютера. ОС считывает файлы конфигурации, в которых сообщается, какие типы устройств ввода вывода могут присутствовать, и проверяет, какие из них отсутствуют. Если устройство отвечает, то оно добавляется к таблице подключенных устройств, если устройство не отвечает, то оно считается отсутствующим и в дальнейшем игнорируется. После завершения конфигурации всего аппаратного обеспечения нужно загрузить процесс 0, настроить его стек и запустить. Процесс 0 продолжает инициализацию, выполняя такие задачи, как программирование таймеров реального времени, монтирование корневой файловой системы, а так же создание процесса 1 (init) и процесса 2. Процесс init проверяет свои флаги, в зависимости от которых он запускает операционную систему в однопользовательском либо многопользовательском режиме. В первом случае он создает процесс, выполняющий оболочку, во втором случае процесс init создает процесс, исполняющий инициализационный сценарий оболочки системы, считывается файл, в котором перечисляются терминалы и некоторые их свойства. Для каждого разрешенного терминала он создает копию самого себя. А также, для каждого из терминалов процесс init запускает getty. Данная программа устанавливает для каждой линии скорость и прочие свойства, после чего выводит на терминале приглашение к входу в систему. Далее данная программа пытается прочитать с клавиатуры имя пользователя. После ввода регистрационного имени программа getty завершает свою работу запуском программы регистрации /bin/login, после этого программа login запрашивает пароль, шифрует его и сравнивает с зашифрованным паролем, хранящимся в файле. Если пароль правильный, то login запускает оболочку пользователя.
9. Структура памяти процесса в ОС Linux
У каждого процесса в системе linux есть адресное пространство, разделенное на 3 логических сегмента
1. text segment
Содержит машинные команды, образующие исполняемый код программы. Он создается компилятором и ассемблером при трансляции программы в машинный код (только для чтения).
2. data segment
Содержит переменные, строки, массивы и другие данные программы. Он состоит из 2-х частей: инициализированные данные и неинициализированные данные. Инициализированная часть сегмента данных содержит переменные и константы компилятора, значения которых должны быть заданы при запуске. Все переменные в неинициализированной части должны быть сброшены в 0.
3. stack segment
На большинстве компьютеров он начинается около старших адресов виртуального адресного пространства и растет вниз к 0. Если указатель стека оказывается ниже нижней границы стека, то происходит аппаратное прерывание, при котором операционная система понижает границу сегмента стека на одну страницу. Когда программа запускается, ее стек не пуст, он содержит все переменные окружения, а также командную строку, введенную оболочке для вызова этой программы. Рассмотрим случай, когда два пользователя запускают одну и ту же программу (или один пользователь два раза одну и ту же программу). Здесь возможно 2 подхода:
1. Хранить в оперативной памяти две копии исходного текста программы
2. Оба процесса ссылаются на один и тот же участок памяти, где находится текст программы.
Во втором случае используется так называемый текстовый сегмент совместного использования. Сегменты данных и стека никогда не бывают общими. Процессы в linux могут обращаться к данным файлов при помощи отображения файлов на адресное пространство (memory mapped files). Эта функция позволяет отображать файл на часть адресного пространства процесса, чтобы можно было читать из файла и писать в файл так, как если бы это был массив байтов, хранящийся в памяти. Запись в этот файл одним из процессов мгновенно становится видимой всем остальным. Отображения на адресное пространство памяти временного файла представляет собой механизм реализации общей памяти для нескольких процессов. Сегмент данных может изменяться в отличие от сегмента текста. Linux разрешает сегменту данных расти при выделении памяти и уменьшаться при ее освобождению. С помощью системного вызова bkr процесс может установить размер своего сегмента данных. Этим системным вызовом активно пользуются malloc.
10. Управление памятью в ОС Linux. Карта памяти
Управление физической памятью. Каждый процесс в системе linux на 32-разрядной машине получает 3 Гб виртуального адресного пространства для себя, а оставшийся 1 Гб памяти резервируется для его страничных таблиц и других данных ядра. 1 Гб ядра не виден в пользовательском режиме, но становится доступным в режиме ядра. Память ядра обычно находится в нижних физических адресах, но отображается в верхний гигабайт виртуального адресного пространства процесса. Адресное пространство создается с помощью вызова fork и перезаписывается при помощи системного вызова exec. Чтобы несоклько процессов могли совместно использовать физическую память linux отслеживает использование физической памяти, выделяет при необходимости дополнительную память пользовательским процессам и компонентам ядра, динамически отображает области физической памяти на адресное пространство различных процессов. В linux различают 3 зоны памяти:
1. ZONE_DMA - это страницы, которые можно использовать для операций DMA
2. ZONE_NORMAL - это нормальные отображаемые страницы
3.ZONE_HIGHMEM - Страницы с адресами в верхней области памяти, которые не имеют постоянного отображения. Точные границы и компоновка этих зон памяти зависит от архитектуры, например на платформах x86 некоторые устройства могут выполнять DMA операции только в 1-х 16 мегабайтах, следовательно зона DMA находится в диапазоне от 0 до 16 мегабайт. Ядро поддерживает структуру ZONE для каждой из этих 3-х зон и может выполнять выделение памяти для этих 3-х зон поотдельности. Основная память linux состоит из 3-х частей: 1-е две части - ядро и карта памяти (не вытесняются), остальная память разделена на страничные блоки, каждый из которых может содержать страницу текста, данных, стека, страницу с таблицей страниц или списки свободных страниц. Ядро поддерживает карту памяти, которая содержит всю информацию об использовании физической памяти системы.
Карта памяти организована следующим образом:
1. page desctiptor -описывает каждый физический страничный блок системы. Каждый дескриптор содержит указатель на адресное пространство, которому принадлежит страница, пару указателей, которые позволяют ему сформировать дважды связный список с другими дескрипторами (если страницы свободны) и прочие поля, размер дескриптора страницы равен 32 байтам.
2. zone descriptor - содержит информацию об использовании памяти в зоне, такую как количество активных и неактивных страниц нижний и верхний пределы для алгоритмов замещения страниц и др. Кроме того, дескриптор зоны содержит массив свободных областей. Первый элемент этого массива указывает на 1-й дескриптор страницы 1-го блока и свободных страниц.
3.Дискриптор узла - Наличие данной структуры обусловлено возможностью системы linux переноса на архитектуру NUMA. Каждый дескриптор узла содержит информацию об использовании памяти и зонах для данного конкретного узла.
Физическая память используется для различных целей, части которой могут выгружаться или не выгружаться на жесткий диск. Ядро системы, как и ни одна из его частей не выгружается на диск, остальная часть памяти доступна для страниц пользователей.
Кроме того операционная система linux поддерживает динамически загружаемые модули, в основном драйверы устройств. Они могут быть большего размера и каждому из них должен быть выделен непрерывный участок ядра памяти.
Виртуальный адрес страницы в linux состоит из 5 частей:
1. Глобальный каталог
2. Верхний каталог
3. Средний каталог
4. Страница
5. Смещение
В системе linux используется 4-х уровневая схема таблиц страниц. Поля каталогов используются как индекс в соответствующем каталоге страниц. Глобальный каталог указывает на верхний каталог, верхний каталог указывает на средний и средний указывает на конкретную страницу, которую необходимо использовать в данный момент времени.
11. Алгоритм выделения памяти
Следующим проблемам выделения памяти в ОСРВ уделяется больше внимания, нежели в операционных системах общего назначения.
Во-первых, скорости выделения памяти. Стандартная схема выделения памяти предусматривает сканирование списка неопределённой длины для нахождения свободной области памяти заданного размера, а это неприемлемо, так как в ОСРВ выделение памяти должно происходить за фиксированное время.
Во-вторых, память может стать фрагментированной в случае разделения свободных её участков уже запущенными процессами. Это может привести к остановке программы из-за её неспособности задействовать новый участок памяти. Алгоритм выделения памяти, постепенно увеличивающий фрагментированность памяти, может успешно работать на настольных системах, если те перезагружаются не реже одного раза в месяц, но является неприемлемым для встроенных систем, которые работают годами без перезагрузки.
Простой алгоритм с фиксированной длиной участков памяти очень хорошо работает в несложных встроенных системах.
Также этот алгоритм отлично функционирует и в настольных системах, особенно тогда, когда во время обработки участка памяти одним ядром следующий участок памяти обрабатывается другим ядром. Такие оптимизированные для настольных систем ОСРВ, как Unison Operating System или DSPnano RTOS, предоставляют указанную возможность.
12. Виртуальное адресное пространство в ОС Linux
интерфейс linux сокет сеть
В ОС Linux организация доступа к памяти реализована с использованием механизмов виртуальной памяти. Каждому процессу в ОС Linux выделяется некоторое виртуальное адресное пространство. В случае использования 32-битной архитектуру процессора каждому процессу доступно до 4 Гб виртуального адресного пространства. При этом, по умолчанию 1 Гб этого всего виртуального адресного пространства отдается ядру. Таким образом, пользователю становятся доступны только 3Гб памяти. В случае использования 64-битной архитектуры процессора данное ограничение отсутствует и пользовательским процессам доступно практически неограниченное количество виртуального адресного пространства. Приложения, работающие в ОС Linux, ничего не знают об архитектуре физической памяти. Вся физическая память транслируется в виртуальную (memory mapping). Виртуальная память может быть транслирована не только в физическую память. Если приложению требуется большее количество памяти (большее, чем общее количество физической памяти), то некоторая часть виртуальной памяти транслируется в пространство подкачки (swap space) дисковой подсистемы. Виртуальная и физическая память в ОС Linux организована в виде модулей, называемых страницами. Размер одной страницы, как правило, составляет 4 Кбайт. Каждая такая страница транслируется на физическое хранилище, такое как ОЗУ или жесткий диск. Информация о связях между виртуальными и реальными страницами хранится в таблице страниц.
13. Подкачка в ОС Linux
В случае, когда компьютер должен выполнить программу, размер которой превышает физический объем оперативной памяти, современные операционные системы прибегают к технологии подкачки, или своппинга. При этом блоки памяти временно сохраняются на жестком диске, а освободившийся объем оперативной памяти используется для обработки другой информации.
Линукс разделяет доступную физическую оперативную память (RAM - random access memory) на блоки, называемые страницами. Своппинг - это процесс, при котором страница памяти копируется в заранее заготовленное место на жестком диске, называемое пространством подкачки, чтобы освободить данную страницу памяти для новой информации. Сумма объемов физической оперативной памяти и пространства подкачки называется объемом доступной виртуальной памяти.
Подкачка необходима по двум причинам. Во-первых, когда системе требуется больше памяти, чем физически доступно, ядро переносит из памяти на диск наименее используемые страницы и отдает освободившуюся память тому приложению (процессу) который нуждается в ней немедленно. Во-вторых, значительное количество страниц памяти задействуется приложениями только во время их загрузки, и может больше не понадобиться по окончании процесса инициализации. Система может откачать эти страницы на диск, освободив тем самым память для других приложений, или даже для дискового кэша.
Однако подкачка имеет и оборотную сторону. По сравнению с памятью, диск работает очень медленно. Скорость памяти измеряется в наносекундах, тогда как скорость диска в миллисекундах, получается, что доступ к диску может быть в десятки тысяч раз медленнее доступа к физической памяти. Чем больше происходит подкачки, тем медленнее работает система.
В Линуксе пространство подкачки бывает двух видов: раздел подкачки (swap partition) и файл подкачки (swap file).
Раздел подкачки - это независимая секция жесткого диска, используемая исключительно для подкачки, никаких других файлов там нет. Файл подкачки - это файл особого типа внутри файловой системы, среди прочих файлов всех других типов
14. Алгоритм замещения страниц в ОС Linux
Алгоритм замещения страниц работает следующим образом: система linux пытается поддерживать некоторые страницы свободными, чтобы их можно было предоставить при необходимости. Множество таких свободных страниц должно постоянно пополняться. Основным алгоритмом замещения страниц в linux является алгоритм PFRA
Подкачиваемость системы - это отношение количества страниц с резервным хранением к количеству страниц, нуждающихся в вытеснении. В алгоритме PFRA подкачиваемость является настраиваемым параметром. Прежде всего linux различает 4 разных типа страниц:
1) Неиспользуемые страницы - страницы, которые не могут вытесняться в подкачку
2) Подкачиваемые страницы - страницы, которые должны быть записаны в область подкачки перед тем, как их можно будет использовать.
3) Синхронизируемые страницы - страницы, которые должны быть записаны на диск в том случае, если они были помечены как грязные.
4) Отбрасываемые страницы - страницы, которые могут быть использованы немедленно.
Во время загрузки процесс init (приоритет 1) запускает страничные демоны kswapd и настраивает их на периодическое срабатывание. При каждом пробуждении поток kswapd проверяет, есть ли достаточное количество свободных страниц для этого он сравнивает нижний и верхний пределы с текущим уровнем использования памяти в каждой области памяти. Если памяти достаточно, то он отправляется обратно спать, хотя он может быть разбужен раньше, если внезапно понадобятся дополнительные страницы. Если доступной памяти в одной из зон становится меньше нижнего предела, то kswapd инициирует алгоритм востребования страниц PFRA. Во время каждого прохода востребуется только определенное заданное количество страниц. Это число ограничено, чтобы сдерживать объем ввода-вывода. При каждом выполнении алгоритма PRFA, он сначала пытается востребовать легкодоступные страницы, после чего переходит к труднодоступным. Востребованность страниц рассматривается в следующей очередности:
1) Отбрасываемые страницы и станицы, на которые нет ссылок.
2) Страницы с резервным хранением, на которые не было ссылок в последнее время
3) Совместно используемые страницы, которые не используются активно пользователями. Проблема с совместно используемыми страницами состоит в том, что если элемент страницы востребуется, то таблицы страниц всех адресных пространств (совместно использующих эту страницу должны быть синхронно обновлены.
Linux поддерживает эффективные древоподобные структуры данных для того, чтобы облегчить поиск совместно используемой страницы.
4) Обычные пользовательские страницы.
Алгоритм PRFA при выборе старых страниц (в какой-либо из категорий) для вытеснения использует алгоритм, подобный алгоритму часов. В основе этого алгоритма лежит цикл, которые сканирует список активных и неактивных страниц каждой зоны, пытаясь востребовать страницы различных типов. Большое значение имеет параметр срочности. Значение срочности передается как параметр, который сообщает процедуре о том, сколько усилий нужно потратить для востребования страницы. Обычно он указывает, сколько страниц нужно обследовать до того, как прекратить работу. Во время работы алгоритма PRFA страницы переносятся между списками активных и неактивных страниц. Для реализации поиска страниц, на которые не было ссылок и которые вряд ли понадобятся в ближайшее время, алгоритм PRFA поддерживает 2 флага для каждой страницы:
1) активная и неактивная
2) ссылки есть или нет
Этими двумя флагами можно обозначить 4 состояния:
- во время 1-го сканирования набора страниц алгоритм prfa сначала сбрасывает их биты ссылок. Если во время второго прохода по странице обнаруживается, что на нее была ссылка, то она переводится в другое состояние из которого она вряд ли будет востребована. В противном случае страница переводится в такое состояние, в котором она будет вытеснена с большей вероятностью.
15. Ввод-вывод в ОС Linux. Общие понятия
Система ввода-вывода ос linux.
Как правило все устройства ввода-вывода в linux выглядят как файлы и доступ к ним осуществляется с помощью тех же системных вызовов read и write, которые используются для обычных файлов. В некоторых случаях должны быть заданы параметры устройства, что делается при помощи специального системного вызова.
Общие понятия и концепции
В ОС linux реализован особый подход к управлению устройствами ввода-вывода. Данный подход заключается в интегрировании всех устройств ввода-вывода, т.н. файловую систему в виде специальных файлов. Каждому устройству ввода-вывода назначается маршрут. Обычно в каталоге /dev. Доступ к этим специальным файлам осуществляется так же, как и к любым другим файлам. Для этого не требуется никаких специальных команд или системных вызовов. Программы могут открывать, читать и записывать в специальные файлы. Существует 2 типа специальных файлов - блочные и символьные. Блочный специальный файл состоит из последовательности пронумерованных блоков. Основное свойство блочного специального файла заключается в том, что к каждому его блоку можно адресоваться и получить доступ. Программа может открыть блочный файл и получить доступ к произвольному пронумерованному блоку. Символьные специальные файлы используются для устройств ввода-вывода символьного потока. С каждым специальным файлом связан драйвер устройства, осуществляющий работу с соответствующим устройством. У каждого драйвера есть так называемый номер старшего устройства. Если драйвер поддерживает несколько устройств одного типа, то каждому такому устройству присваивается номер младшего устройства. Вместе взятые номера главного устройства и младшего устройства однозначно определяют каждое устройство ввода вывода.
Функция драйвера заключается в изолировании остальной части системы от особенностей аппаратного обеспечения. При помощи стандартных интерфейсов между драйверами и остальной операционной системой основная часть системы ввода-вывода может быть помещена в машинно-зависимую часть ядра. Когда пользователь обращается к специальному файлу, файловая система определяет номер старшего и младшего устройств, а так же выясняет, является ли файл блочным специальным файлом или символьным специальным файлом. Номер старшего устройства используется в качестве индекса для одной из двух внутренних хэш-таблиц, содержащих структуры данных для блочных или символьных специальных файлов. Найденная таким образом структура содержит указатели на процедуры открытия устройства, чтения из устройства, записи и т.д. Номер младшего устройства передается в виде параметра. Каждый драйвер разделен на 2 части. Верхняя часть драйвера работает в контексте вызывающей стороны и служит интерфейсом к остальной системе linux. Нижняя часть работает в контексте ядра и взаимодействует с устройствами. Система ввода-вывода занимается обработкой блочных специальных файлов и символьных специальных файлов.
1. Обработка блочных специальных файлов.
Главная цель при работе с данными файлами заключается в минимизации количества операций передачи данных. Для этого между дисковыми драйверами и файловой системой имеется кэш. Когда файловой системе требуется блок диска, то сначала проверяется кэш. Если нужный блок есть в кэше, то он берется оттуда, при этом обращения к диску удается избежать. Если же блока в кэше нет, то он считывается с диска в кэш и оттуда копируется в место назначения. Кэш страниц работает не только при чтении, но и при записи. Когда программа пишет блок, то этот блок не попадает напрямую на диск, а отправляется в кэш. Для решения проблемы излишних перемещений дисковых головок используется планировщик ввода-вывода. Цель планировщика - переупорядочить или собрать в пакеты запросы ввода вывода к блочному устройству.
2. Обработка символьных файлов.
Поскольку символьные устройства потребляют или производят потоки символов, то поддержка произвольного доступа не имеет смысла. Сетевые устройства также потребляют и производят потоки символов. Драйверы сетевого устройства производят пакеты, состоящие из большого количества байтов. Эти пакеты затем маршрутизируются через несколько драйверов сетевых протоколов и в конечном итоге передаются программе.
16. Ввод-вывод в ОС Linux. Работа с сетью
При работе с сетевыми устройствами в системе linux ключевым понятием является сокет.
Сокеты образуют пользовательский интерфейс для работы с сетью. Сокеты могут динамически создаваться и уничтожаться. При создании сокета вызывающему процессу возвращается дескриптор файла, требующий для установления соединения чтения и записи данных, а также разрыва соединения. Каждый сокет поддерживает определенный тип работы в сети. Например:
1. Надежный, ориентированный на соединение потоков байтов. Данный тип сокетов позволяет двум процессам на различных машинах устанавливать структуру связи типа труба (pipe).
2. Надежный, ориентированный на соединение потоков пакетов. 2-й тип сокетов отличается от первого тем, что он сохраняет границы пакетов.
Каждый из вышерассмотренных типов сокетов гарантирует передачу данных.
3. Ненадежная передача пакетов.
Данный тип сокетов предоставляет пользователю прямой доступ к сети (без труб). Данный тип сокетов полезен для приложений реального времени, возможны потери пакетов и байтов или неверный их порядок. Основное преимущество - высокая производительность. При создании сокета, один из параметров указывает на используемый протокол. Для надежных байтовый потоков используется протокол TCP (Transmission Control Protocol). Для ненадежной передачи пакетов обычно применяется протокол UDP (User Data Protocol). Оба они работают поверх протокола IP. Прежде чем сокет может быть использован с ним должен быть связан адрес. Как только сокеты созданы на компьютере-источнике и на компьютере-приемнике, между ними может быть установлено соединение. Одна сторона делает системный вызов listen(A), указывая в качестве параметра локальный сокет. Другая сторона делает системный вызов connect(B, adress), задавая в параметрах дескриптор файла для локального сокета и адрес для удаленного сокета. Если удаленный компьютер принимает вызов, то система устанавливает соединение между двумя сокетами. После установления соединения оно работает по аналогичному каналу для того, чтобы закрыть данный канал используется системный вызов close.
17. Файловая система в ОС Linux. Общие понятия
ОС unix поддерживает несколько десятков файловых систем. Это происходит благодаря наличию виртуальной файловой системы, которая занимается интегрированием всех поддерживаемых файловых систем. Файл в системе linux - это последовательность байтов, содержащая произвольную информацию. Не делается различия между текстовыми файлами, двоичными файлами и любыми другими типами файлов. Имена файлов ограничены 255 символами. По соглашению многие программы ожидают, что имена файлов будут состоять из основного имени и расширения, разделенных точкой. Для удобства файлы могут группироваться в каталоги. Каталоги хранятся на диске в виде файлов и в значительной степени с ними можно работать как с файлами. Каталоги могут содержать подкаталоги, что приводит к иерархической файловой системе. Символ / - это корневой каталог, все остальные каталоги так же обозначаются через косую черту. Существует два способа задания имени файла в системе linux. Первый способ заключается в использовании абсолютного пути (absolute path). В данном случае указывается, как найти файл относительно корневого каталога. Данный способ является крайне неудобным, т.к. каждый раз приходится указывать полный путь к данному файлу, поэтому в системе liniux есть возможность назначать рабочий каталог. Имена путей к файлу могут указываться относительно данного рабочего каталога. Случаются ситуации, когда пользователю необходимо обращаться к файлу, с которым работает другой пользователь, т.е. который находится в другом дереве каталогов. При классическом подходе пользователю каждый раз нужно указывать абсолютный путь, однако, при использовании ссылок можно создать специальный файл, к которому обращаются так же, как и при использовании абсолютного пути. Кроме обычных файлов linux так же поддерживает символьные специальные файлы и блочные специальные файлы. Рассмотрим пример системы, в которой существуют несколько видов носителей информации. Пусть имеется 2 жестких диска и дисковод для оптических дисков. У каждого из них может быть своя файловая система. Следует отметить так же, что данные носители могут быть расположены не в одной системе. Одним из подходов в управлении является создание отдел управления ими по отдельности. Такой подходо реализован в системе windows. В системе linux применяется иное решение, которое заключается в монтировании одного диска в дерево файлов другого диска. Рассмотрим содержание некоторых каталогов:
/bin - в данном каталоге содержатся двоичные программы
/dev - специальные файлы для устройств ввода-вывода
/etc - различные системные файлы.
/lib - библиотеки
/usr - файлы и каталоги пользователя
2*. Виртуальная файловая система linux.
Vfs определяет набор основных абстракций файловой системы и разрешенные с этими абстракциями операции. Существует 4 основные структуры файловой системы, поддерживаемые vfs:
-суперблок (конкретная файловая система). Суперблок содержит критичную информацию о компоновке файловой системы. Разрушение суперблока делает файловую систему нечитаемой.
-i-узел - конкретный файл.
Следует обратить внимание на то, что и каталоги и устройства также представлены в виде i-узлов
-Элемент каталога - данный элемент содержит компонент пути
- Файл - это открытый и связанный с каким-либо процессом файл. Данная структура создается при помощи системного вызова open.ьной файловой системы для каждого из носителей и
18. Файловая система в ОС Linux. Файловая система Ext2
Second Extended File System (дословно: "вторая расширенная файловая система"), сокращённо ext2 (иногда ext2fs) -- файловая система ядра Linux. Главный недостаток ext2 (и одна из причин демонстрации столь высокой производительности) заключается в том, что она не является журналируемой файловой системой (файловая система (ФС), в которой осуществляется ведение журнала, хранящего список изменений и, в той или иной степени, помогающего сохранить целостность файловой системы при сбоях)
Максимальный размер файла 16 Гб - 2 Тб
Структура дискового раздела
Как и в любой файловой системе UNIX, в составе ext2 можно выделить следующие составляющие:
* блоки и группы блоков;
* индексный дескриптор;
* суперблок;
Всё пространство раздела диска разбивается на блоки фиксированного размера, кратные размеру сектора: 1024, 2048, 4096 или 8192 байт. Размер блока указывается при создании файловой системы на разделе диска. Меньший размер блока позволяет сэкономить место на жёстком диске, но также ограничивает максимальный размер файловой системы. Все блоки имеют порядковые номера. С целью уменьшения фрагментации и количества перемещений головок жёсткого диска при чтении больших массивов данных блоки объединяются в группы блоков.
Базовым понятием файловой системы является индексный дескриптор, или inode (англ. information node). Это специальная структура, которая содержит информацию об атрибутах и физическом расположении файла. Индексные декрипторы объединены в таблицу, которая содержится в начале каждой группы блоков. Суперблок -- основной элемент файловой системы ext2. Он содержит общую информацию о файловой системе:
* общее число блоков и индексных дескрипторов в файловой системе,
* число свободных блоков и индексных дескрипторов в файловой системе,
* размер блока файловой системы,
...Подобные документы
ОС Linux - название Unix-подобных операционных систем, основанных на одноимённом ядре. Дистрибутив Lubuntu 12: интерфейс, командная строка, основные программы, входящие в состав пакета. Работа с сетью, конфигурированием и администрированием системы.
методичка [2,0 M], добавлен 28.10.2014Управление памятью в операционной системе Linux. Физическая и виртуальная память. Исполнение и загрузка пользовательских программ, файловая система. Передача данных между процессами. Структура сети в операционной системе. Развитие и использование Linux.
презентация [1,4 M], добавлен 24.01.2014Linux - POSIX-совместимая и Unix-подобная операционная система для ПК и рабочих станций, ее возможности, характерные особенности как ОС: виртуальная мультиконсоль, одновременное выполнение нескольких программ, документирование, работа с сетью Internet.
контрольная работа [84,3 K], добавлен 07.06.2011Виртуальная файловая система. Файловая система Ext2fs (Linux ext2 File System). Использование операционной системы Linux. Настройка веб-сервера Apache. Управление Web-сервером. Комплекс системных программных средств, реализующих управление файлами.
курсовая работа [167,4 K], добавлен 25.12.2013Linux - ядро операционной системы с монолитной архитектурой. Прародители операционной системы Linux, ее стабильные и экспериментальные версии. Процесс внедрения Linux и свободного программного обеспечения в школах и государственных учреждениях России.
реферат [18,2 K], добавлен 19.01.2013Анализ технических возможностей операционной системы Mandriva Linux - дистрибутива GNU/Linux, разрабатываемого французской компанией Mandriva, выпускающей свободные, коммерческие и корпоративные версии своего дистрибутива. Этапы установки оболочки Linux.
презентация [26,2 M], добавлен 23.05.2010Unix - полноценная, изначально многопользовательская, многозадачная и многотерминальная операционная система. Особенности архитектуры Unix, ее два кита - файлы и процессы. Ядро операционной системы, ее файловая система, работа устройств, драйверы.
реферат [1,0 M], добавлен 22.03.2016Linux – одна из наиболее популярных распространяемых бесплатно операционных систем. Работа с базовым ограниченным набором программ по умолчанию. Характеристика основных программ, которые расширяют возможности операционной системы Linux для пользователя.
презентация [486,5 K], добавлен 09.10.2013UNIX - одна з найпопулярніших в світі операційних систем. Ключеві риси Linux. Порівняльні характеристики 32-розрядних операційних систем. Поверхневий огляд характеристик ядра Linux. Програмні характеристики: базові команди і утиліти, мови програмування.
курсовая работа [33,3 K], добавлен 07.12.2010Этапы загрузки Linux-системы, регистрация. Управление учетными записями пользователей. Принцип именования устройств, назначение и применение специальных файлов. Управление файлами, доступом к файловой системе, заданиями. Базовая файловая структура Linux.
методичка [1,6 M], добавлен 15.11.2014История развития и версии Linux. Ключевые черты, преимущества и сравнительные характеристики операционной системы. Программные характеристики, основные причины успеха и бурного развития Linux. Главные проблемы распространения операционной системы.
курсовая работа [64,4 K], добавлен 13.12.2011Понятие и сущность операционных систем, особенности их возникновения. История создания операционной системы Linux, ее основные характеристики, сетевые возможности. Анализ бизнес-модели производства и распространения "свободного" программного обеспечения.
реферат [35,8 K], добавлен 05.04.2010Порядок, определяющий организацию, хранения и именования данных на носителях информации в компьютерах. Классификация файловых систем. Основные функции файловой системы Linux. Нарушения целостности файловой системы при некорректном завершении работы.
презентация [405,2 K], добавлен 10.10.2011Операционная система Linux как ПК-версия операционной системы Unix. Характеристика KOrganizer — простого в использовании менеджера персональной информации. Основные разработки в ALT Linux Master. Особенности разработки в Альт Линукс Школьный Мастер.
курсовая работа [1,3 M], добавлен 06.06.2011История создания операционной системы Linux. Стандартный откомпилированный набор пакетов (дистрибутивов): базовая система, утилиты для инсталляции, готовые к инсталляции пакеты инструментов для UNIX. Регистрация драйверов и разрешение конфликтов.
презентация [1,3 M], добавлен 24.01.2014История появления операционной системы Unix. Перекомпиляция Unix в коды любой аппаратной платформы, ее многозадачность и многотерминальность. Основные отличия Unix от других операционных систем. Использование Unix в качестве сервера и рабочей станции.
реферат [28,1 K], добавлен 05.04.2010Первая версия Windows, постепенный рост системных требований. Важное отличие Windows 98 от Windows 95. История эволюции персональных компьютеров Apple Macintosh. Операционная система Linux, ее характерные черты и особенности, графические интерфейсы.
реферат [1,5 M], добавлен 15.01.2015Карманные персональные компьютеры. Операционная система PalmOS. Управление памятью и внешними данными. Расширения и файловая система. Виртуальное адресное пространство Windows CE. Новые тенденции встроенных ОС. Фирма Apple и компьютеры Macintosh.
курс лекций [2,6 M], добавлен 03.12.2010История создания, архитектура операционной системы и перечень возможностей, реализуемых в Linux. Инструментальные средства и цикл разработки новой версии ядра. Жизненный цикл патча. Структура принятия решений при добавлении новых функций (патчей) в ядро.
лекция [303,8 K], добавлен 29.07.2012Особенности операционных систем Linux. Аппаратно-программные требования для работы с лабораторным практикумом. Настройка виртуальной машины. Аналоги программ WINDOWS в Mandriva. Разграничение прав доступа. Настройка безопасности и политика паролей.
курсовая работа [1,8 M], добавлен 06.11.2014