Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Сэйдж Рас Весь текст 822.4 Kb

Приемы профессиональной работы в Unix

Предыдущая страница Следующая страница
1 ... 55 56 57 58 59 60 61  62 63 64 65 66 67 68 ... 71
1 дорожка  = 17 секторов, или 17 секторов/дорожку
1 сектор   = 512 байт, или 512 байт/сектор
1 Кбайт    = 1024 байта = 2^10
1 Мбайт    = 1024 килобайта = 2^20 = 1 048 576 байт

     Характеристики устройства различны для разных устройств,  но про-
мышленный стандарт для числа секторов на дорожку и  байтов  на  сектор
остается одинаковым.  В табл.  7-4 показаны примеры характеристик раз-
личных устройств.

                             Таблица 7-4

               Размеры жестких дисков и их конфигурация
---------------------------------------------------------------------------

   Число цилиндров      Число головок        Мегабайты
---------------------------------------------------------------------------

      981                    3                 25

      697                    5                 30

      981                    5                 42

      925                    7                 55

     1024                    8                 71
---------------------------------------------------------------------------

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

  615 цил   4 дор   17 сек   512 байт
  ------- * ----- * ------ * -------- = 21 411 840 байт/диск
   1 диск   1 цил   1 дор     1 сек

  21411840 байт    1 мегабайт
  ------------- * ------------ = 20.4 мегабайта/диск
      1 диск      1048576 байт

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

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

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

цилиндр, дорожка, сектор = физический сектор
цилиндр, головка, байт   = блок

     Эти две записи выражают в точности одно и то же. Когда вы исполь-
зуете  запись  вида цилиндр/дорожка/сектор,  то в результате получаете
физический сектор.  Используя запись вида цилиндр/головка/байт, вы по-
лучаете в результате номер блока.  Следует помнить,  что ГОЛОВКА - это
то же самое, что и ДОРОЖКА. Если вы это запомните, все остальное вста-
нет на свое место.

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

1. Сколько дорожек имеет диск?

                 615 цил   4 дор
        Решение: ------- * ----- = 2460 дор/диск
                  1 диск   1 цил

2. Сколько байт в дорожке?

                 17 сек   512 байт
        Решение: ------ * -------- = 8704 байт/дор
                  1 дор    1 сек

3. Сколько дорожек в одном мегабайте?

                 2460 дор   1 диск
        Решение: -------- * ------ = 123 дор/Мб
                  1 диск    20 Мб

4. Сколько цилиндров в одном мегабайте?

                 1 цил   2460 дор
        Решение: ----- * -------- = 30 цил/Мб,
                 4 дор    20 Мб

             615 цил   1 диск     123 дор
        или  ------- * -------- * ------- = 30 цил/Мб
              1 диск   2460 дор    1 Мб

5. Дан цилиндр 47,  дорожка 2, сектор 4. Какой физический номер секто-
   ра?

        Решение:

     Сначала мы обращаем внимание на то, что вопрос касается секторов.
В качестве единиц измерения даны цилиндр,  дорожка и сектор. Как пере-
вести их в другие единицы?  Мы знаем,  что головки - это то же  самое,
что  и  дорожки,  поэтому  в  вычислениях нужно использовать 4 головки
вместо 4 дорожек:

                 4 дор   17 сек           17 сек
        47 цил * ----- * ------ + 2 дор * ------ + 4 сек =
                 1 цил   1 дор             1 дор

               = 3196 сек       +         34 сек + 4 сек =

               = сектор 3234

     РАЗМЕРЫ ФАЙЛОВ

     В основном при работе в системе UNIX мы считаем,  что ее  ресурсы
безграничны. Например, мы не заботимся о том, что созданный файл полу-
чится "слишком большим",  а это не так уж редко в персональных  компь-
ютерах на гибких дисках.  Если же мы занимаемся сопровождением и адми-
нистрированием системы UNIX, то мы должны быть готовы иметь дело с си-
туациями,  когда  превышаются  различные  предельные значения системы.
Всегда лучше исследовать эти вопросы заранее в некритичных  ситуациях,
поэтому давайте рассмотрим пределы размеров файлов и их смысл.

     Некоторые параметры "зашиты" в ядро системы при ее генерации. Од-
ним из таких значений является максимальный размер файла. Он определя-
ет наибольшее число блоков, которые может занимать файл. Этот параметр
тесно связан с принятым в UNIX методом использования  индексных  деск-
рипторов файла (inodes).  Это наборы указателей,  среди которых первые
десять указывают на блоки данных, следующий указывает на другую табли-
цу, следующий - на таблицу, указывающую на таблицу и т.д.

     Имеется еще  одно  ограничение размера файла,  которое определено
для каждого пользователя во время работы  в  системе  -  число  ulimit
(user limit - пользовательский предел). Это значение устанавливается в
момент вашей регистрации в системе и представляет собой  число  блоков
по  512  байт,  которые  вы  можете записать в любой заданный файл.  В
shell'е имеется команда ulimit,  которая при ее вызове без  аргументов
выводит это число.  Эта же команда позволяет вам уменьшить ваше значе-
ние ulimit.  Только суперпользователь (root) может УВЕЛИЧИТЬ  значения
ulimit.

     Побочным эффектом уменьшения значения ulimit является то,  что вы
не можете снова увеличить его до регистрационного  значения.  Значение
ulimit остается таким же на все время работы вашего shell, поэтому для
восстановления  регистрационного  значения  вам  необходимо  выйти  из
системы, а затем снова зарегистрироваться.

     Еще одним интересным моментом является то, что если вы установите
