Главная » Просмотр файлов » Гордеев А.В. Операционные системы (2-е изд., 2004)

Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 11

Файл №1186250 Гордеев А.В. Операционные системы (2-е изд., 2004) (Гордеев А.В. Операционные системы (2-е изд., 2004)) 11 страницаГордеев А.В. Операционные системы (2-е изд., 2004) (1186250) страница 112020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

Более того, программист,создающий многопоточное приложение, может заранее продумать работу множе­ства потоков процесса таким образом, чтобы они могли взаимодействовать наибо­лее выгодным способом, а не конкурировать за ресурсы тогда, когда этого можноизбежать.Для того чтобы можно было эффективно организовать параллельное выполнениерассмотренных сущностей (процессов и потоков), в архитектуру современных про­цессоров включены средства для работы со специальной информационной струк­турой, описывающей ту или иную сущность. Для этого уже на уровне архитектурымикропроцессора используется понятие задача (task). Оно как бы объединяет в себеи обычный процесс, и поток выполнения (тред). Это понятие и поддерживаемаядля него на уровне аппаратуры информационная структура позволяют в дальней­шем при разработке операционной системы строить соответствующие дескрипто­ры как для задач, так и для процессов.

И отличаться эти дескрипторы будут преждевсего тем, что дескриптор задачи может хранить только контекст приостановлен­ного вычислительного процесса, тогда как дескриптор процесса должен содержатьполя, описывающие тем или иным способом ресурсы, выделенные этому процес­су. Для хранения контекста задачи в микропроцессорах с архитектурой i32 имеет­ся специальный сегмент состояния задачи (Task State Segment, TSS). А для отобра­жения информации о процессе используется уже иная информационная структура,однако она включает в себя TSS. Другими словами, сегмент состояния задачи, по­дробно рассматриваемый в разделе «Адресация в 32-разрядных микропроцессо­рах i80x86 при работе в защищенном режиме» главы 4, используется как основадля дескриптора процесса.

Таким образом, дескриптор процесса больше по разме­ру, чем TSS, и включает в себя такие традиционные поля, как идентификатор про­цесса, его имя, тип, приоритет и проч.Каждый поток (в случае использования так называемой «плоской» модели памя­ти — см. раздел «Сегментная, страничная и сегментно-страничная организацияпамяти» в главе 3) может быть оформлен в виде самостоятельного сегмента, чтоприводит к тому, что простая (не многопоточная) программа будет иметь всегоодин сегмент кода в виртуальном адресном пространстве.Понятия вычислительного процесса и ресурса41Теперь, если вернуться к уже упомянутому файлу CONFIG.SYS, в котором для опера­ционной системы OS/2 указываются наиболее важные параметры, определяющиеее работу, стоит заметить, что в этом файле строка THREADS=1024 указывает на ко­личество не процессов, а именно задач.

И под задачей в данном случае понимаетсякак процесс, так и поток этого процесса.К большому сожалению, практически невозможно использовать термины «зада­ча» и «процесс» с однозначным толкованием, чтобы под задачей обязательно по­нимать поток, в то время как термин «процесс» означал бы множество потоков.Значение этих терминов по-прежнему сильно зависит от контекста. И это харак­терно практически для каждой книги, в том числе и для учебной литературы. Гре­шен этим и автор. Остается надеяться, что со временем все же ситуация изменит­ся, и толкование этих слов будет более четким и строгим.В завершение можно привести несколько советов по использованию потоков вы­полнения при создании приложений, заимствованных из [28].а В случае однопроцессорной системы множество параллельных потоков частоне ускоряет работу приложения, поскольку в каждый отдельно взятый проме­жуток времени возможно выполнение только одного потока.

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

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

Однако необходимо осознать тот факт, что процессор одинна всех, а потоков много. Если в вашей программе главная процедура передаетнечто для обработки в низкоприоритетный поток, то сама программа становит­ся просто неуправляемой.• Потоки хорошо работают, когда они независимы.

Но они начинают работатьнепродуктивно, когда вынуждены часто синхронизироваться для доступа к об­щим ресурсам. Взаимные блокировки и критические секции отнюдь не добав­ляют скорости работы системы, хотя без использования этих механизмов взаи­модействующие вычисления организовывать нельзя.Q Помните, что память виртуальна. Механизм виртуальной памяти (см. раз­дел «Память и отображения, виртуальное адресное пространство» в главе 3) сле­дит за тем, какая часть виртуального адресного пространства должна находить­ся в оперативной памяти, а какая должна быть сброшена в файл подкачки.42Глава 1. Основные понятияПотоки усложняют ситуацию, если они обращаются в одно и то же время к раз­ным адресам виртуального адресного пространства приложения. Это значи­тельно увеличивает нагрузку на систему, особенно при небольшом объеме кэш­памяти. Помните, что реально память не всегда «свободна», как это пишутв информационных окошках «О системе».

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

Пользователь мо­жет создавать самые непредсказуемые ситуации. Это очень ответственный мо­мент в разработке многопоточных приложений.•Не возлагайте на поток несколько функций. Сложные функциональные отно­шения затрудняют понимание общей структуры приложения, его алгоритм. Чемпроще и однозначнее каждая из рассматриваемых ситуаций, тем больше веро­ятность, что ошибок удастся избежать.Основные виды ресурсови возможности их разделенияРассмотрим кратко основные виды ресурсов вычислительной системы и способыих разделения (см. рис.

1.5). Прежде всего, одним из важнейших ресурсов являет­ся сам процессор 1 , точнее — процессорное время. Процессорное время делитсяпопеременно (параллельно). Имеется множество методов разделения этого ресур­са (см. раздел «Планирование и диспетчеризация процессов и задач» в главе 2).Вторым видом ресурсов вычислительной системы можно считать память. Опера­тивная память может делиться и одновременно (то есть в памяти одновременноможет располагаться несколько задач или, по крайней мере, текущих фрагментов,участвующих в вычислениях), и попеременно (в разные моменты оперативная па­мять может предоставляться для разных вычислительных процессов).

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

Поэтому проблема эффективного разделения оперативной памятимежду параллельно выполняемыми вычислительными процессами является одРазговор о процессоре как об одном из ресурсов более характерен для мультипроцессорных систем.В случае однопроцессорных систем чаще говорят о процессорном времени.Основные виды ресурсов и возможности их разделения43ной из самых актуальных.

Достаточно подробно вопросы распределения памятимежду параллельно выполняющимися процессами рассмотрены в главе 3.Внешняя память тоже является ресурсом, который часто необходим для выполне­ния вычислений. Когда говорят о внешней памяти (например, памяти на магнит­ных дисках), то собственно память и доступ1 к ней считаются разными видамиресурса. Каждый из этих ресурсов может предоставляться независимо от другого.Но для полноценной работы с внешней памятью необходимо иметь оба этих ре­сурса. Собственно внешняя память может разделяться и одновременно, а вот дос­туп к ней всегда разделяется попеременно.Если говорить о внешних устройствах, то они, как правило, могут разделяться па­раллельно, если используются механизмы прямого доступа. Если же устройствоработает с последовательным доступом, то оно не может считаться разделяемымресурсом. Простыми и наглядными примерами внешних устройств, которые немогут быть разделяемыми, являются принтер и накопитель на магнитной ленте.Действительно, если допустить, что принтер можно разделять между двумя про­цессами, которые смогут его использовать (управлять его работой) попеременно,то результаты печати, скорее всего, окажутся негодными — фрагменты выведен­ного текста могут перемешаться таким образом, что будет не понятно, что есть что.Аналогично и для накопителя на магнитной ленте.

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

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

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6547
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее