- •Задачи и интерфейсы Unix-подобных систем.
- •2.Структура ядра ос Linux.
- •3. Процессы в ос Linux. Общие понятия.
- •4. Процессы в ос Linux. Этапы создания процесса.
- •5. Взаимодействие процессов в ос Linux.
- •6. Реализация потоков в ос Linux.
- •7. Планирование в ос Linux.
- •8.Загрузка в ос Linux
- •14.Алгоритм замещения страниц в ос Linux.
- •13.Подкачка в ос Linux.
- •15.Ввод-вывод в ос Linux. Общие понятия.
- •17. Файловые системы в ос Linux. Общие понятия.
- •18. Файловые системы в ос Linux. Файловая система Ext2.
- •19. Файловые системы в ос Linux. Файловая система Ext3.
- •20. Файловые системы в ос Linux. Файловая система nfs.
- •21.Архитектура ос windows nt/2000/xp
- •22. Архитектура ос windows vista
- •23.Структура пользовательского режима. Программный интерфейс Win32 api.
- •24.Реестр ос Windows Vista.
- •25. Реализация объектов в oc windows Vista. Структура объектов.
- •26. Реализация объектов в oc windows Vista. Типы объектов.
- •27. Реализация объектов в oc windows Vista. Пространство имён.
- •Структура пространства имен
- •28. Задания, процессы, потоки, волокна в oc windows Vista.
- •29. Межпроцессное взаимодействие в oc windows Vista.
- •30. Реализация процессов и потоков в oc windows Vista.
- •31. Планирование в oc windows Vista. Условия вызова планировщика.
- •32. Планирование в oc windows Vista. Система приоритетов.
- •33. Планирование в oc windows Vista. Условия изменения приоритетов.
- •34. Технология dll. Структура dll-библиотеки. Наиболее важные dll-библиотеки.
- •35. Технология dll. Преимущества и недостатки dll. Win32 и dll
- •38. Конфигурация виртуального адресного пространства для пользовательского
- •39. Реализация, поддержка, особенности виртуальной памяти в oc windows Vista.
- •40. Реализация управления памятью в oc windows Vista. Обработка страничных
- •41. Алгоритм замещения страниц в oc windows Vista.
- •42. Управление физической памятью в oc windows Vista.
- •44. Файловая система fat. Загрузочный сектор.
- •45. Файловая система fat. Таблица размещения файлов.
- •46. Файловая система ntfs. Структура тома.
- •47. Файловая система ntfs. Структура главной файловой таблицы mft
- •48. Файловая система ntfs. Файловая запись mft для малого и большого файла.
- •49. Файловая система ntfs. Файловая запись mfTдля малого и большого каталога.
- •50. Файловая система ntfs. Файлы метаданных.
5. Взаимодействие процессов в ос Linux.
Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").
2) Взаимодействие между процессами.
Взаимодействие между процессами ОС Линукс осуществляется с помощью двух механизмов:
- трубы(pipes) - канал между двумя процессами, в который один процесс может писать поток байтов, а другой считывать.
- сигналы(signals) - в данном случае взаимодействие происходит посредством программных прерываний; процесс может посылать сигналы только своей группе процессов (родитель, братья, сёстры и т.д.)
6. Реализация потоков в ос Linux.
Исторически процессы были контейнерами ресурсов, а потоки — единицами исполнения. Процесс содержал один или несколько потоков, которые совместно использовали адресное пространство, открытые файлы, обработчики сигналов и все остальное.
В 2000 году в Линукс был введён новый системный вызов clone, который размыл различия между процессами и потоками. Ни в одной другой системе Unix вызова clone нет. Вызов clone создаёт новый поток либо в текущем процессе, либо в новом процессе. В первом случае, новый поток совместно использует совместно с уже существующими единое адресное пространство. Во втором случае, поток получает копию адресного пространства, которое становится недоступным для старых потоков (те, от которых он произошёл). Для сохранения совместимости с другими системами Линукс различает PID и идентификаторы задач (TID — Task IDentifer); оба эти поля хранятся с структуре задач. Когда вызов clone используется для создания нового процесса, PID устанавливается в новое значение, в противном случае задача получает новый TID, но наследует PID. Таким образом все потоки процесса получат тот же самый PID, что и первый поток процесса.
7. Планирование в ос Linux.
Операционная система linux алгоритмом планирования различает 3 класса потоков (планирование linux происходит только на основе потоков, а не процессов) :
1. потоки реального времени, обслуживаемые по алгоритму fifo. данные потоки имеют наивысший приоритет и могут вытесняться только потоками того же типа.
2. потоки реального времени, обслуживаемые в порядке циклической очереди. данный тип потоков подобен предыдущему с тем отличием, что он имеет квант времени, т.е. данные потоки могут вытесняться по таймеру.
3. потоки разделения времени.
потоки реального времени имеют приоритеты 1 - 99, остальые - 100-139.
остальные потоки планируются в соответствии с приоритетами и алгоритмом циклической очереди.
Планировщик linux использует ключевую структуру данных, которая называется "очередь исполнения" (runqueue). Эта очередь связана с процессором и поддерживает 2 массива: active & expired. Каждый из этих массивов состоит из заголовков 140 списков.
Заголовок списка указывает на дважды связный список потоков данного приоритета. Планировщик выбирает задачу из активного массива с самым высоким приоритетом. Если квант времени этой задачи истек, то она переносится в список закончивших функционирование.
Если задача блокируется до истечения её кванта времени, то после события она помещается обратно в исходный активный массив, а её квант времени уменьшается на количество уже использованного времени процессора. Когда ни в одном из активных массивов больше нет задач, то планировщик меняет указатели для активного массива и массива задач, закончивших функционирование.
Разным уровням приоритетов, присваивается различный квант времени: чем больше приоритет, тем больший квант времени получает данный поток для приоритета 100 - 800млс, для приоритета 139 выделяется 5млс.
Приимущества данного подхода:
а) данный способ планирования гарантирует, что потоки с более низким приоритетом будут выполнены;
б) если, например, потоку необходимо считывание с диска, то, после предоставления такой возможности, ему дается право на быстрое выполнение.
По-скольку система linux является системой разделения времени, то невозможно предугадать, каким будет выполняться следующий процесс. В связи с этим в системе linux используются идея статического и динамического приоритетов.
Статический приоритет является постоянным для данной задачи и назначается по умолчанию в начале работы. Динамический приоритет назначается и изменяется во время работы в соответствии с политикой планирования.
