Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Неименованные программные каналыСодержание книги
Поиск на нашем сайте Неименованный программный канал в Unix является однонаправленным синхронным средством связи, используемым двумя родственными процессами для обмена данными и синхронизации друг друга. Если при организации взаимодействия между процессами с помощью программного канала данные должны пересылаться в обоих направлениях, то необходимо организовать два канала. При организации взаимодействия процессов через программный канал один процесс записывает данные с одного конца канала, а другой процесс считывает данные с другого конца этого канала. Программные каналы аналогичны файлам, хотя и несколько отличаются от них - попытка записи в «полный» канал приводит к приостановке процесса записи до тех пор, пока канал снова не окажется в состоянии принимать данные, т.е. пока данные не будут прочитаны с другого конца канала. Аналогичная ситуация возникает при попытке чтения из «пустого» канала. Такие приостановки процессов являются главным средством синхронизации в параллельных программах на языке Си. Свойства программных каналов: · до создания нового процесса каналы должны быть установлены в порождающем процессе; · должны быть назначены дескрипторы каналов, указывающие концы канала для чтения и записи (аналогично дескрипторам файлов). · порожденный процесс «наследует» каналы, файлы и данные от порождающего его процесса. · дескрипторы файлов и каналов в порожденном процессе являются копиями дескрипторов файлов и каналов порождающего процесса. Рассмотрим процесс создания программного канала между родственными процессами подробнее. Для организации программного канала необходимо выполнить следующие действия: 1) Установить программный канал системным вызовом pipe(p) ДО создания нового процесса: int p; pipe(p); В результате выполнения системного вызова pipe() в p[0] содержится дескриптор №3 (это дескриптор для чтения из программного канала). Для удобства будем его обозначать p[R]. В p[1] содержится дескриптор №4 (это дескриптор для записи в программный канал). Для удобства будем его обозначать p[W]. Замечание. Для того чтобы можно было воспользоваться обозначениями p[R] и p[W], в программе необходимо использовать следующие определения: #define R 0 #define W 1 После выполнения системного вызова pipe() программный канал установлен и определены дескрипторы №3 и №4 (первые свободные дескрипторы)
2). После установки программного канала системным вызовом fork() создается параллельный процесс. При этом происходит дублирование сегмента данных и вновь созданному (порожденному) процессу передается информация о созданном программном канале и соответствующих ему дескрипторах. Пересылка файлов через программный канал между родственными процессами. В приводимой ниже программе показана установка программного канала (системный вызов pipe()), создание параллельного процесса (системный вызов fork()), закрытие лишних дескрипторов и пересылка файла (его имя запрашивает порожденный процесс) от потомка к предку. #include <stdio.h> int main(void) /* pipe1.c */ /* Пересылка файла между родственными */ /* процессами через программный канал */ { int fd[2], N, F, L, status; char A[20], IN[512], OUT[512]; int f; pipe(fd); /* установка программного канала */ /* до создания параллельного процесса */ printf("PIPE READY:"): printf("fd[0]= %d fd[1]= %d \n", fd[0], fd[1]); /*создание параллельного процесса*/ switch(fork()) { case -1: /* Ошибка при порождении процесса */ puts("Ошибка... fork()\n"); exit(0); case 0: /* Это потомок... */ close(fd[0]); /* Потомок не будет читать */ /* из программного канала */ printf("Введите имя файла:"); scanf("%s", A); f = open(A, 0); /* Открытие файла в режиме чтения (0) */ while((N = read(f, IN, 512))!= 0) write(fd[1], IN, N); /* Запись в канал */ exit(2); default: /* Коды предка */ close(fd[1]); /* Предок писать в канал не будет */ while((L = read(fd[0], OUT, 512)) == 512) printf("%s", OUT); printf("%s\n", OUT); wait(&status); } } 24. Уровни планирования. Уровни планирования Существует два вида планирования в вычислительных системах: · планирование заданий; · планирование использования процессора. Планирование заданий появилось в системах пакетной обработки после того, как для хранения сформированных пакетов заданий начали использоваться магнитные диски. Магнитные диски, будучи устройствами прямого доступа, позволяют загружать задания в компьютер в произвольном порядке, а не только в том, в котором они были записаны на диск. Изменяя порядок загрузки заданий в вычислительную систему, можно повысить эффективность ее использования. Процедуру выбора очередного задания для загрузки в машину, т.е. для порождения соответствующего процесса, называют планированием заданий. Планирование использования процессора впервые возникает в мультипрограммных вычислительных системах, где в состоянии готовность могут одновременно находиться несколько процессов. Именно для процедуры выбора из них одного процесса, который получит процессор в свое распоряжение, т.е. будет переведен в состояние исполнение, используется это словосочетание. 25. Критерии планирования и требования к алгоритмам планирования. Критерии планирования и требования к алгоритмам Для каждого уровня планирования процессов можно предложить много различных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой, и целями, которых мы хотим достичь, используя планирование. К числу таких целей можно отнести: § Справедливость: гарантировать каждому заданию или процессу определенную часть времени использования процессора в компьютерной системе, стараясь не допустить возникновения ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не приступал к выполнению. § Эффективность: постараться занять процессор на все 100% рабочего времени, не позволяя ему простаивать в ожидании процессов готовых к исполнению. В реальных вычислительных системах загрузка процессора колеблется от 40 до 90 процентов. § Сокращение полного времени выполнения (turnaround time): обеспечить минимальное время между стартом процесса или постановкой задания в очередь для загрузки и его завершением. § Сокращение времени ожидания (waiting time): минимизировать время, которое проводят процессы в состоянии готовность и задания в очереди для загрузки. § Сокращение времени отклика (response time): минимизировать время, которое требуется процессу в интерактивных системах для ответа на запрос пользователя. Независимо от поставленных целей планирования желательно также, чтобы алгоритмы обладали следующими свойствами: § Были предсказуемыми. Одно и то же задание должно выполняться приблизительно за одно и то же время. Применение алгоритма планирования не должно приводить, к примеру, к извлечению корня квадратного из 4 за сотые доли секунды при одном запуске и за несколько суток при втором запуске. § Имели минимальные накладные расходы, связанные с их работой. Если на каждые 100 миллисекунд, выделенных процессу для использования процессора, будет приходиться 200 миллисекунд на определение того, какой именно процесс получит процессор в свое распоряжение, и на переключение контекста, то такой алгоритм, очевидно, использовать не стоит. § Равномерно загружали ресурсы вычислительной системы, отдавая предпочтение тем процессам, которые будут занимать малоиспользуемые ресурсы. § Обладали масштабируемостью, т.е. не сразу теряли работоспособность при увеличении нагрузки. Например, рост количества процессов в системе в два раза не должен приводить к увеличению полного времени выполнения процессов на порядок. 26. Параметры планирования. К статическим параметрам процессов относятся характеристики, как правило, присущие заданиям уже на этапе загрузки: § Каким пользователем запущен процесс или сформировано задание. § Насколько важной является поставленная задача, т. е. каков приоритет ее выполнения. § Сколько процессорного времени запрошено пользователем для решения задачи. § Каково соотношение процессорного времени и времени, необходимого для осуществления операций ввода-вывода. § Какие ресурсы вычислительной системы (оперативная память, устройства ввода-вывода, специальные библиотеки и системные программы и т. д.) и в каком количестве необходимы заданию. Для среднесрочного планирования в качестве таких характеристик может выступать следующая информация: § Сколько времени прошло со времени выгрузки процесса на диск или его загрузки в оперативную память. § Сколько оперативной памяти занимает процесс. § Сколько процессорного времени было уже предоставлено процессу. 27. Вытесняющее и невытесняющее планирование. . Вытесняющее и невытесняющее планирование Процесс планирования осуществляется частью операционной системы, называемой планировщиком. Планировщик может принимать решения о выборе для исполнения нового процесса, из числа находящихся в состоянии готовность, в следующих четырех случаях: 1. Когда процесс переводится из состояния исполнение в состояние завершение. 2. Когда процесс переводится из состояния исполнение в состояние ожидание. 3. Когда процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера). 4. Когда процесс переводится из состояния ожидание в состояние готовность (завершилась операция ввода-вывода или произошло другое событие). Подробно процедура такого перевода была рассмотрена нами в разделе «Введение в управление процессами» (параграф 6.3.5 «Переключение контекста»), где мы показали, почему при этом возникает возможность смены процесса, находящегося в состоянии исполнение. Если планирование осуществляется только в случаях 1 и 2, говорят, что имеет место невытесняющее (nonpreemptive) планирование. В противном случае говорят о вытесняющем (preemptive) планировании. Термин “вытесняющее планирование” возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом. 28. Алгоритмы планирования First-Come, First-Served (FCFS) и Round Robin (RR).
|
||
|
Последнее изменение этой страницы: 2016-08-16; просмотров: 453; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.008 с.) |