Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема 1- Введение в операционную систему Unix

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 17.5.2024

Тема 1: Введение в операционную систему Unix.

Цель:  Познакомить учащихся с предметом обучения.

Вид занятия: комбинированное занятие

Учебные вопросы:

1. Unix-way.

2. История Юникс.

3. Разновидности Юникс. Линукс.

4. Что такое Linux.

5. Средства просмотра системной информации.

Литература:

1. Робачевский А.М. «Операционная система Unix®». – СПб.: БВХ – Санкт-Петербург, 1999. – 528 с., ил.

2. Армстронг (мл.) Джеймс. «Секреты Unix®» : 2-е изд.: Пер. с  англ.: Уч. пос. – М.: Издательский дом «Вильямс», 2000. – 1072  с.: ил. – Парал. тит. англ.

3. Паркер Тим. «Linux 5.2. Энциклопедия пользователя»: Пер. с англ. – К.: Издательство «ДиаСофт», 1999. – 688 с.

Ход занятия.

1. Unix-way. Linux -  одна из составных частей мира информационных технологий под названием Unix. Unix не Windows, он не похож на него (не считая внешнего сходства) и приемы работы в Unix отличаются от приемов работы в Windows. Unix – это не только операционная система, это еще и идеология работы с компьютером. Правила, которые лежат в основе изучения Linux, да и Unix вообще. Общий термин для них – Unix Way:

1. одна задача – одна программа. В Unix не принято делать комбайны для выполнения «сразу всего». Программа делается таким образом, чтобы она могла выполнять одно простое действие, но выполняла его хорошо.

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

3. все есть файл. Самая замечательная концепция в Unix. Действительно, в Unix все представлено в виде файлов – программы, настройки, системные данные и даже устройства. И с устройствами можно работать как с простыми файлами.

2. История Юникс. В 1969 году Кен Томпсон и Денис Ритчи, работники корпорации AT&T, создали небольшую операционную систему для компьютера PDP-7. Эта операционная система получила название Unix. Однако в планы компании AT&T не входило распространение этой операционной системы, и она предоставила ее за символическую плату учебным заведениям США, не организовав при этом службы технического сопровождения, исправления ошибок и вообще не дав никаких гарантий.

Вследствие этого пользователи, почти все являвшиеся представителями университетских вычислительных центров, были вынуждены сотрудничать друг с другом. Они сами устраняли ошибки, создавали полезные программы и утилиты и совместно их использовали. Результатом их работы стала целая серия версий Unix, распространяемых под эгидой компании Bell Labs вплоть до 1990 года.

Одна из групп пользователей Unix находилась в калифорнийском университете в Беркли. В 1977 году специалисты этого учебного заведения сделали следующий шаг в истории Unix и приступили к распространению магнитных лент с операционной системой 2BSD (Berkeley Software Distribution). С тех пор было продано 75 копий.

На основании Unix SVR4 и BSD были созданы все современные разновидности Unix.

3. Разновидности Юникс. Линукс. Существует множество разновидностей Unix и Unix-подобных систем. К наиболее известным из них относятся SunOS и Solaris корпорации SUN Microsystems, AIX компании IBM, DEC Unix фирмы DEC, Novell Unix Ware корпорации Novell. Все вышеназванные системы являются коммерческими и имеют высокую цену. Они работают на различных архитектурах (Intel, Sparc, Alpha, PowerPC и т.д.). Однако наибольший интерес сегодня в мире Unix приобрели операционные системы, построенные на модели открытого кода, такие как Linux.

Linux изначально была разработана как свободно распространяемая версия Unix. В 1991 году студент Хельсинского университета Линус Торвальдс выпустил первую версию Linux. Она была основана на операционной системе Minix – ограниченном аналоге Unix для ПК. После выпуска первого «почти безошибочного» релиза в марте 1992 года, многие программисты мира подключились к разработке этой операционной системы, и она стала расти.

На сегодняшний день Linux является полнофункциональным бесплатным аналогом Unix, но это бы не произошло, не будь программного обеспечения в рамках проекта GNU (GNU’s not Unix, GNU – это не Unix). Linux содержит много утилит GNU, включая трансляторы многих языков программирования (C, C++, Fortran, Pascal, LISP, Ada, BASIC, SmallTallk, Perl, PHP, Tcl/Tk и др.), отладчики, текстовые редакторы, утилиты печати и многое другое. Проек GNU развивается под эгидой фонда свободно распространяемого программного обеспечения – Free Software Foundation (FSF).

4. Что такое Linux. Linux является свободно распространяемой многозадачной многопользовательской операционной системой, похожей на Unix. Linux была разработана специально для платформы ПК (с процессором Intel) и благодаря преимуществам архитектуры позволяет достичь производительности, сравнимой с мощными рабочими станциями Unix. Linux также переносилась и на другие платформы, но все эти версии сходны с версией для ПК.

Состав операционной системы после установки:

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

Ядро Linux поддерживаем множество файловых систем, включая FAT, FAT32. Собственные файловые системы Linux (ext2fs и ext3fs) разработаны для оптимального использования дискового пространства.

^ Утилиты GNU: Linux содержит множество утилит GNU, без которых была бы невозможна работа с операционной системой.

^ X Windows: Графический интерфейс пользователя представлен в Linux средой X Windows. Оконные менеджеры, такие как KDE и GNOME, обеспечиваю удобный интерфейс и работу со средствами мультимедиа.

^ Интерфейсы DOS и Windows:  Поскольку Linux была создана для компьютеров класса ПК, разработчики посчитали необходимым обеспечить совместимость с программами MS-DOS. В Linux предлагается эмулятор DOS как часть дистрибутива. Он позволяет исполнять DOS-приложения непосредственно из-под Linux. Для эмуляции Microsoft Windows было разработано несколько программ. Наиболее известная из них – WINE. Она также входит в большинство дистрибутивов Linux.

