лекция 2 и 3

2-ая лекция.
синхронизация нитий.

Неблокирующие очереди.
объекты синхронизации =
mutex .
разница отличие между mutex , семафорами и критической очередью.
отличие бинарного семафора от мьютекса. мьютекс может разблокировать только та нить, которая его забкировала ,
а семафор теоретически может быть разблокирован и заблокирован разными потоками .

Синхронизация критической секцией - объектом конкретного процесса, в то врменя как мьютех и семафор разделяют данные
между разными процессами , справедлива только в виндоус -сихронизирует потоки ОДНОГО ПРОЦЕССА , но за счёт этого
процесс блокировки и разблокировки намного быстрее.

Критическая секция принадлежит только одному из процессов. В freeBSD мьютексы будут работать медленнее чем в
линуксе.
----------------------
ПЛАНИРОВАНИЕ -
раздление вычислительных ресурсов между процессами и нитями (потоками) в операционной сисетмы.
вопросы =
- почему планирование очень важно?
- как распределять "время пользования" ?

Многозаачность почвляется с почвления циндоус нт.

КАК ВЕДУТ СЕБЯ ПРОЦЕССЫ -
процессы то читают, то вычислеяют - демострируя всплески активности. Поведение процессов необходимо понять , чтобы решить задачу планирования.

Все процессы можно грубо разделить на =
1) кто-то из процессов много считает, но мало читает.
2) а кто-то наоборот.
Исходя из этого в момент времени вывода - процесс не использует процессор ,поэтому в момент вывода можно
дать немного посчитать процессу, который любит считать.

КОГДА ПРИНИМАЕТСЯ РЕЩЕНИЕ О НЕОБХОДИМОСТИ ПЛАНИРОВАНИЯ?
КОГДА РЕШАЕТСЯ КАКОЙ ПРОЦЕСС ЗАПУСКАТЬ СЛЕДУЮЩИМ?

решение применяется при переключеии состояния процесса =
waiting - ожидание завершения операции ввода-вывода.
runing - выполнения процессором вычиислений для процесса.
ready - процесс стоит в очереди на выполнение.
решение применяется при переключеии состояния процесса в моменты времени =

-runing-> waiting =момент в котором, процесс прекратил выполнение и перестал использовать процессор потому, что ему теперь нужно произвести оперцию ввода-вывода
-runing-> ready =момент в котором, время процессора закончилось и его снова поставили стоять в очереди (планировщик поставил))
-waiting->ready

КАК ОЦЕНИТЬ АЛГОРИТМ ПЛАНИРОВАНИЯ =
1) По загруженности процессора.
2) пропускная способность - кол-во процессов Ю завершённых в единицу времени.
3) Время выполнения процесса
4) Время ожидания выполнения
5) Время отклика
6) Эффективность планировщика - планировщик не выполняет никакой полезной работы.

ПАКЕТНЫЕ И ИНТЕРАКТИВНЫЕ СИСТЕМЫ

Инерактивная система -должа как можно бытрее "откликаться".
Пакетные системы - это сисетмы типа "запрос-ответ".

ДОЛГОСРОЧНЫЕ И КРАТКОВРЕМЕННЫЕ ПЛАНИРОВЩИКИ.

АЛГОРИТНМЫ ПЛАНИРОВАНИЯ -

1)"первый пришёл - первый получил (fc-fs = first come - first served)"
при таком алгоритме планирования куда выгоднее сначала выполнять задачи маленькие - бымтрые , а потом большое - медленные.

2) sjf - small job first - усовершенствует предыдущий алгоритм , описанным выше на строку способом.

3) SJF с прерыванием (самостоятельное прерывание процесса используется для планирования) = переключение происходит когда процесс сам переходит в ready - то есть процесс явно отдал ресурсы следующим ,
но если такой процесс не отдаёт ресурсы, то возникает серьёзная проблема - "голодание" остальных порцессов.

ДЛя её ликвидации можно ввести "старение процессов" - то есть старшие процессы более приоритетны, а стареют они , стоя в очереди на выоплннения.

Round Robin - аналогично fc-fs = но с прерываниями.

задать процессу желаемый приоритет -
снизить его в юниксе можно командой = nice -n 20 ololo
где ololo - название программы.
----------------------конец 2-ой лекции-----------------
---------------------начало 3-ей лекции-------------

УПРАВЛЕНИЕ ПАМЯТЬЮ.

Задачи алгоритмов управления памятью.
Представление памятью.

* Защита. Один процесс не должен получать доступ к памяти другого процесса.
* Именование . как идентиФИфировать общие куски памяти в системе.
* Прозрачность - насколько прозрачно раздеелние доступа. Нужно ли явно чем-то управлять.
* Эффективность .Минимум накладных расходов.

управлять памятью надо из-за мультисоздачности. опять же возникает вопросу -кому как много раздавать памяти.

проблема защиты памяти приложений друг от друга.

актуальность проверки памяти на уровне "железа".

проблема "фрагментированного" выделения памяти - соответственно спасает от этого "дефрагментация" , действительно раньше были дефрагментации оперативы,
но это оказалось слишком накладным и от такого подхода отказались.

Единственным способом борьбы с фрагментацией - выделять память процессу кусками фиксированной длинны (pages)
page frame - это область куда можно положить page - данные.

Таблица страниц -
1) получение смещения
2) получение номера страниц
3) проверка, находится ли данная страница в адресном пространстве процесса
4) Получаем номер фрейма для конкретной страницы.
5) Добавляем смещение.
6) Получаем доступ к памяти.

понятие "внутренней фрагментации" - когда в выделенном куске мы используем не всю память.