Реферат: Операционная система Unix

Содержание

Введение

Что такое Unix?

Где взять бесплатный Unix?

Каковы основные отличия Unix от других OS?

Почему Unix?

Основные понятия Unix

Файловая система

Комадный интерпретатор

Руководства — man


Введение

Писать об ОС Unix чрезвычайнотрудно. Во-первых, потому, что об этой системе написано очень много. Во-вторых,потому, что идеи и решения Unix оказали и оказывают огромное влияние наразвитие всех современных ОС, и многие из этих идей уже описаны в этой книге. В-третьих,потому что Unix — не одна ОС, а целое семейство систем, и не всегда можно«отследить» их родство между собой, а уж описать все ОС, входящие вэто семейство просто невозможно. Тем не менее, мы, ни в коей мере не претендуяна полноту, попытаемся дать беглый обзор «мира Unix» в тех егообластях, которые представляются нам интересными для целей нашего учебногокурса.

Рождение ОС Unix относится кконцу 60-х годов, и эта история уже обросла «легендами», которыеподчас по-разному повествуют о деталях этого события. ОС Unix родилась висследовательском центре Bell Telephone Laboratories (Bell Labs), входящем всостав корпорации AT&T. Изначально этот инициативный проект для ЭВМ PDP-7 (впоследствии- для PDP-11) представлял собой то ли с файловую систему, то ли компьютернуюигру, то ли систему подготовки текстов, то ли и то, и другое, и третье. Важно,однако, то, что с самого начала проект, превратившийся в итоге в ОС,задумывался как программная среда коллективного пользования. Автором первойверсии Unix является Кен Томпсон, однако в обсуждении проекта, а впоследствии — и в его реализации принимал участие большой коллектив сотрудников (Д. Ритчи, Б.Керниган, Р. Пайк и другие). На наш взгляд, несколько счастливых обстоятельстврождения Unix определили удачу этой системы на много лет вперед.

Для большинства сотрудников тогоколлектива, в котором родилась ОС Unix, эта ОС была «третьей системой».Существует мнение (см., например [1]), что системный программист достигаетвысокой квалификации только при выполнении третьего своего проекта: первыйпроект получается еще «ученическим», во второй разработчик пытаетсявключить все, что не получилось в первом, и в итоге он получается слишкомгромоздким, и только в третьем достигается необходимый баланс желаний ивозможностей. Известно, что до рождения Unix коллектив Bell Labs участвовал (совместнос рядом других фирм) в разработке ОС MULTICS. Конечный продукт MULTICS (BellLabs не принимала участия в последних стадиях разработки) носит все признаки«второй системы» и не получил широкого распространения. Следует,однако, заметить, что в этом проекте были рождены многие принципиально важныеидеи и решения, и некоторые концепции, которые многие считают рожденными вUnix, на самом деле имеет своим источником проект MULTICS.

ОС Unix была системой, котораяделалась «для себя и для своих друзей». Перед Unix не ставиласьзадача захвата рынка и конкуренции с какими-либо продуктами. Сами разработчикиОС Unix были и ее пользователями, и сами оценивали соответствие системы своимнуждам. Без давления рыночной конъюнктуры такая оценка могла быть предельнообъективной.

ОС Unix явилась системой,которая сделана программистами и для программистов. Это определило изящество иконцептуальную стройность системы — с одной стороны, а с другой — необходимостьпонимания системы для пользователя Unix и чувства профессиональнойответственности для программиста, разрабатывающего программное обеспечение дляUnix. И никакие последующие попытки сделать «Unix для чайников» несмогли избавить ОС Unix от этого достоинства.

В 1972-73 гг. Кен Томпсон иДеннис Ритчи написали новую версию Unix. Специально для этой цели Д. Ритчисоздал язык программирования C, представлять который теперь уже нетнеобходимости. Более 90% программного кода Unix написано на этом языке, и языкстал неотъемлемой частью ОС. То, что основная часть ОС написана на языкевысокого уровня, обеспечивает возможность ее перекомпиляции в коды любойаппаратной платформы и является обстоятельством, определившим широкоераспространение Unix.

В период создания Unixантимонопольное законодательство США не давало корпорации AT&T возможностивыходить на рынок программных продуктов. Поэтому ОС Unix была некоммерческой исвободно распространялась, прежде всего — в университетах. Там ее развитиепродолжалось, и наиболее активно оно велось в Калифорнийском университете в г. Беркли.При этом университете была создана группа Berkeley Software Distribution,которая занималась развитием отдельной ветви ОС — BSD Unix. На протяжении всейпоследующей истории основная ветвь Unix и BSD Unix развивались параллельно,неоднократно взаимно обогащая друг друга.

По мере распространения ОС Unixстал все более возрастать интерес к ней коммерческих фирм, которые сталивыпускать собственные коммерческие версии этой ОС. Со временем сталакоммерческой и «основная» ветвь Unix от AT&T, для ее продвижениябыла создана дочерняя фирма Unix System Laboratory. Ветвь BSD Unix в своюочередь разветвилась на коммерческую BSD и Free BSD [18]. Различныекоммерческие и свободно распространяемые Unix-подобные системы строились набазе ядра AT&T Unix, однако в них включались и свойства, заимствуемые изBSD Unix, а также и оригинальные свойства. Несмотря на общий источник, различиямежду членами семейства Unix накапливались и в итоге привели к тому, чтоперенос приложений из одной Unix-подобной ОС в другую стал чрезвычайнозатруднен. По инициативе пользователей Unix возникло движение за стандартизациюAPI Unix. Это движение было поддержано Международной организацией стандартовISO и привело к возникновению стандарта POSIX (Portable Operation SystemInterface eXecution), который развивается и в настоящее время и является самымавторитетным стандартом для ОС. Однако, оформление спецификаций POSIX какофициального стандарта — процесс довольно медленный, и он не можетудовлетворять потребностей производителей программного обеспечения, что привелок возникновению альтернативных промышленных стандартов.

С переходом AT&T Unix ккомпании Nowell название этой ОС изменилось на Unixware, а права на торговуюмарку Unix перешли к консорциуму X/Open. Этот консорциум (в настоящее время — OpenGroup) разработал свои (более широкие, чем POSIX) спецификации системы,известные как Single Unix Specification. Недавно вышла вторая редакция этогостандарта, значительно лучше согласованная с POSIX.

Наконец, ряд фирм — производителейсобственных версий Unix образовал консорциума Open Software Foundation (OSF),который выпустил собственную версию Unix — OSF/1, сделанную на базе микроядраMach. OSF также выпустил спецификации системы OSF/1, на основе которойфирмы-члены OSF стали выпускать собственные Unix-системы. Среди таких систем: SunOSфирмы Sun Microsystems, AIX фирмы IBM, HP/UX фирмы Hewlett-Packard, DIGITALUNIX фирмы Compaq и другие.

Поначалу Unix-системы этих фирмв большей степени базировались на BSD Unix, но сейчас большая часть современныхпромышленных Unix-систем строятся на базе использовании (по лицензии) ядраAT&T Unix System V Release 4 (S5R4), хотя наследуют и некоторые свойстваBSD Unix. Мы не берем на себя ответственность сравнивать коммерческиеUnix-системы, так как периодически появляющиеся в печати сравнения такого родазачастую представляют совершенно противоположные результаты.

Компания Nowell продала Unixкомпании Santa Crouse Operations, которая выпускала собственный Unix-продукт — SCOOpen Server. SCO Open Server [16] базировался на более ранней версии ядра (SystemV Release 3), но был великолепно отлажен и отличался высокой стабильностью. ФирмаSanta Crouse Operations интегрировала свой продукт с AT&T Unix и выпустилаOpen Unix 8 [30], однако затем продала Unix фирме Caldera, которая и являетсявладельцем «классической» ОС Unix сегодня (в конце 2001 г).

Фирма Sun Microsystems началасвое представительство в мире Unix системой SunOS, созданной на основе ядра BSD.Однако впоследствии заменила ее системой Solaris на основе S5R4 [34]. Внастоящее время распространяется версия 8 этой ОС (существует также v.9-бета). Solarisработает на платформе SPARC (RISC-процессоры, изготовляемые по спецификациямSun) и Intel-Pentium.

Фирма Hewlett-Packard предлагаетОС HP-UX. v.11 на платформе PA-RISC [22]. HP-UX базируется на S5R4, но содержитмного свойств, «выдающих» ее происхождение от BSD Unix. Конечно же,HP-UX будет доступна и на платформе Intel-Itanium.