Linux позволяет без проблем переносить файлы между файловыми системами DOS и Windows, напрямую обращаясь к соответствующим разделам на диске, хотя это и требует некоторой настройки.

^ Сетевая поддержка:  TCP/IP – основная сетевая система используемая Unix и Linux. TCP/IP – это целый набор протоколов, разработанных для Internet. Однако для объединения в локальные сети машин Unix тоже используется TCP/IP. Также Linux поддерживает другие протоколы, такие как IPX/SFX, AplleTalk и т.д.

5. Средства просмотра системной информации. Встает вопрос – как же узнать тип операционной системы, установленной у вас на компьютере. Для получения такой информации существует утилита uname (Unix NAME).

uname, запущенная без параметров, покажет базовое имя системы:

 gserg@ADM:~$ uname

Linux

Также она может принимать следующие параметры:

-s – показывает название ядра системы

-v – имя версии, а также дату компиляции ядра

-o – операционную систему

-a – всю информацию сразу

Команда free показывает объем памяти и объем ее использования, а также использование swap:

 gserg@ADM:~$ free

total used free shared buffers cached

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

Состояние системы в данный момент, степень ее загруженности и время без перезагрузок показывает команда uptime:

gserg@ADM:~$ uptime

14:24:08 up 1 day, 6:01, 2 users, load average: 0.08, 0.19, 0.16

Первым идет текущее время, потом, после слова up – время, прошедшее с момента включения компьютера, потом показано сколько пользователей зарегистрировано сейчас в системе (это может быть и несколько регистраций одного и того же пользователя) и загрузка системы. Загрузка системы показывается в количестве процессов, одновременно работающих в системе, среднее значение за 1-ну, 5 и 15 минут. Система считается нагруженной, если это значение превышает 1.

Тема 2: Оболочки Unix. Структура ядра. 

Цель:  Познакомить учащихся со структурой ядра.

Вид занятия: комбинированное занятие

Учебные вопросы:

  1.  Архитектура  Linux
  2.  Ядро ОС Linux

Литература:

1. Робачевский А.М. «Операционная система Unix®». – СПб.: БВХ – Санкт-Петербург, 1999. – 528 с., ил.

2. Армстронг (мл.) Джеймс. «Секреты Unix®» : 2-е изд.: Пер. с  англ.: Уч. пос. – М.: Издательский дом «Вильямс», 2000. – 1072  с.: ил. – Парал. тит. англ.

3. Паркер Тим. «Linux 5.2. Энциклопедия пользователя»: Пер. с англ. – К.: Издательство «ДиаСофт», 1999. – 688 с.

Ход занятия.

  1.  Архитектура  ОС Linux. Подсистема управления памятью и процессами, которая контролируем все программы запущенные на исполнение. Следит за тем, чтобы не было конфликтов по памяти. Контролирует создание и удаление процессов, распределяет системные ресурсы между процессами.

Подсистема ввода-вывода управляет доступом к периферийным устройствам, взаимодействует с драйверами устройств, организует и управляет очередями к внешним устройствам.

 

Рис. 1. Архитектура ОС Linux

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

Замечание: В DOS базовая оболочка shell объединена с ядром ОС и устанавливается автоматически при загрузке ОС. Примером отдельной от ядра shell-оболочки в DOS является популярная программа Norton Commander, получившая широкое распространение в 90-е годы. В Linux имеются аналогичные оболочки: Midnight Commander, Deco и т.п.

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

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

К простейшим известным оболочкам командного типа можно отнести: ash, bash, sh, ksh и другие, которые для управления системой предоставляют пользователю командную строку и развитую систему сообщений. Все они имеют встроенный интерпретатор команд пользователя и работают примерно одинаково.

Наибольшей популярностью пользуется визуальная оболочка MC (Midnight Commander), которая делит экран на два окна и позволяет выполнять большой набор команд по управлению файлами, получая на экране удобную для восприятия картинку файловой структуры. Окно экрана делится на две части, в каждой из которых размещается список файлов текущего директория.

Обычно даже в самых минимальных конфигурациях дистрибутива Linux включается простая командная shell-оболочка. Поэтому сразу после инсталляции ОС запускается shell-оболочка и появляется специальный индикатор командной строки («prompt» - промпт), что дает возможность пользователю выполнять команды.

2. Ядро ОС Linux. Главной частью ОС Linux является ядро (см. рис.1).

Основная функции ядра системы Linux – связывать между собой прикладные программы и аппаратную часть (внешние и внутренние устройства). Ядро состоит из трех основных подсистем:

Файловая подсистема обеспечивает интерфейс к доступа к данным. Она получает запрос на доступ к данным, проверяет права доступа и выдает (или записывает)

Само ядро непосредственно пользователю недоступно, поэтому пользователь взаимодействует с ядром при помощи специальной программной оболочки (shell) или с помощью прикладных программ, в которых предусмотрены средства передачи команд от пользователя в ядро. Оболочки shell бывают различные: командные или графические.

К прикладным программам можно отнести различные редакторы тестовых файлов, офисные приложения, графические системы управления ресурсами, игры, системы управления базами данных и т.п.

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

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

В настоящее время многие дистрибутивы Linux, аналогично Windows, имеют библиотеки драйверов и специальные приложения, которые легко настраиваются на стандартное оборудование без вмешательства пользователя. С нестандартным малоизвестным или совсем новым оборудованием проблемы поиска драйвера под Linux остаются (между, прочим, как и под Windows). Обычно решение этих проблем значительно облегчается, если Вы приобрели дистрибутив Linux официально и пользуетесь услугами технической поддержки какого-нибудь профессионального Linux-центра или сайтами фирм разработчиков специфического оборудования.

