Operatsioonisüsteemid. Операционные системы Virumaa Kolledž TTÜ Lektor Larissa Joonas 2010 3. Osa 2 Protsessid ja lõimed. Процессы и потоки 2 Protsessid. Процессы Kõik arvutis funktsioneeriv tarkvara on organiseeritud nagu jarjestikuste protsesside kogum. Все функционирующее на компьютере программное обеспечение организовано в виде набора последовательных процессов Protsess – programmi töötav ehk aktiivne koopia, jooksva registri, käskude ja hetkeseisude tähtsustega. Процессом является выполняемая (работающая) программа с текущими значениями счетчиков команд, регистров и переменных 3 Protsesside mudel Модель процессов A B C Üks programmi loendur Один программный счетчик D Neli ülesannet multitegumilisuses reziimis Четыре задачи в многозадачном режиме 4 Protsesside mudel Модель процессов (2) 4 programmi loenduri А B D 4 программных счетчика C Nelja sõltumatu jarjestikuse protsessi printsipiaalne mudel Принципиальная модель четырех независимых последовательных процессов 5 Protsessi loomine Создание процесса (1) Neli peamist sündmust mis viivad protsesside loomisele Четыре основных события, приводящих к созданию процесса 1)Süsteemi initialiseerimine. Инициализация системы 2)Töötava protsessi süsteemikutse täitmine protsessi loomiseks. Выполнение изданного работающим процессом системного запроса на создание процесса 3)Kasutaja kutse protsessi loomiseks. Запрос пользователя на создание процесса 4)Pakett töö initsieerimine. Инициирование пакетного задания 6 Protsessi loomine Создание процесса (2) Tausta protsessid kannavad nime deemonid Фоновые процессы называются демонами 7 Protsessi lõpetamine Завершение процесса Sündmused, mis lõpetavad protsesse События, завершающие процесс 1)Tavaline väljumine (tahtlik). Обычный выход (преднамеренно) 2)Väljumine vea pärast (tahtlik). Выход по ошибке (преднамеренно) 3)Väljumine peale parandamatut viga (mitte tahtlik). Выход по неисправимой ошибке (непреднамеренно) 4)Teise protsessi poolt hävitamine (mitte tahtlik). Уничтожение другим процессом (непреднамеренно) 8 Protsesside hierarhia Иерархия процессов Emaprotsess loob tütarprotsessi, tütarprotsess võib samuti luua oma protsesse. Родительский процесс создает дочерний процесс, дочерний процесс может создавать свои процессы Hierarhia kujunemine UNIX-is - protsesside gruppid Образование иерархии В UNIX это называется группой процессов Windows-is ei ole protsesside hierarhiat В Windows не существует иерархии процессов Kõik protsessid on ühetaolised Все процессы равноправны 9 Protsessi seisundid Состояния процесса (1) Katkes tatud Töötav 2 1 Uus 3 Ootel Valmisolev 4 Võimalikud protsessi seisundid Возможные состояния процесса Töötav (Работающий) Valmisolev (Готовый к работе) Ootel, blokeeritud (Ожидающий ) 10 Protsessi seisundid Состояния процесса (2) 1. Sisend-väljundi või sündmuse ootamine. I/O или ожидание события 2. Planeeritud vahetus. Смена процесса планировщиком 3. Katkestamine. Прерывание 4. Sisend-väljundi või sündmuse lõpetamine. I/O или окончание события Töötav Katkes tatud 2 1 3 Valmisolev Ootel 4 11 Uus Protsessi seisundid Состояния процесса (2) Protsessid 0 1 ... N-1 N Plaanur OS madalam kiht Нижний уровень ОС Отвечает за прерывания и планирование Vastutab katkestuse ja planeerimise eest Выше расположены последовательные процессы Üleval asuvad järjestikude prosessid 12 Process control block (PCB). Protsessi kontollimie plokk. Контрольный блок процесса Viit Protsessi olek Protsessi number Programmi loendur Registrid Mälu piir Avatud failide nimekiri . . . 13 CPU Ümberlülitemine protsesside vahel. Переключение между процессами Protsess P0 Protsess P1 töötav Salvesta seisund PCB0-le tühikäigu . . . Lugeda seisund PCB1-lt tühikäigu Süsteemi kutse töötav Salvesta seisund PCB0-le . . . tühikäigu Lugeda seisund PCB1-lt töötav 14 Protsesside järjekorad. Очереди процессов Job queue – ülesande järjekord — очередь задач. Kõik protsessid süstemis Ready queue – valmis protsesside järjekord — очередь готовых процессов. Protsessid peamälus, valmis ja ootel Device queues – riistvara järjekord — очередь к оборудованию. Protsessid I/O ootamise järjekorras. Protsessid liikuvad järjekorda vahel. Процессы перемещаются между очередями. 15 Protsesside järjekorad. Очереди процессов (2) Valmis protsessid I/O I/O jarjekord CPU I/O kutse Aeg on läbi Loodud Katkestus Tütre protsess loomiseks Katkestuse ootamine 16 Plaanurid. Планировщики Pikkaaja plaanurid. Долгосрочные планировщики. – Valivad, mis protsess peab liikuda valmise protsesside järjekorra. Выбирают, какой процесс будет перемещен в очередь готовых процессов. Lühike aja plaanurid. Краткосрочные планировщики. – Valivad, missugune protsess peab liikuda CPU-sse. Выбирают, какой процесс должен быть передан ЦПУ для выполнения. 17 Protsesside Realiseerimine Реализация процессов (1) Protsesside tabel Таблица процессов Katkestuste vektor Вектор прерываний 18 Protsesside Realiseerimine Реализация процессов (2) Protsesside juhtimine Mälu juhtimine Failide juhtimine Registrid Programmi loendur Programmi seisundi sõna Pinuviit (Stack pointer) Programmi seisund Prioriteet Planeeringu parametrid Protsessi ID Ema protsess Protsessi grupp Signaal Protsessi stardi aeg Aeg CPU-s Tütre CPU-s aeg Järgmise alarmi aeg Viit järgmise segmentile Viit andme segmentile Viit pinu segmentile Root kaust Töö kaust Faili deskriptorid Kasutaja ID Gruppi ID Некоторые поля типичного элемента таблицы процессов 19 Tüüpiliste protsesside tabeli mõned väljad Klient-Serveri Kommunikatsioon Sockets Remote Procedure Calls Remote Method Invocation (Java) 20 Socket Socket on kommunikatsiooni lõpp punkt. Сокет — это конечная точка коммуникации IP aadress ja port. Совокупность адреса и порта Socket 161.25.19.8:1625 kasutab port 1625 adressil 161.25.19.8. Сокет 161.25.19.8:1625 использует 1625 порт и адрес 161.25.19.8. 21 Socket Communication Host 152.36.112.205 Socket 152.36.112.205/1625 Web-server 155.113.2.11 Socket 155.113.2.11/80 22 Remote Procedure Calls (RPC). Kaug protseduuri kutse. Удаленный вызов процедур Remote procedure call (RPC) abstrageerib protseduuri kutse protsesside vahel võrgu süsteemis. RPC – абстракция вызова процедур между процессами в сети. Stubs The client-side stub The server-side stub Stub Klient Server Võrk 23 Lõimed Потоки Mitme programmi samaaegne töö protsessi keskkonnas. Programmid on sõltumatud. Lihtsustatud protsessid Возможность одновременного выполнения в среде процесса нескольких программ, в достаточной степени независимых Упрощенные процессы Mitmelõimelisus Многопоточность 24 Lõime mudel Модель потока (1) P0 P1 P2 P0 Kasutaja ruum Kasutaja ruum Tuum Tuuma ruum a) Tuum Tuuma ruum b) (a) Kolm protsessi üksiku juhtiva lõimega Три процесса с одиночными потоками управления (b) Üks protsess kolme juhtiva lõimega 25 Один процесс с тремя потоками управления Lõime mudel Модель потока (2) Elemendid, mida kasutatakse kõikide protsessi lõimete poolt Элементы, совместно используемые всеми потоками процесса » Aadressi ruum Адресное пространство » Globaalsed muutujad Глобальные переменные » Avatud failid Открытые файлы » Tütre protsessid Дочерние процессы » Alarmid Алармы » Signalid ja signali töötlejad Сигналы и их обработчики » Konto informatsioon Учетная информация 26 Lõime mudel Модель потока (3) Elemendid, mis on individuaalsed igale lõimele • Элементы, индивидуальные для каждого потока Программный счетчик – Programmi loendur – Registrid Регистры – Pinu Стэк – Seisund Состояние 27 Lõime mudel Модель потока (4) Iga lõim kasutab oma pinu. У каждого потока свой собственный стек Iga lõime pin sisaldab iga kutsutatud protseduri kohta ühte freimi • Стек каждого потока содержит по одному фрейму для каждой вызванной процедуры Freimil on protseduuri lokaalsed muutujad ja naasmise aadress • Во фрейме находятся локальные переменные процедуры и адрес возврата Tavaliselt protsessid käivituvad ühega lõimega. • 28 Процессы как правило запускаются с одним потоком Lõimete kasutamine Использование потоков (1) Aadressi ruumi ja andmete parallelse kasutamise võimalus Loomise ja hävitamise kergus (100 korda vähem aega, kui protsessile) Легкость создания и уничтожения (в 100 раз меньше времени, чем на процесс) Tööjõudlus Возможность параллельного использования адресного пространства и данных Производительность работы Parallelne töö mitmete protsessoritega Параллелизм при работе с несколькими процессорами 29 Lõimete kasutamine Использование потоков (2) • Mitmelõimega veebserver – Многопоточный веб-сервер • Teksti redaktor. – Текстовый редактор 30 Kolm viisi serveri konstrueerimisele. Три способа конструирования сервера • Paralleltöö, süsteemi kutsed blokeerimisega – • Mitte paralleltöö, süsteemi kutsed blokeerimisega – • Параллелизм, системные запросы с блокировкой Без параллелизма, системные запросы с блокировкой Paralleltöö, süsteemi kutsed blokeerimiseta, katkestused – Параллелизм, системные запросы без 31 блокировки, прерывания Lõimed kasutaja ruumis Потоки в пространстве пользователя (1) Kasutaja ruum Lõimed Lõimede tabel Protsesside tabel Tuuma ruum 32 Lõimed kasutaja ruumis Потоки в пространстве пользователя (2) Igale protsessile on vaja oma lõimetabel Protseduur, mis on planeerija ning hoiab informatsiooni protsessi eest on lokaalsed protseduurid ja sellepärast effektiivsemad Каждый процесс имеет собственный алгоритм планирования Blokeerivate süsteemkutsete realiseerimise probleem Процедура, сохраняющая информацию о потоке и планировщик являются локальными процедурами и они более эффективны Iga protsess omab oma planeerimise algorütm Каждому процессу необходима собственная таблица потоков Проблема реализации блокирующих системных запросов Lõim peab andma juhtimise tagasi vabatahtlikult Поток должен добровольно отдать управление 33 Lõimede realiseerimine tuumas Реализация потоков в ядре (1) Kasutaja ruum Lõimed Lõimede tabel Protsesside tabel Tuuma ruum 34 Lõimede realiseerimine tuumas Реализация потоков в ядре (2) Lõimede korduv kasutamine Lõimede planeerimise võimalus Повторное использование потоков Возможность планирования потоков Süsteemikutse kõrge hind Высокая цена системных запросов 35 Kasutaja lõimede multiplekseerimine tuuma lõimedes Мультиплексирование потоков пользователя в потоках ядра Kasutaja ruum Lõimed Tuuma ruum 36 Planeerija aktiveerimine Активация планировщика Eesmärk – tuuma lõimede funktsionalsuse imiteerimine. Kasutaja kihti lõimede võimsus Производительность потоков уровня пользователя Mitetarviliku ülekäigu koguse tuuma ja kasutaja ruumi vahel vähendamine Цель – имитация функциональности потоков ядра Уменьшение количества ненужных переходов между пространством пользователя и ядром Tuum määrab igale protsessile mingi koguse virtuaalseid protssesse Ядро назначает каждому процессу некоторое количество виртуальных процессоров 37 Üles ujuvad lõimed Всплывающие потоки Kasutaja ruum Kasutaja ruum Olemas olev lõim Üles ujuv lõim Sissetulev sõnum Tuuma ruum Tuuma ruum 38