Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Демкин_Экзамен.doc
Скачиваний:
10
Добавлен:
26.11.2018
Размер:
1.2 Mб
Скачать
  1. Что такое конвейер (pipe)? что такое именованный конвейер? охарактеризуйте их. Как эти объекты можно использовать для взаимодействия программ (приведите несколько примеров)?

Конвейер в терминологии UNIX — некоторое множество процессов, для которых выполнено следующее перенаправление ввода-вывода: то, что выводит на поток стандартного вывода предыдущий процесс, попадает в поток стандартного ввода следующего процесса. Запуск конвейера реализован с помощью системного вызова pipe().

Пример запуска конвейера:

$ ps aux | grep kde | grep -v grep | gawk '{ print $2}'

Данная команда выведет номера процессов, в названии которых встречается подстрока «kde»

В программировании именованный канал или именованный конвейер (англ. named pipe) — расширение понятия конвейера в Unix и подобных ОС, один из методов межпроцессного взаимодействия. Это понятие также существует и в Microsoft Windows, хотя там его семантика существенно отличается. Традиционный канал — «безымянен», потому что существует анонимно и только во время выполнения процесса. Именованный канал — существует в системе и после завершения процесса. Он должен быть «отсоединён» или удалён когда уже не используется. Процессы обычно подсоединяются к каналу для осуществления взаимодействия между процессами.Содержание [убрать]

Именованные каналы в Unix

Вместо традиционного, безымянного конвейера оболочки (англ. shell pipeline), именованный канал создаётся явно с помощью mknod или mkfifo, и два различных процесса могут обратиться к нему по имени.

Например, можно создать канал и настроить gzip на сжатие того, что туда попадает:

mkfifo pipe

gzip -9 -c < pipe > out

Параллельно, в другом процессе можно выполнить:

cat file > pipe

что приведёт к сжатию передаваемых данных gzip-ом.

Как устроен конвейер --хз

  1. ОБЪЯСНИТЕ РАЗНИЦУ МЕЖДУ ВЗАИМОДЕЙСТВИЕМ ПРОГРАММ С ПОМОЩЬЮ РАЗДЕЛЯЕМОЙ ПАМЯТИ И ОБМЕНА СООБЩЕНИЯМИ. ОПИШИТЕ ПРЕИМУЩЕСТВА И НЕДОСТАТКИ ОБОИХ ВАРИАНТОВ. В КАКИХ СЛУЧАЯХ ПРЕДПОЧТИТЕЛЬНО ИСПОЛЬЗОВАНИЕ КАЖДОГО ИЗ НИХ (ПРИВЕДИТЕ НЕСКОЛЬКО ПРИМЕРОВ)?

MPI—все процессы работают в своем адресном пространстве. Обмен данными за счет интерфейсов

STM—процессы в одном адресном пространстве, существует возможность объединения некоторых последовательностей инструкций в атомарный блок, который либо исполняется полностью либо не исполняется вообще.

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

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

MPI хорошо применять в кластерных системах, т. к. в этом случае парадигма раздельных адресных пространств процессов хорошо согласуется с архитектурой распределенной памяти.

STM широко применяется в базах данных

  1. Что такое фрагментация? какие виды фрагментации бывают? какие виды фрагментации проявляются в каждой из 3 основных схем размещения файлов?

Фрагмента́ция — процесс дробления чего-либо на множество мелких разрозненных фрагментов.

Фрагментация данных

Возникает в результате фрагментации дискового пространства: так как на диске отсутствуют последовательные свободные блоки, то новые файлы невозможно записать целиком в одном месте, их приходится делить на фрагменты и записывать в разных частях диска, что замедляет чтение этих файлов и снижает общую производительность файловой системы. Более того: во многих файловых системах (например FAT32) начало файла записывается в начало кластера, следовательно, если сам файл или его часть по объёму меньше размера кластера, то оставшееся место в кластере остается неиспользованным. Поэтому фрагментированность диска обратно пропорциональна эффективности использования его пространства.

Виды фрагментации:

1) фрагмент6ация отдельных файлов -- большой файл занимает блоки, разбросанные по файловой системе;

2) фрагментация связанных файлов -- файлы, читающиеся вместе, разбросаны по файловой системе;

3) фрагментация свободного места -- свободные блоки разбросаны по файловой системе.