ваше значение ulimit равным 0,  вы не сможете создать  никакие  файлы!
Максимально  допустимым  размером файла в данном случае является нуле-
вой,  поэтому никакой файл не может быть  создан.  Это  представляется
достаточно резонным,  однако существуют такие ситуации, когда файл ну-
левого размера МОЖЕТ существовать. Опять же, для восстановления вашего
обычного  значения  ulimit необходимо выйти из системы,  а затем снова
зарегистрироваться.

     Как отмечалось ранее,  увеличить значение ulimit может только су-
перпользователь.  Эта процедура довольно проста.  Сначала нужно увели-
чить значение ulimit командой ulimit,  а затем запустить  shell.  Этот
новый shell имеет новое значение ulimit.  Если мы хотим, чтобы система
загружалась с shell, имеющим большее значение ulimit, мы можем устано-
вить  программу  в inittab (таблице инициализации системы),  чтобы эта
операция выполнялась автоматически.

     Ниже приводится  пример  программы,  которая  изменяет   значение
ulimit  и  запускает shell с этим новым значением.  Напомним,  что эта
программа может быть запущена только суперпользователем.

1   #include
2   #include

4   main()
5   {
6       long v1, v2, v3, newlimit = 5120;

8       v1 = (long)ulimit(UL_GFILLIM, 0L);
9       v2 = (long)ulimit(UL_SFILLIM,newlimit);
10      v3 = (long)ulimit(UL_GFILLIM, 0L);

12      printf("v1: %ld     v2: %ld    ulim: %ld\n",v1,v2,v3);
13      setuid(getuid());
14      execl("/bin/sh","ulimit sh", 0);
15  }

     Значение ulimit является возвращаемым значением системного вызова
ulimit.  Первый  вызов ulimit в строке 8 получает исходное значение по
умолчанию.  Это значение сохраняется в переменной v1. Вызов в строке 9
устанавливает   новое   значение  ulimit  равным  значению  переменной
newlimit. Если этот вызов оканчивается неудачей, переменной v2 присва-
ивается возвращаемое значение -1,  и мы видим это по распечатке, кото-
рую выдает строка 12.  Если вызов был успешным, возвращаемым значением
является  новое  значение ulimit,  и это мы тоже видим.  Затем вызов в
строке 10 получает это значение ulimit.  Это или новое  значение,  или
старое,  в  зависимости  от  того,  была  ли успешной попытка изменить
ulimit.

     В строке 13 значение идентификатора текущего процесса  устанавли-
вается равным значению идентификатора пользователя,  запустившего дан-
ный процесс. Это сработает только в том случае, если пользователь, за-
пустивший данный shell, имеет более низкий идентификатор, чем сам про-
цесс.  Цель заключается в том,  чтобы предоставить возможность обычным
пользователям запускать данный процесс, давая им временно права супер-
пользователя.  (Не оставляйте исходный текст этой программы в системе,
поскольку  кто-то  может превратить ее в "лазейку" и перекомпилировать
ее - в главе 9 мы увидим такого рода дыры в системе защиты.)

     Строка 14 запускает shell. Аргументом этого shell является строка
"ulimit sh".  Эта строка будет выведена на экран, если мы выполним ко-
манду "ps -ef". Данный shell имеет новое значение ulimit.

     Возможность изменить значение ulimit позволяет нам определить на-
ибольший возможный размер файла.  Создание одного или нескольких таких
файлов максимального размера полезно в целях  тестирования.  Например,
полезно выяснить, сколько данных может содержать гибкий диск без пере-
полнения или что произойдет, когда система выйдет за пределы свободных
блоков. Мы хотим понять, как ведет себя система в таких ситуациях.

---------------------------------------------------------------------------

ИМЯ: umntsys
---------------------------------------------------------------------------

umntsys

     НАЗНАЧЕНИЕ

     Размонтирование всех файловых систем, смонтированных в данный мо-
мент.

     ФОРМАТ ВЫЗОВА

umntsys

     ПРИМЕР ВЫЗОВА

umntsys     Размонтирует все смонтированные файловые системы

     ТЕКСТ ПРОГРАММЫ

1   :
2   # @(#)umntsys v1.0  Unmount all file systems  Author: Russ Sage
                        Размонтирование всех файловых систем

4   if [ "$#" -gt 0 ]
5     then  echo "umntsys: too many arguments" >&2
6           echo "usage: umntsys"              >&2
7           exit 1
8   fi

10  /etc/mount | sed -n -e '/^\/ /d' -e 's/^.* on \(.*\)
read.*/umount \1/p' | sh -

       ОПИСАНИЕ

               ЗАЧЕМ НАМ НУЖЕН КОМАНДНЫЙ ФАЙЛ umntsys?

     Иногда возникают  ситуации,  когда вы как администратор хотели бы
запустить систему в однопользовательском режиме.  Например,  вы хотите
сменить или установить жесткие диски и вам нужно,  чтобы никто не имел
доступа к этому устройству,  пока вы с ним работаете.  Вам может также
понадобиться  запустить систему в минимальной конфигурации с целью ло-
кализации какой-то проблемы.  Поскольку выполнение операций завершения
работы  системы  и перезагрузки представляет собой довольно длительную
процедуру, было бы лучше иметь способ сохранить систему работающей, но
переключить в однопользовательский режим, а затем быстро перезапустить
Предыдущая страница Следующая страница
1 ... 55 56 57 58 59 60 61  62 63 64 65 66 67 68 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама