Автор работы: Пользователь скрыл имя, 08 Февраля 2013 в 20:48, курсовая работа
Windows XP (кодовое название при разработке – Whistler; внутренняя версия – Windows NT 5.1) – операционная система (ОС) семейства Windows NT корпорации Microsoft. Она была выпущена 25 октября 2001 года и является развитием Windows 2000 Professional. Название XP происходит от англ. eXPerience (опыт).
В отличие от предыдущей системы Windows 2000, которая поставлялась как в серверном, так и в клиентском вариантах, Windows XP является исключительно клиентской системой. Её серверным аналогом являетсяWindows Server 2003.
Введение 4
Общая структура операционной системы Windows XP 6
Ядро 15
Процессы 22
Потоки 26
Уровни приоритета 29
Выводы 32
Часть 2. Задача о спящем парикмахере 34
Список использованной литературы 38
Данные ядра всегда находятся в оперативной памяти и никогда не выгружаются на диск, как это происходит с пользовательскими приложениями.
Рссмотрели процессы и потоки. Узнали что процесс состоит хотя бы из одного потока. В Windows XP каждому процессу соответствует адресное пространство и одиночный управляющий поток. У процесса есть адресное пространство, содержащее текст программы и данные, а также другие ресурсы. Ресурсами являются открытые файлы, дочерние процессы, необработанные аварийные сообщения, обобработчики сигналов, учетная информация и многое другое. Гораздо проще управлять ресурсами, объединив их в форме процесса.
Рссмотрели приоритеты Windows XP узнали что предусмотрено 32 уровня приоритета – от 0 до 31 рис. 10. Эти значения группируются так:
И на последок по данным веб-аналитики от W3Schools с сентября 2003 по июль 2011 года Windows XP была самой используемой операционной системой для доступа к сети Интернет в мире. По состоянию на август 2012 года, Windows XP находится на втором месте с долей 24,8 %. Максимум этого значения составлял 76,1 % и был достигнут в январе 2007 года.
Часть 2. Задача о спящем парикмахере
Представим парикмахерскую, состоящую из кресла и зала ожидания. Посетитель может войти в зал ожидания только в случае наличия в нем свободных мест. Если кресло парикмахера свободно, посетитель может его занять.
Если длительное время в парикмахерской нет посетителей, парикмахер засыпает в кресле.
Требуется решить задачу таким образом, чтобы исключить попадание "лишних" посетителей в зал ожидания и засыпания парикмахера в момент нахождения посетителя в кресле.
Решение задачи при помощи сетей Петри представлено на рисунке 8:
Рис. 8. Решение задачи о спящем парикмахере при помощи сети Петри
Решение на С++:
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int Postrizhka = 0; // радномное временя на стрижку 1 посетителя в секундах
int Kresla = 0; // количество кресел
bool strizhka = false;
int w = 0;
//----------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// настройки при запуске
Timer1->Enabled = false;
Label1->Caption = "Ушел домой";
Timer1->Interval = 1000;
Timer1->Enabled = false;
Memo1->Lines->Clear();
}
//----------------------------
void Logs(AnsiString text) // логирование
{
Form1->Memo1->Lines->Add("[" + Time() + "] -> " + text);
}
//----------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Postrizhka = ScrollBar1->Position;
Kresla = ScrollBar2->Position;
if(rand()%10 >= 5) // если больше или равен 5 то приходит посетитель
{
Logs("Посетитель входит в парикмахерскую");
if(Label2->Caption.ToInt() < Kresla) // есть свободное место
{
if(rand()%10 >= 5) // посетитель выберает ждать ему или уйти
{
Logs("Посетитель решил
Label2->Caption = Label2->Caption.ToInt() + 1;
}
else
{
Logs("Посетитель решил не стоя
}
}
else // все места заняты
{
Logs("Посететелю нехватило
}
}
// действия парикмахера
if(Label2->Caption.ToInt() == 0) // посетителей нет
{
Label1->Caption = "Спит";
}
else // посетители есть
{
Label1->Caption = "Работает";
if(strizhka == false) // начинаем стрижку
{
strizhka = true;
w = (rand()%Postrizhka) + 1; // рандомное время на стрижку 1го посетителя
Logs("Парикмахер начинает
}
else
{
if((w--) == 0)
{
strizhka = false;
Label2->Caption = Label2->Caption - 1;
Logs("Парикмахер закончил стрижку! Клиент расплатился и ушел");
}
}
}
}
//----------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Timer1->Enabled)
{
Timer1->Enabled = false;
Label1->Caption = "Ушел домой";
Label2->Caption = 0;
Button1->Caption = "Открыть парикмахерскую";
}
else
{
Button1->Caption = "Закрыть парикмахерскую";
Label2->Caption = 0;
Timer1->Enabled = true;
}
}
//----------------------------
void __fastcall TForm1::ScrollBar1Change(
{
Label5->Caption = IntToStr(ScrollBar1->Position)
}
//----------------------------
void __fastcall TForm1::ScrollBar2Change(
{
Label6->Caption = IntToStr(ScrollBar2->Position)
}
//----------------------------
Список использованной литературы