Для решения проблемы фрагментации используют утилиты-дефрагментаторы.

Способы размещения файлов на винчестере:

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

  2. Список блоков. При данном способе организации файловой системы характерно фрагментация отдельных файлов(отдельные блоки файлов разбросаны как угодно, они лишь связаны в список). Данная организация позволяет избежать фрагментации свободного места

  3. Перечь блоков в i-node. Аналогичными свойствами обладает i-node

  1. КАКОЙ МАКСИМАЛЬНЫЙ АДРЕСУЕМЫЙ ОБЪЕМ ПАМЯТИ ДЛЯ ПРОГРАММЫ НА 32-РАЗРЯДНОЙ АРХИТЕКТУРЕ? ПОЧЕМУ ОБЪЕМ ДОСТУПНОЙ ВИРТУАЛЬНОЙ ПАМЯТИ МЕНЬШЕ МАКСИМАЛЬНОГО (КУДА ДЕВАЕТСЯ РАЗНИЦА)? НА КАКИЕ ОСНОВНЫЕ ЧАСТИ ДЕЛИТСЯ ПАМЯТЬ РАБОТАЮЩЕЙ ПРОГРАММЫ? КАК ЭТО СООТНОСИТСЯ С ФОРМАТАМИ ИСПОЛНЯЕМЫХ ФАЙЛОВ?

Максимум 2^32 бит. Реально доступно меньше

Такое поведение является закономерным результатом влияния определенных аппаратных и программных факторов.

Различным устройствам типичного компьютера требуется доступ через отображаемую память. Этот механизм называется MMIO. Чтобы пространство MMIO было доступно 32-разрядным операционным системам, оно должно располагаться в первых 4 ГБ адресного пространства.

Например, при наличии видеоадаптера с 256 МБ собственной памяти эта память должна отображаться в первые 4 ГБ адресного пространства. Если на компьютере уже установлено 4 ГБ системной памяти, часть адресного пространства должна быть зарезервирована для отображения памяти видеоадаптера. Для отображения памяти видеоадаптера используется часть системной памяти. В результате общий объем системной памяти, доступной операционной системе, сокращается.

То, насколько сократится объем доступной системной памяти, зависит от установленных на компьютере устройств.

Если на компьютере установлено много устройств, объем доступной памяти может составить 3 ГБ или меньше. Однако максимально возможный объем доступной памяти в 32-разрядных версиях Windows Vista обычно составляет 3,12 ГБ.

Memory-mapped I/O (MMIO) and port I/O (also called port-mapped I/O (PMIO) or isolated I/O) are two complementary methods of performing input/output between the CPU and peripheral devices in a computer. Another method, not discussed in this article, is using dedicated I/O processors — commonly known as channels on mainframe computers — that execute their own instructions.

Memory-mapped I/O (not to be confused with memory-mapped file I/O) uses the same address bus to address both memory and I/O devices, and the CPU instructions used to access the memory are also used for accessing devices. In order to accommodate the I/O devices, areas of the CPU's addressable space must be reserved for I/O. The reservation might be temporary — the Commodore 64 could bank switch between its I/O devices and regular memory — or permanent. Each I/O device monitors the CPU's address bus and responds to any of the CPU's access of address space assigned to that device, connecting the data bus to a desirable device's hardware register.

На какие части делится память работающей программы

В общем случае оперативная память, с которой работает программа, подразделяется на три вида: статическую, автоматическую и динамическую.

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

Объект называют глобальным, если он определён вне функции, класса или пространства имён. Объект, определённый с использованием ключевого слова static, называют статическим.

Глобальные объекты, а также объекты, определённые в пространствах имён или статически в классах, размещаются в памяти (конструируются) до вызова функции main, а разрушаются после завершения работы этой функции.

Пространства имён — это способ разделения программы на логические составляющие; механизм ограничения области видимости имён.

Автоматическая память — это специальный регион памяти, резервируемый при запуске программы до вызова функции main из свободной оперативной памяти и используемый в дальнейшем для размещения локальных объектов: объектов, определяемых в теле функций и получаемых функциями через параметры в момент вызова. Автоматическую память часто называют стеком.

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

Как соотносятся распределение программы в оперативной памяти с форматами исполняемых файлов?