Системные вызовы управления терминалом 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Системные вызовы управления терминалом



При обычных обстоятельствах терминал, связанный с процессом при помощи его стандартных дескрипторов файлов, является управляющим терминалом (control terminal) этого процесса и его сеанса. Управляющий терминал является важным атрибутом процесса, который определяет обработку генерируемых с клавиатуры прерываний. Управляющие терминалы, как и другие атрибуты процесса, наследуются при вызове fork. Более конкретно, терминал становится управляющим терминалом для сеанса, когда его открывает лидер сеанса, при условии, что терминал еще не связан с сеансом и лидер сеанса еще не имеет управляющего терминала. Вследствие этого процесс может разорвать свою связь с управляющим терминалом, изменив свой сеанс при помощи вызова setsid.

Если процесс должен получить доступ к своему управляющему терминалу независимо от состояния его стандартных дескрипторов файлов, то можно использовать имя файла /dev/tty, которое всегда интерпретируется как определяющее текущий управляющий терминал процесса.

Используя структуру termios вместе с соответствующими функциями, программа может вызвать команду stty для изменения свойств дисциплины линии связи терминала. Структуру termios можно представлять себе как объект, способный описать общее состояние терминала в соответствии с набором флагов, поддерживаемым системой для любого терминального устройства.

Функция ttyname возвращает имя терминального устройства, связанного с дескриптором открытого файла, а функция isatty возвращает значение 1 (то есть истинно в терминах языка С), если дескриптор файла описывает терминальное устройство, и 0 (ложно) – в противном случае.

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

Операционные системы: назначение и основные функции

Операционная система в наибольшей степени определяет облик всей вычислительной системы в целом. ОС выполняет две по существу мало связанные функции: обеспечение пользователю-программисту удобств посредством предоставления для него расширенной машины и повышение эффективности использования компьютера путем рационального управления его ресурсами.

ОС как расширенная машина

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

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

ОС как система управления ресурсами.

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

¾ планирование ресурса - определение, кому, когда необходимо выделить данный ресурс;

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

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

Управление процессами в операционных системах

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

Модем процесса включает в себя: 1) код программы; 2) секцию данных, хронящие глобальную переменную; 3) стек процесса, хранящий временные переменные, параметры процедур и адреса возврата; 4) текущую активность процесса.

Состояние процессов

В многозадачной системе процесс может находиться в одном из трех основных состояний:

НОВЫЙ – процесс находится в операционной памяти, но еще не начал свою работу.

ГОТОВНОСТЬ - пассивное состояние процесса, процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы и готов выполняться, но он занят выполнением другого процесса.

ПРИОСТАНОВКА – заблокированный процесс, временно выгружается из памяти для освобождения ее новому процессу.

ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов. Системные вызовы.

Fork – Используется для создания нового процесса, дублирующего вызывающий. Вызов fork: Копирует з сигмента (кода) пользовательских и системных данных без инициализации из програм. Новый процесс является копией адресного пространства родителя, следовательно, оба процесса продолают выполняться с инструкции, следующей за fork. В потомке fork возвращает 0, а в родителе – № потомка.

Clone

Exec – вызывается после fork для замены дочернего процесса новой программы. Новая программа перекрываеи память работающего процесса. Перекрывший процесс инициализируется из указанной программы и начинае выполняться сначала.

Exit – Используется для завершения процесса.

Signal – набор библиотечных функций (например: сигнал прерывания, управляющий реакцией процесса на не ожидание события).

Abort – прерывание процесса.

Brk – изменяет размер и положение сигмента данных процесса.

Конкуренция процессов

Конкуренция процесса связана с:

¾ многозадачность (выполнение нескольких процессов на одном устройстве);

¾ разделение физических ресурсов;

¾ разделение логических ресурсов;

¾ скорость выполнения;

¾ требования реального времени к …….в-в.

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

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

р(sem) или wait (sem)

if(sem!=0)

уменьшить sem на единицу

else

ждать, пока sem не станет ненулевым, затем вычесть единицу

v(sem) или signal(sem)

увеличить sem на единицу

if(очередь ожидающих процессов не пуста)

продолжить выполнение первого процесса в очереди ожидания

Обратите внимание, что обозначения р и v происходят от голландских терминов для понятий ожидания (wait) и сигнализации (signal), причем последнее понятие не следует путать с обычными сигналами UNIX.



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 151; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.129.100 (0.01 с.)