Тема 3: Управление вводом-выводом. Распределение памяти

Вид занятия: комбинированное занятие

Учебные вопросы:

1. Процесс init. Управление вводом-выводом

2. Распределение памяти

Литература:

1. Системная справочная служба Linux Man

Ход занятия.

  1.  Процесс init. Управление вводом-выводом. При нажатии клавиши Power начинается процесс загрузки системы.

Устройства компьютера проходят автотестирование. Процессор автоматически стартует программу, находящуюся в нулевой ячейке памяти – BIOS, который в первую очередь проверяет исправность всех необходимых (именно необходимых) для работы ПК устройств.

После инициализации BIOS, определения таких устройств как жесткие диски, CDROM и т.п., BIOS передает управление программе загрузчика, находящегося в MBR (Master Boot Record - основная загрузочная запись) первого жесткого диска.

В IBM PC совместимых компьютерах размер загрузочной записи ограничен 512 байтами. Это очень мало для полноценной инициализации системы, поэтому обычно загрузчики Linux (LILO или GRUB, как в нашем случае) разделяются 2 части (stage1 и stage2) и первая из них располагается в MBR. Её задача состоит в том, чтобы инициализировать вторую часть загрузчика.

Вторая часть загрузчика, как правило, предоставляет меню для выбора операционной системы, которая будет загружена, или версии ядра, с которым будет загружен Linux. Но основная задача второй части загрузчика состоит в том, чтобы корректно загрузить в память ПК ядро Linux и передать ему управление.

Загрузившись в память, ядро инициализирует устройства, подключает корневую файловую систему, а также файловую систему /dev, запускает процесс /sbin/init. Так как исполняемый файл init находится в каталоге /sbin, то не рекомендуется выделять этот каталог в отдельный раздел. Как уже говорилось выше, на момент инициализации ядра примонтирована только корневая ФС. Если доступа к каталогу /sbin не будет, то загрузка системы потерпит фиаско.

Процесс init запускается и анализирует файл /etc/inittab. С этого момента необходимо пояснить, что мы с Вами рассматриваем вариант загрузки Unix SysV. Она отличается от загрузки BSD-like систем. И хотя Linux может работать как с первым, так и со вторым вариантом загрузки, подавляющее большинство дистрибутивов используют инициализацию системы SysV (исключение, например, составляет дистрибутив Gentoo). Хотя BSD-like стиль загрузки проще, загрузка в стиле SysV дает на мой взгляд больше возможностей для точной настройки системы.

В SysV стиле загрузки существует понятие уровней запуска или, правильнее, уровней инициализации системы. По умолчанию, в системе использовано 7 уровней инициализации:

0 - останов системы.

1 - загрузка в однопользовательском режиме

2 - загрузка в многопользовательском режиме без поддержки сети

3 - загрузка в многопользовательском режиме с поддержкой сети

4 - не используется

5 - загрузка в многопользовательском режиме с поддержкой сети и графического входа систему

6 - перезагрузка

Процесс init, прочитав первую строку файла, определяет, какой из уровней инициализации установлен как уровень загрузки по умолчанию (5 - в нашем случае). После этого init выполняет скрипт /etc/rc.d/rc.sysinit, который устанавливает имя хоста, монтирует файловую систему /proc, устанавливает системный консольный шрифт с поддержкой выбранного языка системы, часы, перемонтирует корневую систему в режиме чтения/записи и монтирует файловые системы, указанные в /etc/fstab, устанавливает модули ядра, указанные в /etc/modules.conf и выполняет другие основные действия по инициализации системы.

Инициализировав основные параметры системы, init запускает скрипты инициализации из каталога /etc/rc.d/

В каталоге /etc/rc.d располагается дерево каталогов, имена которых отличаются лишь одним символом - rc*.d, где * - номер уровня инициализации, а также каталога init.d, внутри которого находятся управляющие скрипты для системных сервисов. Каждый скрипт принимает минимум 2 параметра – start (запуск сервиса) и stop (останов сервиса).

Внутри каталогов /etc/rc.d/rc*.d находятся ссылки на скрипты из каталога /etc/rc.d/init.d в виде S|K#name. Буква S означает что при вызове скрипта процессу init необходимо вызвать скрипт с параметром "start" (от слова Start), а буква K - с параметром stop (от слова Kill). Дальше идет число. Все скрипты выполняются в порядке возрастания чисел. Если у двух скриптов одинаковые числа, то такие скрипты будут выполняться в прямом алфавитном порядке.

После инициализации всех скриптов для текущего уровня выполнения, init запускает скрипт /etc/rc.d/rc.local. Все остальные файлы запуска (например, rc.local.local) должны быть вызваны из rc.local, так как процесс init их не обрабатывает.

Далее начинается инициализация виртуальных консолей в таком же порядке, как они описаны в файле /etc/inittab.

  1.  Распределение памяти. Опп 

Тема 4: Файловая система Linux.

Вид занятия: комбинированное занятие

Учебные вопросы:

1. Основные понятия: корневой каталог, точка монтирования, домашний каталог.

2. Типы файлов. Обычные файлы. Каталоги. Файлы устройств. Команды ls.

3. Навигация по файловой системе: команды cd, pushd, popd, pwd.

4. Создание, удаление и копирование файлов. Команды  touch, rm, cp.

5. Операции с каталогами. Команды mkdir и rmdir.

6. Важнейшие каталоги файловой системы Linux.

Литература:

1. Робачевский А.М. «Операционная система Unix®». – СПб.: БВХ – Санкт-Петербург, 1999. – 528 с., ил.

2. Армстронг (мл.) Джеймс. «Секреты Unix®» : 2-е изд.: Пер. с англ.: Уч. пос. – М.: Издательский дом «Вильямс», 2000. – 1072 с.: ил. – Парал. тит. англ.

3. Паркер Тим. «Linux 5.2. Энциклопедия пользователя»: Пер. с англ. – К.: Издательство «ДиаСофт», 1999. – 688 с.

Ход занятия.

1. Основные понятия: корневой каталог, точка монтирования, домашний каталог. Файловая система Linux, в отличие от операционных систем семейства Windows не разделена по томам (дискам, устройствам), а имеет единую древовидную структуру, в основе которой лежит корневой каталог. Корневой каталог - это уровень файловой системы, выше которого по дереву каталогов подняться невозможно. В Linux корневой каталог обозначается как / (именно / - слэш, а не \ - обратный слэш). Система позволяет устанавливать много корневых каталогов. Так, например, для некоторого пользователя ftp /home будет корневым каталогом и при обращении к клиенту ftp сменить каталог на корневой пользователь будет попадать в /home.

Как  разные физические устройства участвуют в формировании единой файловой системы?

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

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

2. Типы файлов. Обычные файлы. Каталоги. Файлы устройств. Команды ls.

В файловой системе Линукс различают несколько типов файлов. Понятие «файл» включает в себя также и интерфейсы работы с периферийными устройствами, и каналы, позволяющие разным процессам в системе обмениваться данными.

^ Основные типы файлов:

- простой файл

d каталог

l ссылка

b блочное устройство

с символьное устройство

Объясняет понятие скрытых файлов, а также каталогов «.» и «..». Показывает разницу между командой ls и ls –a.

3. Навигация по файловой системе: команды cd, pushd, popd, pwd.

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

Рис. 3.1.  Дерево каталогов в Linux

- Корневая файловая система специфична для каждой машины (обычно она хранится на локальном диске, хотя это мог бы быть ramdisk или сетевой диск) и содержит файлы, которые являются необходимыми для загрузки системы. Содержимого корневой файловой системы достаточно для загрузки в однопользовательском режиме. Именно эта файловая система используется при загрузке до тех пор, пока не будут смонтированы другие файловые системы. Она также содержит инструментальные средства для ремонта поврежденной системы и для восстановления потерянных файлов из резервных копий.

- Файловая система /usr содержит все команды, библиотеки, man-страницы, исходные тексты и другие неизменяемые файлы, необходимые для нормальной работы системы. Никакие файлы в /usr не должны быть специфическими для любой конкретной машины, и при этом они не должны измениться при нормальном использовании. Это позволяет файлам быть разделенными по сети, что может быть практично, так как это сохраняет дисковое пространство (могут легко иметься сотни мегабайт в /usr) и упрощает администрирование (только машина, на которой хранится /usr, должна быть изменена при модификации прикладной программы, а не каждая машина отдельно). Даже если файловая система находится на локальном диске, она может быть установлена только для чтения, что уменьшит возможность искажения в случае отказа.

- Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п., файлы протоколов, форматированных man-страниц и временные файлы.

- Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).

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

Корневая файловая система

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

Файловая система дистрибутива имеет архитектуру классической файловой системы ОС Linux с единым корневым каталогом, обозначаемым символом обратной косой черты ("слэш") — /.

Ниже приведено описание основных каталогов верхнего уровня.

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

/boot - В этом каталоге хранятся файлы, используемые загрузчиком ОС — LInux LOader (LILO). Этот каталог так же практически не изменяется после установки.

/dev - В этом каталоге размещены описания устройств системы. В Linux всё рассматривается, как файл, даже различные устройства, такие как последовательные порты, жёсткие диски и сканеры. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл, называемый device node. Все эти файлы находятся в каталоге /dev. Аналогично устроено большинство UNIX-подобных операционных систем.

/etc - Этот каталог содержит файлы настроек: всё, от конфигурационных файлов системы X Window, базы данных пользователей и до стартовых сценариев.

/home - В этом каталоге размещены домашние каталоги пользователей. Linux является многопользовательской системой и каждому пользователю присваивается имя и уникальный каталог для персональных файлов. Этот каталог называется "home" (домашним) каталогом пользователя.

/lib - В этом каталоге находятся системные библиотеки, необходимые для основных программ: библиотека C, динамический загрузчик, библиотека ncurses, модули ядра и другое.

В любой файловой системе Linux всегда есть только один корневой каталог, который называется "/". Пользователь Linux всегда работает с единым деревом каталогов, даже если разные данные расположены на разных носителях: нескольких жестких или сетевых дисках, съемных дисках, CD-ROM и т. п.5) Для того чтобы отключать и подключать файловые системы на разных устройствах в состав одного общего дерева, используются процедуры монтирования и размонтирования. После того, как файловые системы на разных носителях подключены к общему дереву, содержащиеся на них данные доступны так, как если бы все они составляли единую файловую систему: пользователь может даже не знать, на каком устройстве какие файлы хранятся.

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

pwd – показывает полное имя каталога, в котором находится пользователь.

cd – изменяет текущий каталог на указанный. cd без параметров или с параметром ~ изменяет текущий каталог на домашний. cd с параметром .. изменяет каталог на тот, который находится на один уровень выше по дереву каталогов.

pushd, popd – эти команды работают в связке. Команда pushd изменяет каталог на указанный. pushd c параметром .. изменяет каталог на тот, который находится на один уровень выше по дереву каталогов. Основное отличие этой команды от cd в том, что вся история смены каталогов запоминается в стек и потом может быть использована для быстрой обратной навигации с помощью команды popd.

4. Важнейшие каталоги файловой системы Linux. Файловая система Linux, как и любой другой unix-подобной операционной системы, имеет строгую структуру каталогов. Каждый дистрибутив Linux может несколько изменять структуру в зависимости от предпочтений разработчиков. Мы рассмотрим те каталоги, которые используются в каждом дистрибутиве:

Имя каталога

Описание

/bin 

в этом каталоге находятся основные исполняемые файлы, жизненно необходимые для функционирования системы

/boot 

содержит ядро операционной системы и карты загрузки, а также конфигурационные файлы загрузчиков (lilo, grub)

/dev 

содержит файлы, которые являются интерфейсом с периферийными устройствами

/etc 

содержит основные файлы настроек приложений Linux

/home 

содержит домашние папки пользователей

/lib 

содержит основные библиотеки, необходимые для нормальной работы системы

/mnt 

содержит каталоги – точки монтирования переносимых файловых систем (floppy, cdrom, etc.)

/tmp 

в этом каталоге находятся временные файлы, используемые запущенными в данный момент процессами

/usr 

программы, библиотеки и другие данные пользовательских приложений

Тема 5: Работа с файлами. Процессы.

Вид занятия: комбинированное занятие

Цель: Привить обучаемым твердые навыки по выводу информации из  файлов на экран консоли.

Учебные вопросы:

  1.  Команды работы с файлами

2.  Процессы в Linux. Идентификаторы процессов. Демоны.  Команда ps.

Литература:

1. Робачевский А.М. «Операционная система Unix®». – СПб.:  БВХ – Санкт-Петербург, 1999. – 528 с., ил.

2. Шевель А. «Linux. Обработка текстов. Специальный  справочник».- Спб.: Питер, 2001. - 384 с.: ил.

3. Системная справочная служба Linux Man

Ход занятия.

1. Команды работы с файлами

Создание, удаление и копирование файлов. Команды  touch, rm, cp.

Пользователю Linux ежедневно приходиться создавать, копировать и удалять файлы. Эти операции являются такими же важными, как перемещение по файловой системе.

Команда cp используется для копирования файлов. Её синтаксис таков:

cp [параметры] <имя файла источника> <имя каталога приемника>

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

Команда touch позволяет создавать файлы. Её применение наиболее просто: touch <имя файла>. Если файл с заданным именем существует в текущей директории, команда touch обновит его время создания на текущее.

Команда rm используется для удаления файлов. Основные параметры, используемые с командой rm это -i (удаление с подтверждением удаления), -r (рекурсивное удаление) и -f (удаление всех файлов без подтверждения), -v (подробный описание производимых действий). Параметры -r и -f используются для удаления большого количества файлов. Но при их использовании необходимо быть предельно осторожным, т.к. с помощью этих параметров можно уничтожить систему.

Операции с каталогами. Команды mkdir и rmdir. 

Операции с каталогами также важны для пользователя Linux, как и основные операции с файлами. Основные команды, используемые при работе с каталогами это – rmdir и mkdir.

Команда mkdir позволяет создать каталог:

mkdir catalog

Команда rmdir, без использования дополнительных параметров, может удалять ТОЛЬКО ПУСТЫЕ КАТОЛОГИ.

Команды cat, tac, more, less, head, tail, od.  Работа с файлами в Линукс является одним из базовых навыков. На этом занятии мы с вами узнаем способы вывода информации на экран из файлов. Оговорюсь сразу – сейчас я подразумеваю только обычные (регулярные) файлы.

Информация внутри них может содержаться в 2 видах – текстовом ASCII или бинарном. Для каждого из этих типов информации существуют программы, способные ее выводить на экран.

Для текстовых файлов наиболее часто используются команды cat, tac, more, less, head и tail.

Рассмотрим их поподробнее:

cat filename – команда используется для вывода текстовой информации из файла на экран. Например:

[student@localhost student]$ cat lesson6_st.txt

В обратном порядке файл можно отобразить командой tac.

Посчитать строки в нем можно командой nl.

Команда cat имеет несколько параметров. Наиболее используемые из них:

-b (--number-nonblank) – пронумеровать все непустые строки;

-n (--number) – пронумеровать все строки;

-s (--squeeze-blank) – отобразить несколько подряд идущих пустых строк в виде одной пустой строки;

-T (--show-tabs) – показать символы табуляции, отобразив их как “^|”;

-E (--show-ends) – показать символы конца строки как “$”.

Попробуем использовать некоторые из этих параметров:

 [student@localhost student]$ cat -b lesson6_st.txt

tac filename эта команда используется для вывода на экран информации из файла в обратном порядке.

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

more filename – эта команда позволяет просматривать длинные файлы по частям. Команда more использует для прокрутки две клавиши – пробел (показать следующий экран) и Enter (показать следующую строку). Но у more есть один недостаток – она способна прокручивать текст только вперед. То есть если вы уже смотрите второй экран, то к первому никак вернуться будет нельзя. Эту проблему с легкостью решает команда less.

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

2. Процессы в Linux. Идентификаторы процессов. Демоны.

Процесс – понятие совокупности программного кода и данных, загруженных в память ЭВМ. Процесс это не запущенная программа (приложение) или команда, так как приложение может создавать несколько процессов одновременно. Код процесса не обязательно должен выполняться в текущий момент времени, так как процесс может находиться в состоянии спящего. В этом случае выполнение кода такого процесса приостановлено. Существует всего 3 состояния, в которых может находиться процесс:

Работающий процесс – в данный момент код этого процесса выполняется.

Спящий процесс – в данный момент код процесса не выполняется в ожидании какого либо события (нажатия клавиши на клавиатуре, поступление данных из сети и т.д.)

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

Каждому процессу в системе назначаются числовые идентификаторы (личные номера) в диапазоне от 1 до 65535 (PIDProcess Identifier) и идентификаторы родительского процесса (PPIDParent Process Identifier). PID является именем процесса, по которому мы можем адресовать процесс в операционной системе при использовании различных средств просмотра и управления процессами. PPID определяет родственные отношения между процессами, которые в значительной степени определяют его свойства и возможности. Другие параметры, которые необходимы для работы программы, называют “окружение процесса”. Одним из таких параметров – управляющий терминал – имеют далеко не все процессы. Процессы, не привязанные к какому-то конкретному терминалу называются “демонами” (daemons). Такие процессы, будучи запущенными пользователем, не завершают свою работу по окончании сеанса, а продолжают работать, т.к. Они не связаны никак с текущим сеансом и не могут быть автоматически завершены. Как правило, с помощью демонов реализуются серверные службы, так например сервер печати реализован процессом-демоном cupsd, а сервер журналирования – syslogd.

Процессы в ОС Linux обладают теми же правами, которыми обладает пользователь, от чьего имени был запущен процесс.

На самом деле операционная система воспринимает работающего в ней пользователя как набор запущенных от его имени процессов. Ведь и сам сеанс пользователя открывается в командной оболочке (или оболочке Х) от имени пользователя.

Команда ps. Для просмотра списка процессов в Linux существует команда ps.

 ps [PID] options – просмотр списка процессов. Без параметров ps показывает все процессы, которы были запущены в течение текущей сессии, за исключением демонов. Options может принимать одно из следующих значений или их комбинации:

-A или -e – показать все процессы

-f – отсортировать по алфавиту

-w – показать полные строки описания процессов. Если они превосходят длину экрана, то перенести описание на следующую строку.

Поэтому когда мы говорим “права доступа пользователя к файлу” то подразумеваем “права доступа процессов, запущенных от имени пользователя к файлу”.

Процессы, имена которых заключены в квадратные скобки, например “[keventd]” - это процессы ядра. Эти процессы управляют работой системы, а точнее такими ее частями, как менеджер памяти, планировщик времени процессора, менеджеры внешних устройств и так далее.

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

Жизнь каждого процесса представлена следующими фазами:

^ Создание процесса – на этом этапе создается полная копия того процесса, который создает новый. Например, вы запустили из интерпретатора на выполнение команду ls. Командный интерпретатор создает свою полную копию.

^ Загрузка кода процесса и подготовка к запуску – копия, созданная на первом этапе заменяется кодом задачи, которую необходимо выполнить и создается ее окружение – устанавливаются необходимые переменные и т.п.

Выполнение процесса

^ Состояние зомби – на этом этапе выполнение процесса закончилось, его код выгружается из памяти, окружение уничтожается, но запись в таблице процессов еще остается.

^ Умирание процесса – после всех завершающих стадий удаляется запись из таблицы процессов – процесс завершил свою работу.

Тема 6: Командные оболочки. Текстовые редакторы. Редактор vi.

Вид занятия: комбинированное занятие

Учебные вопросы:

1. Понятие командной оболочки. Обзор командных оболочек.

2. Командная оболочка bash. Особенности работы.

3. Редактор vi.

Литература:

1. Паркер Тим “Linux 5.2. Энциклопедия пользователя”: пер. с англ. - К:  Издтельство “ДиаСофт”, 1999 – 688 с.

2. Д. Тейнсли “Linux и Unix: программирование в shell. Руководство разработчика” Пер. с англ. - К.: Издательская  группа BHV, 2001 – 464 с.

3. Системная справочная служба Linux Man

4. Справочная система Midnight commander.

Ход занятия.

1. Понятие командной оболочки. Обзор командных оболочек.

В мире Linux и Unix работа на компьютере неразрывно связана с понятием командная оболочка (shell) – программа, позволяющая пользователю взаимодействовать с системой посредством ввода и выполнения команд. Тем не менее, командная оболочка является обычной программой. Доказать это можно, установив в качестве оболочки по умолчанию в файле passwd для пользователя другую программу. Но для того, чтобы система знала ее как оболочку, необходимо добавить абсолютное имя файла в /etc/shells.

В составе Linux идет несколько командных оболочек, их состав может меняться в зависимости от дистрибутива, но всегда вы сможете обнаружить:

Burn Shell (sh) – самая старая и самая распространенная командная оболочка для Unix-систем. Нет ни одной системы Unix, где она бы не применялась.

Burn Again Shell (bash) – расширенная Burn Shell. Обладает массой приятных преимуществ, поэтому стала так популярна в последнее время. Является оболочкой “по умолчанию” практически для всех дистрибутивов Linux.

Также популярными оболочками являются:

csh – оболочка, система команд которой близка к языку программирования C

tclsh – оболочка, система команд которой близка к языку программирования Tcl.

В Linux “по умолчанию” используется bash.

2. . Командная оболочка bash. Особенности работы. Командная оболочка bash изначально являлась свободно-распространяемым аналогом Burn Shell. Впоследствии, когда ее возможности выросли, тогда ее стали считать самостоятельным продуктом.

Bash автоматически записывает все команды, набранные пользователем в файл ~/.bash_history. Для управления этим файлом служит команда history. history - это встроенная команда bash. То есть, исполняемого файла, соответствующего этой команде не существует. Сама командная оболочка выполняет все действия. Введенная без параметров, она просто выводит список всех команд, сохраненных в этом файле и идентична команде cat ~/.bash_history.

3. Редактор vi. В Linux широко используются около десятка текстовых редакторов. Каждый из них хорош для своих целей. Но наиболее часто используемыми все же являются редакторы vi и emacs.

Редактор vi – один из старейших и мощнейших редакторов в Linux. Современный вариант этого редактора называется vim (Vi IMproved – улучшенный vi). vim эмулирует все команды vi, и в то же время добавляет много дополнительных возможностей, таких как:

- многоуровневый процесс отмены ранее выполненных действий (undo);

- использование нескольких окон редактирования;

- редактирование командной строки;

- встроенная справочная система (команда :help) и многое другое.

Запуск редактора производится командой vim:

vim <имя файла>

Если вы запустить vim без указания имени файла, то можно или начать редактирование, или открыть файл командой :edit полное_имя_файла<Enter>.

:w <имя_файла><Enter> - Сохранить текущий файл. Параметр имя_файла в команде сохранения необязателен. Если он не указан, что файл будет сохранен с тем же именем, с которым и был открыт. Если же вы редактируете новый файл, то имя указать обязательно.

:q<Enter> - Выйти из vim. 

:qw <имя файла><Enter -  выйти из редактора, сохранив все сделанные изменения;

:q!<Enter> - для отмены сохранения всех сделанных изменений.

vim может работать в нескольких режимах: просмотра и ввода команд(по умолчанию), редактирования и выделения.

Такой режим перемещения работает только в режиме просмотра и режиме выделения.

Для того, чтобы узнать, в каком месте файла Вы сейчас находитесь,  следует нажать <Ctrl+g>. Внизу экрана появится строка состояния, в которой будет указано имя редактируемого файла и текущая позиция в нем.

Для перехода к концу файла, Вам необходимо нажать комбинацию <Shift+G>. Если же нужно перейти к какой-то определенной строке в файле, нажмите <№строки Shift+G>, например для перехода к 35 строке: <3><5><Shift+G>

Поиск по файлу производится с помощью команды / (аналогично поиску в less). По умолчанию поиск регистрозависимый (то есть маленькие и большие буквы считаются разными). Изменить это можно с помощью команды :set ic<Enter>. Подсветить цветом все искомые совпадения можно командой :set hls<Enter>.

Для удаления символов в режиме ввода команд, Вам необходимо нажать <Del> или <x>, а для удаления сразу целой строки – <dd>. Если понадобилось удалить сразу несколько строк, то перед вводом команды <dd>, необходимо ввести число удаляемых строк (например: <5dd> удалит 5 строк, включая текущую вниз по тексту). Для удаления всех символов до конца слова необходимо набрать команду <dw>, а до конца строки – <d$>. Если же необходимо удалить строку до ее начала – используйте комбинацию <d^>.

Для начала редактирования (вставки текста) необходимо нажать <Insert> или <i>. Перевести vim в режим замены символов в режиме редактирования также может клавиша <Insert>, а в обычном режиме - <Shift+R>. Выйти из режима редактирования можно с помощью нажатия <Esc>

Если в процессе редактирования Вы сделали ошибку, и Вам необходимо выполнить откат выполненных действий, то:

- перейти в режим ввода команд;

- нажать <u>.

Откат выполненной операции также действует на операции удаления символов, строк, слов и частей строк. Для отката отката (возврата выполненных команд) используется комбинация <Ctrl+r>.

При выполнении операций удаления, удаленный текст помещается в буфер. Этот буфер можно вставить потом в любое место в редактируемом тексте. Делается это нажатием клавиши <r>. Вставляемый текст будет помещен после текущей строки.

Тема 7: Сетевое администрирование Linux. Сетевая модель OSI.

Вид занятия: комбинированное занятие

Учебные вопросы:

1. Структура модели OSI.

2. Семейство протоколов TCP/IP.

Литература:

1. Cysco systems и др. - Руководство по технологиям объедененных сетей, 3-е издание. : Пер. с англ. - М. : Издательский дом “Вильямс”, 2002. - 1040 с. : ил. - парал. тит. англ.

2. Кирх. О, Доусон Т. - Linux для профессионалов. Руководство администратора сети, второе издание. - СПб.: Питер, 2001. - 496 с.; ил.

Ход занятия.

1. Структура модели OSI. Идея передачи данных по сети на большие расстояния возникла очень давно. Первые компьютерные сети работали в режиме разделения времени, когда подключения одного компьютера к другому было возможно только в определенный временной интервал. Такие сети были основаны на технологиях компании IBM, выпускающей в то время большие компьютеры – мэйнфрэймы.

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

В 1984 году международная организация по стандартизации (ISO) создала эталонную модель взаимодействия открытых систем (или OSIOpen System Interconnection). Модель решает задачу перемещения данных по сети путем распределения ее по 7 уровням, которыми управлять легче, нежели единой целостной системой.

Уровни более или менее независимы друг от друга, так что задачи, связанные с каждым из них тоже могут выполняться независимо.

Уровни:

7 – уровень приложений: это ближайший к пользователю уровень OSI. В задачи, выполняемые на этом уровне входит определение доступности ресурсов, аутентификации (определение подлинности) пользователя, отображения информации и т.п. В качестве примеров можно привести протоколы FTP(file tranfetr protocol), SMTP (simple mail tranfer protocol), HTTP (hyper text transfer protocol).

6 – уровень представлений: обеспечивает различные кодирования и преобразования, которым подвергаются данные приложения. Полуляные протоколы уровня представлений это MPEG – стандарт сжатия и кодирования видео, GIF, JPEG, PNG – стандарты сжатия и кодирования графических изображений, SSL – защищенные соединения.

5 – сеансовый уровень: на этом уровне устанавливаются сеансы обмена данными, происходит их управление и завершение. Наиболее известным протоколом этого уровня являемся протокол SMB (server message block) – передача файлов в сетях Windows.

4 – транспортный уровень: принимает данные от более высокого уровня и разбивает их на части для передачи по сети. Как правило, транспортный уровень “отвечает” за доставку и правильную сборку данных. Именно на этом уровне происходит управление потоками данных, передаваемых по сети.

