Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
33 - (Лк-4 / UNIX / )
Лекция-4
Тема:
UNIX подобные и другие POSIX-совместимые операционные системы
Вопросы
[1] Общая характеристика семейства операционных систем UNIX [2] История создания UNIX [3] Основные понятия системы UNIX [4] Архитектура ОС UNIX [5] Операционная система Linux |
POSIX-совместимые операционные системы
UNIX - самая многоплатформенная ОС.
Переносимость программ с одной версии UNIX на другую ограничена.
POSIX (Portable Operating System Interface for UNIX, Переносимый интерфейс операционной системы для UNIX) набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой.
Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода.
Версии POSIX
POSIX.1, Корневые службы (включает стандарт ANSI C) (IEEE Std 1003.1 1988):
POSIX.1b, Расширения реального времени (IEEE Std 1003.1b 1993):
POSIX.1c, Расширения потоков (IEEE Std 1003.1c 1995):
Предлагаемые стандарты предназначены для некой обобщенной операционной системы, которая вовсе не обязательно должна быть системой UNIX.
-
Например, операционные системы VMS, OS/2, и Windows NT, совместимы с POSIX, но UNIX-системами не являются.
В настоящее время существует множество ОС, построенных на ядре UNIX.
Полностью POSIX-совместимые ОС:
По большей части POSIX-совместимые ОС
Другие ОС, построенные на ядре UNIX:
На этапе разработки UNIX ставилась задача создать операционную среду для проведения научных исследований.
В настоящее время UNIX с успехом применяется в бизнесе, архитектуре, медицине и многих других сферах деятельности.
Под UNIX написаны мощные САПР и геоинформационные системы.
UNIX мощная и гибкая система. Она стала одной из самых популярных операционных сред.
UNIX функционирует как на PC, так и на мощных рабочих станциях с RISC-процессорами.
Своей масштабируемостью UNIX из-за ее многоплатформенности на порядок превосходит любую другую операционную систему.
UNIX может использоваться как в качестве сервера, так и рабочей станции.
Практически все протоколы, на которых основан Интернет, были разработаны под UNIX, в частности стек протоколов TCP/IP.
Важным свойством UNIX, является его многотерминальность, много пользователей могут одновременно запускать программы на одной UNIX-машине.
Если не требуется использовать графику, можно обойтись дешевыми текстовыми терминалами, подключенными по медленным линиям.
Можно использовать и графические X-терминалы, когда на одном экране присутствуют окна процессов, выполняющихся на разных машинах.
UNIX (UNICS UNiplexed Information and Computing Services, примитивная информационная и вычислительная служба) название целого семейства операционных систем.
-
История UNIX началась в конце 60-х годов в AT&T Bell Laboratories с операционной системы под названием Multics. В 1969г. Bell Labs отошла от проекта Multics и вплотную занялась разработкой того, что впоследствии превратилось в операционную систему UNIX.
Сотрудник компании Кен Томпсон решил построить операционную систему, которая поддерживала бы совместную работу коллектива программистов при проведении исследований и разработке новых программных продуктов.
В начале своего развития UNIX в основном использовался в двух "несовместимых" областях деятельности подготовке документов и программировании.
В 1973г. сотрудник Bell Labs Деннис Ритчи переписал систему на созданном им языке программирования Си. В результате использования языка Си система стала легко переносимой, и в настоящее время её можно сравнительно небольшими усилиями адаптировать для машины новой архитектуры.
Основные этапы развития UNIX
1969г. |
Начало. История UNIX началась в 1969г. с работы Кена Томпсона и Денниса Ритчи на компьютере PDP-7. |
1973г. |
Четвертая редакция. Система переписана на языке Си, в результате чего появилась возможность переносить её на компьютеры с различными архитектурами. |
1975г. |
Шестая редакция. UNIX (версия 6) начинает распространяться за пределами Bell Labs. Появляется первая версия BSD UNIX, разработанная в Калифорнийском Университете, и основанная на версии 6. |
1982г. |
System III. UNIX System Group (USG) в составе AT&T разработала System III, один из стандартов UNIX. |
1983г. |
System V. Ряд исследовательских групп объединились в UNIX System Development Lab. В результате появилась первая сопровождаемая версия UNIX. |
1984г. |
В Калифорнийском Университете создана система BSD 4.2 (одна из опорных версий ветви BSD). |
1989г. |
Началось распространение UNIX System V Release 4 (SRV4), Объединившей в себе System V, BSD и XENIX (версия UNIX фирм Microsoft и Intel). |
1992г. |
UNIX System Laboratory (USL - организована в 1991г.) выпустила опорную версию UNIX System V Release 4.2. |
1993г. |
Выпущена версия BSD UNIX 4.4. |
Виртуальная машина
ОС UNIX многопользовательская система.
Каждому пользователю после регистрации предоставляется виртуальный процессор, в котором есть все необходимые ресурсы:
Текущее состояние такого виртуального компьютера называется образом.
Процесс выполнение образа. Образ состоит из следующих элементов:
Пользователь
ОС UNIX предназначена для мультитерминальной работы.
Пользователь называется зарегистрированным, если на него заведена соответствующая учетная запись в регистрационном файле /etc/passwd
Файловая система ОС UNIX имеет древовидную структуру.
Каждому зарегистрированному пользователю устанавливается каталог файловой системы, который называется «домашним» для данного пользователя.
При входе в сиситему пользователь системе, он попадает в свой «домашний» каталог.
Доступ пользователя к «чужим» файлам и каталогам ограничен установленными правами доступа к этим файлам и каталогам.
Интерфейс пользователя
После регистрации пользователя в ОС UNIX для него запускается один из командных интерпретаторов, который прописан в регистрационном файле /etc/passwd.
В системах UNIX поддерживаются несколько командных интерпретаторов с похожими, но различающимися возможностями.
Общее название для любого командного интерпретатора shell (оболочка).
Вызванный командный интерпретатор приглашает пользователя ввести команду, после выполнения которой снова выводится приглашение.
Командные языки достаточно просты и в то же время мощны.
Привилегированный пользователь
Каждый пользователь относится к той или иной группе пользователей с идентификатором группы.
Сведения о группах пользователей и значения идентификаторов хранятся в файле /etc/group.
Администратор системы (суперпользователь) зарегистрированный пользователь с нулевым значение идентификатора.
Пользователь с таким идентификатором имеет полный контроль над системой (неограниченные права доступа к любому файлу, на выполнение любой программы и др.).
На суперпользователя не действуют ограничения на использование ресурсов, такие как:
Команды и командный интерпретатор
Оболочкой shell в ОС UNIX называется механизм взаимодействия между пользователем и системой.
Командная строка состоит из имени команды, ключей (или опций) и аргументов, разделенных пробелами.
Оболочка разбивает командную строку на компоненты.
Любой командный язык семейства shell состоит из трех частей:
1) служебных конструкций, позволяющих манипулировать с текстовыми строками и строить сложные команды на основе простых;
2) встроенных команд, выполняемых непосредственно интерпретатором командного языка;
3) команд, представляемых отдельными выполняемыми файлами.
Процессы
В ОС UNIX процесс программа, выполняемая в собственном адресном пространстве.
При регистрации пользователя в системе автоматически создается процесс, в котором выполняется программа командного интерпретатора.
Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нем эту команду.
Основные свойства UNIX
При разработке ОС UNIX преследовались следующие цели:
Общность в ОС UNIX проявляется во многих аспектах:
UNIX состоит из ядра с включенными в него драйверами и из утилит (внешних по отношению к ядру программ).
Если надо изменить конфигурацию (добавить устройство, изменить порт или прерывание), то ядро пересобирают (перелинковывают) из обьектных модулей.
Основные свойства UNIX определяются тремя главными составляющими:
Мобильность операционных систем
Мобильность (переносимость на компьютер другой архитектуры) системного программного обеспечения определяется мобильностью операционной системы (ОС).
Перенос программ существенно упрощается, если ОС, для которой рассчитаны эти программы, обладает свойством мобильности.
Требования к мобильным системам:
Наличие этих возможностей, как правило, обеспечивает качество трансляции, сравнимое с качеством программирования на языке Ассемблера. (Таким языком программирования является, например, язык Си.)
Ввиду постановки мобильной ОС на ЭВМ с различной архитектурой система должна решать наиболее общий класс задач, удовлетворяющий пользователей любой профессиональной ориентации.
Требование мобильности ведет к отказу от использования каких-либо специфических особенностей конкретной машинной архитектуры.
Особенности файловой системы UNIX
Традиционно в операционных системах существуют 3 различных механизма управления потоками информации:
В UNIX существует единый интерфейс для выполнения любого из 3-х способов передачи информации.
Обмен данными в рамках указанных 3-х механизмов выполняется с помощью одних и тех же операций ввода/вывода (внешние устройства представлены в UNIX специальными файлами).
Такой подход позволил разместить программы обслуживания этих механизмов непосредственно в ядре UNIX.
Командный язык
Командный язык UNIX позволяет разрабатывать развитые командные процедуры, в которых могут быть использованы уже существующие команды и вновь разработанные программы.
Это позволяет быстро решать оперативные задачи управления сервером или сетью, а также решать задачи эффективной обработки данных.
Отличительной особенностью командного языка UNIX является наличие управляющих структур, свойственных языкам высокого уровня (операторы цикла, ветвления, выбора).
6.3.2. Подсистема ввода/вывода
6.3.3. Перенаправление ввода/вывода
6.4. Файловая система
F:\NICK\!!2008\!!ОС-Лк\Исх\Unix-Linux\Операционные системы и оболочки. Учебное пособие.pdf
Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей её архитектуры.
Ядро имеет набор услуг, предоставляемых прикладным программам:
Все приложения запрашивают услуги ядра посредством «системных вызовов».
Второй (после ядра) уровень составляют приложения или задачи, как системные, определяющие функциональность системы, так и прикладные, обеспечивающие пользовательский интерфейс UNIX.
Несмотря на внешнюю разнородность приложений, схемы их взаимодействия с ядром одинаковы.
Архитектура ядра UNIX
Ядро состоит из трёх основных подсистем:
Запущенная на выполнение программа порождает в системе один или более процессов (или задач).
Подсистема управления процессами контролирует:
Выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам.
Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств специальными модулями ядра, непосредственно обслуживающими внешние устройства.
-
Операционные системы типа UNIX изначально разрабатывались для работы на больших многопользовательских компьютерах мейнфреймах.
Но персональные компьютеры постепенно наращивали мощь своего аппаратного обеспечения, и в наши дни они уже превосходят по возможностям те мейнфреймы, для которых в 70-х годах разрабатывалась ОС UNIX.
В начале 90-х годов студент хельсинкского университета Линус Торвальдс приступил к разработке UNIX-подобной ОС для IBM-совместимых персональных компьютеров.
Оно ознаменовало рождение операционной системы, распространяемой с открытыми исходными кодами.
В рамках Фонда Свободного ПО была начата разработка проекта GNU проекта создания свободного программного обеспечения.
Аббревиатура GNU открывается рекурсивно GNU's Not Unix, т. е. то, что принадлежит проекту GNU, не является частью Unix.
http://www.linuxcenter.ru/lib/books/kostromin/gl_01_01.phtml
Основные принципы функционирования Linux
Linux это многопользовательская, многозадачная, многотерминальная OC из семейства UNIX, соответствующая стандарту POSIX.
-
Изначально ОС Linux создавалась как UNIX-подобная система для ПК типа IBM PC с процессором i80386.
В настоящее время имеется реализация этой ОС практически для всех видов процессоров и компьютеров на их основе.
На базе ОС Linux создаются и встроенные системы, и суперкомпьютеры.
В настоящее время Linux является сетевой ОС для 32-х или 64-х разрядных платформ.
Она обеспечивает масштабируемость в диапазоне от игровых приставок (Sony Play Station и мобильных телефонов) до кластерных серверов Интернета.
Ядро Linux написано на языке СИ, что позволяет легко переносить эту систему с одной платформы на другую.
Linux распространяется по лицензии GNU, либо подобными свободными лицензиями, обеспечивается как коммерческое, так и свободное сопровождение через Интернет.
GNU проект создания свободного программного обеспечения в рамках Фонда Свободного ПО.
GNU GNU's Not Unix, т. е. то, что принадлежит проекту GNU, не является частью Unix.
Все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства, распространяются свободно.
Основные компоненты Linux
Ядро. Выполняет функции управления памятью, процессорами, диспетчеризацию выполнения всех программ и обслуживание внешних устройств.
Имеется возможность динамического конфигурирования ядра.
Диспетчер процессов Init. Активизирует процессы, необходимые для нормальной работы системы, и производит их начальную инициализацию. Организует сеансы работы пользователей, обеспечивает завершение работы системы.
Интерпретатор команд Shell. Анализирует команды, вводимые с терминала или из командного файла, и передает их для выполнения в ядро системы.
Shell является также языком программирования, на котором можно создавать командные файлы (shell-программы).
В ОС Linux имеется возможность динамического порождения процессов и управления ими.
Shell интерпретатор в соответствии с требованиями стандарта POSIX поддерживает графический экранный интерфейс.
Обязательным в системе является интерпретатор Bash, полностью соответствующий стандарту POSIX.
В качестве Shell может быть использована оболочка Midnight Commander с интерфейсом, подобным Norton Commander (Total Commander).
Сетевой графический интерфейс X Window System. Обеспечивает поддержку графических оболочек.
Графические оболочки KDE, Gnome. KDE отличают минимальные требования к аппаратуре, высокая надежность, интернационализация.
Gnome имеет развитые графические возможности, но более требователен к аппаратным средствам.
Сетевая поддержка NFS, SMB, TCP/IP. NFS (Network File System) ориентирован для конкретной ОС персонального компьютера (PC) и включает драйверы для работы в сети и дополнительные утилиты.
SMB сетевая файловая система, совместимая с Windows NT.
TCP/IP протокол контроля передачи данных (Transfer Control Protocol/Internet Protocol).
Поддерживаются любые сети, от локальных до Интернета, с использованием только встроенных сетевых средств.
Инструментальные средства программирования. Основой средств программирования является компилятор GCC (EGCS, PGCC) для языков С и С++;
модули поддержки других языков программирования (Obective C, Фортран, Паскаль, Modula-3, Ада, Java и др.);
интегрированные среды и средства визуального проектирования: Kdevelop, Xwpe;
средства адаптации привязки программ (Autoconfig, Automake).
Дистрибутивы Linux
Существует сотни дистрибутивов Linux.
Некоторые дистрибутивы выпускаются фирмами на коммерческой основе, другие распространяются на условиях лицензии GPL.
(GNU GPL, GNU General Public License Универсальная Общественная Лицензия GNU, т.е. свободное ПО)
Основными ветвями, на базе которых создаётся большое множество вариантов являются:
Debian, RedHat, Slackware.
Их можно считать стратегическими направлениями развития в Linux вообще.
Большинство остальных дистрибутивов, за редкими исключениями (Gentoo, Arch Linux), явно принадлежат к одной из этих ветвей в основном наследуя исходный код и приложения и добавляя специфическую функциональность.
Наиболее популярные дистрибутивы Linux для ПК
Ubuntu, Fedora, Slackware, Arch, Debian, Mint, Mandriva.
Российские дистрибутивы ASPLinux, ALT Linux, НауЛинукс, Calculate Linux, AgiliaLinux, Runtu, Rosinka.
-
Ядро Linux поддерживает загрузку только нужных страниц памяти, т.е. с диска в память загружаются те сегменты программы, которые действительно используются.
Ядро ОС Linux поддерживает универсальный пул памяти для пользовательских программ и дискового кэша.
При этом для кэширования может использоваться вся свободная память, и наоборот, кэш уменьшается при работе больших программ.
Этот механизм позволяет увеличить производительность системы.
Выполняемые программы используют динамически связываемые библиотеки, т.е. выполняемые программы могут совместно использовать библиотечную программу, представленную одним физическим файлом на диске.
Это позволяет выполняемым программам занимать меньше места на диске, особенно при многократном использовании библиотечных функций.
В ОС Linux разделяемые библиотеки динамически связываются во время выполнения, позволяя программисту заменять библиотечные функции своими собственными.
Файловая система Linux
В Linux файлами считаются обычные файлы, каталоги, а также специальные файлы, соответствующие периферийным устройствам (каждое устройство представляется в виде файла).
Файловая структура Linux имеет иерархическую древовидную структуру.
В Linux есть только один корневой каталог системы (обозначается символом " / " (слэш)).
В корневом каталоге размещаются другие каталоги и файлы.
Пользователь Linux всегда работает с единым деревом каталогов,
даже если разные данные расположены на разных носителях: нескольких жёстких, сетевых дисках, съёмных дисках, CD-ROM и др.
Для подключения и отключения файловых систем на разных устройствах в одно общее дерево, используются команды монтирования и размонтирования.
Положение любого файла или каталога однозначно указывается при помощи полного имени файла или каталога или полного пути.
Полное имя файла или каталога начинается от корневого каталога и состоит из перечисления всех каталогов, встретившихся при движении по дереву до искомого файла или каталога включительно.
Полный путь (к файлу или каталогу) начинается от корневого каталога и состоит из перечисления всех каталогов, встретившихся при движении по дереву до искомого файла или каталога.
Названия соседних каталогов в полном имени или пути разделяются символом " / " (слэш).
У всех файлов и каталогов в Linux есть информация о владельце, о том, кто может читать из папки, писать в нее, выполнять в ней команды и т.д
Скрытые файлы и папки в Linux начинаются с точки, например, .wine, .mozilla
Стандартные каталоги Linux:
/bin основные исполняемые файлы
/boot загрузочные файлы
/dev описания устройств компьютера
/etc файлы настроек системы
/home домашние папки пользователей
/mnt точки монтирования файловых систем, ISO-образов
/root домашний каталог суперпользователя (администратора)
/sbin системные программы (утилиты суперпользователя)
/tmp временные файлы
/proc информация о системе и процессах
/usr прикладные программы и библиотеки
/var рабочие каталоги программ
…
Командная строка Linux
В Linux командная строка является одним из важнейших элементов, с ее помощью можно делать все.
Структура приглашения
[pupil6@six ~]$
это приглашение командной оболочки.
pupil6 имя пользователя,
six имя компьютера
~ тильда, обозначает домашний каталог.
Текущий каталог это каталог, в котором мы находимся.
Если приглашение заканчивается на символ $, то вы зарегистрированы в системе как обычный пользователь,
а если на #, то администратор (суперпользователь, “рут”).
Команды в Linux состоят из нескольких частей:
имя_команды обязательные параметры [необязательные параметры] ключи
Ключи (опции) сообщают программе дополнительную информацию. После ключа может следовать параметр, который передастся программе.
Ключи бывают двух типов:
Например, ключ -h и --help в большинстве программ вызывают справку о запускаемой программе.
Короткие ключи можно объединять, например:
ls -l -a -i test
и
ls -lai test
одно и то же
Упрощенно общий вид команды можно записать так:
команда [-однобуквенный ключ [параметр]]
[--ключ-слово [параметр]] [параметр]
Автоматическое дополнение командной
строки
Клавиша Tab попытаться дополнить командную строку именами файлов или команд.
Например, если набрать shut и нажмите на клавишу Tab, то shut автоматически дополнится до shutdown
Если вариантов несколько, то повторным нажатием Tab можно вывести список всех вариантов.
Например, если набрать, if и нажать Tab, то ничего не отобразится так как существует несколько команд начинающихся с if.
Чтобы отобразить эти варианты нужно еще раз нажать на Tab.
Если не вводя никаких команд, нажать два раза клавишу Tab можно узнать общее количество команд в системе (система спросит хотим ли мы посмотреть все команды)
Справочная система (получение помощи).
help встроенная помощь оболочки;
man система помощи;
Info иерархическая система помощи;
-
Команда help
Система помощи по встроенным командам оболочки bash.
help
без параметров список всех встроенных команд оболочки.
help имя_команды
краткая справка о применении команды.
/usr/share/doc документация программ.
/usr/share/man каталог man
/usr/share/man/ru локализация
manpath выдать путь поиска страниц man
Система помощи man
Команда man дает справочную информацию по командам, форматам файлов и системным вызовам.
Это основной способ получения подсказки в UNIX-системах.
man имя_команды
man ключевое_слово
man k строка поиск по подстроке в имени страницы (в разделе NAME) выводит описание команд, содержащих текст строка)
Команды просмотра:
PageUp, PageDown перемещение по тексту
пробел следующая страница
/строка поиск подстроки вниз
?строка поиск подстроки вверх
n следующее вхождение искомой строки
q выход
Стандартные разделы страницы man:
NAME заголовок справки с кратким описанием
SYNOPSIS синтаксис команд (формат вызова, ключи и параметры)
DESCRIPTION описание команды (файла, библиотеки)
EXAMPLES примеры
OPTIONS краткое описание ключей команды
FILES расположение файлов, связанные с командой
AUTHOR имя автора и адрес электронной почты
SEEALSO указатели на другие страницы man
COPYRIGHT права собственности, политика распространения
Команда info
Более подробная информация (чем в man).
Гипертекстовая система.
Иерархическая организация.
В каждом разделе info есть оглавление, из которого можно перейти к нужному подразделу, и можно вернуться обратно.
info имя_команды
info ключевое_слово
-
● /usr/share/info
Команды просмотра:
Гипертекстовые ссылки обозначены звездочкой (*)
(установить курсор на * и нажать Enter для перехода)
n следующий узел
p предыдущий узел
u родительский узел
l предыдущая страница
s поиск строки на странице
q выход
Некоторые наиболее употребительные команды:
pwd получить имя текущего каталога
cd изменить текущий каталог
ls вывести информацию о файлах или каталогах
cat вывести содержимое файла
cp копировать файлы
mv переместить (переименовать) файлы
ln создать ссылку на файл
rm удалить файлы
rmdir удалить каталог
mkdir создать каталог
echo вывести текст аргументы
ps распечатать информацию и номера выполняемых процессов
kill завершить выполняемый процесс по его номеру
man выдать справку о команде
Простейшие команды в консоли Linux
ls - выводит содержимое каталога. Имеет несколько ключей:
-a, -all выводить также скрытые файлы
-l выводит дополнительную информацию о файлах (дату создания, владельца, группу, права на файл/папку)
-R, --recursive рекурсивно выводит содержимое подпапок в виде дерева выводятся все файлы, содержащиеся в данной папке
-s, --size выводит размер файла, желательно запускать также с ключом l (-ls) для более наглядного представления информации
-S вывести список файлов, отсортировав их по размеру
Остальные ключи можно узнать с помощью
ls --help или man ls
cd - сменить папку.
Для перехода в домашний каталог достаточно набрать cd ~
Примеры:
cd / перейти в корень
cd /home перейти в домашний каталог
cd petya перейти в каталог petya, находящийся в данной папке
cp что куда скопировать файл или папку
Полезные ключи:
-R, -r, --recursive - рекурсивно копировать подпапки
-u, --update заменять только новые файлы (обновление)
-l, --link вместо копирования, создать ссылки на файлы/папки
mkdir имя_папки создать папку
rmdir folder_name удалить папку
mv что куда переместить файлы
rm что удалить файл(ы)
Ключи:
-I при удаление более 3 файлов предупредить, требовать потверждения
-i предупреждать о удалении файла, требовать потверждения
-R, -r, --recursive удалять рекурсивно
33