380 likes | 593 Vues
Virumaa Kolledž TTÜ Lektor Larissa Joonas 2010 3. Operatsioonisüsteemid. Операционные системы. Osa 2. Protsessid ja lõimed. Процессы и потоки. Protsessid. Процессы. Kõik arvutis funktsioneeriv tarkvara on organiseeritud nagu jarjestikuste protsesside kogum.
E N D
Virumaa Kolledž TTÜ Lektor Larissa Joonas 2010 3. Operatsioonisüsteemid. Операционные системы
Osa 2 Protsessid ja lõimed.Процессы и потоки
Protsessid. Процессы • Kõik arvutis funktsioneeriv tarkvara on organiseeritud nagu jarjestikuste protsesside kogum. • Все функционирующее на компьютере программное обеспечение организовано в виде набора последовательных процессов • Protsess – programmi töötav ehk aktiivne koopia,jooksva registri, käskude ja hetkeseisudetähtsustega. Процессом является выполняемая (работающая) программа с текущими значениями счетчиков команд, регистров и переменных
Protsesside mudelМодель процессов A • Neli ülesannet multitegumilisuses reziimis • Четыре задачи в многозадачном режиме Üks programmi loendur Один программный счетчик B C D
Protsesside mudelМодель процессов (2) • Nelja sõltumatu jarjestikuse protsessi printsipiaalne mudel • Принципиальная модель четырех независимых последовательных процессов 4 programmi loenduri 4 программных счетчика А B C D
Protsessi loomineСоздание процесса (1) Neli peamist sündmust mis viivad protsesside loomisele Четыре основных события, приводящих к созданию процесса • Süsteemi initialiseerimine. Инициализация системы • Töötava protsessi süsteemikutse täitmine protsessi loomiseks. Выполнение изданного работающим процессом системного запроса на создание процесса • Kasutaja kutse protsessi loomiseks. Запрос пользователя на создание процесса • Pakett töö initsieerimine. Инициирование пакетного задания
Protsessi loomineСоздание процесса (2) • Tausta protsessid kannavad nime deemonid • Фоновые процессы называются демонами
Protsessi lõpetamineЗавершение процесса Sündmused, mis lõpetavad protsesse События, завершающие процесс • Tavaline väljumine (tahtlik). Обычный выход (преднамеренно) • Väljumine vea pärast (tahtlik). Выход по ошибке (преднамеренно) • Väljumine peale parandamatut viga (mitte tahtlik). Выход по неисправимой ошибке (непреднамеренно) • Teise protsessi poolt hävitamine (mitte tahtlik). Уничтожение другим процессом (непреднамеренно)
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 • Все процессы равноправны
Protsessi seisundidСостояния процесса (1) Töötav Katkestatud • Võimalikud protsessi seisundid • Возможные состояния процесса • Töötav (Работающий) • Valmisolev(Готовый к работе) • Ootel, blokeeritud (Ожидающий) 2 1 Uus 3 Ootel Valmisolev 4
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 Katkestatud Uus 2 1 3 Ootel Valmis-olev 4
Protsessi seisundidСостояния процесса(2) ... Protsessid • OS madalam kiht • Нижний уровень ОС • Отвечает за прерывания и планирование • Vastutab katkestuse ja planeerimise eest • Выше расположены последовательные процессы • Üleval asuvad järjestikude prosessid 0 1 N-1 N Plaanur
Process control block (PCB). Protsessi kontollimie plokk. Контрольный блок процесса Viit Protsessi olek Protsessi number Programmi loendur Registrid Mälu piir Avatud failide nimekiri . . .
CPU Ümberlülitemine protsesside vahel. Переключение между процессами Protsess P0 Protsess P0 Protsess P1 töötav töötav töötav Salvesta seisund PCB0-le tühikäigu . . . Lugeda seisund PCB1-lt Süsteemi kutse töötav tühikäigu Salvesta seisund PCB0-le . . . tühikäigu Lugeda seisund PCB1-lt töötav
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. Процессы перемещаются между очередями.
Protsesside järjekorad.Очереди процессов (2) CPU Valmis protsessid I/O I/O jarjekord I/O kutse Aeg on läbi Tütre protsess loomiseks Loodud Katkestuse ootamine Katkestus
Plaanurid. Планировщики • Pikkaaja plaanurid. Долгосрочные планировщики. • Valivad, mis protsess peab liikuda valmise protsesside järjekorra. Выбирают, какой процесс будет перемещен в очередь готовых процессов. Lühike aja plaanurid. Краткосрочные планировщики. • Valivad, missugune protsess peab liikuda CPU-sse. Выбирают, какой процесс должен быть передан ЦПУ для выполнения.
Protsesside RealiseerimineРеализация процессов (1) • Protsesside tabel • Таблица процессов • Katkestuste vektor • Вектор прерываний
Protsesside RealiseerimineРеализация процессов (2) Некоторые поля типичного элемента таблицы процессов Tüüpiliste protsesside tabeli mõned väljad
Klient-Serveri Kommunikatsioon • Sockets • Remote Procedure Calls • Remote Method Invocation (Java)
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.
Socket Communication Host 152.36.112.205 Web-server 155.113.2.11 Socket 152.36.112.205/1625 Socket 155.113.2.11/80
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
LõimedПотоки • Mitme programmi samaaegne töö protsessi keskkonnas. Programmid on sõltumatud. • Возможность одновременного выполнения в среде процесса нескольких программ, в достаточной степени независимых • Lihtsustatud protsessid • Упрощенные процессы • Mitmelõimelisus • Многопоточность
Lõime mudelМодель потока(1) • Kolm protsessi üksiku juhtiva lõimega Три процесса с одиночными потоками управления (b) Üks protsess kolme juhtiva lõimega Один процесс с тремя потоками управления P0 P1 P2 P0 Kasutaja ruum Kasutaja ruum Tuum Tuum Tuuma ruum Tuuma ruum a) b)
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 Учетная информация
Lõime mudelМодель потока(3) Elemendid, mis on individuaalsed igale lõimele • Элементы, индивидуальные для каждого потока • Programmi loendur Программный счетчик • Registrid Регистры • Pinu Стэк • Seisund Состояние
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. • Процессы как правило запускаются с одним потоком
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 • Параллелизм при работе с несколькими процессорами
Lõimete kasutamineИспользование потоков (2) • Mitmelõimega veebserver • Многопоточный веб-сервер • Teksti redaktor. • Текстовый редактор
Kolm viisi serveri konstrueerimisele. Три способа конструирования сервера • Paralleltöö, süsteemi kutsed blokeerimisega • Параллелизм, системные запросы с блокировкой • Mitte paralleltöö, süsteemi kutsed blokeerimisega • Без параллелизма, системные запросы с блокировкой • Paralleltöö, süsteemi kutsed blokeerimiseta, katkestused • Параллелизм, системные запросы без блокировки, прерывания
Protsesside tabel Lõimed kasutaja ruumisПотоки в пространстве пользователя (1) Kasutaja ruum Lõimed Lõimede tabel Tuuma ruum
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 • Процедура, сохраняющая информацию о потоке и планировщик являются локальными процедурами и они более эффективны • Iga protsess omab oma planeerimise algorütm • Каждый процесс имеет собственный алгоритм планирования • Blokeerivate süsteemkutsete realiseerimise probleem • Проблема реализации блокирующих системных запросов • Lõim peab andma juhtimise tagasi vabatahtlikult • Поток должен добровольно отдать управление
Protsesside tabel Lõimede realiseerimine tuumasРеализация потоков в ядре (1) Kasutaja ruum Lõimed Lõimede tabel Tuuma ruum
Lõimede realiseerimine tuumasРеализация потоков в ядре (2) • Lõimede korduv kasutamine • Повторное использование потоков • Lõimede planeerimise võimalus • Возможность планирования потоков • Süsteemikutse kõrge hind • Высокая цена системных запросов
Kasutaja lõimede multiplekseerimine tuuma lõimedesМультиплексирование потоков пользователя в потоках ядра Kasutaja ruum Lõimed Tuuma ruum
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 • Ядро назначает каждому процессу некоторое количество виртуальных процессоров
Üles ujuvad lõimedВсплывающие потоки Kasutaja ruum Kasutaja ruum Olemasolev lõim Üles ujuv lõim Sissetulev sõnum Tuuma ruum Tuuma ruum