|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Адресное пространство ядра адресное пространство пользователяТаблица пользователя. 1-ая таблица. Она всегда находится в памяти. В каждой строке таблицы находится информация, которая отражает состояние процесса, указывает расположение процесса, его размер, идентификаторы процесса и запустившего его пользователя, число страниц, определенных при генерации системы и являющихся паролем, определяющим сколько процессов может существовать в системе. Эта таблица находится в адресном пространстве ядра. 2-ая таблица (менее оперативная). В ней хранятся данные и команды, т.е. реальный код и те данные, над которыми этот код будет выполнен. Состояние процесса, включая появление новых строк в таблице, инициализирует контекст. Завершение процесса - это освобождение строки в таблице. То, что таблица результатов находится в памяти, позволяет ядру обращаться к таблице и управлять ситуацией. Если процесс находится в состоянии покоя и его нужно разбудить, то это может сделать ядро. Ядро резервирует по одному контексту на каждый активный процесс. Здесь находится информация, необходимая во время выполнения процесса. Если процесс приостановлен, то контекст становится недоступным и его нельзя модифицировать. Кроме того, поскольку эта структура данных является составной частью области данных, то при выполнении операции свопирования она переносится на диск вместе с областью данных. 10. Сегментация виртуального адресного пространства процесса Управление памятью включает распределение имеющейся физической памяти между всеми существующими в системе в данный момент процессами, загрузку кодов и данных процессов в отведенные им области памяти, настройку адресно-зависимых частей кодов процесса на физические адреса выделенной области, а также защиту областей памяти каждого процесса. 11. Структура контекста процесса Каждому процессу соответствует контекст, в котором он выполняется. Этот контекст включает содержимое пользовательского адресного пространства - пользовательский контекст (т.е. содержимое сегментов программного кода, данных, стека, разделяемых сегментов и сегментов файлов, отображаемых в виртуальную память), содержимое аппаратных регистров - регистровый контекст (таких, как регистр счетчика команд, регистр состояния процессора, регистр указателя стека и регистров общего назначения), а также структуры данных ядра (контекст системного уровня), связанные с этим процессом. Контекст процесса системного уровня в ОС UNIX состоит из "статической" и "динамических" частей. У каждого процесса имеется одна статическая часть контекста системного уровня и переменное число динамических частей. Статическая часть контекста процесса системного уровня включает следующее: A.Описатель процесса, т.е. элемент таблицы описателей существующих в системе процессов. Описатель процесса включает, в частности, следующую информацию:
12. Идентификатор и дескриптор процесса. Каждый процесс в операционной системе получает уникальный идентификационный номер — PID process identificator. При создании нового процесса операционная система пытается присвоить ему свободный номер больший, чем у процесса, созданного перед ним. Если таких свободных номеров не оказывается например, мы достигли максимально возможного номера для процесса, то операционная система выбирает минимальный номер из всех свободных номеров. Дескриптор процесса включает в себя все те данные о процессе, которые могут понадобиться ОС при различных состояниях процесса. В число элементов дескриптора могут входить, например, идентификатор процесса некое условное число, обозначающее данный процесс; текущее состояние процесса; его приоритет; владелец процесса т.е. идентификатор пользователя, запустившего процесс; статистика затраченного процессом общего и процессорного времени; указатель местоположения контекста процесса и др. Дескрипторы всех процессов, существующих в системе, собраны в таблицу процессов. Контекст процесса включает данные, необходимые только для текущего процесса. Суда относятся, прежде всего, значения всех регистров процессора, включая указатель текущей команды; таблица файлов, открытых процессом; указатели на области памяти, которые должен занимать процесс при его выполнении; значения системных переменных, используемых процессом например, текущий диск и каталог, информация о последней ошибке при выполнении системных функций; другие системные флаги и режимы, которые могут иметь разные значения для разных процессов. Точный состав дескриптора и контекста сильно зависят от конкретной ОС 13. Иерархия процессов В некоторых системах, когда процесс порождает другой процесс, родительский и дочерний процессы продолжают быть определенным образом связанными друг с другом. Дочерний процесс может и сам создавать какие-нибудь процессы, формируя иерахию процессов 14. Диспетчеризация и синхронизация процессов Диспетчеризация процессов задач — это определение очерёдности получения процессора для процессов задач, находящихся в состоянии готовности, с целью их выполнения. Диспетчеризация процесса связана с его переводом из состояния готовности в состояние выполнения счёта. Диспетчеризация, для конкретного процесса, может выполняться многократно, т. е. процесс может несколько раз переходить из состояния готовности в состояние выполнения и обратно на интервале своего существования. Так как в каждый такт процессорного времени могут выполняться команды только одной задачи, диспетчеризация предполагает создание и модификацию очереди готовых к выполнению задач процессов. Элементами такой очереди как и других очередей в вычислительной системе на физическом уровне являются дескрипторы задач Диспетчеризация и синхронизация процессов Внутренняя синхронизация процессов основана на использовании аппарата событий для изменения состояний процессов в фазе «система». Состояние процесса отражает поле p_stat структуры struct proc дескриптора процесса. Процесс может находиться в одном из следующих состояний в соответствии со значением поля p_stat: 15. Понятие приоритета и очереди процессов Приоритет — свойство процесса, определяющее важность необходимость выполнения. Назначение приоритетов выполняется пользователем либо администратором системы, возможно также программное изменение приоритета процесса. На выбор оптимального уровня приоритета влияют в основном два соображения: Основной алгоритм приоритетного планирования напоминает простое круговое планирование, однако круговая очередь активных процессов формируется отдельно для каждого уровня приоритета. Пока есть хоть один активный процесс в очереди с самым высоким приоритетом, процессы с более низкими приоритетами не могут получить управление. Только когда все процессы с высшим приоритетом заблокированы либо завершены, планировщик выбирает процесс из очереди с более низким приоритетом. Приоритет, присваиваемый процессу при создании, называется статическим приоритетом. Дисциплина планирования, использующая только статические приоритеты, имеет один существенный недостаток: низкоприоритетные процессы могут надолго оказаться полностью отлученными от процессора. Иногда это приемлемо если высокоприоритетные процессы несравнимо важнее, чем низкоприоритетные, однако чаще хотелось бы, чтобы и на низкие приоритеты хоть что-нибудь перепадало, пусть даже реже и в меньшем количестве, чем на высокие. Для решения этой задачи предложено множество разных алгоритмов планирования процессов, основанных на идее динамического приоритета. 16. Средства обработки сигналов Сигналы представляют собой средство уведомления процесса о наступлении некоторого события в системе. Инициатором посылки сигнала может выступать как другой процесс, так и сама ОС. Сигналы, посылаемые ОС, уведомляют о наступлении некоторых строго предопределенных ситуаций. при этом каждой такой ситуации сопоставлен свой сигнал. Кроме того, зарезервирован один или несколько номеров сигналов, семантика которых определяется пользовательскими процессами по своему усмотрению. Сигналы являются механизмом асинхронного взаимодействия, т.е. момент прихода сигнала процессу заранее неизвестен. Однако, процесс может предвидеть возможность получения того или иного сигнала и установить определенную реакцию на его приход. В этом плане сигналы можно рассматривать как программный аналог аппаратных прерываний. При получении сигнала процессом возможны три варианта реакции на полученный сигнал: Для каждого сигнала процесс может устанавливать свой вариант реакции, например, некоторые сигналы он может игнорировать, некоторые перехватывать, а на остальные установить реакцию по умолчанию. При этом в процессе своей работы процесс может изменять вариант реакции на тот или иной сигнал. Однако, необходимо отметить, что некоторые сигналы невозможно ни перехватить, ни игнорировать. Они используются ядром ОС для управления работой процессов Если в процесс одновременно доставляется несколько различных сигналов, то порядок их обработки не определен. Если же обработки ждут несколько экземпляров одного и того же сигнала, то ответ на вопрос, сколько экземпляров будет доставлено в процесс — все или один — зависит от конкретной реализации ОС. 17. Понятие событийного программирования Событийно-ориентированное программирование — парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя клавиатура, мышь, сообщениями других программ и потоков, событиями операционной системы например, поступлением сетевого пакета. СОП можно также определить как способ построения компьютерной программы, при котором в коде как правило, в головной функции программы явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события. 18. Средства коммуникации процессов Одна из важнейших целей, которые ставятся при разработке многозадачных систем, заключается в том, чтобы разные процессы, одновременно работающие в системе, были как можно лучше изолированы друг от друга. Это означает, что процессы в идеале не должны ничего знать даже о существовании друг друга. Для каждого процесса ОС предоставляет виртуальную машину, т.е. полный набор ресурсов, имитирующий выполнение процесса на отдельном компьютере. Изоляция процессов, во-первых, является необходимым условием надежности и безопасности многозадачной системы. Один процесс не должен иметь возможности вмешаться в работу другого или получить доступ к его данным, ни по случайной ошибке, ни намеренно. Во-вторых, проектирование и отладка программ чрезвычайно усложнились бы, если бы программист должен был учитывать непредсказуемое влияние других процессов. С другой стороны, есть ситуации, когда взаимодействие необходимо. Процессы могут совместно обрабатывать общие данные, обмениваться сообщениями, ждать ответа и т.п. Система должна предоставлять в распоряжение процессов средства взаимодействия. Это не противоречит тому, что выше было сказано об изоляции процессов. Чтобы взаимодействие не привело к полному хаосу, оно должно выполняться только с помощью тех хорошо продуманных средств, которые предоставляет процессам ОС. За пределами этих средств действует изоляция процессов. Понятие взаимодействия процессов включает в себя несколько видов взаимодействия, основными из которых являются: Двоичным семафором называется переменная S, которая может принимать значения 0 и 1 и для которой определены только две операции. Сигнал — это нечто, что может быть послано процессу системой или другим процессом. С сигналом не связано никакой информации, кроме номера кода, указывающего, какой именно тип сигнала посылается. При получении сигнала процесс прерывает свою текущую работу и переходит на выполнение функции, определенной как обработчик сигналов данного типа. Механизм сигналов позволяет решить, например, проблему критической секции иным способом, чем семафоры. Сообщения также посылаются процессу системой или другим процессом, однако отличаются от сигналов в двух отношениях. Во-первых, сообщения не прерывают работу процесса-получателя. Вместо этого они становятся в очередь сообщений. Процесс должен сам вызвать функцию приема сообщения. Если очередь пуста, эта функция блокирует процесс до получения какого-нибудь сообщения. Во-вторых, с сообщением, в отличие от сигнала, может быть связана информация, передаваемая получателю. Таким образом, сообщения — это средство не только синхронизации, но и обмена данными между процессами. Общая память служит только средством обмена данными, но никак не решает проблем синхронизации. Участки программы, где происходит работа с общей памятью, часто следует рассматривать как критические секции и защищать семафорами 19. Способы реализации мультипрограммирования. Мультипрограммирование — это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Пока одна программа выполняет операцию ввода-вывода, процессор не простаивает, как это происходило при последовательном выполнении программ однопрограммный режим, а выполняет другую программу многопрограммный режим. Многозадачность почти синоним мультпрограммирования — способность ОС, обеспечивающая одновременное но не параллельное выполнение нескольких задач на одном процессоре. Существует несколько типов многозадачности. Самым простым является контекстное переключение, при котором загружаются два или более приложений, но процессорное время предоставляется только основному приложению foreground. Для выполнения фонового приложения background пользователь должен его активизировать. При кооперативной многозадачности фоновые задачи выполняются только во время простоя основного процесса например, ожидания события и только в том случае, если на это получено разрешение последнего. В режиме разделения времени вытесняющая многозадачность процессорное время разделяется между задачами в соответствии с той или иной схемой приоритета. Мультипрограммирование было реализовано в двух вариантах — в системах пакетной обработки и разделения времени. Мультипрограммные системы пакетной обработки так же, как и их однопрограммные предшественники, имели своей целью обеспечение максимальной загрузки аппаратуры компьютера, однако решали эту задачу более эффективно. В мультипрограммном пакетном режиме процессор не простаивал, пока одна программа выполняла операцию ввода-вывода как это происходило при последовательном выполнении программ в системах ранней пакетной обработки, а переключался на другую готовую к выполнению программу. В результате достигалась сбалансированная загрузка всех устройств компьютера, а следовательно, увеличивалось число задач, решаемых в единицу времени. В мультипрограммных системах пакетной обработки пользователь по-прежнему был лишен возможности интерактивно взаимодействовать со своими программами. Для того чтобы хотя бы частично вернуть пользователям ощущение непосредственного взаимодействия с компьютером, был разработан другой вариант мультипрограммных систем — системы разделения времени. Этот вариант рассчитан на многотерминальные системы, когда каждый пользователь работает за своим терминалом. В числе первых операционных систем разделения времени, разработанных в середине 60-х годов, были TSS360 компания IBM, CTSS и MULTICS Массачусетский технологический институт совместно с Bell Labs и компанией General Electric.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |