Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kolontitul.doc
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Тема 1.2 Ядро системы. Файловая система. Управление процессами.

Linux — ядро операционной системы, соответствующее стандартам POSIX.

В основном код написан на Си с некоторыми расширениями gcc и на ассемблере (с использованием AT&T-синтаксиса GNU Assembler).

Распространяется как свободное программное обеспечение на условиях GNU General Public License, кроме несвободных элементов, особенно драйверов, которые используют прошивки, распространяемые под различными лицензиями.

Файловая система Ubuntu

Вполне возможно, вы хотя бы раз слышали словосочетание «дерево каталогов» применительно к организации расположения файлов на компьютере. Действительно, если представить файлы листьями, а директории - узлами веток, то файловая система похожа на дерево. Все современные операционные системы используют подобную систему организации файлов. Отличия есть только в местоположении корня этого дерева. Если вы использовали операционные системы Windows, то вы должно быть привыкли к так называемым логическим дискам:C:, D:, A: и т.д. В Windows именно они и являются корнями, и все пути к файлам отсчитываются от одного из этих дисков. В Linux всё немного по-другому, в нём всегда есть только один корень, который так и называется - root (то есть корень по-английски), а обозначается «/», и путь к любому файлу на компьютере отсчитывается относительно этого корня. Например, /etc/passwd - это путь до файла, в котором хранятся данные обо всех пользователях компьютера.

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

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

Установка Linux Ubuntu in Oracle VM Virtualbox.

Тема 2 Файловая система ос Linux/unix.

Тема 2.1 Файлы, отображаемые в виртуальную память. Реализация файловых систем unix.

как файлы, отображаемые в память(memory-mapped files, далее — MMF). Иногда их использование может дать довольно таки существенный прирост производительности по сравнению с обычной буферизированной работой с файлами. Это механизм, который позволяет отображать файлы на участок памяти. Таким образом, при чтении данных из неё, производится считывание соответствующих байт из файла. С записью аналогично.  «Клёво, конечно, но что это даёт?» — спросите вы. Поясню на примере. Допустим, перед нами стоит задача обработки большого файла (несколько десятков или даже сотен мегабайт). Казалось бы, задача тривиальна — открываем файл, поблочно копируем из него в память, обрабатываем. Что при этом происходит. Каждый блок копируется во временный кэш, затем из него в нашу память. И так с каждым блоком. Налицо неоптимальное расходование памяти под кэш + куча операций копирования. Что же делать? Тут-то нам на помощь и приходит механизм MMF. Когда мы обращаемся к памяти, в которую отображен файл, данные загружаются с диска в кэш(если их там ещё нет), затем делается отображение кэша в адресное пространство нашей программы. Если эти данные удаляются — отображение отменяется. Таким образом, мы избавляемся от операции копирования из кэша в буфер. Кроме того, нам не нужно париться по поводу оптимизации работы с диском — всю грязную работу берёт на себя ядро ОС. В своё время я проводил эксперимент. Замерял с помощью quantify скорость работы программы, которая буферизировано, копирует большой файл размером 500 Мб в другой файл. И скорость работы программы, которая делает то же, но с помощью MMF. Так вот вторая работает быстрее почти на 30% (в Solaris, в других ОС результат может отличаться). Согласитесь, неплохо.  Чтобы воспользоваться этой возможностью, мы должны сообщить ядру о нашем желании отобразить файл в память. Делается это с помощью функции mmap().

#include<sys/mman.h> void *mmap (void *addr, size_t len, int prot, int flag, int filedes, off_t off);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]