Тема: Керування процесами у Windows xp




Скачати 174.37 Kb.
НазваТема: Керування процесами у Windows xp
Дата конвертації23.12.2013
Розмір174.37 Kb.
ТипДокументы
uchni.com.ua > Інформатика > Документы
Практична робота №1

Тема: Керування процесами у Windows XP.

Мета: вивчити особливості реалізації процесів в сучасних операціних системах та базові механізми роботи з ними.

Теоретичні відомості

1. Створення і завершення процесів

Засоби створення і завершення процесів дають змогу динамічно змінювати в операційній системі набір застосувань, що виконуються.

1.1. Створення процесів

Базові принципи створення процесів

Процеси можуть створюватися ядром системи під час її ініціалізації. Наприклад, в UNIX-сумісних системах таким процесом може бути процес ініціалізації системи init, у Windows ХР - процеси підсистем середовища (Win32 або РОSІХ). Таке створення процесів, однак, є винятком, а не правилом.

Найчастіше процеси створюються під час виконання інших процесів. У цьому разі процес, який створює інший процес, називають предком, а створений ним процес – нащадком.

Нові процеси можуть бути створені під час роботи застосування відповідно до його логіки (компілятор може створювати процеси для кожного етапу компіляції, веб-сервер – для обробки прибулих запитів) або безпосередньо за запитом користувача (наприклад, з командного інтерпретатора, графічної оболонки або файлового менеджера).

Інтерактивні та фонові процеси

Розрізняють два типи процесів з погляду їхньої взаємодії із користувачем.

  • Інтерактивні процеси взаємодіють із користувачами безпосередньо, приймаючи від них дані, введені за допомогою клавіатури, миші тощо. Прикладом інтерактивного процесу може бути процес текстового редактора або інтегрованого середовища розробки.

  • ^ Фонові процеси із користувачем не взаємодіють безпосередньо. Зазвичай вонизапускаються під час старту системи і чекають на запити від інших застосувань. Деякі з них (системні процеси) підтримують функціонування системи (реалізують фонове друкування, мережні засоби тощо), інші виконують спеціалізовані задачі (реалізують веб-сервери, сервери баз даних тощо). Фонові процеси також називають службами (services, у системах лінії Windows ХР) або демонами (daemons, в UNIX).

1.2. Ієрархія процесів

Після того як процес-предок створив процес-нащадок, потрібно забезпечити їхній взаємозв'язок. Є різні варіанти розв'язання цього завдання.

Можна організувати на рівні ОС однозначний зв'язок «предок-нащадок» так, щоб для кожного процесу завжди можна було визначити його предка. Наприклад, якщо процеси визначені унікальними ідентифікаторами, то для реалізації цього підходу в керуючому блоці процесу-нащадка повинен завжди зберігатися ідентифікатор процесу-предка або посилання на його керуючий блок.

Таким чином формується ієрархія (дерево) процесів, оскільки нащадки можуть у свою чергу створювати нових нащадків і т. ін. У таких системах звичайно існує спеціальний вихідний процес (в UNIX - системах його називають init), з якого починається побудова дерева процесів (його запускає ядро системи). Якщо предок завершить виконання процесу перед своїм нащадком, функції предка бере на себе вихідний процес.

З іншого боку, зв'язок «предок-нащадок» можна не реалізовувати на рівні ОС. При цьому всі процеси виявляються рівноправними. Якщо зв'язок «предок-нащадок» для конкретної пари процесів все ж таки потрібен, за його підтримку відповідають самі процеси (процес-предок, наприклад, може сам зберегти свій ідентифікатор у структурі даних нащадка у разі його створення).

Взаємозв'язок між процесами не обмежується лише відношеннями «предок-нащадок». Наприклад, у деяких ОС є поняття сесії (session). Така сесія поєднує всі процеси, створені користувачем за час інтерактивного сеансу його роботи із системою.

1.3. Керування адресним простором під час створення процесів

Оскільки основним елементом процесу є захищений адресний простір, дуже важливо вирішити проблему його розподілу під час створення нового процесу. Розглянемо два різні підходи.

^ Системні виклики fork() і ехес()

У першому підході адресний простір нащадка створюють як точну копію адресного простору предка. Така операція реалізована системним викликом, який у РОSІХ- системах називають fork().

У цьому разі копіюється не тільки адресний простір, а й лічильник команд головного потоку процесу, тому після виклику fork() предок і нащадок виконуватимуть ту саму інструкцію. Розробник має визначити, у якому з двох процесів перебуває керування. Це можна зробити на підставі відмінностей між кодами повернення fork() для предка і нащадка.

Коли створення нового процесу відбувається шляхом дублювання адресного простору предка, виникає потреба у спеціальних засобах для завантаження програмного коду в адресний простір процесу. Такі засоби реалізує системний виклик, який у РОSІХ- системах називають еxес(). Як параметр для виклику ехес() треба вказувати весь шлях до виконуваного файла програми, який буде завантажено у пам'ять.

У системах із підтримкою fork() для того щоб запускати на виконання програми, після виклику fork() потрібно негайно викликати еxес() (це називають технологією fогк+ехес).

^ Запуск застосування одним системним викликом

Другий підхід не розділяє дублювання адресного простору і завантаження коду – ці етапи тут поєднані в один. У даному разі системний виклик запускає на виконання задане застосування (зазвичай для цього йому потрібно вказати весь шлях до виконуваного файла цього застосування).

Можна виділити два етапи виконання такого системного виклику:

  • виділення пам'яті під адресний простір нового процесу (жодна інформація при цьому з адресного простору предка не копіюється);

  • завантаження виконуваного коду із зазначеного файла у виділений адресний простір.

Підхід із використанням fогк() і ехес() є гнучкішим, бо він дає змогу в разі необхідності обмежитись якимось одним етапом запуску застосування. Сучасні ОС переважно реалізують деяку комбінацію першого та другого підходів.

^ Технологія копіювання під час запису

Якщо під час створення процесу за допомогою виклику fork() щоразу завчасно виділяти пам'ять і копіювати в неї дані адресного простору предка (стек, область глобальних змінних, програмний код), то це буде доволі трудомістким завданням, особливо для процесів, що займають багато місця в пам'яті.

Для розв'язання цієї проблеми в сучасних ОС використовують технологію копіювання під час запису (сору–оn-write). При цьому під час виклику fork() дані з пам'яті предка у пам'ять нащадка не копіюють, натомість відповідні ділянки пам'яті відображають в адресний простір – як нащадка, так і предка, але при цьому позначають їх як захищені від запису.

Р
ис. 1.
Копіювання під час запису: пам’ять одразу після створення процесу

