У вас вопросы?
У нас ответы:) SamZan.net

Тема- Моделювання роботи симетричного мультипроцесора UM з загальною шиною Виконав- ст

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 4.4.2025

Міністерство освіти і науки, молоді та спорту України

Кіровоградський національний технічний університет

Механіко-технологічний факультет

Кафедра програмного забезпечення

Дисципліна: «Обчислювальні системи»

Лабораторна робота №8

Тема: «Моделювання роботи симетричного мультипроцесора UMA з загальною шиною»

Виконав: ст. гр. КІ-09-2

Кірнус Л.Є.

Перевірив: викладач

Доренський О.П.

 

Кіровоград 2012


Розробити програму-емулятор роботи симетричного мультипроцесора
UMA з загальною шиною на засадах багатопроцесорності у системі.

Код програми:

using System;

using System.Windows.Forms;

using System.Threading;

using System.IO;

namespace UMA

{

public partial class Form1 : Form

 {

public string Path; // Змінна для створення по дескриптору текстових файлів

 public string Str_1, Str_2, Str_3, Str_4;

public int i,Mas;

public Random Rm = new Random(); // Змінна для генерації випадкових чисел

 StreamWriter Write; // Змінна для роботи з текстовими файлами (запис)

 public Form1()

{

InitializeComponent();

}

// ------------------------------------ Імітація процесів 

// Процес №1

public void Proc_1()

{

Thread Thread_1 = new Thread(Function_1); // Створення потоку

Thread_1.Start(); // Запуск потоку

Thread_1.Join(300); // Чекаємо доки потік, за допомогою функції Function_1, обробить дані

label1.Text = Str_1;

}

// Процес №2

public void Proc_2()

{

Thread Thread_2 = new Thread(Function_2); // Створення потоку

Thread_2.Start(); // Запуск потоку

Thread_2.Join(600); // Чекаємо доки потік, за допомогою функції Function_2, обробить дані

label2.Text = Str_2;

}

// Процес №3

public void Proc_3()

{

Thread Thread_3 = new Thread(Function_3); // Створення потоку

Thread_3.Start(); // Запуск потоку

Thread_3.Join(900); // Чекаємо доки потік, за допомогою функції Function_3, обробить дані

label3.Text = Str_3;

}

// Процес №4

public void Proc_4()

{

Thread Thread_4 = new Thread(Function_4); // Створення потоку

Thread_4.Start(); // Запуск потоку

Thread_4.Join(1200); // Чекаємо доки потік, за допомогою функції Function_4, обробить дані

label4.Text = Str_4;

}

// ------------------------------------ Потокові функції  

public void Function_1()

{

Str_1 = "#1 Stop!";

Path = @"CPU#1.txt"; // Створюємо текстовий файл CPU#1.txt

Write = File.CreateText(Path); // Відкриваємо його для запису даних

Write.WriteLine(Str_1); // Записуємо у нього значення змінної Str_1

Write.Close(); // Звершуємо роботу з текстовим файлом

}

public void Function_2()

{

Str_2 = "#2 Stop!";

Path = @"CPU#2.txt"; // Створюємо текстовий файл CPU#2.txt

Write = File.CreateText(Path); // Відкриваємо його для запису даних

Write.WriteLine(Str_2); // Записуємо у нього значення змінної Str_2

Write.Close(); // Звершуємо роботу з текстовим файлом

}

public void Function_3()

{

Str_3 = "#3 Stop!";

Path = @"CPU#3.txt"; // Створюємо текстовий файл CPU#3.txt

Write = File.CreateText(Path); // Відкриваємо його для запису даних

Write.WriteLine(Str_3); // Записуємо у нього значення змінної Str_3

Write.Close(); // Звершуємо роботу з текстовим файлом

}

public void Function_4()

{

Str_4 = "#4 Stop!";

Path = @"CPU#4.txt"; // Створюємо текстовий файл CPU#4.txt

Write = File.CreateText(Path); // Відкриваємо його для запису даних

Write.WriteLine(Str_4); // Записуємо у нього значення змінної Str_4

Write.Close(); // Звершуємо роботу з текстовим файлом

}

// ---------------------------------------------------------

private void Form1_Load(object sender, EventArgs e)

{

 

}

// --------------------- Кнопка "Блоку керування шиною" ------------------------

private void button1_Click(object sender, EventArgs e)

{

if (checkBox1.CheckState == CheckState.Checked) // Якщо, лінія запиту шини (BRQ) опитана

{

Mas = Rm.Next(0,2); // Генеруємо випадкові числа від "0" до "2"

 if (Mas == 0) // Яккщо "0" - запускаємо на виконання мультипроцесор UMA

 {

MessageBox.Show("Линия (BGT) свободна!", "System info");

 MessageBox.Show("Сигнал занятости на линии (SACK) отсутствует!", "System info");

 MessageBox.Show("Обработка данных...", "System info");

Proc_1(); // Обробка данных першим CPU

MessageBox.Show("Процесор №1 обработал данные!", "System info");

label1.Text = "Null";

Proc_2(); // Обробка данных другим CPU

MessageBox.Show("Процесор №2 обработал данные!", "System info");

label2.Text = "Null";

Proc_3(); // Обробка данных третім CPU

MessageBox.Show("Процесор №3 обработал данные!", "System info");

 label3.Text = "Null";

Proc_4(); // Обробка данных четвертим CPU

MessageBox.Show("Процесор №4 обработал данные!", "System info");

 label4.Text = "Null";

MessageBox.Show("Данные успешно обработаны!", "System info");

}

else

{

MessageBox.Show("Шина данных занята! Подождите...", "System info");

}

}

else

{

MessageBox.Show("Опросите линию запроса шины (BRQ)!", "System info");

 }

}

}

}




1. реферату- Людовик XIV 16381715Розділ- Література світова Людовик XIV 16381715 Король Франции с 1643го года сын ко
2. Кормиловский детский дом 646970 Омская обл
3. Реферат- Цветные моря
4. Счастье взгляни ~ мольбы в полудрёме
5. Контрольная работа- Понятие и правовое регулирование аудиторской деятельности
6. При проектировании современных систем электроснабжения решать перечисленные задачи становится сложнее
7. вантажно ~ розвантажувальні роботи; розмітка місць прокладання трубопроводів і складання чорнових ескіз
8. Использование теорий в зарубежной практике 3
9. Векторный графический редактор
10. кредитная политика одна из важнейших подсистем экономической политики государства