Потоки Delphi

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

программа идентификатор интерфейс алгоритм

Важнейшей функцией операционной системы является организация рационального использования всех ее аппаратных и информационных ресурсов. К основным ресурсам могут быть отнесены процессоры, память, внешние устройства, данные и программы. Вычислительная система, располагающая одними и теми же аппаратными ресурсами, но управляемая различными ОС может работать с разной степенью эффективности. Поэтому знание внутренних механизмов операционной системы позволяет косвенно судить о ее эксплуатационных возможностях и характеристиках. Хотя и в однопрограммной ОС необходимо решать задачи управления ресурсами (например, распределение памяти между приложением и ОС), главные сложности на этом пути возникают в мультипрограммных ОС, в которых за ресурсы конкурируют сразу несколько приложений.

Мультипрограммирование, или многозадачность (multitasking), — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Эти программы совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода, данные. Мультипрограммирование призвано повысить эффективность использования вычислительной системы, однако эффективность может пониматься по-разному.

Чтобы поддерживать мультипрограммирование, ОС должна определить и оформить для себя те внутренние единицы работы, между которыми будет разделяться процессор и другие ресурсы компьютера. В настоящее время в большинстве операционных систем определены два типа единиц работы.

Процесс (задача) — это более крупная единица работы ОС. Процесс для своего выполнения требует нескольких более мелких работ, для обозначения которых используют термины «поток», или «нить».

Процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного — процессорного времени. Этот последний важнейший ресурс распределяется операционной системой между другими единицами работы — потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой. В простейшем случае процесс состоит из одного потока.

Целью данной курсовой работы является изучение и закрепление на практике сведений о внутреннем устройстве процессов, потоков, доменов приложений и контекстов в операционной системе Windows.

1. Теоретическая часть

1.1 Обзор программных средств

Для выполнения курсовой работы был выбран язык программирования C#.

Язык программирования С# был создан в конце 1990-х годов и стал частью общей. NET-стратегии Microsoft. Впервые он увидел свет в качестве в-версии в середине 2000 года. Главным архитектором С# был Андерс Хейлсберг (Anders Hejlsberg) — один из ведущих специалистов в области языков программирования, получивший признание во всем мире. С# непосредственно связан с С, C++ и Java. Поскольку С# построен на прочном, понятном фундаменте, то переход от этих «фундаментальных» языков к «надстройке» происходит без особых усилий со стороны программистов [2].

Главной особенностью языка C# является его ориентированность на платформу Microsoft. NET — создатели C# ставили своей целью предоставление разработчикам естественных средств доступа ко всем возможностям платформы. NET. Видимо, это решение можно считать более или менее вынужденным, так как платформа. NET изначально предлагала значительно большую функциональность, чем любой из существовавших на тот момент языков программирования [1].

Таким образом, C# представляет собой новый язык программирования, ориентированный на разработку для платформы. NET и пригодный как для быстрого прототипирования приложений, так и для разработки крупномасштабных приложений.

От С язык С# унаследовал синтаксис, многие ключевые слова и операторы. Кроме того, С# построен на улучшенной объектной модели, определенной в C++. С# и Java связаны между собой несколько сложнее. Java также является потомком С и C++. У него тоже общий с ними синтаксис и сходная объектная модель. Подобно Java C# предназначен для создания переносимого кода.

В язык программирования C# входит много полезных особенностей — простота, объектная ориентированность, типовая защищенность, «сборка мусора», поддержка совместимости версий и многое другое. Данные возможности позволяют быстро и легко разрабатывать приложения, особенно COM+ приложения и Web сервисы. При создании C#, его авторы учитывали достижения многих других языков программирования: C++, C, Java, SmallTalk, Delphi, Visual Basic и т. д. В результате получился действительно простой, удобный и современный язык, по мощности не уступающий С++, но существенно повышающий продуктивность разработок [2].

C# позволяет использовать типизированные, расширяемые метаданные, которые могут быть прикреплены к объекту. Архитектурой проекта могут определяться локальные атрибуты, которые будут связанны с любыми элементами языка — классами, интерфейсами и т. д. Разработчик может программно проверить атрибуты какого-либо элемента. Это существенно упрощает работу, к примеру, вместо того чтобы писать автоматизированный инструмент, который будет проверять каждый класс или интерфейс, на то, является ли он действительно частью абстрактного бизнес объекта, можно просто воспользоваться сообщениями основанными на определенных в объекте локальных атрибутах [5].

C#, являясь последним из широко распространенных языков программирования, должен впитать в себя весь имеющийся опыт и вобрать лучшие стороны существующих языков программирования, при этом являясь специально созданным для работы в. NET. Сама архитектура. NET продиктовала ему (как и многим другим языкам, на которых можно писать под. NET) объектно-ориентированную направленность. Конечно, это не является правилом, возможно создание компиляторов даже функциональных языков по. NET, на эту тему существуют специальные работы [3].

В C# была унифицирована система типов, теперь можно рассматривать каждый тип как объект. Объекты собраны в пространства имен (namespaces), которые позволяют программно обращаться к чему-либо. Это значит что вместо списка включаемых файлов заголовков в своей программе нужно написать какие пространства имен, для доступа к объектам и классам внутри них, разработчик хочет использовать. В C# выражение using позволяет не писать каждый раз название пространства имен, когда используется класс из него. Например, пространство имен System содержит несколько классов, в том числе и Console [4].

Свой синтаксис C# во многом унаследовал от C++ и Java. Но вместе с тем он является во многом новаторским — аттрибуты, делегаты и события, прекрасно вписанные в общую идеологию языка, прочно заняли место в сердцах. NET — разработчиков. Их введение позволило применять принципиально новые приемы программирования.

Из вещей, включенных в спецификацию языка, но не являющихся чисто «программистскими» необходимо отметить возможность использование комментариев в формате XML. Если комментарии отвечают специально описанной структуре, компилятор по ним может сгенерировать единый XML-файл документации [6].

1.2 Постановка задачи

В ходе исполнения данной курсовой работы необходимо выполнить следующие задачи:

1. Изучить принципы создания многопоточных приложений, способы синхронизации потоков, способы создания консольных приложений.

2. Создать программу на языке C#. Результаты оформить в виде таблицы.

3. Реализовать возможность получать текстовые сообщения о результатах выполненных операций.

Индивидуальное задание согласно Варианту № 3 звучит следующим образом:

Разработать Windows Forms приложение, которое запускает любой процесс в системе, и может его завершить с выдачей на экран соответствующего уведомления пользователю.

1.3 Алгоритм решения задачи

Общий алгоритм работы программы для запуска нового процесса звучит следующим образом:

1) Если имя необходимого процесса введено верно, переходим к п. 3, иначе — к п. 2;

2) Вывод сообщения «Введите имя процесса», переходим к п. 1;

3) Создается новый объект класса Process с именем newProc;

4) Запускается новый процесс с помощью метода Process. Start (s), где s — строковая переменная, в которой хранится имя процесса;

5) Выводится сообщение о запуске процесса;

6) В переменную ProcID заносится значение ID текущего процесса, для того, чтобы потом по этому ID завершить этот процесс.

Алгоритм работы программы для завершения ранее запущенного процесса звучит следующим образом:

1) Создается новый объект класса Process с именем newProc при помощи метода Process. GetProcessById (ProcId), где ProcID — ранее сохраненный идентификатор запущенного процесса;

2) Вызывается метод newProc. Kill (), который останавливает данный процесс;

3) Вызывается метод newProc. Close (), который освобождает все ресурсы, связанные с данным процессом;

4) Выводится сообщение о завершении процесса.

Блок-схемы основных процедур запуска и остановки процесса представлены в приложениях, А и Б соответственно.

2. Практическая часть

2.1 Решение поставленной задачи в C#

Описание интерфейса программы в C#

Запускается приложение с помощью файла OS_variant3. exe, который расположен в папке E: OS_variant3OS_variant3binDebug.

После запуска программы, на экране появляется главная форма, показанная на рисунке 2.1.

Рисунок 2.1 — Главная форма программы

В компонент TextBox1 необходимо ввести имя процесса, либо, нажав кнопку «Обзор» указать адрес исполняемого файла для нужного процесса. Например, запустим Internet Explorer (Рисунок 2. 2).

Рисунок 2.2 — Выбор процесса Internet Explorer

После выбора необходимого файла, его имя автоматически загрузится в компонент TextBox1 (Рисунок 2. 3).

Рисунок 2.3 — Имя процесса загружается в TextBox

Далее необходимо нажать кнопку «Запустить процесс». После этого программа выдаст сообщение о том, что процесс запущен (Рисунок 2. 4).

Рисунок 2.4 — Запуск процесса Internet Explorer

Для того, чтобы завершить процесс, необходимо нажать кнопку «Остановить процесс». После этого процесс закончит свою работу и на экране появится соответствующее сообщение (Рисунок 2. 5).

Рисунок 2.5 — Сообщение о завершении процесса

Перечень использованных в программе идентификаторов

Основными методами в программе являются процедуры запуска и остановки процесса. Для начала рассмотрим процедуру NewMethod (), с помощью которой запускается новый процесс:

public void NewMethod () // имя метода

{

if (textBox1. Text≠ ««) // если введенное имя процесса не пустое

{

string s = textBox1. Text; // переменная, в которой хранится имя процесса

Process newProc = Process. Start (s); // запуск процесса по его имени

MessageBox. Show («Процесс» +" «+ textBox1. Text +» стартовал!!!"); // вывод сообщения о запуске процесса

ProcId = newProc. Id; // переменная для хранения идентификатора запущенного процесса

}

else MessageBox. Show («Введите имя процесса»); // если введенное имя процесса пустое

}

Теперь рассмотрим процедуру завершения процесса, которая срабатывает по нажатию на кнопку «Остановить процесс».

private void button2_Click1 (object sender, EventArgs e) {

Process newProc = Process. GetProcessById (ProcId); // Связываем объект класса Process с реальным процессом по сохраненному идентификатору

newProc. Kill (); // Остановка процесса

newProc. Close (); // Освобождение ресурсов, занимаемых процессом

MessageBox. Show («Процесс» + textBox1. Text + «уничтожен»); // Вывод сообщения о завершении процесса

}

Тексты основных модулей и вид форм приложения

Вид формы представлен на рисунке 2.6.

Рисунок 2.6 — Вид формы программы

В таблице 2.1 приведены компоненты, используемые на форме, а также их предназначение.

Таблица 2.1 — Используемые объекты на главной форме

Имя объекта

Описание

Label1

Содержит подпись к TextBox1: «Введите имя запускаемого / закрываемого процесса».

TextBox1

Текстовое поле для ввода имени процесса

Button1

Кнопка «Запустить процесс».

Button2

Кнопка «Остановить процесс».

Button3

Кнопка «Обзор», открывает OpenDialog1

Button4

Кнопка «Выход», закрывает программу

OpenDialog1

Показывает пользователю диалоговое окно для выбора файла

Ниже приведен текст программы с комментариями

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

using System. Threading;

using System. Diagnostics;

namespace OS_variant3