Як тільки нащадок або предок спробує змінити якусь із названих вище ділянок пам'яті, тобто щось записати у неї, виникає апаратне переривання. Система реагує на нього, виділяє пам'ять під нову область, відкриту для запису відповідному процесу, і змінює адресний простір для обох процесів (наприклад, для другого процесу відповідна ділянка пам'яті відкривається для запису). Слід зазначити, що в разі використання цієї технології ділянки пам'яті, які не змінюються (наприклад, ті, що містять код програми), можуть взагалі ніколи не копіюватися.

Р
ис. 2.
Копіювання під час запису: пам’ять після сроби запису в неї

У багатьох сучасних операційних системах копіювання під час запису є основною технологією керування адресним простором у разі створення процесів.

1.4. Особливості завершення процесів

Розглянемо три варіанти завершення процесів.

Процес коректно завершується самостійно після виконання своєї задачі (для інтерактивних процесів це нерідко відбувається з ініціативи користувача, який, приміром, скористався відповідним пунктом меню). Для цього код процесу має виконати системний виклик завершення процесу. Такий виклик у РОSІХ- системах називають _exit(). Він може повернути процесу, що його викликав, або ОС код повернення, який дає змогу оцінити результат виконання процесу.

Процес аварійно завершується через помилку. Такий вихід може бути передбачений програмістом (під час обробки помилки приймається рішення про те, що далі продовжувати виконання програми неможливо), а може бути наслідком гене­рування переривання (ділення на нуль, доступу до захищеної області пам'яті тощо).

Процес завершується іншим процесом або ядром системи. Наприклад, перед закінченням роботи ОС ядро припиняє виконання всіх процесів. Процес може припинити виконання іншого процесу за допомогою системного виклику, який у РОSІХ- системах називають kill().

Після того як процес завершить свою роботу, пам'ять, відведена під його адресний простір, звільняється і може бути використана для інших потреб. Усі потоки цього процесу теж припиняють роботу. Якщо у даного процесу є нащадки, їхня робота переважно не припиняється слідом за роботою предка. Інтерактивні процеси звичайно завершуються у разі виходу користувача із системи.

1.5. Синхронне й асинхронне виконання процесів

Коли у системі з'являється новий процес, для старого процесу є два основних варіанти дій:

продовжити виконання паралельно з новим процесом – такий режим роботи називають асинхронним виконанням;

призупинити виконання доти, поки новий процес не буде завершений, – такий режим роботи називають синхронним виконанням. (У цьому разі використовують спеціальний системний виклик, який у РОSІХ- системах називають wait().)

Вибір того чи іншого режиму залежить від конкретної задачі. Так, наприклад, веб-сервер може створювати процеси-нащадки для обробки запитів (якщо наявного набору нащадків недостатньо для такої обробки). У цьому разі обробка має бути асинхронною, бо відразу після створення нащадка предок має бути готовий до отримання наступного запиту. З іншого боку, компілятор С під час запуску процесів, що відповідають етапам компіляції, має чекати завершення кожного етапу, перш ніж перейти до наступного, - у такому разі використовують синхронну обробку.

2. Керування процесами у Windows XP

Поняття процесу й потоку у Windows XP чітко розмежовані. Процеси в даній системі визначають «поле діяльності» для потоків, які виконуються в їхньому адресному просторі. Серед ресурсів, з якими процес може працювати прямо, відсутній процесор – він доступний тільки потокам цього процесу. Процес, проте, може задати початкові характеристики для своїх потоків і тим самим вплинути на їхнє виконання.

2.1. Складові елементи процесу

Базові складові елементи процесу:

  • Адресний простір процесу складається з набору адрес віртуальної пам'яті, які він може використати. Ці адреси можуть бути пов'язані з оперативною пам'яттю, а можуть – з відображеними у пам'ять ресурсами. Адресний простір процесу недоступний іншим процесам.

  • Процес володіє системними ресурсами, такими як файли, мережні з'єднання, пристрої введення-виведення, об'єкти синхронізації тощо.

  • Процес містить деяку стартову інформацію для потоків, які в ньому створюватимуться. Наприклад, це інформація про базовий пріоритет і прив'язання до процесора.

  • Процес має містити хоча б один потік, який система скеровує на виконання. Без потоків у Windows XP наявність процесів неможлива.

2.2. Структури даних процесу

Розглянемо структури даних, пов'язані із процесом у Windows XP. Зазначимо, що у роботі з цими структурами система використовує об'єктну модель. Для виконавчої системи Windows XP кожний процес зображається об'єктом-процесом виконавчої системи (executive process object); Його також називають керуючим блоком процесу (executive process block, EPROCESS). Для ядра системи процес зображається об'єктом-процесом ядра (kernel process object), його також називають блоком процесу ядра (process kernel block, KPROCESS).

У режимі користувача доступним є блок оточення процесу (process environment block, PEB), що перебуває в адресному просторі цього процесу.

Розглянемо структури даних процесу докладніше. Зазначимо, що EPROCESS і KPROCESS, на відміну від РЕВ, доступні тільки із привілейованого режиму.

Керуючий блок процесу містить такі основні елементи:

  • блок процесу ядра (КРRОСЕSS);

  • ідентифікаційну інформацію;

  • інформацію про адресний простір процесу;

  • інформацію про ресурси, доступні процесу, та обмеження на використання цих ресурсів;

  • блок оточення процесу (РЕВ);

  • інформацію для підсистеми безпеки.

До ідентифікаційної інформації належать:

  • ідентифікатор процесу (pid);

  • ідентифікатор процесу, що створив цей процес (незважаючи на те, що Windows XP не підтримує відносини «предок-нащадок» автоматично, вони можуть бути задані програмним шляхом, тобто нащадок може сам призначити собі предка, задавши цей ідентифікатор);

  • ім'я завантаженого програмного файла.

Блок процесу ядра містить усю інформацію, що належить до потоків цього процесу:

  • покажчик на ланцюжок блоків потоків ядра, де кожний блок відповідає потоку;

  • базову інформацію, необхідну ядру системи для планування потоків (ця інформація буде успадкована потоками, пов'язаними із цим процесом).

Блок оточення процесу містить інформацію про процес, яка призначена для доступу з режиму користувача:

  • початкову адресу ділянки пам'яті, куди завантажився програмний файл;

  • покажчик на динамічну ділянку пам'яті, доступну процесу.

Цю інформацію може використати завантажувач програм або процес підсистеми Win32.

2.3. Створення процесів

У Win32 АРІ прийнято модель запуску застосування за допомогою одного виклику, який створює адресний простір процесу і завантажує в нього виконуваний файл. Окремо функціональність fork() і exec() у цьому АРІ не реалізована.

Такий виклик реалізує функція CreateProcess(). Вона не є системним викликом ОС – це бібліотечна функція Win32 АРІ, реалізована в усіх Win32-сумісних системах.

Функція CreateProcess() потребує задання 10 параметрів, докладно їх буде розглянуто в пункті 2.6. Зазначимо, що системні виклики UNIX/РОSІХ потребують меншої кількості параметрів (fork() не використовує жодного параметра, а еxес() використовує три параметри).

Наведемо основні кроки створення нового процесу із використанням функції CreateProcess().

  1. Відкривають виконуваний файл, що його ім'я задане як параметр. При цьому ОС визначає, до якої підсистеми середовища він належить. Коли це виконуваний файл Win32, то його використовують прямо, для інших підсистем відшукують необхідний файл підтримки (наприклад, процес підсистеми РОSІХ для РОSІХ-застосувань).

  2. Створюють об'єкт-процес у виконавчій системі Windows ХР. При цьому виконують такі дії:

  1. створюють та ініціалізують структури даних процесу (блоки ЕРRОСЕSS, КРRОСЕSS, РЕВ);

  2. створюють початковий адресний простір процесу (роботу з адресним простором процесу розглянемо в розділі 9);

  3. блок процесу поміщають у кінець списку активних процесів, які підтримує система.

  1. Створюють початковий потік процесу. Послідовність дій під час створення потоку розглядатимемо під час вивчення підтримки потоків у Windows ХР.

  2. Після створення початкового потоку підсистемі Win32 повідомляють про новий процес і його початковий потік. Це повідомлення містить їхні дескриптори (handles) - унікальні числові значення, що ідентифікують процес і потік длязасобів режиму користувача. Підсистема Win32 виконує низку дій після отримання цього повідомлення (наприклад, задає пріоритет за замовчуванням) і поміщає дескриптори у свої власні таблиці процесів і потоків.

  3. Після надсилання повідомлення розпочинають виконання початкового потоку (якщо він не був заданий із прапорцем відкладеного виконання).

  4. Завершують ініціалізацію адресного простору процесу (наприклад, завантажують необхідні динамічні бібліотеки), після чого починають виконання завантаженого програмного коду.

2.4. Завершення процесів

У разі завершення процесу відповідний об'єкт-процес стає кандидатом на вилучення із системи. При цьому диспетчер об'єктів викликає метод delete для об'єктів-процесів, який закриває всі дескриптори в таблиці об'єктів цього процесу.

2.5. Процеси і ресурси. Таблиця об'єктів процесу

Кожен процес, як було показано в розділі 2, може користуватися ресурсами через дескриптори відповідних об'єктів. Відкриті дескриптори об'єктів є індексами в таблиці об'єктів (object table), що зберігається в керуючому блоці процесу. Ця таблиця містить покажчики на всі об'єкти, дескриптори яких відкриті процесом. Процес може отримати дескриптор об'єкта кількома способами:

  • створивши новий об'єкт;

  • відкривши дескриптор наявного об'єкта;

  • успадкувавши дескриптор від іншого процесу;

  • отримавши дублікат дескриптора з іншого процесу.

Кожен елемент таблиці об'єктів містить права доступу відповідного дескриптора і його режим спадкування, який визначає, чи отримають процеси, створені розглядуваним процесом, копію дескриптора відповідного об'єкта. Режим спадкування задають під час створення об'єкта.

Об'єкт може одночасно бути використаний декількома процесами, при цьому кожен з них отримує унікальний дескриптор, що відповідає цьому об'єкту.

2.6. Програмний інтерфейс керування процесами Win32 АРІ

У цій лабораторній роботі ми вперше торкнемося практичних особливостей програмування у Win32 АРІ. Перш ніж перейти до основного матеріалу, зробимо кілька зауважень.

Насамперед слід звернути увагу на систему типів Win32 АРІ. Розробники цього АРІ для визначення типів широко застосовували синоніми імен типів, тому потрібно вміти знаходити в типах Win32 АРІ традиційні типи мови С. Виділимо деякі базові типи:

ВOOL – його використовують для зберігання логічного значення, насправді він є цілочисловим;

DWORD – двобайтовий цілочисловий тип без знака, аналог unsigned int;

HANDLE – цілочисловий дескриптор об'єкта;

LPTSTR – покажчик на рядок, що складається із двобайтових або однобайтових символів (залежно від режиму компіляції програми – із підтримкою Unicode або без неї), аналог char * або wchar_t *;

LPCTSTR — покажчик на константний рядок, аналог const char * a6o const wchar_t *.

Взагалі для створення імені типу покажчика потрібно додати до імені базового типу префікс LР. Таке утворення імен траплятиметься й далі (наприклад, LPVOID означає void * LPSECURITY_ATTRIBUTES – покажчик на структуру SECURITY_ATTRIBUTES).

Для використання засобів Win32 АРІ у більшості випадків достатньо підключити заголовний файл windows.h. Надалі підключення цього файла матиметься на увазі за замовчуванням.

Для закриття дескрипторів об'єктів буде використана АРІ-функція CloseHandle().

2.6.1. Створення процесів у Win32 АРІ

Як ми вже зазначали, для створення нового процесу у Win32 використовують функцію CreateProcess().

BOOL CreateProcess ( LPCTSTR app_name, LPCTSTR cmd_line,

LPSECURITY_ATTRIBUTES psa_proc, LPSECURITY_ATTRIBUTES psa_thr,

BOOL inherit_handles, DWORD flag_create,

LPVOID environ, LPTSTR cur_dir,

LPSTARTUPINFO startup_info, LPPROCESS_INFORMATION process_info);

де: app_name – весь шлях до виконуваного файла (NULL – ім'я виконуваного файла можна отримати з другого аргументу):

CreateProcess("C:/winnt/notepad.exe", ...);

cmd_line – повний командний рядок для запуску виконуваного файла, можливо, із параметрами (цей рядок виконується, якщо app_name дорівнює NULL, зазвичай так запускати процес зручніше):

CreateProcess(NULL, "C:/winnt/notepad test.txt", ...);

psa_proc, psa_thr – атрибути безпеки для всього процесу і для головного потоку (особливості їхнього задання розглянемо в наступних роботах, а доти як значення всіх параметрів типу LPSECURITY_ATTRIBUTES задаватимемо NULL, що означає задання атрибутів безпеки за замовчуванням);

inherit_handles – керує спадкуванням нащадками дескрипторів об'єктів, які використовуються у процесі (питання спадкування дескрипторів будуть розглянуті далі);

flag_create – маска прапорців, які керують створенням нового процесу (наприклад, прапорець CREATE_NEW_CONSOLE означає, що процес запускається в новому консольному вікні);

environ – покажчик на пам'ять із новими змінними оточення, які предок може задавати для нащадка (NULL — нащадок успадковує змінні оточення предка);

cur_dir – рядок із новим значенням поточного каталогу для нащадка (NULL - нащадок успадковує поточний каталог предка);

startup_info – покажчик на заздалегідь визначену структуру даних типу STARTUPINFO, на базі якої задають параметри для процесу-нащадка;

process_info – покажчик на заздалегідь визначену структуру даних PROCESS_ INFORMATION, яку заповнює ОС під час виклику CreateProcess().

Серед полів структури STARTUPINFO можна виділити:

  • сb – розмір структури у байтах (це її перше за порядком поле). Звичайно перед заповненням всю структуру обнуляють, задаючи тільки сb:

STARTUPINFO si = { sizeof(si) };

  • lpTitle – рядок заголовка вікна для нової консолі:

// ... sі обнуляється

si.lpTitle = "Мій процес-нащадок";

Структура PROCESS_INFORMATION містить чотири поля:

  • hProcess – дескриптор створеного процесу;

  • hThread – дескриптор його головного потоку;

  • dwProcessId – ідентифікатор процесу (process id, pid);

  • dwThreadld – ідентифікатор головного потоку (thread id, tid).

Ідентифікатор pid унікально визначає процес на рівні ОС. ОС повторно використовує ріd уже завершених процесів, тому небажано запам'ятовувати їхнє значення, якщо процес уже завершився або закінчився помилкою.

CreateProcess() повертає нуль, якщо під час запуску процесу сталася помилка.

Наведемо приклад виклику CreateProcess(), у якому вказані значення всіх необхідних параметрів:

// ... задається sі

PROCESS_INFORMATION pi;

CreateProcess (NULL, “C:/winnt/notepad test.txt”, NULL, NULL, TRUE,

CREATE_NEW_CONSOLE, NULL, “D:/”, &si, &pi);

printf ("pid=%d, tid=%d\n", pi.dwProcessId, pi.dwThreadld);

CloseHandle(pi.hThread);

CloseHandle(pi.hProcess);

Після створення процесу може виникнути необхідність змінити його характеристики з коду, який він виконує. Для цього треба отримати доступ до дескриптора поточного процесу за допомогою функції GetCurrentProcess():

HANDLE curph = GetCurrentProcess();

Ідентифікатор поточного процесу можна отримати за допомогою функції GetCurrentProcessId():

int pid = GetCurrentProcessId();

2.6.2. Завершення процесів у Win32 АРІ

Для завершення процесів використовують функцію ExitProcess():

VOID ExitProcess (UINT exitcode);

де exitcode – код повернення процесу. Наприклад

ExitProcess (100); // вихід з кодом 100

Для завершення іншого процесу використовують функцію TerminateProcess():

BOOL TerminateProcess (HANDLE hProcess, UINT exitcode);

У процесі, який запустив інший процес, можна отримати код завершення цього процесу за допомогою функції

GetExitCodeProcess (HANDLE hProcess, LPDWORD pexit_code);

Тут pexit_code – покажчик на змінну, в яку заносять код завершення.

int exitcode;

GetExitCodeProcess(pi.hProcess, &exitcode);

printf ("Код повернення =%d\n", ехіtсоdе);

2.6.3. Синхронне й асинхронне виконання процесів у Win32 АРІ

Для того щоб реалізувати синхронне виконання, після успішного виконання CreateProcess() процес-предок має викликати функцію очікування закінчення нащадка. Це WaitForSingleObject(), стандартна функція очікування зміни стану об'єкта Win32 АРІ.

DWORD WaitForSingleObject (HANDLE ph, DWORD timeout);

Тут рh – дескриптор нащадка; timeout – максимальний час очікування в мілісекундах (INFINITE – необмежено).

Повернене значення може бути WАІТ_FAILED через помилку.

BOOL res;

if (res = CreateProcess(... , &pi)) {

CloseHandle(pi.hThread);

if (WaitForSingleObject(pi.hProcess, INFINITE) != WAIT_FAILED)

GetExitCodeProcess(pi.hProcess, &exitcode);

}

CloseHandle(pi.hProcess);

}

Для асинхронного виконання достатньо відразу ж закрити обидва дескриптори і не викликати WaitForSingleObject():

if (res = CreateProcess(... , &pi)) {

CloseHandle(pi.hThread);

CloseHandle(pi.hProcess);

}
Завдання

Практичне завдання вимагає розробки консольного додатку, який отримує вихідні дані зі стандартного пристрою введення та подає результат на стандартний пристрій виведення з використанням засобів бібліотеки відповідної мови програмування. Для мови С такі засоби описані у заголовному файлі stdio.h, для мови С++ – у файлі iostream.

Розробити простий командний інтерпретатор (консольний додаток на мові С в середовищі Visual Studio будь-якої версії) для Windows ХР. Він повинен видавати підказку (наприклад, «>»), обробляти введений користувачем командний рядок (що містить ім'я виконуваного файлу програми та її аргументи) і запускати задану програму. Асинхронний запуск здійснюють уведенням «&» як останнього символу командного рядка. У разі завершення командного рядка будь-яким іншим символом програма запускається синхронно. Інтерпретатор завершує роботу після введення рядка «exit». Виконання програм, запущених інтерпретатором, може бути перерване натисканням клавіш Ctrl+С, однак воно не повинне переривати виконання інтерпретатора.

Звіт повинен містити:

постановку задачи; блок-схеми алгоритмів у відповідності з ГОСТ 19.002-80 і ГОСТ 19.003-80; лістінг програми з коментарями; результат виконання програми.

Список рекомендованих джерел

  1. Шеховцов В.А. Операційні системи. – К.: Видавнича група BHV, 2005. – 576 с.: іл.

  2. Рихтер Д. Windows для профессионалов: Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows. – М.: Русская редакция, 2001. – 752с.

  3. Харт. Дж.В. Системное программирование в среде Win32. – М.: Вильямс, 2001. – 46 4 с.

  4. Рихтер Джеффри. Windows для профессионалов: Программирование для Windows 95 и Windows NT 4.0. на базе Win32/API. - М.: Изд. отдел «Русская редакция»,1997. - 712 с.

  5. Румянцев П.В. Азбука программирования в Win32 API. - М.: Радио и связь,1998. –272 с.

Схожі:

Тема: Керування процесами у Windows xp iconЛабораторная работа №2 Тема: Керування потоками у Windows xp. Мета:...
«у чистому вигляді». Процеси І потоки є різними сутностями в системі, що перебувають у чітко визначеному взаємозв’язку один з одним;...
Тема: Керування процесами у Windows xp iconВ наш час електронно-обчислювальна техніка все ширше використовується...

Тема: Керування процесами у Windows xp iconТема: Керування потоками у Windows xp
«у чистому вигляді». Процеси І потоки є різними сутностями в системі, що перебувають у чітко визначеному взаємозв’язку один з одним;...
Тема: Керування процесами у Windows xp iconОсновні об'єкти операційної системи Windows xp
Робочим столом називають екран комп’ютера, отриманий після завантаження операційної системи Windows 95, з розміщеними на ньому значками,...
Тема: Керування процесами у Windows xp iconЛекція 9 (01. 11. 2012, ауд. 402) Довідковий матеріал тема: Математичні...
Предмет теорії телетрафіка: встановлення залежностей між потоками вимог на обслуговування, кількістю каналів обслуговування, продуктивністю...
Тема: Керування процесами у Windows xp iconТема: Використаня інформаційних та комп`ютерних технологій для автоматизації виробництва
Технічні процеси, спеціальним чином організовані для виробниц­тва продукції, називаються технологічними процесами. Техно­логічними...
Тема: Керування процесами у Windows xp iconТема: Взаємодія потоків у Windows xp
Мета: вивчити особливості використання програмного інтерфейсу взаємодії потоків у Windows xp
Тема: Керування процесами у Windows xp iconТема : Використання утиліт в ос windows xp
Мета. Розглянути призначення утиліт в ос windows xp. Навчитися працювати з утилітами
Тема: Керування процесами у Windows xp iconТема Завантаження Windows. Найпростіші операції з піктограмами. Завантаження програм з Windows

Тема: Керування процесами у Windows xp iconТема уроку: Пристрої керування та передачі інформації
Під маніпуляторами, розуміють пристрої. За допомогою яких відбувається керування комп’ютером
Додайте кнопку на своєму сайті:
Школьные материалы


База даних захищена авторським правом © 2014
звернутися до адміністрації
uchni.com.ua
Головна сторінка