Багатопотокове програмування в сучасних ОС

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2014
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №4 з курсу: «ОПЕРАЦІЙНІ СИСТЕМИ» на тему: «Багатопотокове програмування в сучасних ОС» Мета: ознайомлення з поняттям багатопотоковості в сучасних операційних системах, отримання практичних навичок створення багато потокових застосувань в середовищі Visual Studio C#. Короткі теоретичні відомості: Як відомо [1] потоком (потік керування, нитка, thread) називають набір послідовно виконуваних команд процесора, які використовують загальний адресний простір процесу. Оскільки в системі може одночасно бути багато потоків, завданням ОС є організація перемикання процесора між ними і планування їхнього виконання. У багатопроцесорних системах код окремих потоків може виконуватися на окремих процесорах. Багатопотоковими називають програми, які одночасно виконують різні чи однотипні завдання, використовуючи при тому декілька потоків. Розглянемо яким чином можна оптимізувати програми, використовуючи багатопоточність. Але не завжди можна розпаралелити задачу. Не завжди є в тому сенс. Наприклад, якщо у нас є один потік даних і його необхідно обробляти в певному порядку, і при цьому без результатів попередньої обробки даних наступну операцію виконувати не можна, то в такій програмі створення додаткових потоків нічого нам не дасть. Потоки не повинні заважати один одному і повинні використовувати ефективно ресурси системи, в якій вони працюють. Завдання: Побудувати алгоритм програми, яка вирішує завдання оптимізації виконання певних операцій над матрицями з використанням багатопотоковості. Завдання наведені в таблиці відповідно до варіанту. № вар. Кількість потоків Завдання  1 3 Сума 2-х матриць (3х3).   Текст програми: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace lab4 { class ThreadClass { int[,] c = new int[3, 3]; int[,] a = { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } }; int[,] b = { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 } }; public void SetMas() { WriteMas(a); WriteMas(b); } public void WriteMas(int[,] aa) { Console.WriteLine(); for (int i = 0; i <= 2; i++) { for (int j = 0; j <= 2; j++) { Console.Write("{0} ", aa[i, j]); } Console.WriteLine(); } } public void writestring1() { int i = 0; for (int j = 0; j <= 2; j++) { c[i, j] = a[i, 0] * b[0, j] + a[i, 1] * b[1, j] + a[i, 2] * b[2, j]; } } public void writestring2() { int i = 1; for (int j = 0; j <= 2; j++) { c[i, j] = a[i, 0] * b[0, j] + a[i, 1] * b[1, j] + a[i, 2] * b[2, j]; } } public void writestring3() { int i = 2; for (int j = 0; j <= 2; j++) { c[i, j] = a[i, 0] * b[0, j] + a[i, 1] * b[1, j] + a[i, 2] * b[2, j]; } } public void WriteREZ() { WriteMas(c); } } class Program { static void Main(string[] args) { ThreadClass tc = new ThreadClass(); tc.SetMas(); Thread firstthread = new Thread(new ThreadStart(tc.writestring1)); Thread secondthread = new Thread(new ThreadStart(tc.writestring2)); Thread thirdthread = new Thread(new ThreadStart(tc.writestring3)); firstthread.Start(); secondthread.Start(); thirdthread.Start(); tc.WriteREZ(); Console.ReadLine(); } } } Результати проведеної роботи: / / Висновки: під час виконання даної лабораторної роботи я вивчив поняття багато потоковості в сучасних операційних системах, отримав практичні навички створення багато потокових застосувань в середовищі Visual Studio C#, створив програму що реалізує багато потоковість, наочно побачив виконання одночасно двох потоків данних.
Антиботан аватар за замовчуванням

12.06.2015 19:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!