question-7

Вопрос 7

Операционная система Unix — интерпретаторы, стандартные потоки ввода вывода, фильтры

В UNIX взаимодействие пользователя с операционной системой обычно осуществляется через командный интерпретатор (shell). Командный интерпретатор — это программа, которая принимает команды пользователя, анализирует их и организует их выполнение.

*Наиболее распространённые оболочки: sh, bash, ksh, csh.

Shell работает как обычный пользовательский процесс: получив внешнюю команду, он ищет одноименный исполняемый файл в папках, жестко прописанных в переменной окружения $PATH (/bin или /usr/bin), после чего обращается к ядру через интерфейс системных вызовов. Ядро создает копию процесса shell, через вызов exec() заменяет её код на инструкции найденной программы, выделяет виртуальную память, организует ввод-вывод, а сам shell в это время ждет завершения команды через системный вызов wait(), чтобы затем снова вывести курсор ожидания.

Для обмена данными между программами и пользователем в UNIX используются стандартные потоки ввода-вывода:

  • stdin (стандартный ввод, дескриптор 0);
  • stdout (стандартный вывод, дескриптор 1);
  • stderr (стандартный поток ошибок, дескриптор 2).

Потоки можно перенаправлять в файлы, устройства или другие программы. Основные операции перенаправления:

  • команда > файл — запись вывода в файл;
  • команда >> файл — добавление вывода в конец файла;
  • команда < файл — использование файла как источника ввода;
  • команда1 | команда2 — передача вывода первой программы на вход второй;
  • команда 2> файл — перенаправление потока ошибок;
  • команда > файл 2>&1 — объединение stdout и stderr.

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

Фильтры

Одним из основных принципов UNIX является построение обработки данных из небольших специализированных программ, называемых фильтрами.

Фильтр — это программа, которая получает данные через stdin, обрабатывает их и передаёт результат через stdout. Благодаря этому фильтры удобно объединять в конвейеры.

Прим.:

  • grep — поиск строк по шаблону;
  • sort — сортировка строк;
  • head/tail — вывод первых/последних строк файла;

Конвейер (pipeline) — stdout одной программы последовательно передаётся stdin другой программы. 

Прим.: cat file.txt | grep “error” | sort | uniq | wc -l

Ссылка на оригинал


question-27

Вопрос 27

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

Блочная память (память, ориентированная на записи) — это память, в которой обмен данными осущ. не отдельными словами или байтами, а блоками фиксированного размера. Адресное пространство такой памяти может разбиваться на группы последовательных адресов, каждая из которых обслуживается отдельным банком памяти.

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

Организация дисковой памяти

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

Структура сектора включает:

  1. Преамбулу — служебную информацию для синхронизации головки.
  2. Поле данных.
  3. ECC (Error Correction Code) — код обнаружения и исправления ошибок.

hard-disk-layout.png

Чтение и запись выполняются магнитными головками. Для доступа к данным необходимо:

  1. Переместить головку на нужную дорожку (позиционирования).
  2. Дождаться, пока нужный сектор окажется под головкой (вращательной задержки).

Поэтому среднее время доступа определяется суммой среднего времени позиционирования и среднего времени ожидания поворота диска.

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

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

Организация памяти на магнитных лентах

Магнитная лента представляет собой носитель, на котором данные записываются последовательно вдоль дорожек.

magnetic-tape-drive.png

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

Недостатком является большое время доступа. Для получения нужного блока необходимо перемотать ленту до требуемого места, поэтому ленточные накопители относятся к устройствам последовательного доступа.

Для повышения скорости записи и чтения в современных накопителях применяется наклонно-строчная магнитная запись: головка вращается под углом к движению ленты, формируя диагональные дорожки. Это позволяет значительно увеличить плотность записи и скорость обмена данными.

Ссылка на оригинал