Фирма IBM выступает с ОС AIX,последняя на сегодняшний день версия — 5L (о ней еще пойдет речь впереди) [12].IBM не объявляла «родословную» AIX, это в основном оригинальнаяразработка, но первые версии носили признаки происхождения от FreeBSD Unix. Сейчас,однако, AIX больше похожа на S5R4. Первоначально ОС AIX была доступна и наплатформе Intel-Pentium, но впоследствии (в соответствии с общей политикой IBM)перестала поддерживаться на этой платформе. В настоящее время AIX работает насерверах IBM RS/6000 и в других вычислительных платформах на базе процессоровPowerPC (в том числе и на суперкомпьютерах IBM).

ОС DIGITAL UNIX фирмы DEC былаединственной промышленной реализаций системы OSF/1. ОС DIGITAL UNIX работала наRISC-серверах Alpha фирмы DEC. Когда в 1998 г. фирма DEC была поглощена фирмойCompaq, в фирму Compaq перешли и серверы Alpha, и DIGITAL UNIX. Фирма Compaqимеет намерение восстановить присутствие на рынке серверов Alpha и в связи сэтим интенсивно развивает и ОС для них. Нынешнее название этой ОС — Tru64 Unix(текущая версия — 5.1A), она продолжает базироваться на ядре OSF/1 и несет всебе много признаков BSD Unix [37].

Несмотря на то, что большинствокоммерческих Unix-систем базируется на одном ядре и удовлетворяет требованиямPOSIX, каждая из них имеет собственный диалект API, и различия между диалектаминакапливаются. Это приводит к тому, что перенос промышленных приложений с однойUnix-системы на другую затрудняется и требует, как минимум, перекомпиляции, ачасто — и корректировки исходного кода. Попытка преодолеть «разброд» исделать единую для всех ОС Unix была предпринята в 1998 г. альянсом фирм SCO,IBM и Sequent. Эти фирмы объединились в проекте Monterey с целью созданияединой ОС на базе Unixware, владельцем которой в то время была SCO, IBM AIX иОС DYNIX фирмы Sequent. (Фирма Sequent занимает лидирующие позиции впроизводстве ЭВМ архитектуры NUMA — несимметричной многопроцессорной — и DYNIX- это Unix для таких ЭВМ). ОС Monterey должна была работать на 32-разряднойплатформе Intel-Pentium, 64-разрядной платформе PowerPC и на новой 64-разряднойплатформе Intel-Itanium. О поддержке проекта заявили почти все лидерыпроизводства аппаратных средств и промежуточного программного обеспечения. Дажефирмы, имеющие собственные клоны Unix (кроме Sun Microsystems), объявили, чтона платформах Intel они будут поддерживать только Monterey. Работа над проектомпродвигалась, по-видимому, успешно. ОС Monterey была в числе первых, доказавшихсвою работоспособность на Intel-Itanium (наряду с Windows NT и Linux) иединственной, которая при этом не прибегала к эмуляции 32-разрядной архитектурыIntel-Pentium. Однако в финальной стадии проекта произошло фатальное событие: SCOпродала свое Unix-отделение. Еще раньше фирма Sequent вошла в состав IBM.«Наследником» всех свойств ОС Monterey стала ОС IBM AIX v.5L. Однако,не совсем всех. Платформа Intel-Pentium не является для IBM стратегическимнаправлением, и на этой платформе ОС AIX недоступна. А поскольку другие лидерыкомпьютерной индустрии не разделяют (или не вполне разделяют) такую позициюIBM, идея общей ОС Unix так и не реализовалась.

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

Последние годы отмечены шумнойэкспансией ОС Linux [9, 26]. Ядро этой ОС было разработано в 1991 ЛинусомТорвальдсом (Финляндия) прежде всего «для личного пользования». Торвальдссделал исходный код своей ОС открытым. При фиксированном ядре любой программистможет написать собственные сервисы ОС Linux и опубликовать их через Internet. Трудносказать, что послужило причиной такой популярности ОС Linux. Она не является ниуникальной, ни лучшей ни как свободно распространяемая, ни как открытая, ни какUnix для компьютеров небольшой вычислительной мощности. По-видимому, этотфеномен объясняется некоторым совпадением объективных и субъективных факторов,анализ которых не входит в наши цели.

