кр. КР2. Процессы в операционных системах. Состояние, операции над процессами. 4
Скачать 251.05 Kb.
|
ОглавлениеВведение 2 Процессы в операционных системах. Состояние, операции над процессами. 4 Необходимость процессов и потоков 4 Процесс и поток – понятия и свойства 4 Итоговые определения 8 Создание процессов и потоков 11 Завершение процесса 13 Операции над процессами и связанные с ними понятия 14 Набор операций 14 Блок управления процессом (рсв Process Control Block) и контекст процесса 15 Часть 2. Практическая часть контрольной работы 17 Часть 3. Изучение Диспетчера задач. 21 21 ВведениеТрудно назвать другую сферу человечества, которая так стремительно развивается и порождает такое многообразие проблем, как информатизация и компьютеризация общества. История развития информационных технологий характеризуется быстрыми изменениями концептуальных понятий, технических средств, методов и сфер их применения. В современных реалиях способность использовать промышленные информационные технологии стала очень актуальной для большинства людей. Проникновение компьютеров во все сферы общественной жизни дает понять, что культура общения с компьютером становится общей культурой человека. При включении компьютера операционная система загружается в память раньше других программ, а затем служит платформой и средой для их работы. Без операционной системы работа с компьютером немыслима. Знание операционной системы необходимо для успешного использования современных компьютеров. Предшественниками операционной системы должны были стать утилиты (например, погрузчики), а также библиотеки общеупотребительных подпрограмм, которые начали разрабатываться с появлением компьютеров общего назначения 1-го поколения (конец 1940-х годов). Утилиты минимизировали физические манипуляции оператора с устройством, а библиотеки позволили избежать повторного программирования одних и тех же действий (выполнения операций ввода-вывода, вычисления математических функций и т.д.). На сегодняшний день операционная система Windows от Microsoft во всех ее проявлениях, несомненно, считается наиболее широко используемой операционной системой на ПК. Очевидно, что знакомство с ПК должно начинаться со знакомства с Windows, потому что без него работа на ПК немыслима для большинства пользователей. Целью данной работы является анализ общих основ операционных систем и особенностей разработки наиболее популярной операционной системы - Windows. В статье будет рассмотрена основная сущность операционных систем, таких как процесс и файл, их управление и основные характеристики. Развитие системы Windows рассматривается на различных обновлениях, начиная с первых графических накладок на ОС MS-DOS, и заканчивая последней версией - Windows Vista. В качестве основы информации для данного резюме были использованы учебники и справочники по информатике, материалы с веб-сайтов и Интернет-изданий, посвященных компьютерным технологиям. Процессы в операционных системах. Состояние, операции над процессами.Необходимость процессов и потоковКлючевое требование к большинству современных ОС – мультипрограммирование, или многозадачность: способность одновременно или попеременно выполнять несколько программ, совместно использующих не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода, данные. Чтобы поддерживать мультипрограммирование, ОС должна определить и оформить для себя те внутренние единицы работы, между которыми будет разделяться процессор и другие ресурсы компьютера. В настоящее время в большинстве операционных систем определены два типа единиц работы – процесс (задача) и поток (нить). Несколько вариантов названий обусловлено различиями в культурах разработчиков разных операционных систем, по-разному называющих одни и те же сущности. Процесс - более крупная единица работы задачи, требует для своего выполнения нескольких более мелких работ - потоков. Процесс и поток – понятия и свойстваЛюбая работа вычислительной системы заключается в выполнении некоторого программного кода. Чтобы этот программный код мог быть выполнен, его необходимо загрузить в оперативную память, возможно, выделить некоторое место на диске для хранения данных, предоставить доступ к устройствам ввода-вывода, например к последовательному порту для получения данных по подключенному к этому порту модему; и т. д. В ходе выполнения программе может также понадобиться доступ к информационным ресурсам, например файлам, портам TCP/UPD, семафорам. И для выполнения программы необходимо предоставление ей процессорного времени, то есть времени, в течение которого процессор выполняет коды данной программы. В операционных системах, где существуют и процессы, и потоки, процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов, кроме одного — процессорного времени. Этот последний важнейший ресурс распределяется операционной системой между другими единицами работы — потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. В простейшем случае процесс состоит из одного потока, и именно таким образом трактовалось понятие «процесс» до середины 80-х годов (например, в ранних версиях UNIX) и в таком же виде оно сохранилось в некоторых современных ОС. В таких системах понятие «поток» полностью поглощается понятием «процесс», то есть остается только одна единица работы и потребления ресурсов — процесс. Мультипрограммирование осуществляется в таких ОС на уровне процессов. Для того чтобы процессы не могли вмешаться в распределение ресурсов, а также не могли повредить коды и данные друг друга, важнейшей задачей ОС является изоляция одного процесса от другого. Для этого операционная система обеспечивает каждый процесс отдельным виртуальным адресным пространством, так что ни один процесс не может получить прямого доступа к командам и данным другого процесса. Виртуальное адресное пространство процесса — это совокупность адресов, которыми может манипулировать программный модуль процесса. Операционная система отображает виртуальное адресное пространство процесса на отведенную процессу физическую память. При необходимости взаимодействия процессы обращаются к операционной системе, которая, выполняя функции посредника, предоставляет им средства межпроцессной связи — конвейеры, почтовые ящики, разделяемые секции памяти и некоторые другие. Однако в системах, в которых отсутствует понятие потока, возникают проблемы при организации параллельных вычислений в рамках процесса. А такая необходимость может возникать. Действительно, при мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем в однопрограммном режиме (всякое разделение ресурсов только замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса). Однако приложение, выполняемое в рамках одного процесса, может обладать внутренним параллелизмом, который в принципе мог бы позволить ускорить его решение. Если, например, в программе предусмотрено обращение к внешнему устройству, то на время этой операции можно не блокировать выполнение всего процесса, а продолжить вычисления по другой ветви программы. Параллельное выполнение нескольких работ в рамках одного интерактивного приложения повышает эффективность работы пользователя. Так, при работе с текстовым редактором желательно иметь возможность совмещать набор нового текста с такими продолжительными по времени операциями, как переформатирование значительной части текста, печать документа или его сохранение на локальном или удаленном диске. Еще одним примером необходимости распараллеливания является сетевой сервер баз данных. В этом случае параллелизм желателен как для обслуживания различных запросов к базе данных, так и для более быстрого выполнения отдельного запроса за счет одновременного просмотра различных записей базы. Потоки возникли в операционных системах как средство распараллеливания вычислений. Конечно, задача распараллеливания вычислений в рамках одного приложения может быть решена и традиционными способами. Во-первых, прикладной программист может взять на себя сложную задачу организации параллелизма, выделив в приложении некоторую подпрограмму- диспетчер, которая периодически передает управление той или иной ветви вычислений. При этом программа получается логически весьма запутанной, с многочисленными передачами управления, что существенно затрудняет ее отладку и модификацию. Во-вторых, решением является создание для одного приложения нескольких процессов для каждой из параллельных работ. Однако использование для создания процессов стандартных средств ОС не позволяет учесть тот факт, что эти процессы решают единую задачу, а значит, имеют много общего между собой — они могут работать с одними и теми же данными, использовать один и тот же кодовый сегмент, наделяться одними и теми же правами доступа к ресурсам вычислительной системы. Так, если в примере с сервером баз данных создавать отдельные процессы для каждого запроса, поступающего из сети, то все процессы будут выполнять один и тот же программный код и выполнять поиск в записях, общих для всех процессов файлов данных. А операционная система при таком подходе будет рассматривать эти процессы наравне со всеми остальными процессами и с помощью универсальных механизмов обеспечивать их изоляцию друг от друга. В данном случае все эти достаточно громоздкие механизмы используются явно не по назначению, выполняя не только бесполезную, но и вредную работу, затрудняющую обмен данными между различными частями приложения. Кроме того, на создание каждого процесса ОС тратит определенные системные ресурсы, которые в данном случае неоправданно дублируются — каждому процессу выделяются собственное виртуальное адресное пространство, физическая память, закрепляются устройства ввода-вывода и т. п. Поэтому в операционной системе наряду с процессами нужен другой механизм распараллеливания вычислений, который учитывал бы тесные связи между отдельными ветвями вычислений одного и того же приложения. Для этих целей современные ОС предлагают механизм многопоточной обработки (multithreading). При этом вводится новая единица работы — поток выполнения, а понятие «процесс» в значительной степени меняет смысл. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой. ОС распределяет процессорное время между потоками. Процессу ОС назначает адресное пространство и набор ресурсов, которые совместно используются всеми его потоками. Итоговые определенияДля систем, использующих обе концепции – и потока, и процесса: Процесс – единица активности операционной системы, создаваемая при запуске программы на выполнение, и обладающая свойствами: Отдельное виртуальное адресное пространство Код выполняемой программы, загруженный в адресное пространство процесса Начальные параметры запуска – аргументы запуска, рабочую папку и т.п. Набор привилегий на доступ к системным ресурсам и вызовам Текущее состояние, включая статус процесса Набор потоков, выполняющих код программы в адресном пространстве процесса, имеющих доступ к общим ресурсам процесса Поток – единица активности операционной системы, создаваемая при запуске процесса системой или программно из другого потока того же процесса, обладающая свойствами: Счетчик команд – указатель на текущую выполняемую команду Регистры – значения регистров процессора в текущий момент времени Стек Состояние Для конкретной операционной системы определение процесса может быть лаконичнее, так как опирается на конкретные механизмы этой системы, например: Unix использует два системно- ориентированных определения процесса: Процесс – объект, зарегистрированный в таблице процессов ОС Процесс – объект, порожденный системным вызовом fork() Для систем, не поддерживающих параллельное выполнение средствами потоков, каждый процесс фактически имеет один поток, и понятия потока и процесса объединены. Для систем, не поддерживающих многозадачность, необходимость в понятии процесса отпадает – одновременно может быть запущена только одна программа, и нет необходимости в разделении запущенных программ и их свойств. Эффективность концепции потоков для параллельных вычислений. Создание потоков требует от ОС меньших накладных расходов, чем процессов. В отличие от процессов, которые принадлежат разным, вообще говоря, конкурирующим приложениям, все потоки одного процесса всегда принадлежат одному приложению, поэтому ОС изолирует потоки в гораздо меньшей степени, нежели процессы в традиционной мультипрограммной системе. Все потоки одного процесса используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти, одно и то же адресное пространство. Это означает, что они разделяют одни и те же глобальные переменные. Поскольку каждый поток может иметь доступ к любому виртуальному адресу процесса, один поток может использовать стек другого потока. Между потоками одного процесса нет полной защиты, потому что, во-первых, это невозможно, а во-вторых, не нужно. Чтобы организовать взаимодействие и обмен данными, потокам вовсе не требуется обращаться к ОС, им достаточно использовать общую память — один поток записывает данные, а другой читает их. С другой стороны, потоки разных процессов по-прежнему хорошо защищены друг от друга. Итак, мультипрограммирование более эффективно на уровне потоков, а не процессов. Каждый поток имеет собственный счетчик команд и стек. Задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей. Например, если электронная таблица была разработана с учетом возможностей многопоточной обработки, то пользователь может запросить пересчет своего рабочего листа и одновременно продолжать заполнять таблицу. Особенно эффективно можно использовать многопоточность для выполнения распределенных приложений, например, многопоточный сервер может параллельно выполнять запросы сразу нескольких клиентов. Использование потоков связано не только со стремлением повысить производительность системы за счет параллельных вычислений, но и с целью создания более читабельных, логичных программ. Введение нескольких потоков выполнения упрощает программирование. Например, в задачах типа «писатель-читатель» один поток выполняет запись в буфер, а другой считывает записи из него. Поскольку они разделяют общий буфер, не стоит их делать отдельными процессами. Другой пример использования потоков — управление сигналами, такими как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания один поток назначается для постоянного ожидания поступления сигналов. Таким образом, использование потоков может сократить необходимость в прерываниях пользовательского уровня. В этих примерах не столь важно параллельное выполнение, сколь важна ясность программы. Наибольший эффект от введения многопоточной обработки достигается в мультипроцессорных системах, в которых потоки, в том числе и принадлежащие одному процессу, могут выполняться на разных процессорах действительно параллельно (а не псевдопараллельно). Создание процессов и потоковСоздать процесс — это прежде всего означает создать описатель процесса, в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе,, необходимые операционной системе для управления им. В число таких сведений могут входить, например, идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т. п. Примерами описателей процесса являются блок управления задачей (ТСВ — Task Control Block) в OS/360, управляющий блок процесса (РСВ — Process Control Block) в OS/2, дескриптор процесса в UNIX, объект-процесс (object-process) в Windows NT. Создание описателя процесса – это появление в системе еще одного претендента на вычислительные ресурсы. Начиная с этого момента при распределении ресурсов ОС должна принимать во внимание потребности нового процесса. Создание процесса включает загрузку кодов и данных исполняемой программы данного процесса с диска в оперативную память. Для этого ОС должна обнаружить местоположение такой программы на диске, перераспределить оперативную память и выделить память исполняемой программе нового процесса. Затем необходимо считать программу в выделенные для нее участки памяти и, возможно, изменить параметры программы в зависимости от размещения в памяти. В системах с виртуальной памятью в начальный момент может загружаться только часть кодов и данных процесса, с тем чтобы «подкачивать» остальные по мере необходимости. Существуют системы, в которых на этапе создания процесса не требуется непременно загружать коды и данные в оперативную память, вместо этого исполняемый модуль копируется из того каталога файловой системы, в котором он изначально находился, в область подкачки — специальную область диска, отведенную для хранения кодов и данных процессов. При выполнении всех этих действий подсистема управления процессами тесно взаимодействует с подсистемой управления памятью и файловой системой. В многопоточной системе при создании процесса ОС создает для каждого процесса как минимум один поток выполнения. При создании потока так же, как и при создании процесса, операционная система генерирует специальную информационную структуру — описатель потока, который содержит идентификатор потока, данные о правах доступа и приоритете, о состоянии потока и другую информацию. В исходном состоянии поток (или процесс, если речь идет о системе, в которой понятие «поток» не определяется) находится в приостановленном состоянии. Момент выборки потока на выполнение осуществляется в соответствии с принятым в данной системе правилом предоставления процессорного времени и с учетом всех существующих в данный момент потоков и процессов. В случае если коды и данные процесса находятся в области подкачки, необходимым условием активизации потока процесса является также наличие места в оперативной памяти для загрузки его исполняемого модуля. Во многих системах поток может обратиться к ОС с запросом на создание так называемых потоков-потомков. В разных ОС по-разному строятся отношения между потоками-потомками и их родителями. Например, в одних ОС выполнение родительского потока синхронизируется с его потомками, в частности после завершения родительского потока ОС может снимать с выполнения всех его потомков. В других системах потоки-потомки могут выполняться асинхронно по отношению к родительскому потоку. Потомки, как правило, наследуют многие свойства родительских потоков. Во многих системах порождение потомков является основным механизмом создания процессов и потоков. Завершение процессаВ большинстве операционных систем есть одни и те же варианты завершения процесса, различающиеся деталями реализации: Нормальное завершение процесса: завершение при достижении конца основной функции программы (разновидности main), или при вызове системной функции выхода (например, exit в unix). Принудительное завершение процесса: производится внешним процессом с помощью вызова соответствующей системной функции (например, системного вызова kill в unix). Результат завершения процесса При завершении процесса освобождаются все системные ресурсы, занятые им – открытые файлы, память, и др. Соответственно, завершаются все потоки, принадлежащие процессу. В unix, если процесс-потомок завершает свою работу прежде процесса-предка, и процесс-предок явно не указал, что он не заинтересован в получении информации о статусе завершения процесса-потомка, то завершившийся процесс-потомок не исчезает из системы окончательно, а остается в состоянии «закончил исполнение» либо до завершения процесса-предка, либо до того момента, когда предок проверит завершение потомка. Процессы и потоки – основополагающая концепция современных ОС, предоставляющая основу для решения любых вычислительных задач. В большинстве прикладных ОС эти понятия означают одно и то же, различаясь деталями реализации. Операции над процессами и связанные с ними понятияНабор операцийОперационная система, совершая операции над процессами, изменяет их состояния. Операции, совершаемые операционной системой, соответствуют стрелкам на диаграмме состояний, изображенной на рисунке 2.3. Рассмотрим их попарно: создание процесса – завершение процесса; приостановка процесса (перевод из состояния «исполнение» в состояние «готовность») – запуск процесса (перевод из состояния «готовность» в состояние «исполнение»); блокирование процесса (перевод из состояния «исполнение» в состояние «ожидание») – разблокирование процесса (перевод из состояния «ожидание» в состояние «готовность»). Операции создания и завершения процесса являются одноразовыми. Они применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов, как правило, являются многоразовыми. При операции запуск процесса операционная система из множества процессов, находящихся в состоянии «готовность», выбирает один. Выбор осуществляется согласно заложенного в операционной системе алгоритма планирования. Блок управления процессом (рсв Process Control Block) и контекст процессаДля управления процессами операционной системе необходима информация об объекте управления, т.е. о процессах. Процесс характеризуется следующей информацией: программный счетчик процесса, т.е. адрес команды для исполнения процесса; содержимое регистров процессора; данные, необходимые для планирования использования процессора и управления памятью (приоритет процесса, размер и расположение адресного пространства и т. д.); учетные данные (идентификационный номер процесса, какой пользователь инициировал его работу, общее время использования процессора данным процессом и т. д.); сведения об устройствах ввода-вывода, связанных с процессом (например, какие устройства закреплены за процессом, таблица открытых файлов). Состав и строение данных о процессе зависят от конкретной операционной системы. В рамках курса операционные системы считается, что информация о процессах доступна операционной системе и хранится в одной структуре данных, которая называется блоком управления процессом PCB (Process Control Block). Блок управления процессом является моделью процесса для операционной системы. Любая операция, производимая операционной системой над процессом, вызывает изменения в PCB. Содержимое PCB между операциями остается постоянным. Информация, хранимая в блоке управления процессом, делится на две части: регистровый контекст и системный контекст. Регистровым контекстом процесса называется содержимое всех регистров общего назначения процессора (включая значение программного счетчика). Содержимое остальных регистров процессора называется системным контекстом процесса. Информации, получаемой с регистровых и системных контекстов, достаточно для управления работой процесса в операционной системе. +С точки зрения пользователя, наибольший интерес вызывает вычислительная деятельность процесса, последовательность преобразования данных и полученные результаты. Пользовательским контекстом называются данные, находящиеся в адресном пространстве процесса Совокупность регистрового, системного и пользовательского контекстов процесса называется контекстом процесса. В любой момент времени процесс полностью характеризуется своим контекстом. Часть 2. Практическая часть контрольной работыРезультаты выполнения команды Ipconfig Результаты выполнения команды Ar Результаты выполнения команды Route
Вопросы: Хост- любое устройство, предоставляющее сервисы формата «клиент-сервер» в режиме сервера по каким-либо интерфейсам и уникально определённое на этих интерфейсах. В более широком смысле под хостом могут понимать любой компьютер, подключённый к локальной или глобальной сети. Шлюз- аппаратный маршрутизатор или программное обеспечение для сопряжения компьютерных сетей, использующих разные протоколы. Хоп- кол-во переходов из одной подсети в другую Время жизни пакета-редельное число итераций, которое пакет данных может совершить до своего исчезновения. Выражаясь не так официально, TTL — это число «прыжков» от устройства к устройству, которое может совершить пакет Маршрут- путь, по которому передается паке Маска сети- называется битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети (это определение подсети IP-адресов) Авторитетный/неавторитетный (компетентный) DNS-сервер- авторитетные (когда сервер заявляет, что сам отвечает за зону) и неавторитетные , когда сервер обрабатывает запрос, и возвращает ответ других серверов Порт TCP- идентифицируемый номером системный ресурс, выделяемый приложению, выполняемому на некотором сетевом хосте, для связи с приложениями, выполняемыми на других сетевых хостах Петля обратной связи- является межорганизационной формой обратной связи, посредством которой поставщик почтовых ящиков пересылает жалобы, исходящие от их пользователей, в организации отправителя. Время отклика- в технологии время, которое требуется системе или функциональной единице на то, чтобы отреагировать на данный ввод. 2. Утилита ping используется для проверки конфигурирования TCP/IP и диагностики ошибок соединения. Она определяет доступность и функционирование конкретного хоста. 3. Команда ping проверяет соединение с удаленным хостом путем посылки к этому хосту эхо-пакетов ICMP и прослушивания эхо-ответов. Ping ожидает каждый посланный пакет и печатает количество переданных и принятых пакетов. Каждый принятый пакет проверяется в соответствии с переданным сообщением. Если связь между хостами плохая, из сообщений ping станет ясно, сколько пакетов потеряно. 4. ARP— использующийся в компьютерных сетях протокол низкого уровня, предназначенный для определения адреса канального уровня по известному адресу сетевого уровня. Наибольшее распространение этот протокол получил благодаря повсеместности сетей IP, построенных поверх Ethernet, поскольку практически в 100 % случаев при таком сочетании используется ARP. 5. . Ping можно использовать для тестирования как имени хоста (DNS или NetBIOS), так и его IP-адреса. Если ping с IP-адресом выполнилась успешно, а с именем – неудачно, это значит, что проблема заключается в распознавании соответствия адреса и имени, а не в сетевом соединении. 6. Превышен интервал ожидания для запроса, сеть недоступна, превышен срок жизни при передаче пакета. 7. Зависит от настроек, но чаще всего да. Часть 3. Изучение Диспетчера задач.
|