4. Нишки, симетрични многопроцесорни системи, микроядра

4.1 Процеси и нишки
Две страни на един процес:
-- субект на владеене на ресурси: процес
-- обект за диспечера: нишка
** Многонишкова работа -- много нишки в един процес
--- FIGURE 4.1 ---
-- характеристики на процес:
   - виртуално адресно пространство, където се съхранява образа на процеса
   - защитен достъп до процесори, други процеси, файлове и I/O ресурси
-- характеристики на нишка:
   - състояние (готов, изпълнение, ...)
   - запазен контекст, когато не е в състояние изпълнение
   - стек за изпълнение - статична памет за локални променливи
   - достъп до памет и ресурси на процеса, използване заедно с другите нишки на процеса
--- FIGURE 4.2 ---
-- главни предимства на нишките: по-лесно се създанва нишка, отколкото процес; по-лесно се прекратява нишка, отколкото процес; по-лесно се превключват нишки, отколкото процеси
** Функциониране на нишките
* Състояния на нишките: изпълнение, готово и блокирано (без прекратено)
 4 главни операции за нишки:
   - множене: раждане на нова нишка (на същия процес или в резултат от множене на процеса)
   - блокиране
   - разблокиране
   - завършване
* Синхронизация на нишките
--- FIGURE 4.3 ---
--- FIGURE 4.4 ---
* Пример: Aldus PageMaker - печат, писане, обновяване на екрана; работа в различни прозорци, "busy" курсор
** Нишки на ниво ядро и нишки на ниво потребител
* Нишки на ниво потребител - ULT
* Нишки на ниво ядро  - KLT
--- FIGURE 4.6 ---
* Комбиниран подход
** Други комбинации
* Връзки много-към-много
* Връзки едно-към-много

Нишки : процеси Описание ОС
1 : 1 Всяка нишка е един процес със свое адресно пространство и ресурси повечето UNIX системи
М : 1 Всеки процес е собственик на свое адресно пространство и динамични ресурси. Много нишки могат да бъдат създадени и изпълнени в този процес Windows NT, Solaris
1 : М Една нишка може да "мигрира" от един процес на друг, което дава възмоност нишките лесно да се местят в различни системи  Ra(Clouds), Emerald
М : М Комбинация на предишните TRIX


4.2 Симетрична многопроцесорна работа (SMP)
** SMP архитектура
-- Single Instruction Single Data (SISD)
-- Single Instruction Multiple Data (SIMD)
-- Multiple Instruction Single Data (MISD)
-- Multiple Instruction Multiple Data (MIMD)
--- FIGURE 4.8 ---
** SMP организация
--- FIGURE 4.9 ---
** Предположения за модела на многопроцесорна ОС:
-- Едновременни конкурентни процеси или нишки
-- Планиране - отделно за всеки процесор
-- Синхронизация - обща памет и общи резурси
-- Организация на паметта
-- Надежност и толеранс за грешки


4.3 Микроядра
     Малко ядро на ОС което осигурява основата за модулни продължения.
** Архитектура на микроядро
История: монолитна ОС, многопластова ОС, микроядро.
--- FIGURE 4.10 ---
** Ползи от микроядрата:
-- еднообразен интерфейс на заявките
-- продължаемост на ОС с нови елементи (услуги)
-- гъвкавост на ОС - лесно подмяна на елементи
-- преносимост - малък код за подмяна
-- надежност - малък код, надежно тестване, малък брой Application Programming Interface (API)
** Изпълнения на микроядра
** Microkernel design
* Проста организация на паметта
--- FIGURE 4.11 ---
* Връзки между процесите - чрез съобщения, на принципа на порт-а
* Организация на I/O и прекъсванията - микроядрото разпознава прекъсванията и ги дава за обработка на потребителски процес