До 1997 г. ОС Linux былапопулярна почти исключительно в университетской среде. Однако в 1997 г. рядфирм объявил о выпуске собственных версий Linux. Некоторые из этих версий (например,Red Hat) остались бесплатными, некоторые (например, Caldera) сталикоммерческими. Принципиально важно то, что у Linux появились «хозяева»,которые несли ответственность (в том числе и коммерческую) за сопровождение ОС.Это вызвало стремительное возрастание интереса к Linux пользователей, которыерешают задачи промышленной обработки информации. Такой интерес объясняется, содной стороны, желанием иметь «почти настоящую» ОС Unix со значительноменьшими расходами, с другой, нежеланием попадать в полную зависимость отMicrosoft. Фирмы-лидеры информационных технологий не могли игнорироватьнастроения рынка и объявили либо о выпуске собственных версий Linux (например,Hewlett-Packard), либо о поддержке определенных версий Linux на своихаппаратных платформах и в своем промежуточном программном обеспечении (например,IBM). Интересно, что эти фирмы являются производителем собственных коммерческихверсий ОС Unix. В последних версиях всех коммерческих ОС Unix, рассмотренныхвыше, в API ОС внесены системные вызовы, обеспечивающие возможность выполненияв них приложений, написанных для Linux. Пока, по-видимому, грандыинформационных технологий не видят в Linux серьезного конкурента для своих ОС всфере промышленной обработки данных и систем высокой готовности ипредусматривают перенос информационных систем с Linux на коммерческие Unix придостижении ими определенной степени зрелости. Не без помощи «грандов»достигнут перенос Linux на большое число платформ — от встроенныхвычислительных устройств до мейнфреймов и суперкомпьютеров. Возможно, сдостижением Linux промышленного уровня, в этой ОС сможет воплотиться идея, неудавшаяся в проекте Monterey — единая ОС Unix для всех.

Следует отметить еще однуинтересную сферу применения Linux. Ряд стран (например, Китай, Россия) объявило принятии в качестве базовой ОС для информационных системах в своих силовыхструктурах ОС, «изготовляемой на основе Linux». Основную роль здесьиграет открытость исходного кода. Доступность исходного кода Linux позволяетправительственным специалистам этих стран с одной стороны убедиться вотсутствии в ОС «закладок», занимающихся «электронным шпионажем»,а с другой — провести исчерпывающую верификацию ОС и добиться ее высокой надежностии безопасности.

В следующем изложении мыориентируемся прежде всего на «классическую» ОС Unix, ведущую своюродословную от Bell Labs, и ее последнюю на сегодняшний день версию — Open Unix8, но рассматриваем также и некоторые особенности других коммерческих инекоммерческих ОС семейства Unix.


Что такое Unix?

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

 

Какие бывают Unix'ы и накаких машинах они запускаются?

Unix платформа SCO Unix (Santa Cruz Operation) i*86 Novell UnixWare (куплена SCO) i*86 Interactive Unix (куплен Sun) i*86 Linux i*86, Motorolla 680*0, DEC Alpha, IBM POWER-PC, Sun Sparc,??? Семейство BSD: BSDI, FreeBSD, NetBSD, OpenBSD i*86, Acorn ARM, Sun Sparc,??? Solaris Sun Sparc, i*86 AIX IBM RS/6000 и AS/400 на POWER-PC IRIX SGI MIPS Digital Unix (ранее Unix OSF/1) DEC Alpha HP-UX Hewlett-Packard PA-RISC

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

Условно можно выделить семействаSystem V и Berkeley. System V (читается «System Five») имеетнесколько вариантов, последний по моим сведениям System V Release 4. УниверситетBerkeley славен не только разработкой BSD, но и большинства протоколов Internet.Впрочем, многие Unix'ы сочетают свойства обеих систем.


Где взять бесплатный Unix?

FreeBSD База — www.freebsd.org;

есть также на ftp. kiae. su/FreeBSD/*-RELEASE/и еще во множестве мест

OpenBSD ftp. openbsd.org

Linuxftp. cs. msu. su/pub/Os/Linux/Slachware_3.1/

SCOПо моим сведениям, в Internetнедоступен, но можно получить лицензию на бесплатное использование. Обратитесьна www.sco.com

/> 

Каковы основные отличия Unix от других OS?

Unix состоит из ядра свключенными в него драйверами и из утилит (внешних по отношению к ядру программ).Если надо изменить конфигурацию (добавить устройство, изменить порт илипрерывание), то ядро пересобирают (перелинковывают) из обьектных модулей или (напр.,во FreeBSD) из исходников. /* Это не совсем верно. Некоторые параметры пожнопоправить без пересборки. Существуют также loadable kernel modules. */

В противоположность Unix'уWindows (если не уточняется, какая, то имеются в виду 3.11, 95 и NT) и OS/2 призагрузке фактически на ходу прилинковывают драйверы. При этом компактностьсобранного ядра и повторное использование общего кода на порядок ниже, чем уUnix. Кроме того, при неизменной конфигурации системы ядро Unix без переделки (потребуетсяизменить только стартовую часть BIOS) может быть записан в ПЗУ и выполняться незагружаясь в ОЗУ. Компактность кода особенно важна, т.к. ядро и драйверыникогда не покидают физическую оперативную память, не свопятся на диск.

Unix — самая многоплатформеннаяOS. WindowsNT пытается подражать ему, но пока это плохо удается — после отказаот MIPS и POWER-PC, W'NT остались всего на двух платформы — традиционная i*86 иDEC Alpha. Переносимость программ с одной версии Unix на другую ограничена. Неаккуратнонаписанная программа, не учитывающая различий в реализациях Unix, делающаянеобоснованные предположения типа 'переменная integer должна занимать четыребайта' может потребовать серьезной переделки. Но все равно это на многопорядков легче, чем например пернести с OS/2 на NT.

 

Почему Unix?

Unix используется как в качествекак сервера, так и рабочей станции. В номинации серверов с ним конкурируют MSWindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS и операционныесистемы мэйнфреймов. Каждая система имеет свою область применения, в которойона лучше других.

WindowsNT — для администраторов,которые предпочитают удобный интерфейс экономному расходованию ресурсов ивысокой производительности.

Netware — для сетей, где нужнавысокая производительность файлового и принтерного сервиса и не столь важныостальные сервисы. Главный недостаток — на сервере Netware трудно запускатьприложения.

OS/2 хороша там, где нужен«легкий» сервер приложений. Ресурсов требует меньше чем NT, вуправлении гибче (хотя в настройке может и сложнее), а многозадачность оченьхорошая. Авторизация и разграничение прав доступа не реализованы на уровне ОС,что с лихвой окупается реализацией на уровне приложений-серверов. (Впрочем,зачастую остальные OS делают то же самое). Многие станции FIDOnet и BBS сделанына базе OS/2.

VMS — мощный, ничем неуступающий Unix'ам (а во многом и превосходящий его) сервер приложений, нотолько для платформ VAX и Alpha фирмы DEC.

Мэйнфреймы — для обслуживанияочень большого количества пользователей (порядка нескольких тысяч). Но работаэтих пользователей как правило организована в виде не клиент-серверноговзаимодействия, а в виде хост-терминального. Терминал же в этой паре скорее неклиент, а сервер (Мир Internet, N3 за 1996-й год). К преимуществам мэйнфреймовнадо отнести более высокую защищенность и устойчивость к сбоям, а к недостаткам- соответствующую этим качествам цену.

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

Недостаточная гибкостьпредоставления прав доступа пользователей к файлам по сравнению с WindowsNTзатрудняет организацию _на_уровне_файловой_системы_ группового доступа к данным(точнее, к файлам), что на мой взгляд компенсируется простотой реализации, азначит меньшими требованиями к аппаратуре. Впрочем, такие приложения, какSQL-сервер решают проблему группового доступа к данным своими силами, так чтоотсутствующая в Unix возможность запретить доступ к _файлу_ конкретномупользователю на мой взгляд является явно избыточной.

Практически все протоколы, накоторых основан Internet, были разработаны под Unix, в частности стекпротоколов TCP/IP придуман в университете Berkeley.

Защищенность Unix при правильномадминистрировании (а когда это не так?) ни в чем не уступает ни Novell, ниWindowsNT.

Важным свойством Unix, котороеприближает его к мэйнфреймам, является его многотерминальность, многопользователей могут одновременно запускать программы на одной Unix-машине. Еслине требуется использовать графику, можно обойтись дешевыми текстовымитерминалами (специализированными или на базе дешевых PC), подключенными помедленным линиям. В этом с ним конкурирует только VMS. Можно использовать играфические X-терминалы, когда на одном экране присутствуют окна процессов,выполняющихся на разных машинах.

В номинации рабочих станций сUnix конкурируют MS Windows*, IBM OS/2, Macintosh и Acorn RISC-OS.

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

OS/2 — для любителей OS/2.: -) Хотяпо некоторым сведениям OS/2 лучше других взаимодействует с мэйнфреймами исетями IBM.

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

RISC-OS, прошитая в ПЗУ,позволяет не тратить время на инсталляцию операционной системы и восстановлениеее после сбоев. Кроме того, практически все программы под ней очень экономнорасходуют ресурсы, благодаря чему не нуждаются в свопинге и работают оченьбыстро.

Unix функционирует как на PC,так и на мощных рабочих станциях с RISC-процессорами, под Unix написаныдействительно мощные САПР и геоинформационные системы. Своей масштабируемостьюUnix из-за его многоплатформенности на порядок превосходит любую другуюоперационную систему из известных мне.

Основные понятия Unix

Unix базируется на двух основныхпонятиях: «процесс» и «файл». Процессы являют собой динамическуюсторону системы, это субъекты; а файлы — статическую, это объекты действияпроцессов. Почти весь интерфейс взаимодействия процессов с ядром и друг сдругом выглядит как запись/чтение файлов. /* Хотя надо добавить такие вещи, каксигналы, разделяемая память и семафоры. */

Процессы нельзя путать спрограммами — одна программа (как правило с различными данными) можетвыполняться в разных процессах. Процессы можно весьма условно разделить на дватипа — задачи и демоны. Задача — это процесс, который выполняет свою работу,стремясь побыстрее закончить ее и завершиться. Демон ждет событий, которые ондолжен обработать, обрабатывает произошедшие события и снова ждет; завершаетсяон как правило по приказу другого процесса, чаще всего его убиваетпользователь, дав команду «kill номер_процесса». /* В этом смыслеполучается, что интерактивная задача, обрабатывающая ввод пользователя, скореепохожа на демона, чем на задачу.: -) */

 

Файловая система

В старых Unix'ах отводилось 14букв на имя, в новых это ограничение снято. В директории кроме имени файланаходится его идентификатор inode — целое число, определяющее номер блока, вкотором записаны атрибуты файла. Среди них: номер пользователя — хозяина файла;номер группы; количество ссылок на файл (см. далее) даты и время создания,последней модификации и последнего обращения к файлу; атрибуты доступа. Атрибутыдоступа содержат тип файла (см. далее), атрибуты смены прав при запуске (см. далее)и права доступа к нему для хозяина, одногрупника и остальных на чтение, записьи выполнение. Право на стирание файла определяется правом записи в вышележащуюдиректорию.

Каждый файл (но не директория) можетбыть известен под несколькими именами, но обязательно лежащими на одном разделе.Все ссылки на файл равноправны; файл стирается, когда удаляется последняяссылка на файл. Если файл открыт (для чтения и/или записи), то число ссылок нанего увеличивается еще на единицу; так многие программы, открывающие временныйфайл, сразу удаляют его, чтобы при аварийном завершении, когда операционнаясистема закрывает открытые процессом файлы, этот временный файл был удаленоперационной системой.

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

Файлы бывают следующих типов:

обычный файл прямого доступа;

директория (файл, содержащийимена и идентификаторы других файлов);

символьный линк (строка с именемдругого файла);

блочное устройство (диск илимагнитная лента);

последовательное устройство (терминалы,последовательные и параллельные порты; диски и магнитные ленты тоже имеютинтерфейс последовательного устройства)

поименованный канал.

Специальные файлы,предназначенные для работы с устройствами как правило сосредоточены вдиректории "/dev". Вот некоторые из них (в номинации FreeBSD):

tty* — терминалы, в т. ч.:

ttyv<цифра> — виртуальнаяконсоль;

ttyd<цифра> — DialInтерминал (обычно последовательный порт);

cuaa<цифра> — DialOutлиния

ttyp<цифра> — сетевойпсевдо-терминал;

tty — терминал, с которымассоциирована задача;

wd* — жесткие диски и ихподразделы, в т. ч.:

wd<цифра> — жесткий диск;

wd<цифра>s<цифра> — партицияэтого диска (именуемая здесь «slice»);

wd<цифра>s<цифра><буква>- раздел партиции;

fd<цифра> [<буква>]- floppy-диск;

rwd*, rfd* — то же самое, чтоwd* и fd*, но с последовательным доступом;

Иногда требуется, чтобыпрограмма, запущенная пользователем, имела не права запустившего еепользователя, а какие-то другие. В этом случае устанавливается атрибут сменыправ на права пользователя — хозяина программы. (В качестве примера приведупрограмму, которая читает файл с вопросами и ответами и на основаниипрочитанного тестирует запустившего эту программу студента. Программа должнаиметь право читать файл с ответами, а запустивший ее студент — нет) Так,например, работает программа passwd, с помощью которой юзер может изменить свойпароль. Юзер может запустить программу passwd, она может произвести изменения всистемной базе данных — а пользователь не может.

В отличие от DOS, в которомполное имя файла выглядит как «диск: \путь\имя», и RISC-OS, в которойоно выглядит "-файловая_система-диск: $. путь. имя" (что вообщеговоря имеет свои преимущества), Unix использует прозрачную нотацию в виде"/путь/имя". Корень отсчитывается от раздела, с которого былозагружено ядро Unix. Если мы собираемся использовать другой раздел (а назагрузочном разделе как правило находится только самое необходимое для загрузки),используется команда `mount /dev/файл_раздела директория`. При этом файлы иподдиректории, ранее находившиеся в этой директории, становятся недоступными,пока раздел не будет размонтирован (естественно, все нормальные люди используютдля монтирования разделов пустые директории). Производить монтирование иразмонтирование имеет право только супервизор.

При запуске каждый процесс можетрасчитывать, что для него уже открыты три файла, которые ему известны какстандартный ввод stdin по дескриптору 0; стандартный вывод stdout подескриптору 1; и стандартный вывод stderr по дескриптору 2. При регистрации всистеме, когда пользователь вводит имя и пароль, а ему запускается shell, всетрое направлены на /dev/tty; позже любой из них может быть перенаправлен влюбой файл.

 

Комадный интерпретатор

В Unix практически всегда входятдва командных интерпретатора — sh (shell) и csh (C-подобный shell). Кроме нихеще бывают bash (Bourne), ksh (Korn), и другие. Не вдаваясь в подробности,приведу общие принципы:

Все команды, кроме изменениятекущей директории, установки переменных окружения (environment) и операторовструктурного программирования — внешние программы. Программы эти как правилорасполагаются в каталогах /bin и /usr/bin. Программы системногоадминистрирования — в каталогах /sbin и /usr/sbin.

Команда состоит из именизапускаемой программы и аргументов. Аргументы отделяются от имени команды идруг от друга пробелами и табуляциями. Некоторые спецсимволы интерпретируютсясамим shell'ом. Спецсимволами являются " ' ` \! $ ^ *? < > | &;(еще какие?).

В одной командной строке можнодать несколько команд. Команды могут быть разделены; (последовательноевыполнение команд), & (асинхронное одновременное выполнение команд), | (синхронноевыполнение, стандартный вывод stdout первой команды будет подан на стандартныйввод stdin второй).

Кроме того, можно братьстандартный ввод из файла, включив в качестве одного из аргументов "<файл"(без кавычек); можно направить стандартный вывод в файл, используя ">файл"(файл будет обнулен) или ">>файл" (запись будет произведена вконец файла). Сама программа не получит этого аргумента; чтобы узнать, что вводили вывод переназначены, программа должна сама предпринять некоторые весьманетривиальные телодвижения.

 

Руководства — man

Если надо получить информацию покакой-либо команде, дайте команду «man имя_команды». На экран это будетвыдаваться через программу «more» — посмотрите, как с ней управлятьсяна вашем Unix'е командой «man more».

еще рефераты
Еще работы по информатике, программированию