- •Министерство образования и науки Республики Казахстан
- •1.1 Данные о преподавателях:
- •Выписка из учебного плана
- •1.6 Перечень и виды заданий и график их выполнения: Виды заданий и сроки их выполнения
- •1.7 Список литературы
- •2.2 Конспект лекционных занятий
- •Тема 1.Основы операционных систем .( 2 часа)
- •1.1 Назначение и функции операционных систем
- •1.2 Эволюция развития операционных систем
- •1.3 Основные понятия, концепции ос
- •1.4 Классификация ос
- •Тема 2. Архитектура операционных систем. ( 2 часа)
- •2.1 Монолитные системы
- •2.2 Многоуровневые системы
- •Тема 3. Микроядерная архитектура ос(2 часа)
- •3.1 Основные положения архитектуры ос с микроядром
- •3.2 Преимущества и недостатки архитектуры ос с микроядром
- •Тема 4. Совместимость операционных систем( 2 часа)
- •4.1 Виды совместимости
- •4.2 Способы реализации совместимости
- •Тема 5. Представления процесса в операционной системе ( 2 часа)
- •5.1 Понятие процесса
- •5.2 Состояния процесса
- •Тема 6. Операции над процессами и связанные с ними понятия (2 часа)
- •6.1 Process Control Block и контекст процесса
- •6.2 Одноразовые операции
- •6.3 Многоразовые операции
- •Тема 7. Планирование процессов ( 2 часа)
- •7.1 Уровни планирования
- •7.2 Критерии планирования
- •7.3 Параметры планирования
- •7.4 Вытесняющее и невытесняющее планирование
- •Алгоритмы планирования
- •Тема 8. Алгоритмы синхронизации
- •8.1 Программные алгоритмы организации взаимодействия процессов
- •8.2 Алгоритм Петерсона
- •8.3 Алгоритм булочной (Bakery algorithm)
- •8.4 Команда Test-and-Set (проверить и присвоить 1)
- •8.5 Команда Swap (обменять значения)
- •Тема 9. Механизмы синхронизации (2 часа) 9. 1 Семафоры
- •9.2 Мониторы
- •9.3 Сообщения
- •Тема 10. Организация памяти компьютера. Простейшие схемы управления памятью. ( 2 часа)
- •10.1 Физическая организация памяти компьютера
- •10.2 Логическая память
- •10.3 Простейшие схемы управления памятью
- •10.4 Динамическое распределение. Свопинг
- •Тема 11. Управление файлами (2 часа)
- •11.1 Основные понятия файловой системы
- •11.2 Операции над файлами
- •11.3 Директории. Логическая структура файлового архива
- •11.4 Разделы диска. Организация доступа к архиву файлов.
- •Тема 12. Реализация файловой системы
- •12.1 Система хранения
- •12.2 Управление внешней памятью
- •12.3 Управление свободным и занятым дисковым пространством
- •12.4 Монтирование файловых систем
- •12.5 Управление "плохими" блоками
- •12.6 Производительность файловой системы
- •Тема 13. Сети и сетевые операционные системы. ( 2 часа)
- •13.1 Сетевые и распределенные операционные системы
- •13.2 Понятие протокола. Многоуровневая модель построения сетевых вычислительных систем.
- •13.3 Проблемы адресации в сети.
- •Тема 14 . Основные понятия информационной безопасности ( 2 часа)
- •14.1 Угрозы безопасности
- •14.2 Криптография как одна из базовых технологий безопасности ос
- •Тема 15. Защитные механизмы операционных систем
- •2.3 Планы лабораторных занятий
- •Практические задания
- •Практические задания.
- •2.4 Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (срсп)
- •Рекомендуемая литература: 11 доп. [324-401], 12 доп. [123-143], 13 доп.[76-92]
- •2.5 Планы занятий в рамках самостоятельной работы студентов (срс)
- •2.7 Тестовые задания для самоконтроля с указанием ключей правильных ответов
- •Ключи правильных ответов
- •2.6 Перечень экзаменационных вопросов по пройденному курсу
- •Глоссарий
- •12. Канал- специализированный процессор ввода-вывода в компьютерах класса мэйнфреймов.
- •27. Пропускная способность – количество задач, выполняемых вычислительной системой в единицу времени.
- •Выходные сведения
8.2 Алгоритм Петерсона
Первое решение проблемы, удовлетворяющее всем требованиям и использующее идеи ранее рассмотренных алгоритмов, было предложено датским математиком Деккером (Dekker). В 1981 году Петерсон (Peterson) предложил более изящное решение. Пусть оба процесса имеют доступ к массиву флагов готовности и к переменной очередности.
shared int ready[2] = {0, 0};
shared int turn;
while (some condition) {
ready[i] = 1;
turn =1-i;
while(ready[1-i] && turn == 1-i);
critical section
ready[i] = 0;
remainder section
}
При исполнении пролога критической секциипроцессPiзаявляет о своей готовности выполнитькритический участоки одновременно предлагает другому процессу приступить к его выполнению. Если оба процесса подошли к прологу практически одновременно, то они оба объявят о своей готовности и предложат выполняться друг другу. При этом одно из предложений всегда следует после другого. Тем самым работу вкритическом участкепродолжит процесс, которому было сделано последнее предложение.
8.3 Алгоритм булочной (Bakery algorithm)
Алгоритм Петерсонадает нам решение задачи корректной организации взаимодействия двух процессов. Давайте рассмотрим теперь соответствующий алгоритм для n взаимодействующих процессов, который получил названиеалгоритм булочной, хотя применительно к нашим условиям его следовало бы скорее назвать алгоритм регистратуры в поликлинике. Основная его идея выглядит так. Каждый вновь прибывающий клиент (он же процесс) получает талончик на обслуживание с номером. Клиент с наименьшим номером на талончике обслуживается следующим. К сожалению, из-за неатомарности операции вычисления следующего номераалгоритм булочнойне гарантирует, что у всех процессов будут талончики с разными номерами. В случае равенства номеров на талончиках у двух или более клиентов первым обслуживается клиент с меньшим значением имени (имена можно сравнивать в лексикографическом порядке). Разделяемые структуры данных для алгоритма – это два массива
shared enum {false, true} choosing[n];
shared int number[n];
Изначально элементы этих массивов инициируются значениями falseи0соответственно. Введем следующие обозначения
(a,b) < (c,d), если a < c
или если a == c и b < d
max(a0, a1, ...., an) – это число k такое, что
k >= ai для всех i = 0, ...,n
Структура процесса Piдляалгоритма булочнойприведена ниже
while (some condition) {
choosing[i] = true;
number[i] = max(number[0], ...,
number[n-1]) + 1;
choosing[i] = false;
for(j = 0; j < n; j++){
while(choosing[j]);
while(number[j] != 0 && (number[j],j) <
(number[i],i));
}
critical section
number[i] = 0;
remainder section
}
8.4 Команда Test-and-Set (проверить и присвоить 1)
О выполнении команды Test-and-Set, осуществляющей проверку значения логической переменной с одновременной установкой ее значения в1, можно думать как о выполнении функции
int Test_and_Set (int *target){
int tmp = *target;
*target = 1;
return tmp;
}
С использованием этой атомарной команды мы можем модифицировать наш алгоритм для переменной-замка, так чтобы он обеспечивал взаимоисключения
shared int lock = 0;
while (some condition) {
while(Test_and_Set(&lock));
critical section
lock = 0;
remainder section
}