Наиболее известные протоколы транспортного уровня это TCP, UDP, SFX.

3 – сетевой уровень определяет сетевой адрес, отвечает за маршрутизацию пакетов. Сетевой уровень определяет логическое устройство сети.

Известнейшие протоколы сетевого уровня: IP, X25, IPX.

2 – канальный уровень: обеспечивает надежную передачу данных в физической сети. Спецификации канального уровня определяют важнейшие характеристики сети, такие как размер пакета, пропускная способность и т.п. Также на канальном уровне определяется физическое (MAC - управление доступом к носителю) устройство сети посредством присвоения ему уникального MAC-адреса (или без таковых в соединениях точка-точка).

Наиболее известные протоколы канального уровня: Ethernet, Token Ring, PPP, DSL, ATM и др.

1 – физический уровень модели OSI: регламентирует физические, механические процедурные спецификации. Проще говоря, физический уровень определяет среду передачи – витая пара, медный провод, оптоволоконный кабель и др.

Независимость  разных уровней друг от друга означает: протокол Ethernet (канальный уровень) может работать как на витой паре, так и на оптоволоконном или коаксиальном кабеле, и вместе с тем на базе Ethernet может быть построена сеть IP, IPX или, например, AppleTalk.

2. Семейство протоколов TCP/IP.  Поскольку в современном мире профессия сетевого администратора де-факто связана с работой в сети Интернет, то и изучать основы сетевого администрирования мы будем с вами на примере семейства протоколов TCP/IP версии 4 (в разработке находится протокол IP, переход на который уже начался в странах восточной и юго-восточной Азии в качестве эксперимента).

В состав семейства протоколов TCP/IP входят 8 протоколов, не считая сторонних протоколов маршрутизации. Лояльность разработчиков этого семейства протоколов позволила использовать любой протокол маршрутизации, однако в стандарте TCP/IP определен и собственный.

Начнем с нижнего уровня и перечислим их:

- ARPAddress Resolution Protocol – протокол преобразования адресов. Обеспечивает преобразование сетевых адресов в адреса физических устройств MAC. Работает одновременно на двух уровнях – канальном и сетевом.

- RARPReverse Address Resolution Protocol – протокол обратного преобразования адресов. Обеспечивает преобразования MAC-адреса в IP-адрес. Для работы требует наличие сервера RARP c таблицей преобразования. Чаще всего используется для загрузки бездисковых рабочих станции, который при запуске не знают своего IP-адреса. Работает одновременно на двух уровнях – канальном и сетевом.

- DHCPDynamic Host Configure Protocol – протокол динамической конфигурации хоста. Позволяет присваивать адреса IP-адреса, маршрут по умолчанию и некоторую другую сетевую информацию о сети IP-устройствам. Работает одновременно на двух уровнях – канальном и сетевом.

- IPInternet Protocol – протокол сетевого уровня, который содержит информацию об адресе логического устройства сети и некоторую информацию о маршрутизации пакетов в сети. Является основным сетевым протоколом в наборе протоколов TCP/IP. Имеет две основные функции – передачу дейтограмм (блоков данных) по сети с наименьшими затратами без подтверждения соединения и обеспечение фрагментации (разбивки) пакетов и последующей сборки для поддержки передачи протоколу канального уровня с различным максимальным размером блоков передаваемых данных.

- ICMP - Internet Control Message Protocol – протокол контроля сообщений в сети Internet – обеспечивает создание и отправку пакетов с отчетами об ошибках и другой информации о обработке IP-пакетов, а также контроля доступности узлов в сети. Работает на сетевом уровне модели OSI.

- IDRPICMP Router-Discovery ProtocolICMP-протокол обнаружения маршрутизатора: использует объявления и запросы маршрутизаторов, чтобы определить адреса маршрутизаторов соседних сетей. Работает на сетевом уровне.

- UDPUser Datagram Protocol – протокол передачи блоков данных пользователя: протокол транспортного уровня, не требующий подтверждения соединения. Имеет систему портов, позволяющих различать приложения, работающие на одном устройстве.

- TCPTranfer Control Protocol – протокол управления передачей: протокол транспортного уровня модели OSI с подтверждением соединения. Кроме системы портов вводит также понятие соединения, позволяющего одновременную работу портов в режимах “один ко многим”.




1. Q2min] bsQ2ij нет да 8 L8iK 2 нет да i1 нет 10 9
2. дело и publicus общественный всенародный форма правления при которой все высшие органы государственной вла
3. Непівська суспільна модель її протиріччя та причини згортання
4. На этом вопросе обязательно надо остановиться поскольку многие люди под влиянием науки или практических с
5. исследовательской работы студентов способствующей углубленному изучению отдельных разделов экономическо
6. Убытки кормильца
7. а; крупные военные объекты и т
8. Преломление готической традиции в произведении Эдгара По Повесть о приключениях Артура Гордона Пима
9. Сущность и условия использования связей с общественностью
10. Санитарноэпидемиологические требования к устройству содержанию и организации режима работы дошкольных об
11. Конспект лекций Издательство- Эксмо 2008 г
12. Доклад к защите Здравствуйте уважаемые члены государственной аттестационной комиссии вашему вниманию
13. Социокультурные процессы политик
14. измерение температури влажности воздуха и атмосферного давлени
15. Реконструкция газопровода
16. Конспекты флоры высших споровых растений сем
17. Особенности выращивания зерновых культур
18. Доклад- Принцип неопределенности или почему Бог до сих пор идеален
19. Жанр Божественной Комедии Данте
20. на тему- Особенности деятельности банков РБ на внутреннем рынке ценных бумаг- проблемы и перспективы