Операционная система windows xp

Автор: Пользователь скрыл имя, 17 Февраля 2013 в 23:49, дипломная работа

Описание работы

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

Содержание

Введение
1 Описание системы Windows ХР
1.1 Описание Windows ХР
1.2 Настройка Windows ХР
1.3 Защита системы
1.4 Восстановление системы
1.5 Быстродействие системы
1.6 Процессы в Windows XP
1.7 Управление пользователями
1.8 Версии Windows XP
2 Файловая система
3 BIOS
4 Установка Windows XP
Заключение
Список используемых источников

Работа содержит 1 файл

Дипломная работа по теме.doc

— 990.50 Кб (Скачать)

- Подсистема Win32 уведомляется о  создании нового процесса и  потока.

- Начинается выполнение первичного потока.

- В контексте нового процесса  и потока инициализируется адресное  пространство (например, загружаются  требуемые DLL) и начинается выполнение  программы.

Завершение процессов

 

Процесс завершается если:

- Входная функция первичного  потока возвратила управление.

- Один из потоков процесса  вызвал функцию ExitProcess.

- Поток другого процесса вызвал  функцию TerminateProcess.

Когда процесс завершается, все User- и GDI-объекты, созданные процессом, уничтожаются, объекты ядра закрываются (если их не использует другой процесс), адресное пространство процесса уничтожается.

 

Создание потоков

Первичный поток создается автоматически  при создании процесса. Остальные  потоки создаются функциями CreateThread и CreateRemoteThread (только в Win NT/2000/XP).

Завершение потоков

Поток завершается если

- Функция потока возвращает  управление.

- Поток самоуничтожается, вызвав ExitThread.

- Другой поток данного или  стороннего процесса вызывает TerminateThread.

- Завершается процесс, содержащий  данный поток.

Объекты ядра

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

 

Объект ядра это, по сути, структура, созданная ядром и доступная только ему. В пользовательское приложение передается только описатель (handle) объекта, а управлять объектом ядра можно с помощью функций Win32 API.

 

Wait функции

 

Как можно приостановить работу потока? Существует много способов. Вот некоторые из них.

 

Функция Sleep() приостанавливает работу потока на заданное число миллисекунд. Если в качестве аргумента вы укажите 0 ms, то произойдет следующее. Поток  откажется от своего кванта процессорного  времени, однако тут же появится в списке потоков готовых к выполнению. Иными словами произойдет намеренное переключение потоков. (Вернее сказать, попытка переключения. Ведь следующим для выполнения потоком вполне может стать тот же самый.)

 

Функция WaitForSingleObject() приостанавливает выполнение потока до тех пор, пока не произойдет одно из двух событий:

- истечет таймаут ожидания;

- ожидаемый объект перейдет  в сигнальное (signaled) состояние.

 

По возвращаемому значению можно  понять, какое из двух событий произошло. Ожидать с помощью wait-функций можно большинство объектов ядра, например, объект "процесс" или "поток", чтобы определить, когда они завершат свою работу.

 

Функции WaitForMultipleObjects передается сразу  массив объектов. Можно ожидать срабатывания сразу всех объектов или какого-то одного из них.

 

Синхронизация потоков

 

Работая параллельно, потоки совместно  используют адресное пространство процесса. Также все они имеют доступ к описателям (handles) открытых в процессе объектов. А что делать, если несколько  потоков одновременно обращаются к одному ресурсу или необходимо как-то упорядочить работу потоков? Для этого используют объекты синхронизации и соответствующие механизмы.

 

Мьютексы

 

Мьютексы (Mutex) это объекты ядра, которые создаются функцией CreateMutex(). Мьютекс бывает в двух состояниях - занятом и свободном. Мьютексом хорошо защищать единичный ресурс от одновременного обращения к нему разными потоками.

 

Семафоры

 

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

 

События

 

События (Event), также как и мьютексы имеют два состояния - установленное и сброшенное. События бывают со сбросом вручную и с автосбросом. Когда поток дождался (wait-функция вернула управление) события с автосбросом, такое событие автоматически сбрасывается. В противном случае событие нужно сбрасывать вручную, вызвав функцию ResetEvent(). Допустим, сразу несколько потоков ожидают одного и того же события, и событие сработало. Если это было событие с автосбросом, то оно позволит работать только одному потоку (ведь сразу же после возврата из его wait-функции событие сбросится автоматически!), а остальные потоки останутся ждать. Если же это было событие со сбросом вручную, то все потоки получат управление, а событие так и останется в установленном состоянии, пока какой-нибудь поток не вызовет ResetEvent().

 

Функция PulseEvent() устанавливает событие  и тут же переводит его обратно  в сброшенное состояние; ее вызов  равнозначен последовательному  вызову SetEvent() и ResetEvent(). Если PulseEvent вызывается для события со сбросом в ручную, то все потоки, ожидающие этот объект, получают управление. При вызове PulseEvent для события с автосбросом пробуждается только один из ждущих потоков. А если ни один из потоков не ждет объект-событие, вызов функции не дает никакого эффекта.

 

Ожидаемые таймеры

 

Пожалуй, ожидаемые таймеры - самый изощренный объект ядра для синхронизации. Появились они, начиная с Windows 98. Таймеры создаются функцией CreateWaitableTimer и бывают, также как и события, с автосбросом и без него. Затем таймер надо настроить функцией SetWaitableTimer. Таймер переходит в сигнальное состояние, когда истекает его таймаут. Отменить "тиканье" таймера можно функцией CancelWaitableTimer. Примечательно, что можно указать callback функцию при установке таймера. Она будет выполняться, когда срабатывает таймер.

 

Критические секции. Синхронизация  в пользовательском режиме

 

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

 

Синхронизация процессов

 

Описатели объектов ядра зависимы от конкретного процесса (process specific). Проще  говоря, handle объекта, полученный в одном  процессе, не имеет смысла в другом. Однако существуют способы работы с одними и теми же объектами ядра из разных процессов.

 

Во-первых, это наследование описателя. При создании объекта можно указать  будет ли его описатель наследоваться  дочерними (порожденными этим процессом) процессами.

 

Во-вторых, дублирование описателя. Функция DuplicateHandle дублирует описатель объекта одного процесса в другой, т.е. по сути, берет запись в таблице описателей одного процесса и создает ее копию в таблице другого.

 

И, наконец, именование объекта ядра. При создании объекта ядра для синхронизации (мьютекса, семафора, ожидаемого таймера или события) можно задать его имя. Оно должно быть уникальным в системе. Тогда другой процесс может открыть этот объект ядра, указав в функции Open…(OpenMutex, OpenSemaphore, OpenWaitableTimer, OpenEvent) это имя.

 

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

 

 

Взаимодействие между процессами

 

Потоки одного процесса не имеют  доступа к адресному пространству другого процесса. Однако существуют механизмы для передачи данных между  процессами.

 

Разделяемая память

 

Как уже говорилось, система виртуальной  памяти в Win32 использует файл подкачки - swap file (или файл размещения - page file), имея возможность преобразования страниц оперативной памяти в страницы файла на диске и наоборот. Система может проецировать на оперативную память не только файл размещения, но и любой другой файл. Приложения могут использовать эту возможность. Это может использоваться для обеспечения более быстрого доступа к файлам, а также для совместного использования памяти.

 

Такие объекты называются проекциями файлов (на оперативную память) (file-mapping object). Для создания проекции файла сначала вызывается функция CreateFileMapping(). Ей передается дескриптор (уже открытого) файла или указывается, что нужно использовать page file операционной системы. Кроме этого, в параметрах ей передается флаг защиты, максимальный размер проекции и имя объекта. Затем вызывается функция MapViewOfFile(). Она отображает представление файла (view of a file) в адресное пространство процесса. По окончании работы вызывается функция UnmapViewOfFile(). Она освобождает память и записывает данные в файл (если это не файл подкачки). Чтобы записать данные на диск немедленно, используется функция FlushViewOfFile(). Проекция файла, как и другие объекты ядра, может использоваться другими процессами через наследование, дублирование дескриптора или по имени.

 

 

