Опубликован: 13.05.2011 | Уровень: для всех | Доступ: платный
Лекция 1:

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

Лекция 1 || Лекция 2 >
Аннотация: Познакомить обучаемых с предметом обучения: Unix-way, история Юникс, разновидности Юникс. Линукс, что такое Linux, средства просмотра системной информации.

Ход занятия

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

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

Остальную часть Unix way мы с Вами будем изучать в течение этого курса. Будьте готовы к изучению не просто новых программ, а новых методов работы на компьютере.

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

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

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

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

3. Существует множество разновидностей Unix и Unix-подобных систем. К наиболее известным из них относятся Solaris (ранее SunOS) корпорации SUN Microsystems, AIX компании IBM, DEC Unix фирмы DEC, SCO UnixWare и прочие. Все вышеназванные системы являются коммерческими, и многие из них имеют высокую цену. Они работают на различных архитектурах (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 является свободно распространяемой многозадачной многопользовательской операционной системой, похожей на Unix. Linux была разработана специально для платформы ПК (с процессором Intel) и благодаря преимуществам архитектуры позволяет достичь производительности, сравнимой с мощными рабочими станциями Unix. Linux также переносилась и на другие платформы, но все эти версии сходны с версией для ПК.

Давайте рассмотрим операционную систему как единый комплекс. Ниже приведен список того, что мы получим, установив ее:

Ядро Linux:

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

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

Утилиты GNU:

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

X Window:

Графический интерфейс пользователя представлен в Linux средой X Window. Различные оконные менеджеры (IceWM, WindowMaker, Fluxbox и прочие) и графические среды такие как KDE и GNOME, обеспечивают удобный интерфейс и работу со средствами мультимедиа.

Интерфейсы DOS и Windows:

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

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

Сетевая поддержка:

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

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

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

gserg@ADM:~$ uname 
  Linux

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

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

-r – имя релиза ядра системы

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

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

-p – тип процессора

-m тип оборудования (i386, i686, Alpha)

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

Это не все параметры uname. О справке Linux мы поговорим с вами на "лекции 5" .

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

gserg@ADM:~$ free 
             total       used       free     shared    buffers     cached 
 Mem:       498916     483332      15584          0       4392     112924 
 -/+ buffers/cache:    366016      132900 
 Swap:     1453840     412532      1041308

Обратите внимание, что практически вся свободная память резервируется системой под дисковые буферы и дисковый кэш, что позволяет 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 в расчете на 1 процессор.

Другим средством мониторинга производительности является команда vmstat :

[gserg@admin ~]$ vmstat  
 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  0  0 268928 776168  15072 203316    1    2    10    14  207  225 13  3 84  0  0

Эта команда выдает за раз достаточно большой объем информации.

Раздел procs :

r — количество ожидающих процессов

b — количество спящих процессов

Раздел memory :

swpd — объем используемой виртуальной памяти

free — объем свободной виртуальной памяти

buff — объем памяти, занятой под дисковые буферы

cache - объем памяти, занятой под дисковый кэш

Раздел swap :

si — объем памяти, подкачанной с диска

so — объем памяти, выгруженной на диск

Раздел io :

bi — количество блоков, отправленных на блочное устройство

bo — количество блоков, прочитанных с блочного устройства

Раздел system :

in — количество прерываний в секунду

cs — количество переключений контекста в секунду

Раздел cpu :

usвремя выполнения кода уровня пользователя (в процентах от общего времени)

sy время выполнения кода уровня системы (в процентах от общего времени)

id — время простоя процессора (в процентах от общего времени)

wa время ожидания ввода/вывода

st — время работы виртуальной машины уровня ядра

vmstat показывает при простом запуске усредненные показатели за все время с момента запуска системы. Но можно попросить vmstat вывести показатели за заданное количество времени:

[gserg@admin ~]$ vmstat 1 5 
 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  1  0 268844 742148  16620 212452    1    2    10    14  216  230 13  3 84  0  0  
  0  0 268844 742140  16628 212436    0    0     0    48 1097  414  6  2 92  0  0  
  0  0 268844 742140  16628 212436    0    0     0     0 1105  392  5  1 94  0  0  
  0  0 268844 742172  16628 212436    0    0     0     0 1090  345  4  1 95  0  0  
  0  0 268844 742172  16628 212436    0    0     0     0 1107  403  6  1 93  0  0

В примере выведена информация за каждую секунду на протяжении 5 секунд. Если второй параметр ( 5 ) не указывать, то vmstat будет выводить информацию каждую секунду до нажатия Ctrl+C :

[gserg@admin ~]$ vmstat 1  
 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  
  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  
  0  0 268844 740824  16824 212720    1    2    10    14  217  230 13  3 84  0  0  
  0  0 268844 740856  16824 212720    0    0     0     0 1088  488  8  2 90  0  0  
  0  0 268844 740856  16824 212720    0    0     0     0 1392  873 14  4 82  0  0  
 ^C

Для просмотра размеров файловых систем используется команда df:

[gserg@admin ~]$ df  
 Файловая система     1K-блоков      Исп  Доступно  Исп% смонтирована на  
 /dev/hdb2             36733400  10074596  24762736  29% /  
 /dev/hdb1               101086     16228     79639  17% /boot  
 tmpfs                   647688         0    647688   0% /dev/shm

Без параметров команда выводит данные в виде количества блоков по 1 килобайту. Для человека это не очень удобная подача информации. У df существует ключ - h (или -- human ), позволяющий увидеть объемы в привычных нам единицах измерения:

[gserg@admin ~]$ df --human  
 Файловая система      Разм  Исп  Дост  Исп% смонтирована на  
 /dev/hdb2              36G  9,7G   24G  29% /  
 /dev/hdb1              99M   16M   78M  17% /boot  
 tmpfs                 633M     0  633M   0% /dev/shm
Лекция 1 || Лекция 2 >
Ярослав Горлов
Ярослав Горлов

Было бы хорошо если бы изучая Ленкцию можно было скачать файлы, используемые для тренировки в терминале. (lesson6_st.txt и т.п.)

Max Akt
Max Akt

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