Перейти к содержанию

AndreyMust19

Members
  • Постов

    42
  • Зарегистрирован

  • Посещение

    Никогда

Весь контент AndreyMust19

  1. Читал такую штуку на сайтах с анекдотами. Но она была слижком короткой. Решил написать свою собственную: MS-DOS Однопасажирский кукурузник, которым управляет сам пасажир. Использовался во времена зачатков авиации. Эта модель самолета была построена на основе изобретения Тима Патерсона, которая была украдена компанией МикроКрофт. Самолет собран из дерева, обладает максимально простым управлением и имеет 1 двигатель. В нем отсутствовали системы безопасности и Пасажир-пилот должен полностью контролировать полет. Из-за ошибки в управлении пилотом или из-за поломки запчастей самолет сразу срывался в штопр и разбивался. Также самолет быстро покрывался коррозией, к-ая вызывала изнашивание частей и могла привести к крушению. Вскорее появились антикорозийные средства DrWeb и Aidstest, которые быстро нашли популярность. Первые версии кукурузника не могли взлетать на высоту, большую 1 Км. В следующих версиях за счет замены запчастей самолет смог подниматься на высоту 4 Км, после добавления еще одного - на высоту - 64 Км. У первых моделей самолета была низкая грузоподьемность - старые багажные отделения из-за своей конструкции не могли вмещать более 64 Килограммов груза. Оказалось что это очень мало! В новых багажниках16 увеличился объем до 4-х тонн. Багажники32 стали самыми большими и смогли вмещать до 2048 тонн груза В конструкции самолета использовались только старые устройства. Поэтому сейчас этот самолет уже не используется и сохранился он только у коллекционеров, которые многда за него садяться чтобы вспомнить о старых временах. В данное время на основе чертежей создаются новые кукурузники, поддерживающие новые устройства и авиационное оборудование. Windows 9x Новая модель кукурузников, построенная МикроКрофтом, гордо именуемых самолетами. На этот раз кроме дерева в составе самолета имеется алюминий, правда в довольно малых количествах. Самолет до сих пор не может летать на высоты, большие 64 Км, а также способен работать только с одним двигателем. На борту самолета использовались только Багажники16 и Багажники32, а старые багажники были сбрасываемыми. Самолет смог перевозить несколько пасажиров, но в любой момент пасажир мог вытолкнуть пилота из кресла и сесть за штурвал. Хотя большинство пасажиров были допропорядочными людьми, встречались пакостные личности, которые захватывали управление самолетом и направляли его прямо в землю. Поэтому самолеты оснащались охранниками, такими как KAV, и DrWeb, которые защищали от захвата самолета террористами. В самолете есть одна стюардеса, обслуживающая всех пасажиров. Облуживание не на высоте, и было довольно противоречивым. Каждая услуга обладала своими особенностями, и поэтому прежде чем получить чай, надо подумать - какие волшебные слова надо сказать. Несмотря на то, что самолет был сконструирован по чертежам кукурузника MS-DOS, но внешне кажется что это совсем другой самолет. Внутри самолета красиво, есть кресла - теперь пассажиру не нужно думать - куда сесть. Правда почти весь интерьер одного цвета. Он может выглядывать в окна, пить пиво, смотреть фильмы и слушать музыку. К сожалению все пасажиры находятся в одном салоне, поэтому пасажир может наблюдать за другими пассажирами, приставать к ним, затеять драку и даже выбросить из самолета любого другого пасажира. Стюардеса и пилоты ничего не смогут сделать. На данный момент эти самолеты сняты с производства и почти не встречаются. Причина - в незащищенности пилотского кресла (из-за чего приходится нанимать охрану) и некрасивом внешнем виде (по современным меркам). Windows NT Внешне очень похож на предыдущую модель, но на самом деле этот самолет - абсолютно новое изобретение. При его создании использовался исключительно аллюминий с вкраплениями деревянных деталей. Новая модель благодаря усовершенствованиям может взлетать на высоту до 4096 Км. Однако она не использует все возможность двигателя взлетать на высоту до 24576 Км. Самолет может использовать несколько двигателей. В NT используется новая модель багажников, в которой на каждом грузе было написано - какому пассажиру она принадлежит. Пассажир не мог трогать чужие вещи! О пилотах. В кабине пилотов может быть несколько пилотов, но управлять самолетом может только один. Имеется несколько штурвалов. Только главный пилот может изменять устройства управления, ограничивая или дополняя панельную доску. Теперь пасажиров от пилотов отделяет толстая дверь с замком, поэтому пассажиры не могут занять их место. Все пасажиры находятся в отдельных комнатах и на каждого имеется персональная стюардесса. Если пассажир хочет что-то сделать (чай, в туалет, книгу), он должен попросить стюардессу. Пассажир может выбросить за борт только членов своей семьи. Для этого ему потребуется позвать стюардессу и попросить ее об этом. Насчет обслуживания. Общаться со стюардессами и делать запросы стало намного легче, благодаря стандартизации, хотя недостатки в простоте обслуживания все еще остались. Салон имеет очень красивый интерьер, причем пассажир может попросить стюардесу украсить его по своему желанию. Компания МикроКрофт периодически выпускает пакеты новых деталей для своих самолетов. Эти детали устраняют некоторые дефекты самолета и помогают устранить вероятность их поломки. Изначально каждая новая версия самолета выходит почти неработоспособной что исправляется с помощью летчиков-испытателей и пакетов новых деталей. В каждой новой модели самолета появляются новые услуги стюардес, усовершенствуется багажное отделение и появляется поддержка новых авиационных устройств. Для большей красоты появляются новые детали в интерьере, что отрицательно сказывается на летных качествах. В моделе Server самолетом могли управлять сразу несколько пилотов. В последней версии Глиста дополнительные детали интерфейса, сильно утежелили самолет, из-за чего на нем мало летают. МикроКрофт обещает выпустить новую модель 7 в надежде повысить спрос. Многие авиакомпании говорят что это небезопасные самолеты, хотя всего лишь надо ставить замок на комнату пилотов. OS/2 На этих самолетах фирмы ЭйБейЕм я никогда не летал, поэтому есть только слухи. Они были самыми медленными из всех и в основном использовались для перевозки грузов. Управление было сложное или даже неудобное. Но это компенсировалось высокой надерностью и безопасностью перевозимых на нем грузов и пассажиров. По слухам они даже могли трансформироваться в знаменитые тогда кукурузники, что немного добавило им популярности. Фирма ЭйБейЕм вместо обслуживания (как в Windows) или вместо настраиваемости (как в UNIX) занималась постоянным модернизированием своего самолета. Его высокая сложность и тяжелость привели к тому что последняя модель получилась абсолютно неработоспособной и несмогла даже взлететь, из-за чего фирма его полностью забросила. В данный момент его можно встретить только на старых ангарах и у коллекционеров. Mac OS Самолеты компании "Дыня" не имеют аналогов. Хотя я ни разу не сидел в его кресле, могу сказать, что интерьер у него самый красивый на свете. Эти самолеты изначально разрабатывались с красивым интерьером. Нигде пассажир не может чувствовать себя так уютно, как в Mac. В обмен на это пассажиру запрещено вообще к чему либо прикасаться - все за него делают стюардесы. У нас в России эти самолеты очень редки, а вот в Америке они используются гораздо больше. P.S. А что вы в таком же стиле можете предложить в качестве описания UNIX-самолета?
  2. AndreyMust19

    VI

    VI Не переводится. Текстовой редактор с командным интерфейсом. Сейчас наибольшее распространение получил vim, улучшенная версия этого редактора. Помимо чтения этого документа читайте мануал к этому редактору (команда 'man vi'). Также в некоторых UNIX-системах есть такая программа vimtutor, которая открывает руководство по этому редактору в самом редакторе! Поэтому практические задания вы будете выполнять в самом руководстве! Также есть возможность получить справку, встроенную в редакторе (для этого пишите ':help слово'). Кроме текстового режима есть программа GVIM для графического интерфейса, которая имеет меню, с которым можно работать с помощью мыши. - ССЫЛКИ, запускающие vi в разных режимах: vi Сам Бинарник редактора. vim Запуск редактора, опции по умолчанию. ex Запуск в режиме расширенных команд (т.е. vi с ключом -e). view В режиме только чтения (c ключом -R). rvim rview rgvim rgview Как vim и view, но нельзя выполнять команды оболочки ® и останавливать работу редактора (g). ОПЦИИ ПРИ ЗАПУСКЕ РЕДАКТОРА -b Запуск для правки бинарных файлов. Используйте чтобы открыть файл в той же таблице символов, что и оболочка. -d Сравнение файлов. -R Открытие файла только для чтения. +[N] При открытии файла установить курсор на N строку. -v Запуск в обычном vi-режиме. Подавляет ключи, устанавливающие другие режимы. КУРСОР Курсор - серый прямоугольник, обозначающий текущий символ. Большинство команд зависит от местоположения курсора. КОМАНДЫ В начале вы находитесь в режиме ввода команд. В этом режиме клавиши со стрелками передвигают курсор, а нажимаемые клавиши соответствуют командам. То есть команда - соответствует одной нажатой клавише. Команды бывают 2-х типов: - Короткие - и Расширенные Короткие команды сразу выполняют одно положенное им действие. Расширенные команды ожидают от пользователя еще нажатия нескольких клавиш, влиящих на особенность работы команды, после чего выполняют эту работу. Выйти из режима ожидания расширенной команды можно нажатием Esc. При вводе команды вы можете сначала ввести число - сколько раз повторить команду, а потом саму команду: [Кол]Команда СПИСОК КОМАНД Здесь описаны все найденные мной команды. Одинаковые команды разделены пробелом, символы табуляции: (,[,{,< для обозначения команд не используются. 1. ПЕРЕМЕЩЕНИЕ КУРСОРА "влево" h Backspace Передвигает курсор влево на 1 символ. "вправо" l Space Передвигает курсор вправо на 1 символ. + j Перемещение курсора на следующую строку. - k Перемещение курсора на предыдущую строку. Home 0 Перемещает курсор на начало строки. End $ Перемещает курсор на конец строки. PageUp Перемещает курсор на 1 экран вверх. PageDown Перемещает курсор на 1 экран вниз. b Переместить курсор к началу слова, на котором он сейчас стоит (т. е. на его первый символ). Повторное выполнение команды переместит курсор на начало предыдущего слова (слева). e Переместить курсор к концу слова. Повторное выполнение переместит курсор на конец следующего слова (справа). [N]G Переместить курсор на N строку от начала текста. Если N (сколько раз выполнить команду) не указано, курсор перемещается на последнюю строку файла. Shift+h На начало первой строки на экране. Shift+l На начало последней строки на экране. Shift+вверх На один экран вверх. Shift+вниз На один экран вниз. Shift+влево Shift+вправо Передвинуть курсор влево / вправо на близжайший разделитель (пробел, пунктуация или новая строка). 2. КОМАНДЫ ВВОДА ТЕКСТА К этим командам относятся: i a o R i Ввод символов, начиная с позиции курсора. В этом режиме все нажимаемые вами клавиши вставляют символы в месте расположения курсора. Delete удаляет символ справа, а Backspace передвигает курсор влево. Насчет перемещений курсора. Возможность перемещать курсор зависит от того, правильно ли настроена ваша командная оболочка. Если вы можете перемещать курсор, то для этого используйте клавиши со стрелками и специальные клавиши типа Home, PageUp (но не h,j,k,l!). Если вы НЕ можете перемещать курсор, тогда нажатие на клавиши со стрелками приведет к окончанию ввода. a Ввод символов со следующего символа после курсора. Необходимо, если нужно вставить текст прямо в конец строки. После окончания ввода курсор встанет на предыдущий символ. A Ввод символов в конце текущей строки. o Ввод символов с новой строки (На следующей строке появляется пустая строка и в нее помещается курсор). O Ввод символов с новой строки (пустая строка появляется на предудыщей строке). R Ввод с заменой символов. Каждый введенный символ заменяет собой символ в позиции курсора. r Вставить символ. Чтобы заменить символ, на котором стоит курсор, нажмите r и потом - символ, который хотите вставить 3. КОМАНДЫ УДАЛЕНИЯ СИМВОЛОВ x Удаляет символ в позиции курсора. Для удаления текста советую использовать именно эту команду, так как команда d вырезает удаляемый текст в буфер обмена (а его содержимое вам может быть необходимо). Кроме того, d еще нужно указывать направление. Delete Удаляет 1 символ справа от курсора. 4. КОМАНДЫ РАБОТЫ С БУФЕРОМ ОБМЕНА Позволяют вырезать, копировать и вставлять текст. d Вырезает текст и помещает его в буфер обмена. y Копирует текст в буфер обмена. c Вырезает текст и переводит редактор в режим вставки (i). Каждое копирование или вырезание затирает предыдущее содержимое буфера. Работа этих команд (вырезание / копирование) зависит от следующей нажатой клавиши: "Вверх" или "Вниз" - текущую строку и 1 строку сверху или снизу, начиная с курсора. Если вы набрали 3d<Вниз>, то в буфер будет вырезано 4 строчки: текущая и 3 снизу. "Влево" или "Вправо" - 1 символ слева или в позиции курсора. End или $ - символы от курсора до конца строки. Home - символы от курсора до начала строки. e - слово, на котором стоит курсор (до первого встреченного пробела). Оставляет после слова пробел. w - слово, на котором стоит курсор, включая пробел в его конце. d - всю строку, внутри которой находится курсор. p Вставляет содержимое буфера обмена справа от курсора. P Вставляет содержимое буфера обмена в позицию курсора. v Переводит редактор в режим выделения текста. Передвигайте курсор чтобы выделять текст. Теперь вы можете нажать кнопку d, y, с чтобы переместить / копировать выделенный текст в буфер обмена (или p, чтобы заменить выделенный текст содержимым буфера). Также вы можете нажать x, чтобы удалить выделенный текст. 5. ОТМЕНА И ПОВТОРЕНИЕ ВНЕСЕННЫХ ИЗМЕНЕНИЙ u Отменяет последнее внесенное изменение в текст. Имейте в виду, что выполнение этой команды тоже вносит в текст изменения! Помните - чтобы отменить n-ое кол-во последних изменений, введите число (сколько раз выполнить команду), а потом букву u. U Отменяет все изменения, сделанные в строке. Помните, что изменение другой строки заставляет редактор забыть о всех изменениях в предудущей строке! Ctrl+R Возвращает на место 1 отмененное изменение. 6. ПОИСК и ЗАМЕНА ТЕКСТА В ФАЙЛЕ / Переход в режим поиска. Внизу экрана появляется символ '/' - вы должны ввести искомую строку и нажать Enter. После нажатия на Enter выполнится поиск и курсор встанет на первый символ найденного фрагмента. Искомая строка останется внизу экрана. Чтобы выйти из режима поиска, удалите '/'. ? Режим поиска в обратном направлении. n Найти следующий фрагмент, заданный командой поиска /. Курсор встанет на следующий найденный фрагмент, а внизу экрана появится искомая строка. N Найти предыдущий искомый фрагмент. % Поиск парной скобки. Эта команда берет первую справа скобку (Круглую, Прямоугольную или Фигурную), ищет парную ей скобку и устанавливает на нее курсор. Если первая найденная скобка - открывающая, то команда ищет парную скобку справа от нее. Если найденная скобка - закрывающая, команда ищет парную скобку слева от нее. :#,#s/new/old/$ s - это опция меню, осуществляющая поиск текстового фрагмента new и заменяет его на old. #,# - Начальная и конечная строка, в диапазоне которых нужно произвести замену. #,# можно опустить, тогда замена осуществляется только в текущей строке (та, в которой стоит курсор). $ - описывает особенности замены, который может состоять из нескольких символов: g - c g - Искать заменяемый фрагмент по всей строке. Если g отсутсвует, то замене подвергнется только первый найденный фрагмент в строке. с - Перед заменой спрашивать о ее необходимости (курсор будет находится на найденном фрагменте). 6. РАБОТА С ФАЙЛАМИ Ctrl+g Выдает информацию об открытом файле (Имя файла, Есть ли изменения, Новый ли, Кол-во строк, Текущая позиция в процентах). Эта информация появится внизу экрана и не исчезнет, пока в этом месте не появится другая информация. КОМАНДЫ С КЛАВИШЕЙ "Ctrl" Ctrl+влево Ctrl+вправо Передвинуть курсор влево / вправо на одно слово. Слова разделяются пробелами и символами новой строки. -= Примеры команд =- 10dd Удалить десять строк снизу. МЕНЮ В режиме меню вы вводите строку символов - тем самым выбираете опцию меню. Для ввода строки нажмите Enter или Esc (первое быстрее). Для выхода обратно в режим команд редактирования удалите символ ':'. ОПЦИИ МЕНЮ -= Особенности работы в меню =- Переход в меню осуществляется вводом двоеточия (. После этого вы попадаете в режим меню и можете вводить опции (набранный вами текст отображается в нижней части экрана). Основное назначение меню - работа с файлами. -= Виды опций =- Опции бывают нескольких видов: 1) Односимвольные (означают только одно) 2) Сложные :q Выход из редактора, если в документе нет изменений. :q! Быстрый выход из редактора (без сохранения изменений). :w файл Сохранение в файле всех проделанных изменений, с указанием полного пути. Если <файл> не указан, тогда изменения сохраняются в текущем файле (если этот файл открыт). :wq сохранить изменения в файле и выйти из редактора. :!команда Выполнить указанную команду оболочки. Здесь все, что записано после ! считается командой оболочки, из которой был запущен редактор. Нажмите Enter, чтобы закончить ввод команд и вернуться в редактор. Выполнять команды прямо в редакторе удобно, если вы не хотите из него выходить. Если ! является частью имени файла, напишите перед ним \ (обратный слэш), чтобы vi не принял ! за приказ исполнить команду, а за символ восклицательного знака. :r файл Вставляет туда, где стоит курсор содержимое указанного файла. Имейте ввиду, что вместо файла может стоять команда (Предваренная символом !) :e файл1 Сохранить текущий и открыть другой файл (файл1). Эта команда сработает только если в текущем файле вы сохранили сделанные изменения (команда w). :e! файл1 Как предыдущая команда, но не сохраняет текущий файл. :help слово Получить справку по указанному ключевому слову или команде. НЕИЗВЕСТНЫЕ КОМАНДЫ g Расширенная команда для навигации по тексту и его изменения.
  3. AndreyMust19

    part5 - Processes and Runs

    Present: обновление от 5 мая 2009 ps - список запущенных процессов top - своеобразный диспетчер задач *** Раздел 5. Процессы и действия над ними *** В этом разделе мы поговорим с вами о том, как работают процессы в UNIX-системе. И какие sh-команды используются для слежения за процессами и выполнения различных действий над ним. --- Глава 1. Требования к архитектуре компьютера со стороны операционной системы --- Здесь мы поговорим об особенностях адресного пространства UNIX-процесса и какие требования для этого налагаются на архитектуру компьютера. 1. Изоляция адресных пространств процессов У каждого процесса есть свое АП. Это значит, что его команды не могут читать / писать данные из другого процесса, или передать туда управление. Разумеется, ни одна нормальная программа не будет вторгаться в адресное пространство другого процесса. Но если бы такой защиты не было, тогда: - Из-за ошибки в одном процессе он мог бы непредумышленно исказить адресное пространство другого процесса, и тем самым вызвать в нем другую ошибку. Таким образом, ошибка в одном процессе повалила бы все остальные! - Успешно выполнялась нехорошая программа, алгоритм к-ой предусматривает влияние на АП другого процесса. Благодаря этой защите все выполняющиеся машинные команды могут выполнять действия только в адресном пространстве своего процесса. Архитектура компьютера должна поддерживать такую возможность. 2. Плоская модель памяти Кроме защиты процессов от непредумышленного доступа в результате ошибки нужно еще... защитить процесс от самого себя! Во всех программах есть следующие компоненты: КОД, ДАННЫЕ и СТЕК. Нужно сделать так, чтобы нельзя было: 1) передать управление на стек или на сегмент, содержащий данные 2) записать / прочитать данные оттуда, где находится код Для этого была придумана модель сегментов - отдельных адресных пространств. В этой модели определенные команды работают только со "своим" сегментом. Н-р, команды передачи управления работают только с сегментом КОДА, команды обработки данных манипулируют данными в сегменте ДАННЫХ, а команды работы со стеком изменяют данные только в сегменте СТЕКА. Все UNIX-системы используют плоскую модель памяти. Почему не сегментную? Все дело в кроссплатформенности. Сегментную модель памяти можно сделать плоской - наложив 4 сегмента одинакового размера друг на друга мы получим одно Адресное пространство. А вот плоскую модель сегментной сделать никак нельзя. Поэтому если бы UNIX использовала сегментную модель, система не смогла бы работать на тех архитектурах где поддерживается только плоская модель памяти. Плюс... платформ с поддержкой сегментной модели гораздо меньше, чем с плоской. 3. Страницы доступа В плоском режиме КОД, ДАННЫЕ и СТЕК находятся в одном АП. Это означает, что команды процесса умышленно или в результате ошибки могут: 1) передать управление на стек или на данные 2) записать / прочитать данные оттуда, где находится код Чтобы этого не произошло, используется страничная модель памяти. Областям АП процесса устанавливаются только те права доступа, которые необходимы: - У кода должно быть право на выполнение. - Данные бывают разные. Для констант и текстовых строк нужно только чтение. Для переменных и буферов - чтение и запись. - У стека должно быть право на чтение и запись. Также, если на стеке нужно выполнять команды, то ему нужно дать право на выполнение. Если у стека есть право на выполнение, то это означает что на стеке можно изменить команды и передать управление на хранящиеся в нем данные. Можно запретить выполнять команды на стеке, но тогда некоторые программы (н-р, компиляторы) перестанут работать, так как эти программы создают команды на стеке. В 386-процах имеется возможность задействовать и сегментный режим и страничню память. Правда в этом случае пользы будет мало - единственное что можно сделать - это ограничить право на запись в константы и строки. Так как UNIX использует только плоскую модель памяти, процессор архитектуры должен обеспечивать страничную память. 4. Ограничение привилегий процессов Кроме изоляции адресных пространств нужно ограничивать привилегия процесса. Среди машинных команд есть обычные и привилегированные - которые влияют на само адресное пространство, виртуальную память и работу процессора. Операционная система (или процесс root'а) должна иметь возможность создавать новые процессы и манипулировать их памятью, используя эти привилегированные команды. А процессу обычного пользователя нужно разрешить выполнять только обычные команды, а манипулировать своей памятью и запускать процессы - руками операционной системы. Архитектура должна позволять ограничивать список команд, разрешенных в адресном пространстве. А при выполнении запрещенной команды - докладывать об этом операционной системе. 5. Выводы Итак, UNIX будет работать только на тех архитектурах, процессор которых поддерживает: 1) Выполнение процессов в отдельных адресных пространствах 2) Плоскую модель памяти 3) Страницы доступа 4) Запрет на выполнения привелегированных команд для пользовательских процессов. P.S. С моделью памяти в истории UNIX связаны интересные события. Линус Торвальдс не мог бы создать ядро Linux по образу и подобию Unix System 5, если бы 386-процессор на его компьютере IBM XT на тот момент не поддерживал защищенный режим со страничной моделью. В процессе развития Linux новые ядра стали оптимизироваться для процессоров 586 и 686. По сравнению с 386-ми модели памяти в них немного изменились. Поэтому современный Линукс "наверное, вроде, как-бы, должен" работать на 386-процессорах. Хотя 386 и 486 процы сейчас почти нигде не встретишь, все еще остаются старые компы конца 90-х с 386-м. Будет очень жаль если вскоре из ядра 2.6 "наконец" исчезнет поддержка 386-ых. Со стороны поддержки процессоров гораздо лучше выглядит FreeBSD. Эта система изначально предназначалась для 386-процессоров и его поддержка - главное условие её существования. --- Глава 2. Характеристики процесса --- Что такое процесс? Процесс - это адресное пространство, в котором выполняется программа. Именно так. Чтобы запустить программу, надо создать новый процесс и загрузить в него эту программу. Показатели процесса касаются именно процесса, а не выполняемой в нем программы. Так, например, время выполнения показывает - сколько машинного времени отнял у системы процесс, а не конкретно программа, которая в нем выполнялась! В этой главе мы поговорим о характеристиках процесса. Изначально в UNIX не было поддержки потоков, они появилась потом. Помните об этом! Про потоки мы вспомним только в главе "Ну вот, появились потоки!". А пока будем считать что у каж. процесса есть только один поток выполнения. PID (Process IDentificator) Четное число от 1 до 32767. Каждый запущенный процесс получает уникальный номер (PID). Нет 2-х процессов с одинаковым PID'ом. Процессы с маленькими значениями PID'ами - обычно являются системными. Н-р, программа инициализации (init) имеет PID = 1, процессы с PID'ами 2, 3, 4, ... - это системные драйверы, запущенные сразу после init. UID (User IDentificator) Это - идентификатор пользователя, с правами которого выполняется программа. При обычном запуске программы она получает UID той учетной записи, который имеет родительский процесс. В результате программа получает те же права доступа к файлам, которые имеет запустивший ее пользователь. После запуска процесс уже не сможет изменить свой UID. У root-программ (UID == 0) имеется право запустить программу от имени другого пользователя и тем самым установить ей другой UID. GID (Group IDentificator) Идентификатор группы процессов. Внимание! Этот аттрибут не связан с одноименным GID (группой пользователя), он используется совсем по-другому. При создании нового процесса он получает GID от родителя, но при этом GID не меняется. Тем самым, GID - это показатель родственных связей между процессами. Программа может изменить состояние только одного из своих потомков (сын, внук, правнук) то есть процесса с тем же GID'ом. ??? TID (Terminal IDentificator) ??? NICE Это - уступчивость процесса (т. е. показатель, противополжный приоритету). Если загрузка процессора меньше 100%, значит всем программам хватает процессорного времени и приоритет не играет роли. Если загрузка процессора РАВНА 100%, тогда процессы начинают бороться за машинное время. В первую очередь управление получают процессы с самым большим NICE, а процессы с высоким NICE получают его реже всего. Еще раз - обратите внимание - приоритет играет роль только если загрузка процессоров равна 100%! Если она меньше 100%, значит управление получают все процессы. Система позволяет создавать процессы с указанным приоритетом (по умолчанию NICE = 0): - Пользователи могут создавать процессы, с NICE большим или или равным нулю. - root может запускать процессы с любым NICE. Также можно изменять приоритет уже имеющихся процессов: - Юзеры могут изменять NICE только для своих процессов (со своим UID), при этом - его можно только увеличить. - root может изменять NICE любого процесса в любую сторону. PR Начальный приоритет процесса. ??? Корневой каталог (rootdir) Каталог, от которого отситываются пути всех файлов и других каталогов. Изменение этого параметра иллюстрирует команда chroot. В обычных случаях корневой каталог процесса - есть корневая файловая система. Текущий каталог (curdir) Все открываемые файлы, в качестве пути которых указано только имя, открываются в текущем каталоге. Функция chdir сменяет текущий каталог. Маска создания файлов (umask) Если процесс при создании файла (вызов creat) не указывает его права доступа, то он приобретает значения по умолчанию. Максимальный размер файла (ulimit) Определяет макс. размер файлов, которые может создать программа процесса. Программа может узнать / изменять для своего процесса это значение функцией ulimit. PR - опять приоритет? GID - ? --- Глава 3. Показатели процесса --- Здесь я опишу показатели, специфичные для процесса. 1. Состояние процесса Может быть одним из следующих: Sleeping Процесс спит, то есть является неактивным и не занимает процессорное время, так как ожидает какое-то событие. А какое? Например: - окончание ввода / вывода данных - завершение дочернего процесса или чей-то сигнал Сон - это основное состояние процесса, практически все процессы системы находятся в этом состоянии. Вы спросите - как это возможно, выходит что они совсем не работают? Нет, они работают. Машинные команды выполняются очень быстро - почти в мгновение ока. А вот ввод-вывод данных работает намного, намного медленнее! Для прочтения/записи данных с носителя нужно много времени - целые милисекунды. Пользователь не может быстро ввести данные - на это потребуется несколько секунд. А когда завершится дочерний процесс или поступит сигнал - вообще неизвестно! В результате операционная система усыпляет процесс и будит его только когда закончится ожидание. Running Процесс является активным и требует от процессора машинного времени. Диспетчер процессов занимается распределением процессорного времени между активными процессами. Как он это делает? Диспетчер устанавливает максимальное время M, которое может занимать выполнение одного процесса (н-р 40 мс) - квант выполнения. Системный таймер генерирует аппаратное прерывание каждые N милисекунд (н-р, 10 мс). Это прерывание обрабатывает наш диспетчер, увеличивая счетчик времени на N, тем самым подсчитывая - сколько времени выполняется процесс. Если это время стало >= чем M, то диспетчер прерывает выполнение текущей программы и переключает процессор на выполнение следующей активной задачи. Если выполняемый процесс перешел в неактивное состояние (или закончил свою работу), то диспетчер также переходит к выполнению следующего. Конечно, процессы, которые непрерывно выполняются целых 40 мс - большая редкость, в большинстве случаев процесс поработает 0,05-0,1 мс и перейдет в неактивное состояние (н-р, будет ждать от пользователя ввода данных). Если бы не было переключения процессов, то зависнувший процесс до бесконечности занимал процессор и не давал работать другим, что привело бы к остановке всей системы. Stopping Этот процесс остановлен - не по собственной воле (н-р, другой программой или операционной системой) переключен в неактивное состояние. Когда его включат обратно, он вернется в то состояние, в котором находился до остановки. Zombie Процесс был завершен, но родительский процесс пока об этом не узнал. Подробнее о зомби будет позже. 2. Время выполнения процесса У каждого процесса есть 3 показателя времени выполнения: time Это общее время выполнения процесса, подсчитанное диспетчером процессов с помощью прерываний от системного таймера. Заметьте, что TIME - это не время, прошедшее с момента запуска процесса, а сколько программа процесса использовала машинного времени, выделенного диспетчером. Из этого времени: system сколько времени процесс провел в режиме ядра, user а сколько - в пользовательском режиме. 3. Общее время выполнения А следующие 3 показателя рассчитываются для всей системы в целом: idle Это неиспользуемое машинное время. Уже было сказано, что диспетчер выделяет каждому процессу квант выполнения. Чаще всего процесс использует его не полностью, так как очень скоро переходит в режим ожидания. Чтобы знать - как много из выделенного времени использовали процессы, в системе существует специальный idle-процесс с PID'ом, равным нулю. Этот процесс отрабатывает все время выполнения, которое остальные процессы не использовали. На время работы он останавливает процессор и тот "отдыхает". P.S. Idle-процесс, на самом деле, не является процессом, так как не занимает оперативной памяти и его номер (ноль) не возвращается ни одним системным вызовом. nice время, потраченное на работу самого диспетчера. Если оно занимает соизмеримую часть time всех процессов, значит диспетчер слижком часто осуществляет их переключение и нужно увеличить квант выполнения. cpu Показатель загруженности микропроцессоров (в процентах). Это часть времени, в течении которого работают микропроцессоры компьютера. --- Глава 4. Показатели программы --- Показатели программы предназначены для их мониторинга. Характеристики процесса ничего вам не скажут о выполняемой в нем программе. Показатели программы зависят именно от самой программы и ее алгоритма работы. 1. Занимаемая память Память процесса состоит из Занимаемой и Разделяемой памяти. Занимаемая память Каждому процессу принадлежат страницы памяти, к-е занимают определенный размер в системе. Это и есть занимаемая память, она делится на 2 группы, в зависимости от того, где эта память находится: - Резидентная Это та память, которая находится в физической оперативной памяти компьютера. Страницы памяти, к-е находятся в ОЗУ, называются активными. Тем самым, размер резидентной памяти определяется по размеру всех активных страниц процесса. - Выгруженная А это - та память, к-я была выгружена из оперативной памяти на внешнее устройство. Страницы памяти процесса, к-е НЕ находятся в ОЗУ, называются выгруженными. Где находятся эти страницы - должна помнить операционная система (чаще всего в разделе подкачки, swap). Если команда процесса обратилась к выгруженной странице, то ОСь загружает эту страницу в ОЗУ с раздела подкачки. Размер выгр-ой памяти процесса определяется по размеру всех его выгруженных страниц. 2. Разделяемая память В файле программы могут быть страницы, которые имеют аттрибут "shared" (разделяемые). После загрузки программы эти страницы любой другой процесс по своему желанию может спроецировать на свое адресное пространство с теми же правами доступа. Это и есть разделяемая память (та, к-я была спроецирована из АП другого процесса). Таким образом, к одним и тем же фрагментам оперативной памяти может иметь доступ сразу несколько процессов. Это один из механизмов обмена данными между процессами (один пишет, а другой - читает). Еще один пример. Динамические библиотеки загружаются в систему только один раз. Если процессу нужна какая-то из библиотек, то система просто проецирует ее на АП этого процесса. То есть динамические библиотеки относятся к разделяемой памяти. Этот подход экономит оперативную память. А вот в Windows-системах в АП процесса загружаются все требуемые им библиотеки. Это транжирит память, так как в ОП теперь будет находится несколько копий одной и той же библиотеки. НЕЗНАЮ! Может возникнуть проблема конфликта из-за обращения 2-х процессов к библиотеке. 3. Дескрипторы открытых файлов Каждый открытый программой файл получает свой уникальный номер - дескриптор. При старте нового процесса система открывает для него 3 файла. При открытии нового файла создаваемый дескриптор получает первый незанятый номер, считая с нуля. Поэтому эти 3 файла получают номера 0, 1 и 2: 0) Стандартный ввод (stdin), из которого программа читает исходные данные. Обычно этим файлом является клавиатура. 1) Стандартный вывод (stdout). В него программа записывает выходные данные. Обычно это файл консоли. 2) и Стандартный поток ошибок (stderr), в который записываются сообщения об ошибках. Чаще всего это тоже консоль. Эти файлы определяет родительский процесс. Н-р, если в sh вы перенаправите вывод программы в другой файл, то оболочка в качестве stdout вместо консоли подставит указанный файл. Все файлы, открытые процессом, получают номера дескрипторов, справедливые только для данного процесса. Информация об открытых файлах занимает место в операционной системе и до --- Глава 5. Передача опций запускаемой программе --- Системный вызов exec предназначен не только для запуска программы внутри процесса, но и для передачи ей опций через командную строку и переменные среды. 1. Командная строка При запуске новой программы родительский процесс передает ей командную строку. Командная строка - это текстовая строка, которая служит для передачи опций, ключей и параметров запускаемой программе. Например, - в оболочке sh вы ввели следующую команду: rm ~/file1 ~/disasm ~/obj В результате sh запускает программу rm и передает ей введенную вами командную строку, без изменений. Перед тем, как передать командную строку программе, система проводит с ней некоторые манипуляции. Она рассматривает в ней слова, разделенные пробелами или табуляцией, как отдельные строки и переводит командную строку в массив указателей на эти строки. Командная строка должна быть не длиннее 5120 байтов. Если требуется включить пробел / табуляцию в одно из слов, то само слово следует заключить в одинарные или двойные кавычки. Программа может получить содержимое командной строки несколькими способами: - при вызове функции main она получает 2 параметра: первый - количество строк, а второй - адрес массива строк, получаенных из командной строки. - использовать функцию getopt для разбора командной строки на ключи и опции. В этом случае 2 символа '--' рассматриваются как конец опций. 2. Переменные среды (или переменные окружения) Переменные среды есть и в Windows, но они так редко используются, что о них почти не вспоминают. В UNIX они используются гораздо чаще. Переменная среды - это текстовая строка, имеющая имя. У каждого процесса есть свои переменные среды, совокупность этих переменных образует окружение (environ по английски). Запуская программу через exec, родитель может передать процессу нужные переменные среды. Они передаются в виде массива указателей на строки. Каждая строка является одной переменной среды и выглядит так: Имя=Значение В программе переменные среды доступны одним из след. образов: - переданный массив строк доступен под именем envp. - функция getenv возвращает значение указанной переменной, а putenv изменяет значение переменных (или создает их в случае отсутствия). Для чего используются переменные среды? В основном через них передаются опции и настройки программы. Например, оболочка sh каждой запускаемой программе передает часть своих переменных среды. В их число входит: PATH Список путей, разделенных двоеточием, где программе следует искать файлы. HOME Домашний каталог пользователя. TERM Тип терминала на который направлены stdout и stderr. Эта информация необходима программам, которые могут использоваться специфические возможности терминала конкретного типа. Теперь о недостатках переменных среды. Наличие и содержимое переменных среды полностью зависит от родительского процесса. Поэтому программы не доверяют им важную информацию - через переменные среды в основном передаются опции и значения, без которых программа может обойтись. --- Глава 6. Как создаются процессы и как они умирают --- 1. Как процессы создаются В Windows функция CreateProccess создает новый процесс из исполняемого файла и запускает его. В UNIX создание процессов сделано довольно странно. Для создания дочернего процесса надо: 1) Сделать точную копию нашего процесса функцией fork 2) Процесс-Копия должен загрузить в себя нужную программу функцией exec. Избыточность налицо! Представьте, что для создания новых файлов нам приходится копировать уже существующие и писать в них нужные данные. А в Windows функция CreateProccess создает новый "файл" с уже нужным содержимым! Вот такие пироги! 2. Дочерние процессы При создании нового процесса он считается дочерним (child). А сам процесс по отношению к новому считается родительским (parent). У каждого процесса есть свой PPID - идентификатор процесса-родителя. После смерти дочернего процесса его родителю посылается сигнал SIGCHLD. Родитель должен обработать этот сигнал: - установить обработчик этого сигнала до создания дочернего процесса - или уже после него сделать системный вызов wait, который будет ждать сигнал SIGCHLD. У вызова wait есть небольшая особенность. Вызов exec, запускающий новый процесс, возвращает управление когда этот процесс уже будет работать и до вызова wait может пройти некоторое время. За это время новый процесс может уже завершиться и к моменту вызова wait окажется, что дочернего процесса уже нет, и функция вернет ошибку! Также родитель не получит сигнал SIGCHLD, когда он находится в остановленном состоянии или игнорирует сигнал SIGCHLD. Пока процесс остановлен, он не выполняет вызов wait и не может обрабатывать сигналы. Поэтому каждый завершенный процесс переходит в состояние зомби (zombie). Этот процесс все еще числится в системе, но от него почти ничего не осталось. Зомби-процесс умрет окончательно когда его родитель получит сигнал SIGCHLD (установит обработчик, вызовет wait или разбудится). Если родительский процесс завершится раньше дочернего, то вместо него сигнал получит процесс с PID == 1 (init), который всегда обрабатывает сигнал SIGCHLD. 3. Как умирают процессы Чтобы закончить собственное выполнение, процесс может: - выполнить return из функции main; - вызвать функцию exit; В обоих случаях нужно указать положительное число - код завершения. Общепринято что 0 означает нормальное завершение работы, а положительное значение - ошибку. После завершения работы: - закрываются все открытые файлы - освобождается вся память процесса Далее, процесс становится зомби, а код завершения возвращается родительскому процессу функцией wait или обработчиком сигнала SIGCHLD. --- Глава 7. Сигналы --- 1. Сигналы У программ есть возможность посылать и принимать сигналы от других процессов. Причем, пользователю разрешено посылать сигналы только своим процессам (с тем же UID), а root может посылать сигналы любым процессам. При получении сигнала программа также узнает PID какого-то. Назначений у сигналов несколько: - узнать об ошибке в собственной программе Система посылает программе особый сигнал, если в ней возникла ошибка (нарушение доступа, деление на ноль и др.). Получив такой сигнал, программа может сохранить данные на диск перед смертью (т. е. напоминает SEH в Windows). - сообщить процессу об завершении или изменении состояния его дочернего процесса Когда изменяется состояние дочернего процесса (остановка, завершение), система сообщает об этом родителю. - изменить состояние одного из дочерних процессов Родительский процесс сам может послать некоторые сигнал дочернему процессу, чтобы изменить его состояние (остановить или попросить завершиться). Есть 3 способа обработки сигналов: 1) Ignore Игнорировать сигнал. При получении сигнала выполнение процесса не прерывается. 2) Handle Обрабатывать этот сигнал. При получении сигнала выполнение процесса останавливается, а управление получает установленный обработчик сигнала. После обработки выполнение процесса продолжается. 3) Terminate Завершить работу процесса с сбросом дампа (содержимого адресного пространства) на диск. Завершение выполняется аналогично exit(2). Установка обработчика сигнала и способа его обработки выполняется вызовом signal. А посылка сигнала процессу с указанным PID'ом осуществляет вызов kill (он так назван потому что по умолчанию посылает сигнал SIGKILL). 2. Основные сигналы Ниже я приведу описание основных сигналов, где PID - это идентификатор процесса, который получает обработчик сигнала вместе с самим сигналом. Названия всех сигналов начинаются с 'SIG'. Вот сигналы, которые система посылает процессу в случае возникновения в нем ошибки (тогда PID равен собственному, если нет - значит сигнал нам послала не система, а другой процесс). В скобках - значение сигнала: SIGSYS (12) - Неправильный аргумент системного вызова. SIGILL (04) - Неизвестная или привилегированная машинная команда (illegal instruction). SIGFPE (08) - Ошибка при выполнении операции с вещественными числами, н-р деление на ноль или превышение допустимой погрешности. SIGSEGV (11) - Нарушение доступа к странице, н-р, запись в ячейку памяти, к-ая доступна только для чтения или чтение из несуществующией страницы адресного пространства (access violantion). SIGALRM (14) - На работу процесса родитель отвел определенное время. Так вот, это время закончилось, (alarm clock), поэтому система завершает процесс. А вот сигналы, которые получает родитель от операционной системы, сообщающие об изменении состояния одного из дочерних процессов (PID): SIGHUP (01) - Разрыв связи (hangup). Главный процесс в группе закончил работу (PID), поэтому терминал (устройство ввода и вывода) закрывается и все остальные процессы в группе, работающие с этим терминалом, получают этот сигнал. SIGQUIT (03) - Система экстренно завершила работу программы (quit). SIGABRT (06) - Программа сама экстренно завершила работу вызовом функции abort(). SIGCLD (18) - Завершение дочернего процесса. Посылается его родителю. SIGTRAP (05) - Шаг при трассировке программы. Получает родительский процесс (отладчик). А вот - сигналы, которые родитель может послать дочернему процессу с целью изменить его состояние. Дочерний процесс в качестве PID получает номер своего родителя: SIGTERM (15) - Программный сигнал завершения. Сказать дочернему процессу - "заверши свою работу по хорошему". Процесс-получатель может проделать какие-то действия до завершения работы. Это - рекомендуемый способ завершения дочерних процессов. SIGKILL (09) - Убийство процесса (kill). Этот сигнал процесс не может обработать, так как на самом деле он посылается операционной системе с целью убить указанный процесс. Используйте только в последнем случае. SIGSTOP (23) - Остановить выполнение процесса. SIGCONT (25) - Продолжить выполнение остановленного процесса. * Остановить ввод / вывод - ? (Ctrl+Z) * Продолжить ввод / вывод - ? (Ctrl+Z) При создании нового процесса (fork) он наследует все обработки сигналов. Поэтому любая программа бязана самостоятельно установить нужную ей обработку сигналов, так как текущая обработка сигналов достается от процесса-оригинала. --- Глава 8. Обмен данными и Взаимодействие между процессами --- Процессы должны иметь возможность взаимодействовать друг с другом и обмениваться данными. Мы уже говорили что родитель извещается о смерти дочернего процесса с помощью сигнала. Здесь мы рассмотрим основные механизмы взаимодействия между процессами в обе стороны. 1. С помощью сигналов Для общения между родственными процессами могут использоваться следующие сигналы (их можно посылать в обе стороны): SIGUSR1 (16) - Пользовательский сигнал. Назначение определяется самой программой. SIGUSR2 (17) - 2-ой пользовательский сигнал. 2. События ??? Эти 2 варианта пригодны только для синхронизации действий. Далее мы рассмотрим способы, которыми можно передавать данные. 3. Разделяемая память Мы уже говорили про разделяемую память. Если в одной программе есть регион разделяемой памяти, то любой другой процесс может спроецировать этот регион на свое адресное пространство и читать / писать туда данные. А синхронизацию действий можно выполнить с помощью событий или сигналов следующим образом: - процесс1 записал в регион данные и послал процессу2 сигнал SIGUSR1, что данные готовы - процесс2 получает сигнал и читает данные из региона, затем посылает SIGUSR2 процессу1 - процесс1 получил SIGUSR2 и записал в регион очередную порцию данных Недостаток метода в том, что этот регион разделяемой памяти может спроецировать ЛЮБОЙ процесс и писать в него данные. 4. Общие файлы Неименованные и Именованные каналы Сокеты --- Глава 1. Ну вот, появились потоки! --- Зачем они появились (SMP, обработка событий в Иксах) Для поддержки потоков были выполнено много изменений в ядре Потоки - непривычные для UNIX'оидов. Продырявили всю систему! --- Глава 2. Работа с потоками --- Поток - это клиент. А процесс - это сервер. Поток - это особый процесс. Показатели процесса: PID Показатели программы: *** Раздел 5. Программы, связанные с темой процессов *** (здесь остановился писать) --- Программы, связанные с этой темой --- ps - показать список своих процессов top - консольный диспетчер задач nice - запустить процесс с указ. приоритетом renice - изменить приоритет уже запущенного kill - послать сигнал процессу с указ. PID killall - послать сигнал всем процессам с указ. именем /proc - текущие процессы системы манипулирование дочерними процессами в sh и bash (fg, bg, &, jobs) В резидентную память входит: CODE Размер всех секций кода DATA Размер всех данных и стека. Усыпление процесса сводится к его исключению из списка активных процессов, требующих машинного времени. Чтобы осуществить вход пользователя в систему, нужно запустить командную оболочку от имени его учетной записи. Запускать программы от имени другого пользователя может только root. В частности - программа login запускается с правами root и запускает командный интерпретатор от имени той учетной записи, чей логин вы введете. Созданный процесс получает UID этой учетной записи. При обычном запуске программы она получает UID той учетной записи, который имеет родительский процесс. В результате программа получает привилегии своей учетной записи - она получает те же права доступа к файлам, которые имеет запустивший ее пользователь. После запуска процесс уже не сможет изменить свой UID. *** Ну вот, появились потоки *** Типы многопоточности: - Естественная Когда в одном адресном пространстве находится несколько потоков выполнения. Пример - Windows, NetBSD - Искусственная Каждый "поток" является копией адресного пространства процесса. Каждое АП имеет один поток выполнения. Пример - Linux, FreeBSD 4. Чтение / запись в адресное пространство Процессы могут обмениваться данными прямо в адресное пространство друг друга. В каталоге /proc находятся файлы всех процессов, с помощью которых можно изменять состояние процессов и читать / писать в их адресное пространство
  4. Как вы наверное помните, я обещал последовательно обучать вас устройству UNIX-системы. В первом разделе вы просто обучались интерфейсу системы. Я просто говорил вам - какие команды нужно использовать, для выполнения определенных действий, не в даваясь в подробности того как они это делают. Поэтому этот раздел получился немного сумбурным (хотя он таким и
  5. AndreyMust19

    part4.1 - Devices

    Прежде чем начать о монтировании файловых систем, мы должны поговорить о файлах-устройствах. Этим мы и займемся. --- Глава 1. Файлы-устройства --- В разделе про учетные записи и файлы мы уже упоминали об одном из типов файлов - устройствах. Познакомимся с ними поближе. 1. Что такое файл устройства? Очень необычная особенность UNIX-систем - все устройства в ней представлены файлами. Делается это для того, чтобы программы могли работать с устройством также, как с обычным файлом, используя те же системные вызовы. Разумеется, само устройство не хранится в файловой системе, поэтому команды передаются не ей. Вместо этого команды чтения / записи / перемещения текущей позиции передаются драйверу этого устройства, он выполняет соответствующие действия и возвращает их результат. В результате чтение / запись производятся не с файлом-устройством, а с самим устройством, которому соответствует этот файл. 2. Тип устройства В UNIX все устройства делятся на 2 класса - Символьные и Блочные. То есть нет такого типа файла - "устройство", а есть только "символьное устройство" и "блочное устройство". Эти 2 класса - это разные типы файлов: - Символьным (char-device) Обмен данными с таким устройством осуществляется по одному байту. К таким устройствам можно отнести устройства ввода / вывода. В них драйвер сразу читает или пишет данные, как только они поступили. Поэтому буфер для хранения данных не требуется. - Блочным (block-device) Такие устройства возвращают / записывают данные только блоками определенного размера. Например, драйвер не может записать 2-3 байта на жесткий диск - для этого он должен прочитать целый блок данных, размером в 512 байт (сектор), изменить в нем эти 2-3 байта и записать сектор на диск. Выходит что для чтения / записи небольшой порции данных нужно прочитать / записать БОЛЬШУЮ порцию данных (целый блок). Поэтому драйвер блочного устройства проводит буферизированные операции чтения / записи, сохраняя в памяти (или в кеше устройства) содержимое блоков, к которым чаще всего происходит обращение и периодически записывая их обратно на устройство (синхронизация). P.S. Во FreeBSD есть оба типа устройств, но все они называются просто устройствами. Это выражается в том, что какой бы тип устройства не был (символьный или блочной), система все равно вернет значение "символьный". 3. Открываем устройство Некоторые устройства возможно открыть только для чтения или только для записи. Например, клавиатура - устройство ввода информации. Поэтому файл-клавиатуру вы можете открыть только для чтения (при открытии для записи функция возвратит ошибку). Дисплей - устройство вывода информации. Поэтому его вы можете только писать в него данные. На устройства хранения информации можно как писать данные, так и читать с них. Поэтому такие файлы можно открыть как для чтения, так и для записи. В большинстве случаев открывать файл-устройство может только учетная запись root (т.к. все устройства принадлежат ему). --- Глава 2. Аттрибуты устройств --- 1. Аттрибуты устройства Аттрибуты файлов-устройств интерпритируются системой совсем по-другому: * Имя драйвера, который работает с устройством. Записано вместо СОДЕРЖИМОГО ФАЙЛА. * Старший номер (от 0 до 255) По старшему номеру можно определить тип устройства. Например, вот номера для Символьных устройств в одной из Linux-систем: 1 - Оперативная память 4 - Виртуальные терминалы 5 - Консоли (мониторы) 6 - Принтер с параллельным разъемом (то есть тот, который и предназначен для принтера) 13 - Устройство ввода 14 - Звуковое устройство (системный динамик, колонки, савбуфер) 180 - USB-концентратор 189 - USB-разъем (usb-device) А вот - для Блочных устройств: 1 - RAM-диск (файловая система в оперативной памяти) 2 - Дисковод гибких дисков 3 - Первый IDE-контроллер для жестких дисков 8 - SCSI-контроллер (единственный) 22 - Второй IDE-контроллер для жестких дисков 254 - Карта всех устройств Разумеется, все эти номера специфичны для платформы IBM PC, так как на моделях другой архитектуры устройства могут быть совсем другие. Список старших номеров блочных и символьных устройств, известных ядру, записан в файле /proc/devices. Также номера могут отличаться в разных клонах UNIX (но не очень сильно). * Младший номер (от 0 до 255) Поскольку устройств одного типа может быть несколько, то младший номер определяет номер этого устойства среди всех устройств данного типа. Команда file при встрече с файлом устройства выводит на экран словесное описание класса устройства (символьное или блочное), а затем старший номер устройства, и через палочку - младший номер устройства. Старший и младший номер записаны вместо РАЗМЕРА ФАЙЛА. Это вы можете увидеть, используя команду 'ls -l' с файлом-устройством: brw-rw---- 1 root disk 3, 1 2009-03-02 16:38 /dev/hda1 Вместо размера файла записаны 2 числа: первое - старший номер, второе - младший номер. Причем система возвращает размер файла как обычно, просто программа ls, встретив файл-устройство, разбивает Размер Файла на 2 числа. --- Глава 3. Имена файлов устройств --- Здесь я перечислю наиболее употребительные имена файлов-устройств в Linux и FreeBSD, а также о правилах их образования. Здесь не будут указаны устройства, являющиеся носителями информации (для этого предназначен другой раздел). Все устройства находятся в /dev, поэтому я пишу только имя файла. Буква 'N' обозначает число (может состоять из неск. цифр). 1. Устройства ввода kbd - Клавиатура sysmouse, mouse - Мышь 2. Устройства вывода console - Главный монитор (подключенный локально к компьютеру) ttyN, pttyN - Терминал null, zero - Черная дыра (все, что сюда пишется, бесследно пропадает) 3. Память kmem - оперативная память (такая, какая она есть) mem - память после виртуальной трансляции виртуа 4. Прочее audio - системный динамик (спикер) --- Глава 4. Создание устройства --- По старшему и младшему номеру файла операционная система определяет - какому из установленных устройств оно соответствует. Если вы установили новое устройство или вручную создаете систему, вам нужно уметь создавать файлы-устройства. Операционная система по этим номерам идентифицирует устройство. Среди устройств одного типа есть правила их нумерации. Н-р, у виртуальных терминалов (/dev/ttyXX), и физических разделов на жестком диске (/dev/hdaXX) младшему номеру устройства соответствует число в конце имени - XX). Тем самым, старший и младший номер однозначно идентифицируют устройство. 1. mknod Используется для создания файлов устройств, а также для создания именованных каналов (но об этом не будем). Для создания устройств используется след. синтаксис: mknod [<Опции>] <Имя> <Тип> <Старший> <Младший> Создается файл-устройство с указанным <именем>, <старшим> и <младшим> номером. В качестве <Типа> устройства может быть указано: c или u - символьное b - блочное уст-во Например, эта команда создает файл, соответствующий 2-ей файловой системе на первом из подключенных IDE-устройств: mknod /dev/hda2 b 3 2 3 - это старший номер, соответвующий IDE-устройствам. Опции: -m <Режим> Установить права доступа для созданного файла (как в chmod). --help --version Вывести встроенную справку и номер версии программы. 2. MAKEDEV В папке /dev очень часто находится скрипт MAKEDEV. Как видно из названия - он предназначен для создания файлов-устройств. Это большой скрипт, он использует программы chmod, chgrp и вышеупомянутую mknod. Он анализирует имя создаваемого файла и сам устанавливает нужные старший и младший номер. Этот скрипт я не буду описывать - разберитесь с ним сами через мануалы.
  6. AndreyMust19

    part3.2 - sh-commands files

    *** Раздел 3. sh-Команды для Учетных записей, терминалов и работы с файлами *** Ну вот, теперь пришла пора узнать - какие команды оболочки sh вам нужны для практических навыков. Сначала будет расмотрен обмен информацией между пользователями, а потом - работа с файлами. Создание / удаление учетных записей доступно только root'у и будет рассмотрено в разделе "Администрирование системы". === Подраздел 1. sh-Команды для Учетных записей === --- Глава 1. Команды переключения пользователей --- 1. Команды su и sudo su [<логин>] Переключение на учетную запись <логин>. Если <логин> не указан, то выбирается root. После выполнения команды вы должны будете ввести пароль. При использовании этой команды происходит выход из текущей учетной записи и вход в другую. После этого все запускаемые вами программы будут иметь UID учетной записи <логин> (то есть будут запускаться с правами этой учетной записи), но при этом ваще окружение останется прежним. sudo [<логин>] [<команды>] Выполнить <команды> от имени (то есть с правами) другой учетной записи <логин> (если опущен, то выбирается root). Эта команда передает введенные <команды> на входной поток текущей оболочки. Тем самым они вводятся и выполняются. Все запущенные этими командами программы получают UID учетной записи <логин>. 2. Использование этих команд для перехода в учетную запись root. Команды su и sudo - самые "знаменитые" в UNIX-системах. Нет ни одного Юниксоида, который не знал бы эти команды и не умел ими пользоваться. Потому что su и sudo - самый удобный и быстрый способ войти в учетную запись root или выполнить от ее имени привилегированные действия. Но в некоторых системах с этими командами могут быть связаны следующие проблемы: 1) Учетным записям, входящим в некоторые группы может быть запрещено использование команд su и/или sudo. 2) Иногда одна из этих команд вообще отсутствует в системе 3) В совсем привередливых к безопасности UNIX-системам программе login запрещено регистрировать пользователей в учетной записи root. Единственный способ - использовать команду su или sudo. --- Глава 2. Получение информации о вошедших пользователях в систему --- 1. Зачем это надо? - Это нужно администратору (root'у). Он должен з
  7. AndreyMust19

    part3.1 - Users and Files

    /*== Пользователи и Файлы ==*/ *** Раздел 2. Локальный вход и выход из системы *** Прежде чем продолжить изучать учетные записи вы должны уметь входить и выходить из системы. --- Глава 1. Немного об удаленной регистрации --- 1. Сейчас Windows В любом образовательном учереждении сейчас не обойтись без компьютеров. На каждом из них стоит... Windows. Вы только представьте - платить за Windows на каждом компьютере! Конечно, можно не платить, но это происходит редко. 2. Раньше System V Вспомните 80-е года. Пик популярности системы Unix. Тогда делали не так, как сейчас! Unix стоила также дорого, как сейчас - Windows, поэтому всё учереждения покупали только одну копию. Система устанавливалась на один мощный компьютер (сервер). Все остальные компьютеры были подсоединены к этому серверу и оснащались только устройствами ввода и вывода (клавиатура и монитор). Раньше Дисплей и Клавиатура объединялись в одно устройство, называющееся ТЕРМИНАЛОМ, т. е. Клава и Мон были в одном корпусе. Получается, что все операции, все файлы и оперативная память находилась на одном компьютере, а на терминалах только вводили и получали информацию. Фактически получается один компьютер с подключенными к нему несколькими мониторами и клавиатурами. Какая экономия техники, пространства и (самое главное) денег! Вот поэтому учереждениям хватало только одной копии Unix! На IBM PC тоже имеется возможность подключения к компьютеру нескольких мониторов и клавиатур через последовательный (COM) порт. Значит можно реализовать терминалы. Тогда почему с Windows нельзя проделать такую же штуку? Все дело в однопользовательности! Это однопользовательская система! Можно подключить к компьютеру с Windows несколько клав и мониторов, но все они будут работать вместе. Все клавиатуры будут передвигать один и тот же курсор, и если запустить программу, то она появится на всех мониторах! Компанией Microsoft были выпущены многопользовательские Windows-системы, но они не стали популярны в образовательных учереждениях. Во-первых, компания требует заплатить за них очень большую сумму, а во-вторых даже Windows Server 2003 заметно отличается от Windows 2000 и Windows XP. Поэтому компании/учереждения предпочитают чтобы их работники/ученики/студенты работали с теми же системами, которые установлены у них на домашнем компьютере. 3. А почему не UNIX? А что UNIX? Бесплатна, есть графический интерфейс и куча программ. Так почему же UNIX так и не стала популярная у корпораций и образовательных учереждений, и все до сих пор ставят Windows на сотнях компьютеров? Причин много: 1) UNIX встречается реже - вряд ли ученик/студент встретит ее в жизни. 2) Нет офисных программ, таких же хороших как в Windows. 3) UNIX во многом отличается от Windows - придется всех переучивать. 4) Система сложна в настройке и администрировании. PC стал повседневным бытовым прибором, оккупированным необразованными пользователями по всему свету. Если все перейдут на UNIX, то специалистов в этой системе просто не хватит. Чайников - миллионы, а профессионалов (тем более в UNIX) - единицы. Однако мы ушли в другой лес. Вернемся к теме разговора... --- Глава 2. Консоль --- Итак, мы узнали что раньше Unix устанавливали только на один компьютер (сервер), а все остальные оснащались только устройствами ввода-вывода (клиенты). Вот с этого места поподробнее. 1. Консоли Для работы терминалов нужно запустить программы, каждая из которых будет работать с одним терминалом. В UNIX-терминологии такие программы так и называются - терминалы. Чтобы не путать их с ТЕРМИНАЛАМИ, назовем эти программы консолями. При запуске программы-консоли ей указывался нужный терминал и программа связывалась с ним. В последствии она принимала и отправляла все входные и выходные данные на один Терминал. Для текстового режима используется программа-консоль getty. Для графического режима используются другие программы, например xdm. 2. Виртуальные терминалы (virtual terminals) Для одного терминала может работать не одна, а несколько программ-консолей. В результате на одном терминале получается несколько отдельных "экранов" для ввода/вывода информации, между которыми можно переключаться. Такие дополнительные экраны называются в UNIX виртуальными терминалами (для краткости будем называть их ВирТами). Иметь несколько ВирТов для ввода/вывода информации удобно тем что: 1) Пока программа работает на ВирТе, можно что-то делать на другом. 2) Некоторые программы (less, man) занимают весь экран, а вам еще нужно вводить команды! Перейдите на другой ВирТ и вводите команды на нем. 3) Во время работы нескольких программ все они выводят информацию на один экран. В результате информация от разных программ и вводимые вами команды перемешиваются в кучу! А если вам доступны несколько ВирТов, то при запуске программы вы можете перенаправить ее выходной поток на один из них. Тогда результат ее работы не будет перемешиваться с вводимыми вами командами. Переключение на n-ый виртуальный терминал осуществляется клавишами Alt+Fn. После установки UNIX-системы на компьютер по умолчанию создаются шесть виртуальных терминалов (с F1 по F6), связанные с установленным на компьютере монитором и клавиатурой. --- Глава 3. Регистрация в системе и выход из нее --- Предположим, что UNIX-система уже установлена и вам нужно войти в нее. В этой главе будет рассмотрен локальный вход и выход из системы в текстовом режиме. 1. Вход в систему Для входа в систему нужно зарегистрироваться в ней, войдя в одну из учетных записей на одной из виртуальных консолей. Существует локальный вход (когда регистрация происходит непосредственно через устройства ввода компьютера UNIX-системы) и удаленный вход (когда системный блок компьютера и пользователя разделяет значительное расстояние и регистрация происходит при передаче введенных данных через сеть). Пока мы рассмотрим лишь локальный вход, а удаленный - когда начнем изучать работу системы с сетью. 2. Локальный вход После включения компьютера на экран выводится текстовая информация о ходе загрузки системы. Когда она будет закончена на экране появится название системы и слово login: <Название системы> login: Это - работа программы login (обычно она находится в /bin), которая осуществляет регистрацию пользователя в системе. Пользователь не может запустить эту программу, когда он работает в учетной записи. Программа login запускается только перед входом в систему. Строка 'login:' требует ввести название учетной записи. Набрав имя учетной записи наждмите Enter для ввода логина. После этого появится строка: password: которая требует ввести пароль (кстати 'password' дословно переводится как 'ключевое слово'). При вводе пароля нажимаемые клавиши не отображаются на экране (чтобы посторонние не могл
  8. AndreyMust19

    part2 - Command Shell -sh-

    *** Часть 1. Об оболочках в UNIX-системах *** *** Часть 2. Правила использования оболочки *** *** Часть 3. Команды оболочки *** --------------------------------------------------/ *** Раздел 1. Об оболочках в UNIX-системах *** --- Глава 1. Командный интерфейс --- 1. Интерфейс системы UNIX изначально является консольной операционной системой. Что это значит? Это значит что в любой UNIX-системе вместо графического интерфейса типа Windows или Mas OS используется интерфейс командной строки. "Что? Абсолютно черный экран с белыми буквами?" - спросит читатль. Да! И это - самое первое и главное препятствие в изучении этой системы. Для человека всю жизнь работающего в графическом интерфейсе командная строка покажется чем-то жутковатым и очень неудобным. "Неужели в UNIX совсем нет графического интерфейса?". Нет есть, но этот графический интерфейс - это просто программа. Ее надо установить и настроить и если она "сломается", то ничего кроме командного интерфейса у пользователя не останется. Графический интерфейс нужен только для того чтобы запускать программы, непригодные для командного режима (например форматирование текста в стиле Microsoft Word). Ну подумайте - на самом ли деле командный интерфейс хуже графического? Удобство - это всего лишь дело привычки! Если человек, который всю жизнь пользовался командной строкой в UNIX'е, окажется в Windows, то он почувствует себя также неудобно, как и вы. 2. Достоинства и недостатки различных интерфейсов Командный и графический интерфейс польностью противоположны. Если командная строка - это интерфейс клавиатуры, то графический приспособлен для мыши. Поэтому если у вас мало навыков работы с англоязычной раскладкой клавиатурой, то перед переходом в UNIX вам следует потренироваться. В любом интерфейсе есть обязательное условие - информация со входного устройства должна повторяться на выходном устройстве. Например, в граф. интерфейсе вы передвигаете мышь по коврику и видите после этого движение курсора на дисплее. А в командном - вы нажимаете клавиши на клавиатуре (вводите команды) и они тут же выводятся на экран. Чем отличается использование графического интерфейса от командного? - Графический В графическом интерфейсе выходное устройство (дисплей) предоставляет вам много информации. На экране много возможностей (окон, кнопок, меню), а возможности вашего устройства ввода вывода (мыши) очень ограничены (2-3 кнопки, иногда еще и колесико). Поэтому при работе в таком интерфейсе человек сконцентирован на ВЫВОДЕ информации (т. е. на ее восприятии)
  9. AndreyMust19

    part1 - About UNIX

    Present: субъективные мысли и свое мнение. Ваше мнение приветствуется - я его учту. -= Вступление =- В последнее время растет популярность Linux у простого народа. Что такое UNIX? UNIX - это класс операционных систем, образованных в результате создания операционной системы Linux и ее развития от проекта GNU. Сейчас класс UNIX насчитывает около десятка различных ОСей, не считая их всевозможных версий. UNIX-подобная система - Это многопользовательская многозадачная система, ориентированная на рынок серверов и вычислительных центров. Эта книга призвана научить и адаптировать незнакомого пользователя к необычному миру UNIX. Будет рассматриваться только то, что является общим для всех UNIX-систем. Если вы решили всерьез взяться за UNIX, помните что это целая ОПЕРАЦИОННАЯ СИСТЕМА! Это не какая-то программа! Если вы уже являетесь уверенным пользователем другой операционной системы, то вы сразу должны подготовиться к тому что вы получите много новой информации по всем направлениям, которая, скорее всего, будет расходиться с теми понятиями, которые вы знали раньше. Если вы являетесь Windows-пользователем (скорее всего так и есть), то вы увидите что компания Microsoft в своей операционной системе почти все пыталась сделать так, как это сделано в UNIX. То есть Microsoft почти ничего нового не придумала, а брала готовые решения из UNIX и адаптировала их к своей системе. Если вы являетесь пользователем Mac OS, то вам придется очень тяжело, так как можно сказать что Mac и UNIX полностью противоположны по своему отношению к пользователю. Если вы имеете опыт работы в Mac OS X, то вам будет немного легче осваивать UNIX, так как в Mac OS X очень многое было взято из UNIX-подобной системы FreeBSD. *** Часть 1.Введение в UNIX *** --- Глава 1. История создания UNIX --- В начале будет расказано о необычном порядке событий на пути появления UNIX. 1. Что такое Unix? В 1969 году компания AT&T (Американтская компания Телефонии и Телеграфии) выпустила систему Unix Сейчас, да и уже давно под словом "Unix" понимается древняя ОСь System V, которая является 5-ой ОСью AT&T. Ну я думаю, что вы знаете кто написал Unix? Деннис Ричи и Кен Томпсон! Ага, как бы не так!!! Эти люди всего-лишь переписали исходники Unix с ассемблера архитектуры VAX на недавно изобретенный язык Си и перенесли на архитектуру PDP-11 (Собственно язык Си они только для этого и придумали чтобы перенести на нем Unix, так как структура языка Си и архитектура PDP-11 были очень похожи). Вот-вот - они только переписали, а на самом ассемблере систему писали совсем другие люди - работники компании AT&T. Причем сами мужики были работниками этой компании, так что не стоит "создателей Си" представлять себе невинными овечками! А AT&T писала свою System V вовсе не затем чтобы она превратилась в то, чем она является. Unix был той курочкой Рябой, которая несла компании золотые яйца! Компания за приличную сумму устанавливала (не продавала!) System V в университетах. Разумется исходники были заперты на глухой замок и никому не могли попасть в руки, даже под угрозой расстрела! Конечно не стоит и умялять заслугу старых товарищей - переписывать целую ОСь с ассемблера - это как переписать всю Войну и Мир с русского на английский и при этом понять суть произведения. Но именно с этого началось медленное, но стабильное развитие и распространение операционной системы System V. Компания AT&T стремительно стала натягивать систему на другие архитектуры (речь идет о 80-х годах, тогда все архитектуры были как попугайчики на ярмарке - на отсутсвие выбора жаловаться не приходится). Зачем она это делала? Разумеется чтобы заработать больше денег! 2. А как появилась UNIX? Появление же UNIX и его многочисленных разновидностей - это вообще удивительная череда плохо связанных событий! И все началось с того что Лунус Торвальдс (Linus Torvalds) встретился с Unix, то есть с той самой System V. Всем ему понравилась эта система... кроме цены и закрытости. Поэтому он решил написать на языке Си свою ОСь по образу и подобию Unix. Эта система предназначалась для компьютеров IBM AT с 386-процессорами. То есть для дедушек современных нам IBM PC с 586-процессорами. Но не это было главное. Главное, чем Линус руководствовался - это собственным желанием изучить устройство компьютера и работу операционной системы. А создание собственной ОСи - хороший способ это выяснить. Линус понимал, что он один не сможет создать полноценную операционную систему. Вот поэтому-то он и решил поместить скромные результаты своей работы в интернете (тогда в конце 80-х годов интернет был сетью средних размеров и к ней не подключали всех подряд, поэтому пользоваться интернетом могли только серьезные и деловые люди). Некоторым людям понравилась работа Торвальдса и они присоединились к его работе. К проекту присоединялось все больше и больше людей и разработка системы наращивала обороты! Так начинала появляться первая ОСь, созданная по принципу Unix, и получила она в дальнейшем название Linux (даже название похоже) и получила эмблему задумчивого пингвина. 3. История проекта GNU В конце 20-го столетия в Америке жил-был такой человек как Ричард Столмен (Richard Stallmen) - студент Массачусетсского Технологического Института. Столмен был хорошим программистом и (как и Линус Торвальдс) мечтал создать собственную операционую систему. Его на это толкало распространенное среди хакеров тогда убеждение, что любая информация - это результат работы всех людей, поэтому она не может быть платной, так как в нее вложил свою частичку каждый
  10. AndreyMust19

    part0 - Begin

    СОГЛАШЕНИЯ 1) Windows 9x Под словом Windows 9x понимаются операционые системы Windows 95, Windows 98, Windows SE, Windows Me, принадлижащие линейке Windows 9x. 2) Windows NT А под словом Windows NT подразумевается сама Windows NT, а также Windows 2000, Windows XP, Windows Vista, т.е системы, принадлежащие линейке Windows NT. Если в тексте указано "операционная система Windows NT", значит имеется ввиду только эта операционная система, а не вся линейка. 3) Windows Server Под словом Windows Server подразумевается сама Windows Server, а также Windows Server 2003, Windows Longhorn, Windows Server 2008. Если в тексте указано "операционная система Windows Server", значит имеется ввиду только эта операционная система, а не вся линейка. 4) Windows Под словом Windows понимаются все однопользовательские домашние операционные системы, входящие в линейку Windows 9x и Windows NT. 5) Unix Под словом Unix понимаются операционная система System V и все остальные Unix, существовавшие до нее. 6) Linux Под словом Linux понимаются все системы, произошедшие от Linux, а именно сама Linux, Debian,RedHat, Mandriva, Ubuntu, SUse и многие другие. 7) FreeBSD Под этим словом подразумеваются все версии системы FreeBSD. BSD Под этим словом подразумеваются все системы, произошедшие от первой версии BSD, а именно, сама FreeBSD, OpenBSD и NetBSD. 9) UNIX Под словом UNIX, записанным заглавными буквами подразумеваются все системы, произошедшие от Unix. А именно - сама Unix, Linux, BSD, а также BeOS, QNX, MacOS X. СТРУКТУРА КНИГИ Во многих пособиях по UNIX сначала рассказывают о том как установить систему, когда пользователь не знает назначения многих опций. Такой подход хорош для Windows, так как в установке этой системы не ничего сложного. Но он не подходит для UNIX! Пользователя сначала заставляют установить систему, а потом только где-то в середине пособия он понимает как это правильно надо делать. По моему мнению изучение системы UNIX нужно вести так, как оно происходит у простого человека. Как, например, все изучали Windows? Сначала разбирались с интерфейсом системы, потом узнавали работе с файлами и учетными записями. Заметьте, что никто с первого раза не устанавливал Windows сам - это всегда за него делал другой человек! Потом уже учились устанавливать и настраивать (администрировать) систему, а также устанавливать прикладные программы. И лишь потом, когда наступает гармония с операционной системой, пользователь переходил к изучению "компьютерной безопасности" и изучению прикладных программ. Любую область операционной системы (будь то работа с файлами, разграничением доступа или выводом информации) можно разделить на 3 части: 1) Теория Как устроена эта область по каким правилам она живет. Нужно ответить на всё, чтобы у читателя не осталось вопросов. Несмотря на полную практическую бесценность, рассказать теорию нужно в первую очередь, чтобы не пришлось объяснять об этом позже в ходе следующих этапов. Как часто я встречал книги, в которых теоритическая часть отсутствует, а изложение материала идет вперемешку с "практикой"! 2) Средства Программы и команды, имеющиеся в системе, которые предназначены для работы в этой области. Так, например, нужно знать - какие команды используются для создания и перемещения файлов, чтобы можно было это выполнить на практике. Если вы не знаете - с помощью чего это можно сделать, то вы не сможете это сделать! 3) Практика Одних только знаний (теория) и умений (средства) недостаточно для освоения любой области. Необходим еще и ОПЫТ (Практика)! В этой части я постараюсь рассказать неопытному UNIX-пользователю о наиболее частых ситуациях, которые возникают в этой области, какими средствами и как их лучше решить. Встречая необычный случай можно растеряться - какое срество лучше применить? Здесь я как бы передаю читателю часть своего опыта. В некоторых разделах этой книги Средства могут быть совмещены с Практикой. Итак, мы выяснили по каким этапам происходит изучение операционной системы. С учетом особенностей UNIX, разделим на части изучение этой системы: 1) История системы UNIX 2) Интерфейс системы Изучение интерфейса системы (то есть методов работы в системе) на примере оболочки sh. 3) Пользователи и файлы Пользователи и учетные записи. Регистрация в системе и выход из системы. Виртуальные терминалы (tty), переключение терминалов и создание новых терминалов. Создание и изменение учетных записей. Команды оболочки sh. Устройство файлов, их аттрибуты, типы файлов. Влияние учетных записей на доступ к файлам. Группы пользователей. Работа с файлами в оболочке sh. Текстовые Файлы. Программы для редактирования текстовых файлов (ed, vi, nano и другие). sh-команды обработки текстовых файлов. 4) Управление процессами. Как система работает с процессами. Каталог /proc. Работа с процессами в оболочке sh. 5) Виртуальная файловая система (/, /bin, mount и т. д.) Корневая файловая система (root). Изменение корневой файловой системы (монтирование). Принятое расположение каталогов и файлов. 6) Физическая файловая система (ext3fs, ufs, fat, iso9660 и т. д.) Физическая файловая система - хранилище информации. Носители информации. Разбиение носителя на разделы и все о разделах. Файловые системы и их разновидности. Общее устройство UNIX файловых систем. 7) Установка системы и ее администрирование. Установка UNIX-подобной операционной системы. Все о настройке UNIX-системы (Загрузчик, Ядро, Инициализация). Журналирование. Подробнее о оболочке sh и sh-скрипты. Установка и настройка UNIX-программ Способы установки программы и установка программы каждым из этих способов. Порядок создания бинарника из исходного текста программы на языке Си. Настройка прикладных программ. Удаление программ. 9) Компьютерная самооборона Проблема внешней безопасности. Зараза: ELF-файлы, Скрипты. Проблемы администрирования и внутренней безопасности (Пользователи, Пароли и т. д.). 10) Соединение с сетью Установка и настройка соединения с сетью. *) Основные консольные программы - vi, ed - gcc - Оболочка bash Основы работы в bash. Создание bash-скриптов. 11) Установка и настройка программы X Window 12) Графическая оболочка Разновидности графических оболочек. Установка и удаление графических оболочек. Работа в графических оболочках. 13) Основы работы в графических приложениях GIMP
  11. Present: В этой теме постите только то, что не касается данных статей! От автора: Данные статьи написаны для новичков в UNIX, тех кто ни разу не видел командную строку. Я их начал писать как только сел за UNIX. Поэтому я старался писать статьи понятным доступным (для себя ) языком. Статьи написаны так, чтобы большая часть информации была справедлива для всех или большинства UNIX-клонов. Статьи пишутся сумбурно, непоследовательно - как MS выпускает свои заплатки . Все статьи - не являются законченными К обычным читателям просьба сообщать (по материалу): - об обнаруженных опечатках. - об обнаруженных фактических и предметных ошибках Литературных читателей прошу: - высказать мнение по логической структуре отдельных глав - говорить о резких изменениях стиля изложения - перескоках и излишему/недостаточному углублению в раскрытии содержания главы Технических и знающих читателей прошу: - сообщать о неверной информации и бреде - поделится знаниями - как это устроено в такой-то UNIX-системе - дополнять статью своей информацией На этом форуме будет создано несколько тем, каждая будет посвещена отдельному разделу. Содержание: part0 - Begin Введение. Информация о соглашениях и мысленная структура книги. part1 - About UNIX Что такое UNIX, чем отличается от Windows, какие особенности part2 - Command Shell -sh- Введение в командную строку. Основные команды для навигации. part3.1 - Users and Files Вход в систему, учетные записи и файлы part3.2 - sh-commands files Команды, связанные с предыдущей темой part4.1 - Devices О файлах-устройствах. Очень сырая. part4.2 - Filesystems and mounts Про файловые системы, съемные носители и команды монтирования part5 - Processes and Runs Все о процессах в UNIX. Первая глава - требования ОСи к процессору (обратите особое внимание). Раздел самый сырой.
  12. azsx Командного режима боятся не надо - его надо уважать. BSDobermann в BSD такой способ работать не будет Это особенности BSD'ого getty, а не самой системы.
  13. У меня на соседнем компьютере установлен FreeBSD 5.2.1 Я туда установил XWindow. Мне удалось настроить afterstep. Но все 3 дня настройки я обнаружил такую проблему: Всегда после выхода из иксов, на экране появляются разные ошибки. Всегда появляется: Fatal server Error: Caught signal 11. Server aborting Если xinit был запущен от root'а, то далее на экране появятся 5 точек и управление вернется в sh. А если xinit запускать от пользователя, и файла ~/.steprc нет, то логично открывается файл system.steprs (настройки по умолчанию) и после выхода появляется: waiting for X server for shut down xterm: fatal IO error 32 (Broken pipe) or KillClient on X server ":0.0" потом предыдущее сообщение, и: Feb 2 15:00:56 kernel: pid 1144 (XFree86), uid 0: exited on signal 6 Если же файл ~/.steprc существует (мои настройки), тогда менеджер окон сначала скидывает ласты: waiting for X server for shut down Feb 2 15:00:55 kernel: pid 1145 (afterstep), uid 1001: exited on signal 11 (core dumped) затем опять первое сообщение и: Feb 2 15:00:56 kernel: pid 1144 (XFree86), uid 0: exited on signal 6 Иногда еще и XFree86 тоже сбрасывает ядро. Этот глюк появляется только после выхода из иксов. Вы можете сказать что проблем нет и XWindow работает. Но он не должен в конце выводить сообщение об экстренном завершении работы и (тем более) сбрасывать ядро вместо с ядром afterstep. Вопрос - как решить эту проблему, чтобы и менеджер окон и X-сервер нормально завершали работу и не сбрасывали ядра? Поскольку XFree86 и у Linux и у FreeBSD одинаковые, я думаю, что данный вопрос на этом сайте будет уместным. Добавлено: Заменил мой конф-файл на файл по умолчанию - afterstep перестает падать. Значит, виноват, скорее всего, - ОН!
  14. gogi+1, я с тобой абсолютно солидарен. Можно установить систему со всеми приложениями, а потом удалить почти все ненужное. Но тут есть 2 проблемы: 1) Устанавливая все, и сразу, может попросту не хватить места на диске. Проще - зачем устанавливать ЭТО, если оно мне не нужно и я его все равно удалю? 2) В системе нигде не хранится список файлов, которые создаются при установке программы. Значит, найти все файлы, которые принадлежат удаляемому приложению - занятие не из легких. Можно просто искать все каталоги с одинаковыми именами, но не факт что у одного из них имя будет другое. Можно поступить так: - Искать все файлы, у к-х дата последней модификации очень близкая. Есть шанс, что это будут файлы одного приложения. Итак, кто может предложить какие способы удаления нужной программы, если мы не знаем - какие файлы были созданы при установке?
  15. Есть у меня еще один вопрос. В разных UNIX-системах есть разные раскладки (kbd) шрифты (fnt) и файлы перекодировки (scm). Поэтому в каждой из них можно только свою комбинацию русификации. Ведь в одних системах есть возможность русификации консоли, а в других ее нет - отсутствуют нужные файлы. Вопрос: Устроены ли эти файлы во всех UNIX-системах одинаково или есть различия? Если да, тогда можно будет записывать на диск все раскладки, шрифты и перекодировки, которые я найду в другой системе. После этого, используя эти файлы, в любой UNIX-системе можно будет русифицировать консоль с любой раскладкой и шрифтом по вкусу.
  16. Встречал немного старую Ubuntu - в ней есть "минимальная" установка. Но в этом дистрибутиве (даже не в минимальной установке) не было всех заголовочных файлов для компиляции и нужных программ. У друга пару месяцев назад взял OpenSUSE. Пока - самый серьезный дистр из всех встреченных. В нем можно выбирать пакеты, которые хочется установить и он правильно сообщается о тех пакетах, которые требуют другие пакеты. Но даже если ничего дополнительного не устанавливать, установка получается совсем не минимальной (у меня так и не получилось запретить устанавливать какой-то большой пакет администирования - система всегда говорила что этот пакет требуется другим пакетам). В итоге можно сказать, что есть такие Linux-дистрибутивы, в которых можно устанавливать только то, что хочется, но только их мало и ни один из них по уровню установки программ еще не дошел до уровня FreeBSD.
  17. Вопрос связан не только с Linux, а вообще со всеми UNIX-системами. Как известно, Linux'ы распространяются дистрибутивами вместе с программами. Поэтому для новичков Linux не пригоден (мое мнение) - для них все сводится к поиску нужного дистрибутива, в котором есть все программы, нужные новичку. Я считаю, что для нормальной работы в UNIX надо самому выбирать ядро и устанавливать почти пустую систему (только sh, консольные программы и компилятор). А затем устанавливать в систему все нужные программы самому. После компиляции программы стоит создать список файлов, которые будут созданы после установки программы и скопировать бинарную сборку на резервный носитель информации. Далее надо создать установочный диск с этой системой, чтобы в случае краха переустановить систему. С этой стороны для новичков гораздо больше подходит FreeBSD. Установочный диск (не дистрибутивный) позволяет: 1) Установить минимальную конфигурацию (весит менее 100 MB) 2) или установить побольше, но зато самому выбрать список программ, бинарные сборки которых будут установлены. Это хорошо тем, что XWindow и все прочие графические прибамбасы приходится устанавливать и настраивать самому, так что в этом нужно разбираться. Это все - не реклама, а небольшое вступление, чтобы ко мне не возникало дополнительных вопросов. Так вот, собственно сами вопросы: 1) Может ли кто дать информацию (или ссылку) про создание установочных дисков системы FreeBSD (или другой UNIX-линейки) на основе уже созданной и настроенной системы (т. е. дистрибутив). 2) Есть ли Linux-система (или UNIX-система другой линейки), позволяющая как и FreeBSD устанавливать минимальную конфигурацию, а перед установкой спрашивать - какие программы устанавливать, а не устанавливать весь дистрибутив целиком? А то встреченные мной Linux'ы поступают только так - выбрали раздел и диск устанавливает все подряд, не спрашивая - нужно нам это или нет.
×
×
  • Создать...