Прочие механизмы (сокеты, pipe)

 

Кроме разделяемой памяти, в Windows есть и другие способы передачи информации между процессами, например, каналы, поименованные каналы и сокеты. Все  они имеют сходный принцип  и представляют собой своеобразный канал или соединение, "трубу", соединяющую процессы. Программа, имея один конец такого соединения, может читать и/или писать в него данные, обмениваясь, таким образом, информацией с программой на другом конце.

 

Каналы используются для пересылки данных в одном направлении между дочерним и родительским процессами или между двумя дочерними процессами. Операции чтения/записи в канал похожи на подобные операции при работе с файлами.

 

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

 

Сокет - это абстрактный объект для обозначения одного из концов сетевого соединения, в том числе и через Internet. Сокеты Windows бывают двух типов: сокеты дейтаграмм и сокеты потоков. Интерфейс Windows Sockets (WinSock) основан на BSD-версии сокетов, но в нем имеются также расширения, специфические для Windows.

 

Сообщения в Windows (оконные сообщения)

 

Говоря о Windows нельзя не упомянуть  о таких понятиях как windows (окна), messages (сообщения), message queue (очередь сообщений) и т.д.

 

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

 

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

 

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

 

Если описатели объектов ядра процессо-зависимы, то описатели окон уникальны в  пределах Deskop. Поэтому одному процессу не составляет никакого труда получить и использовать описатель окна принадлежащему потоку другого процесса.

 

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

 

1.7 Управление  пользователями

 

Как управлять  пользователями, которым можно заходить на компьютер:

 

Как любая NT, XP имеет механизм идентификации  пользователей, и каждого пользователя можно ограничить в правах. На этих пользователях и их правах строится вся модель безопасности XP, как на локальной машине, так и в сети. Нельзя защитить что-либо паролем, можно определить какие пользователи имеют право использовать тот или иной ресурс. Пользователей на одной машине может быть множество, и чтобы было проще ими управлять, пользователи разбиты на группы. Управление пользователями и группами осуществляется с помощью апплета Users Accounts в Control Panel или «Пуск — Выполнить» запустить команду control userpasswords. После установки системы образуется только два пользователя, один с правами администратора, который вы создали в процессе установки XP, и Guest, которые показаны в окне (на самом деле есть ещё несколько пользователей, например пользователь Administrator, но его не показывает в списке, и чтобы залогиниться им придётся идти на некоторые ухищрения). Если вы обладаете правами администратора, то можете добавить или удалить пользователя в этом окне, можете поменять пароль пользователя или пиктограмму соответствующую пользователю, поменять метод, который используется для входа в систему. Для этого надо выбрать пункт Change the way users log on and off. По умолчанию стоит Use the Welcome screen что означает, что для входа кликнуть по иконке из списка и ввести пароль. Если убрать галочку с этого пункта, то будет использоваться метод входа с окном, в котором предлагается ввести имя пользователя и пароль. Вы не можете использовать Welcome Screen если компьютер входит в домейн. Классический вход может быть двух видов, с требованием нажать Crtl+Alt+Del, и без него. Чтобы это изменить, наберите в командной строке control userapasswords2. Откроется окно, на второй закладке этого окна, Advanced, ставим или снимаем галочку в чекбоксе Require Users To Press Ctrl+Alt+Delete check box, расположенном в разделе Secure Logon. На той же закладке можно нажать кнопку Advanced в разделе Advanced User Management, и запустить апплет Local Users and Groups (ещё его можно запустить через Control Panel - Administrative Tools - Computer Management - Local Users and Groups). Вы апплете, в котором сможете добавить или удалить пользователей, отредактировать уже существующих, поменять им группу, и т.д... Кроме этого, некоторые настройки для пользователей, такие как время жизни пароля, конкретные права для различных групп, и некоторые другие настраиваются из апплета Local Security Setings из Administrative Tools.

Информация о работе Операционная система windows xp