Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій із Системного програмування та...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
786.31 Кб
Скачать

5. Передача параметрів в стеку

Спочатку параметри заносяться в стек перед виловом процедури. Саме цей метод використовують мови високого рівня, такі як C, Pascal. Для читання параметрів із стеку використовують не команду POP, а регістр BP, в який заносять адресу вершини стеку після входу в процедуру.

Приклад:

Push parameter1 ; поместить параметр в стек

Push parameter2

Call procedure

Add sp,4 ; освободить стек

[……]

procedure proc near

push bp

mov bp, sp

(команди, які можуть використовувати стек)

mov ax, [bp+4] ; считать параметр 2

mov bx, [bp+6]

pop bp

ret

procedure endp

6. Локальні змінні

Дуже часто процедурам потрібні змінні які потім не будуть використовуватись в головної програмі. Такі змінні прийнято називати локальними. Існує декілька способів зберігання локальних змінних. Найбільш розповсюджений спосіб зберігати локальні перемінні в стеку.

Приклад:

Fob proc near

Fob_x equ [bp+8]

Fob_y equ [bp+6]

Fob_z equ [bp+4]

Fob_l equ [bp-2]

Fob_m equ [bp-4]

Fob_n equ [bp-6]

Push bp

Mov bp, sp

Sub sp,6

Mov ps, bp

Pop bp

Ret 6 ;Повернутися видаливши параметри із стека

Fob endp.

Лекція 10

Тема: Процеси і потоки

1. Процеси і потоки

Процес - завантажена на згадку й готова до виконання програма. Кожен процес має свій власний віртуальний адресний простір (4Gb). Процес складається з коду, даних й інших системних ресурсів, таких як відкриті файли, канали (pipes), що синхронізують об'єкти.

Потік(thread) – базовий об’єкт, якому операційна система розподіляє час центрального процесора. Виконання процесу починається зі стартового потоку. Надалі він може породжувати інші потоки. Ресурси процесу доступні всім його потокам. Кожен потік використає структуру даних, для збереження контексту виконання, у той час, коли в нього віднімається процесор. У контекст входять регістри процесора, змінні оточення, стеки ядра й користувача. Всі потоки одного процесу спільно використають його віртуальний адресний простір. Процесорний час розподіляється по черзі між потоками, а не між процесами. Тривалість кванта виділення часу становить близько 20 мс.

1.1 Розподіл часу між потоками

Процесорний час виділяється потокам відповідно до їх рівня пріоритету. Потоку з більше низьким пріоритетом не виділяється час, якщо на нього претендує потік з більше високим рівнем пріоритету. Більше того, процес із більше низьким пріоритетом переривається до витікання кванта часу, якщо на процесор претендує потік з більше високим рівнем пріоритету. Необхідно пам'ятати, що в середовищі Windows основна «робота» потоку складається чекаючи події й реагуванні на нього. Це дає шанс на виконання потокам з низьким рівнем пріоритету.

Рівні пріоритетів варіюються в діапазоні від 0 (нижчий) до 31 (вищий).

Рівень пріоритету кожного потоку складається із трьох складових

клас пріоритету процесу (простоюючий , нормального, високий, реального часу)

рівень пріоритету потоку усередині класу пріоритету процесу (нижній, нижче нормального, нормальний, вище нормального, вищий)

динамічно встановлений рівень пріоритету.

Клас пріоритету процесу

Таблиця 1.1

Клас

Прапор у функції CreateProcess

Числовий рівень

Idle (простоюючий)

IDLE PRIORITY CLASS

4

Normal (нормальний)

NORMAL PRIORITY CLASS

7-9

High(високий)

HIGH PRIORITY CLASS

13

Real time(peanbHoro часу)

REALTIME_PRIORITY_CLASS

24

При запуску на виконання процесу йому призначається один із чотирьох класів пріоритету. Рівень Idle призначається процесу, що нічого не повинен робити у випадку активності інших процесів (наприклад, хоронитель екрана). Процесам, що запускає користувачем, привласнюється нормальний рівень. Користувач може запустити кілька процесів. Тому процесу, з яким користувач безпосередньо працює (а це може бути тільки один процес) рівень пріоритету піднімається на дві одиниці (7+2 - 9). Це робить спілкування із прикладною програмою більше «комфортабельним». Високий клас пріоритету призначається деяким системним процесам, які простоюють до виникнення певних подій й, тому, не заважають іншим процесам. Тільки в особливих випадках процес може ставитися до класу Real time.