DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра безпеки інформаційних технологій

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

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи
Група:
КН-11
Коротко про документ

Про що ця робота

Звіт до лабораторної роботи присвячено вивченню багатопотоковості в сучасних операційних системах та створенню багатопотокових застосувань у середовищі Visual Studio C#. У практичній частині реалізовано алгоритм множення матриць з використанням трьох потоків.

У роботі розглядаються

  • Багатопотокове програмування
  • Операційні системи
  • Потоки виконання
  • Програмування на C#
  • Множення матриць
  • Паралельні обчислення
  • Visual Studio

Зміст і розділи

  1. Мета
  2. Короткі теоретичні відомості
  3. Завдання
  4. Текст програми
  5. Результати проведеної роботи
  6. Висновки
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають дисципліну «Операційні системи».
Викладачі:Мельник В. А.

Ключові поняття

потікбагатопотоковістьплануваннясинхронізаціяматрицяC#Visual StudioThread

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра БІТ З В І Т до лабораторної роботи №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#, створив програму що реалізує багато потоковість, наочно побачив виконання одночасно двох потоків данних.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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