{

public partial class Form1: Form

{

public int ProcId;

public Form1 ()

{

InitializeComponent ();

}

public void NewMethod ()

{

if (textBox1. Text≠ ««)

{

string s;

s = textBox1. Text;

Process newProc = Process. Start (s);

MessageBox. Show («Процесс» +" «+ textBox1. Text +» стартовал!!!");

ProcId = newProc. Id;

}

else MessageBox. Show («Введите имя процесса»);

}

private void button3_Click (object sender, EventArgs e)

{

string fname;

openFileDialog1. ShowDialog ();

fname = openFileDialog1. FileName;

textBox1. Text = fname;

}

private void button1_Click1 (object sender, EventArgs e)

{

NewMethod ();

}

private void button2_Click1 (object sender, EventArgs e)

{

Process newProc = Process. GetProcessById (ProcId);

newProc. Kill ();

newProc. Close ();

MessageBox. Show («Процесс» + textBox1. Text + «уничтожен»);

}

private void button4_Click (object sender, EventArgs e)

{

this. Close ();

}}}

Графическое представление результатов

Запустив программу, на экране появится главная форма, показанная на рисунке 2.7.

Рисунок 2.7 — Главная форма

Далее пользователю предлагается ввести имя процесса вручную, либо воспользоваться диалоговым окном. Результат показан на рисунке 2.8.

Рисунок 2.8 — Выбор процесса с помощью диалогового окна

После этого доступна возможность запуска процесса. Результат этого действия показан на рисунке 2. 9

Рисунок 2.9 — Запуск процесса AIMP3. exe

Чтобы завершить запущенный процесс, необходимо нажать кнопку «Остановить процесс» (Рисунок 2. 10).

Рисунок 2. 10 — Завершение процесса «AIMP3. exe»

программа идентификатор интерфейс алгоритм

2.2 Анализ полученных результатов

В ходе выполнения курсовой работы была создана программа, которая запускает любой процесс в системе, и может его завершить с выдачей на экран соответствующего уведомления пользователю.

В ходе тестирования программы, серьёзных ошибок выявлено не было, что говорит, о правильности и высоком качестве работы приложения.

Таким образом, программа соответствует предъявляемым к ней требованиям и обладает необходимой функциональностью.

Заключение

Современные операционные системы нацелены на наиболее эффективное использование ресурсов компьютера. По большей части эффективность достигается за счет разделения ресурсов компьютера между несколькими процессами (многозадачность). Многопоточность является естественным продолжением многозадачности, точно также как виртуальные машины, позволяющие запускать несколько ОС на одном компьютере, представляют собой логическое развитие концепции разделения ресурсов.

В ходе работы над данной курсовой работой был получен опыт работы программирования на основе платформы. NET.

С практической точки зрения было создано Windows Forms приложение, которое запускает любой процесс в системе, и может его завершить с выдачей на экран соответствующего уведомления пользователю. На основе полученных результатов тестирования можно сделать вывод, что полученная программа соответствует всем предъявленным к ней требованиям.

Таким образом, цели и задачи данной курсовой работы были выполнены в необходимом объёме.

Список использованных источников

1. АНЬЕН, Ф. Основы ASP. NET с примерами на C#. NET / Ф. Аньен — Санкт-Петербург, Бином. Лаборатория знаний, 2005 г. — 400 с.

2. Дари, К. C# для профессионалов (комплект из 2 книг)/ К. Дари — Санкт-Петербург, Лори, 2005 г. — 1000 с.

3. Дубовцев, А. Microsoft. NET. Наиболее полное руководство (+ CD-ROM) / А. Дубовцев — Санкт-Петербург, БХВ-Петербург, 2004 г. — 704 с.

4. Коннелл, Дж. Разработка элементов управления Microsoft. NET на C#. NET/ Джон Коннелл — Санкт-Петербург, Русская Редакция, 2004 г. — 434 с.

5. Троелсен, Э. C# и платформа. NET 3.0. / Э. Троелсен — Санкт-Петербург, Питер, 2008 г. — 1456 с.

6. Чакраборти, А. Microsoft. NET Framework. Разработка профессиональных проектов./ А. Чакраборти, Ю. Кранти, Р. Джит Сандху — Москва, БХВ-Петербург, 2003 г. — 884 с.

ПоказатьСвернуть
Заполнить форму текущей работой