Автор работы: Пользователь скрыл имя, 15 Мая 2013 в 05:41, магистерская работа
У результаті виконання магістерської роботи отримано наступні наукові та практичні результати:
вдосконалено методи для нагромадження і аналізу кількісних даних про використання комп’ютерних ресурсів, що на відміну від існуючих враховують тривалість інтерактивної взаємодії з користувачем.
розроблено Web-орієнтоване програмне забезпечення для аналізу і візуалізації даних про користування комп’ютерними ресурсами вищих навчальних закладів.
Стверджується, що множина процесів перебуває у мертвій точці (deadlock), коли кожен процес у множині очікує на дію, що може бути виконана тільки іншим процесом з цієї множини. У цій роботі зосереджуватимемо увагу на діях отримання і звільнення ресурсу. Ресурсами можуть бути як фізичні ресурси, наприклад, принтери, стримери, оперативна пам’ять та цикли центрального процесора, так і логічні ресурси, наприклад, файли, семафори або монітори (об’єкти синхронізації).
Щоб проілюструвати ситуацію потрапляння процесів у мертву точку, розглянемо системи з трьома CD RW приводами. Нехай кожен з трьох процесів утримує один з трьох CD RW приводів. Якщо кожен процес надішле запит на інший привід, то всі три процеси опиняться в мертвій точці. Кожен з них очікуватиме на подію “CD RW звільнено”, що може бути спричинена лише діями одного з інших очікуючих процесів. Цей приклад ілюструє виникнення мертвої точки при використанні ресурсів того ж самого типу. Мертві точки мають наслідком зависання програмного забезпечення, тому можуть завадити нормальній роботі комп’ютерних лабораторій ВНЗ.
Розглянемо один з підходів до протоколювання
взаємодії користувача з
Формалізуємо цей підхід, для чого введемо рівномірну сітку часових вузлів
, , (1.1)
де – проміжок між часовими вузлами, – кількість часових вузлів, – номер часового вузла.
В кожен з часових вузлів (1.1) спостерігається, що активним є деяке вікно , що належить множині вікон всіх запущених у момент часу вікон:
, , (1.2)
де – множина вікон всіх запущених у момент часу програм.
Введено функцію , що визначатиме ідентифікатор процесу, якому належить вікно . Ця функція відображає ідентифікатор вікна на ідентифікатор процесу, що його створив
, , (1.3)
де – ідентифікатор активного в і-тий момент часу вікна, – ідентифікатор процесу, якому належить вікно , – множина ідентифікаторів процесів, що функціонують в операційній системі і-тий момент часу.
Слід зауважити, що з кожним інтерактивним процесом можуть бути асоційовані одне або кілька вікон одночасно, тобто
, , (1.4)
де – відображення ідентифікатора процесу на множину його вікон , що у свою чергу є підмножиною всіх відкритих в і-тий момент часу вікон .
Наявність інформації про ідентифікатор вікна чи процесу є недостатньою, оскільки ідентифікатори процесів змінюються від одного запуску програми чи операційної системи до іншого. Тобто, наприклад, якщо ідентифікатор процесу для вікна програми Total Commander дорівнює , наприклад, 3436, то після її закриття і повторного запуску він дорівнюватиме іншому значенню , наприклад, 1260. Стійкішою є інформація про назву виконуваного файлу, образом якого виступає даний процес. Наприклад, програма Total Commander є образом виконуваного файлу з назвою “TOTALCMD.EXE”. Назва виконуваного файлу завжди залишається незмінною.
Виходячи з цих міркувань, доцільно ввести нове відображення, яке проектує ідентифікатор процесу на назву виконуваного файлу:
, , (1.5)
де – ідентифікатор процесу, вікно якого є активним у момент часу , – назва виконуваного файлу, образом якого є процес з ідентифікатором , – множина назв виконуваних файлів, процеси яких функціонують в операційній системі у час .
Введемо ще три множини – – назви виконуваних файлів програм, що допустимі до використання в навчальних цілях, – назви виконуваних файлів програм, що недопустимі до використання протягом учбового часу та – назви виконуваних файлів сумнівного походження. Усі ці множини не перетинаються, тобто
, , . (1.6)
Таким чином назву виконуваного файлу , вікно якого є активним у даний момент часу можна однозначно класифікувати як належну до однієї з цих множин
. (1.7)
Можна виокремити більше класів програм, не даючи ніякої оцінки їхньої цілеспрямованості (чи придатна до навчального процесу чи шкідлива). Наприклад, навіть за межами навчальних закладів користувачу може бути корисно дізнатися, яку з функцій, його робоча станція виконує найчастіше. При цьому можна класифікувати програми на текстові редактори (використання комп’ютера як друкарської машинки), графічні редактори (використання комп’ютера як мольберта), браузери (використання комп’ютера як газети), переглядачі документів PDF чи DJVU (використання комп’ютера як книги), мультимедіа програвачі (використання комп’ютера як програвача чи телевізора) та ігрові (використання комп’ютера як шахової дошки, гральних карт чи іграшки).
Розглянемо найпростіший алгоритм локального збору інформації про тривалість взаємодії користувача з програмним забезпеченням комп’ютера. Цей алгоритм з періодом добавляє у файл стрічку з назвою виконуваного файлу, якому належить поточне активне вікно. Операції алгоритму підсумовано в алгоритмі 1.1.
Алгоритм 1.1.
Алгоритм локального збору інформації про динаміку зміни активного вікна робочої станції
Крок 1. Відкрити файл-протокол Ф в режимі тільки для запису з додаванням в кінець (output, appending).
Крок 2. Присвоїти змінній ідентифікатор поточного активного вікна.
Крок 3. Реалізувати відображення (1.3): , визначивши ідентифікатор процесу , якому належить вікно з ідентифікатором .
Крок 4. Реалізувати відображення (1.5): , знайшовши стрічку з назвою виконуваного файлу , образом якого є процес .
Крок 5. Записати у файл Ф стрічку та символ переходу на нову стрічку “\n”.
Крок 6. Закрити файл Ф (для остаточного злиття буфера у файл, щоб він був доступний для аналізу і щоб запобігти випадковим втратам зібраних даних на випадок аварійного зупину програми).
Крок 7. Користувач подав команду зупинки алгоритму? Якщо так, то завершити виконання алгоритму.
Крок 8. Очікувати протягом мілісекунд.
Крок 9. Перейти на крок 1.
Основними недоліками алгоритму 2.1 є те, що він не надає можливості отримання зібраних ним даних по мережі для аналізу на комп’ютері адміністратора, відсутність у зібраних даних інформації про дату у яку фіксувалося вікно програми та громіздкість результуючого файла Ф, що може утруднити його аналіз. Дата спостереження активного вікна програми корисна для аналізу тривалості використання робочої станції кожної доби. Зменшення результуючого файлу можна досягнути за допомогою введення лічильника кількості часових інтервалів, протягом яких відповідне вікно було активним. Для більшості випадків часовий інтервал складає одну секунду, тому відповідний лічильник буде фіксувати кількість секунд, протягом яких користувач користувався вікном тієї чи іншої програми. Менший розмір файлу дозволить налагодити передачу інформації по мережі.
Розглянемо вдосконалений
Алгоритм 1.2.
Алгоритм локального збору інформації про динаміку зміни активного вікна робочої станції з лічильником
Крок 1. Відкрити файл-протокол Ф в режимі зчитування-запис (input, output). Якщо цей крок алгоритму виконується вперше, то перемістити вказівник файла на його початок, інакше – перейти на крок 4.
Крок 2. Отримати поточну дату у вигляді стрічки CURDATE=“дд.мм.рррр”.
Крок 3. Записати у змінну TODAY_POS позицію у файлі Ф, де є стрічка, що починається на CURDATE. Якщо такої стрічки там немає, то присвоїти змінній TODAY_POS позицію кінця файла (EOF).
Крок 4. Перемістити поточну позицію файла до TODAY_POS, тобто SetFilePointer(Ф, TODAY_POS).
Крок 5. Присвоїти змінній ідентифікатор поточного активного вікна.
Крок 6. Реалізувати відображення (1.3): , визначивши ідентифікатор процесу , якому належить вікно з ідентифікатором .
Крок 7. Реалізувати відображення (1.5): , знайшовши стрічку з назвою виконуваного файлу , образом якого є процес .
Крок 8. Поки поточна позиція файла не дорівнює EOF розшукувати стрічку, що починається з CURDATE+white_space+ , якщо таку стрічку знайдено, то прочитати третю значущу компоненту стрічки (лічильник) у змінну COUNTER, що є натуральним числом у форматі 0000000001. Збільшити COUNTER на одиницю. Перемістити поточну позицію файла на початок натурального числа. Записати нове значення лічильника з точно тією ж самою кількістю значущих цифр і перейти на крок 10.
Крок 9. Записати у файл Ф стрічку CURDATE+white_space+ + white_space+“0000000001” та символ переходу на нову стрічку “\n”.
Крок 10. Закрити файл Ф (для остаточного злиття буфера у файл, щоб він був доступний для аналізу і щоб запобігти випадковим втратам зібраних даних на випадок аварійного зупину програми).
Крок 11. Користувач подав команду на зупинку алгоритму? Якщо так, то завершити виконання алгоритму.
Крок 12. Очікувати протягом мілісекунд.
Крок 13. Перейти на крок 1.
Алгоритм 1.2 дозволяє отримувати спостереження про динаміку використання прикладних програм користувачем ПК. Отриманий в результаті його роботи протокол досить компактний, тому придатний для передачі по мережі. Однак сам алгоритм не реалізує функції мережевої передачі протоколу. Реалізація такої функції вимагає розробки спеціального багатопотокового алгоритму, що повинен виконувати передачу даних, не припиняючи процес нагромадження спостережень про динаміку користування прикладним програмним забезпеченням. Надійність та ефективність функціонування такого алгоритму в значній мірі залежить також від засобів синхронізації багатопотокових програм. Теоретичні і практичні аспекти розробки такого алгоритму буде висвітлено у другому та третьому розділах магістерської роботи.
В попередньому розділі було розглянуто основні проблеми, що виникають при аналізі використання комп’ютерних ресурсів. В цьому параграфі опишемо та обґрунтуємо основні статистичні методи, що необхідні для розв’язання поставлених проблем.
Кількісні аналітичні дані спостережень за користуванням комп’ютерними ресурсами поділяються на дві категорії: стаціонарні, де час прямує до нескінченності та динамічні (в розрізі однієї доби).
До стаціонарних показників належать: загальна тривалість користування ресурсом (тривалість активності вікна прикладної програми доступу до них), середньодобова тривалість використання ресурсу, середня частка тривалості користування ресурсом та середня тривалість роботи ПК протягом доби. Під динамічними показниками розумітимемо траєкторію частки тривалості користування ресурсом протягом доби.
Нехай – кількість часових відліків активності вікна, створеного процесом, що є образом виконуваного файлу ПЗ доступу до ресурсу в дату . Ця величина отримується шляхом додавання інтервалів часу, протягом яких вікна ПЗ були у фокусі:
(2.1)
де – набір часових дискрет і, що відповідають даті d, – ідентифікатор процесу ПЗ роботи з ресурсом, вікно якого активне у час і, exec(pi) – функція, що відображає ідентифікатор процесу на множину назв виконуваних файлів, див. (1.5). Формула (2.1) працює таким чином, що якщо активне у час і ПЗ називається , то до суми додається одиниця, тобто до загальної тривалості роботи ПЗ додається ще один відлік.
Коли задати якусь термінальну дату , до якої слід обчислювати суму показників (2.1), то можна отримати стаціонарну оцінку загальної тривалості використання будь-якої програми роботи з ресурсами
, (2.2)
де – дата початку накопичення інформації про користування ресурсами, – обрана дата, до якої обчислюється стаціонарний показник загальної тривалості користування ресурсами. Сумування у формулі (2.2) відбувається по датах, тобто – це специфічна структура даних, що описує дату у пам’яті комп’ютера, а тому не тотожна натуральному чи дійсному числу. Сумування відбувається від попередньої дати до наступної.
Очевидно, що формула (2.2) – це все, що необхідно для побудови таблиці списку ПЗ роботи з ресурсами у порядку спадання загальної тривалості його використання.
Далі розглянемо підхід для обчислення середньої тривалості використання ресурсу на основі введення функції , що відповідає кількості діб між датами та . У частковому випадку, коли , то =1, тобто кількість діб між тотожними датами дорівнюють одній добі.