Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Теория операционных систем


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Гуревич Александр Львович
Статус: Профессионал
Рейтинг: 4674
∙ повысить рейтинг »
Kazak7
Статус: Профессионал
Рейтинг: 1069
∙ повысить рейтинг »
coremaster1
Статус: Профессор
Рейтинг: 650
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Установка и настройка ОС / Теория операционных систем

Номер выпуска:170
Дата выхода:18.07.2012, 20:00
Администратор рассылки:Калашников О.А. (Руководитель)
Подписчиков / экспертов:129 / 49
Вопросов / ответов:1 / 3

Консультация # 186446: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: 1) Что такое "Поток" и "Процесс" в Windows - это что-то программное или аппаратное - дело в том, что я никак не могу понять: с одной стороны - Windows может управлять потоками - определять приоритет и т.д. - с другой - они как-то "самостоятельно...


Консультация # 186446:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
1) Что такое "Поток" и "Процесс" в Windows - это что-то программное или аппаратное - дело в том, что я никак не могу понять:
с одной стороны - Windows может управлять потоками - определять приоритет и т.д. - с другой - они как-то "самостоятельно" могут выполняются на разных ядрах и ОС может ими управлять...
В связи с вышесказанным возникает вопрос: так "Поток" - это программная фишка или аппаратная или программно-аппаратная, но в любом случае не ясно, какая "часть" тут реализована программно, а другая - аппаратно... К сожалению, я нигде не смог найти информацию по этим вопросам и поэтому обращаюсь к Вам! :)
2) Для чего используется регистр CS в Windows?
Большое спасибо!

Дата отправки: 15.07.2012, 19:32
Вопрос задал: Илья
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Асмик Гаряка (Советник):

Здравствуйте, Илья!

Процессом обычно называют экземпляр выполняемой программы.

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

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

- Адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;

- Исполняемая программа и данные, проецируемые на виртуальное адресное пространство процесса.

Потоки

Процессы инертны. Отвечают же за исполнение кода, содержащегося в адресном пространстве процесса, потоки. Поток (thread) - некая сущность внутри процесса, получающая процессорное время для выполнения. В каждом процессе есть минимум один поток. Этот первичный поток создается системой автоматически при создании процесса. Далее этот поток может породить другие потоки, те в свою очередь новые и т.д. Таким образом, один процесс может владеть несколькими потоками, и тогда они одновременно исполняют код в адресном пространстве процесса. Каждый поток имеет:

- Уникальный идентификатор потока;

- Содержимое набора регистров процессора, отражающих состояние процессора;

- Два стека, один из которых используется потоком при выполнении в режиме ядра, а другой - в пользовательском режиме;

- Закрытую область памяти, называемую локальной памятью потока (thread local storage, TLS) и используемую подсистемами, run-time библиотеками и DLL.

Планирование потоков

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

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

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


Процесс включает в себ я один или более потоков, которые фактически выполняют код в процессе (технически, выполняются не процессы, а потоки) и представлены в системе в виде объектов потоков ядра. Есть несколько причин, почему приложения создают потоки в дополнение к их исходному начальному потоку: 1) процессы, обладающие пользовательским интерфейсом, обычно создают потоки для того, чтобы выполнять свою работу и при этом сохранять отзывчивость основного потока к командам пользователя, связанными с вводом данных и управлением окнами; 2) приложения, которые хотят использовать несколько процессоров для масштабирования производительности или же которые хотят продолжать работать, в то время как потоки останавливают свою работу, ожидая синхронизации операций ввода/вывода, создают потоки, чтобы получить дополнительную выгоду от многопоточной работы.


Консультировал: Асмик Гаряка (Советник)
Дата отправки: 15.07.2012, 22:14
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Илья!
2) Windows работает в защищенном режиме процессора, при котором в сегментных регистрах хранятся специальные структуры данных - селекторы. Которые являются идентификатором сегмента. Селектор указывает не на сам сегмент в памяти, а на его дескриптор, в таблице дескрипторов…
Каждая 16-битная величина в сегментных регистрах делится на три части, как показано ниже:

Код :
15
        3  2   1   0
 +--------------------+
 | Index    | TI | RPL|  
 +--------------------+
Бит TI в этом случае указывает, какая таблица дескрипторов должна использоваться (нуль соответствует глобальной таблице дескрипторов, единица — локальной таблице дескрипторов).
Поле Index является номером (индексом) дескриптора в таблице дескрипторов, который должен использоваться при вычислении линейного адреса. Поле RPL является запрошенным уровнем привилегий, используемым для контроля прав доступа программы к сегменту . Частным случаем RPL является текущий уровень привилегий — CPL, чьё значение в любой момент времени находится в сегментном регистре CS.
Ну и, наконец, регистр CS должен содержать селектор сегмента кода, иначе произойдет исключение при попытке выполнить команду. Атрибуты сегментов задаются в дескрипторах.
Это если вкратце, подробнее можно узнать, почитав про защищенный режим процессора. Информации в Интернете много, полагаю, найдете самостоятельно.

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 15.07.2012, 23:57
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует coremaster1 (Профессор):

Здравствуйте, Илья!
Процесс и поток - это скорее программные вещи, но их практическая реализация невозможна без поддержки на аппаратном уровне.
На аппаратные возможности прежде всего опираются две вещи:

1. Адресное пространство процесса. Потоки внутри процесса работают в виртуальном адресном пространстве, которое никак не
пересекается с другими процессами. За счёт этого процессы изолированы друг от друга. Трансляция виртуальных адресов в физические реализовано на аппаратном уровне. Для этого операционная система формирует специальные структуры данных и записывает их адрес в регистры процессора. Процессор по этим данным отображает заданные страницы памяти на виртуальные адреса процесса. Если поток обратится к адресу, который отсутствует в отображении, то процессор сгенерирует исключение и управление получит код операционной системы. Он выдаст пользователю сообщение о фатальном сбое в программе и уничтожит процесс.

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

Если вы хотите более детально разобраться с этими вопросами, то очень рекомендую книгу Олифер, Олифер. Сетевые операционные системы. http://www.ozon.ru/context/detail/id/3562333

Консультировал: coremaster1 (Профессор)
Дата отправки: 16.07.2012, 09:43
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное