29
Современные Современные операционные системы операционные системы UNIX UNIX Linux Linux QNX QNX

Современные операционные системы

  • Upload
    romeo

  • View
    51

  • Download
    0

Embed Size (px)

DESCRIPTION

Современные операционные системы. UNIX Linux QNX. Семейство операционных систем UNIX. Общая характеристика исключительно удачн ая реализаци я простой мультипрограммной и многопользовательской операционной системы. создана всего двумя разработчиками (Кен Томпсон и Деннис Ритчи) . - PowerPoint PPT Presentation

Citation preview

Page 1: Современные операционные системы

Современные Современные операционные системыоперационные системы

UNIXUNIX LinuxLinux QNXQNX

Page 2: Современные операционные системы

Семейство операционных Семейство операционных систем UNIXсистем UNIX

Общая характеристика Общая характеристика исключительно удачнисключительно удачнаяая реализаци реализацияя простой простой

мультипрограммной и многопользовательской мультипрограммной и многопользовательской операционной системы. операционной системы.

создана всего двумя разработчиками (Кен Томпсон и создана всего двумя разработчиками (Кен Томпсон и Деннис Ритчи) Деннис Ритчи) ..

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

система и приложения, выполняющиеся в ней, система и приложения, выполняющиеся в ней, получились легко переносимыми (мобильными)получились легко переносимыми (мобильными), , поскольку написаны напоскольку написаны на язык языкее С С..

Page 3: Современные операционные системы

Цели разработкиЦели разработки ССтремление сохранить простоту и обойтись тремление сохранить простоту и обойтись

минимальным количеством функций.минимальным количеством функций. ООбщность. Одни и те же методы и механизмы бщность. Одни и те же методы и механизмы

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

буферам межпроцессных сообщений выполняются буферам межпроцессных сообщений выполняются с помощью одних и тех же примитивов;с помощью одних и тех же примитивов;

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

одни и те же механизмы работают в отношении одни и те же механизмы работают в отношении программно и аппаратно инициируемых программно и аппаратно инициируемых прерываний.прерываний.

Page 4: Современные операционные системы

Цели разработкиЦели разработки

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

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

Page 5: Современные операционные системы

Основные понятия Основные понятия ОС ОС UNIX UNIX Виртуальная машинаВиртуальная машина ПользовательПользователь Интерфейс пользователяИнтерфейс пользователя Привилегированный пользовательПривилегированный пользователь Команды и командный Команды и командный

интерпретаторинтерпретатор ПроцессыПроцессы

Page 6: Современные операционные системы

Виртуальная машинаВиртуальная машина

Каждому пользователю после входа в Каждому пользователю после входа в систему предоставляется виртуальный систему предоставляется виртуальный компьютер, в котором, есть все необходимые компьютер, в котором, есть все необходимые ресурсы: процессор (процессорное время ресурсы: процессор (процессорное время выделяется на основе «карусельной» выделяется на основе «карусельной» диспетчеризации (диспетчеризации (RRRR — — round robinround robin) и с ) и с использованием динамических приоритетов использованием динамических приоритетов с тем, чтобы обеспечить равенство в с тем, чтобы обеспечить равенство в обслуживании), память, устройства, файлы. обслуживании), память, устройства, файлы. Текущее состояние такого виртуального Текущее состояние такого виртуального компьютера, предоставляемого компьютера, предоставляемого пользователю, называется образом. пользователю, называется образом.

Page 7: Современные операционные системы

Виртуальная машинаВиртуальная машина

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

другой информации.другой информации. Образ процесса во время его Образ процесса во время его

выполнения размещается в основной выполнения размещается в основной памяти. памяти.

Page 8: Современные операционные системы

Виртуальная машинаВиртуальная машина

Образ памяти делится на три логических Образ памяти делится на три логических сегмента:сегмента: сегмент реентерабельных процедур (начинается с сегмент реентерабельных процедур (начинается с

нулевого адреса в виртуальном адресном нулевого адреса в виртуальном адресном пространстве процесса);пространстве процесса);

сегмент данных (располагается следом за сегментом сегмент данных (располагается следом за сегментом процедур и может расти в сторону больших адресов);процедур и может расти в сторону больших адресов);

сегмент стека (начинается со старшего адреса и сегмент стека (начинается со старшего адреса и растет в сторону младших адресов по мере занесения растет в сторону младших адресов по мере занесения в него информации при вызовах подпрограмм и при в него информации при вызовах подпрограмм и при прерываниях).прерываниях).

Page 9: Современные операционные системы

ПользовательПользователь

UNIXUNIX предназначен для мультитерминальной предназначен для мультитерминальной работы. Чтобы начать работать, человек работы. Чтобы начать работать, человек должен «войти» в систему, введя со должен «войти» в систему, введя со свободного терминала свое учетное имя свободного терминала свое учетное имя ((account nameaccount name) и, возможно, пароль () и, возможно, пароль (passwordpassword).).

Человек, зарегистрированный в учетных Человек, зарегистрированный в учетных файлах системы и, следовательно, имеющий файлах системы и, следовательно, имеющий учетную запись (учетную запись (accountaccount), называется ), называется зарегистрированным пользователем системы. зарегистрированным пользователем системы.

Регистрацию новых пользователей обычно Регистрацию новых пользователей обычно выполняет администратор системы.выполняет администратор системы.

Page 10: Современные операционные системы

ПользовательПользователь

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

Все пользователи ОС Все пользователи ОС UNIXUNIX явно или неявно явно или неявно работают с файлами. Файловая система ОСработают с файлами. Файловая система ОС UNIXUNIX имеет древовидную структуру. имеет древовидную структуру. Промежуточными узлами дерева являются Промежуточными узлами дерева являются каталоги со ссылками на другие каталоги или каталоги со ссылками на другие каталоги или файлы, а листья дерева соответствуют файлам файлы, а листья дерева соответствуют файлам или пустым каталогам. или пустым каталогам.

Page 11: Современные операционные системы

ПользовательПользователь Каждому зарегистрированному пользователю Каждому зарегистрированному пользователю

соответствует некоторый каталог файловой соответствует некоторый каталог файловой системы, который называется «домашним» системы, который называется «домашним» ((homehome) каталогом пользователя) каталогом пользователя,, доступ доступ к к домашнему каталогу и всем каталогам и домашнему каталогу и всем каталогам и файлам, содержащимся в нем файлам, содержащимся в нем - - неограниченный. Пользователь может неограниченный. Пользователь может создавать, удалять и модифицировать каталоги создавать, удалять и модифицировать каталоги и файлы, содержащиеся в домашнем каталоге.и файлы, содержащиеся в домашнем каталоге.

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

Page 12: Современные операционные системы

Интерфейс пользователяИнтерфейс пользователя

Традиционный способ взаимодействия Традиционный способ взаимодействия пользователя с системой UNIX пользователя с системой UNIX -- использованииспользованиее командных языков командных языков..

Имеются иИмеются и графические интерфейсы графические интерфейсы на базе на базе X X Window. Window.

После входа пользователя в систему для него После входа пользователя в систему для него запускается один из командных запускается один из командных интерпретаторов (в зависимости от интерпретаторов (в зависимости от параметров, сохраняемых в файле /etc/passwd).параметров, сохраняемых в файле /etc/passwd).

Page 13: Современные операционные системы

Интерфейс пользователяИнтерфейс пользователя

Обычно в системе поддерживается Обычно в системе поддерживается несколько командных интерпретаторов с несколько командных интерпретаторов с похожими, но различающимися своими похожими, но различающимися своими возможностями командными языками. возможностями командными языками. Общее название для любого командного Общее название для любого командного интерпретатора ОС UNIX — интерпретатора ОС UNIX — shellshell (оболочка), поскольку любой (оболочка), поскольку любой интерпретатор представляет внешнее интерпретатор представляет внешнее окружение ядра системы.окружение ядра системы.

Page 14: Современные операционные системы

Интерфейс пользователяИнтерфейс пользователя Вызванный командный интерпретатор выдает Вызванный командный интерпретатор выдает

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

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

Page 15: Современные операционные системы

Интерфейс пользователяИнтерфейс пользователя

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

ИмеетсяИмеется механизм командных файлов ( механизм командных файлов (shell shell scriptsscripts), которые могут содержать ), которые могут содержать произвольные последовательности командных произвольные последовательности командных строк. При указании имени командного файла строк. При указании имени командного файла вместо очередной команды интерпретатор вместо очередной команды интерпретатор читает файл строка за строкой и читает файл строка за строкой и последовательно интерпретирует команды.последовательно интерпретирует команды.

Page 16: Современные операционные системы

Привилегированный Привилегированный пользовательпользователь

Ядро ОС UNIX идентифицирует каждого Ядро ОС UNIX идентифицирует каждого пользователя по его идентификатору (UID — пользователя по его идентификатору (UID — user identifier), уникальному целому значению, user identifier), уникальному целому значению, присваиваемому пользователю при присваиваемому пользователю при регистрации в системе. регистрации в системе.

Кроме того, каждый пользователь относится к Кроме того, каждый пользователь относится к некоторой группе пользователей, которая некоторой группе пользователей, которая также идентифицируется некоторым целым также идентифицируется некоторым целым значением (GID — group identifier). значением (GID — group identifier).

Page 17: Современные операционные системы

Привилегированный Привилегированный пользовательпользователь

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

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

Page 18: Современные операционные системы

Привилегированный Привилегированный пользовательпользователь

ААдминистратор системы дминистратор системы ((зарегистрированнызарегистрированныйй пользователпользователь)ь) должен обладать большими должен обладать большими ввозможностями, чем обычные пользователи. озможностями, чем обычные пользователи.

В ОС UNIX эта задача решается путем В ОС UNIX эта задача решается путем выделения единственного нулевого значения выделения единственного нулевого значения UID. Пользователь с таким UID называется UID. Пользователь с таким UID называется суперпользователем (superuser) или root. суперпользователем (superuser) или root.

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

Page 19: Современные операционные системы

Привилегированный Привилегированный пользовательпользователь

ВВажным отличием суперпользователя ОС ажным отличием суперпользователя ОС UNIX является то, что на UNIX является то, что на негонего не не распространяются ограничения на распространяются ограничения на используемые ресурсы. используемые ресурсы.

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

Суперпользователь может изменять эти Суперпользователь может изменять эти ограничения для других пользователей, но на ограничения для других пользователей, но на него они не действуют.него они не действуют.

Page 20: Современные операционные системы

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

Оболочкой Оболочкой ((shellshell) в системе ) в системе UNIXUNIX называют называют механизм взаимодействия между пользовамеханизм взаимодействия между пользова--телями и системой. телями и системой. ЭЭто интерпретатор команд, то интерпретатор команд, который считывает набираемые пользователем который считывает набираемые пользователем строки и запускает выполнение запрошенных строки и запускает выполнение запрошенных системных функций. системных функций.

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

Page 21: Современные операционные системы

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

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

Page 22: Современные операционные системы

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

Любой командный язык семейства Любой командный язык семейства shellshell фактически состоит из трех частей:фактически состоит из трех частей: служебных конструкций, позволяющих служебных конструкций, позволяющих

манипулировать с текстовыми строками и строить манипулировать с текстовыми строками и строить сложные команды на основе простых команд;сложные команды на основе простых команд;

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

команд, представляемых отдельными команд, представляемых отдельными выполняемыми файлами.выполняемыми файлами.

В свою очередь, набор команд последнего вида В свою очередь, набор команд последнего вида включает стандартные команды (системные включает стандартные команды (системные утилиты, такие как утилиты, такие как vivi, , cccc и т. д.) и команды, и т. д.) и команды, созданные пользователями системы. созданные пользователями системы.

Page 23: Современные операционные системы

ПроцессыПроцессы Процесс в ОС Процесс в ОС UNIXUNIX - это- это программа, программа,

выполняемая в собственном виртуальном выполняемая в собственном виртуальном адресном пространстве. адресном пространстве.

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

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

Page 24: Современные операционные системы

ПроцессыПроцессы

Эта запущенная программа, в свою Эта запущенная программа, в свою оочередь, чередь, может создать процесс и запустить в нем может создать процесс и запустить в нем другую программу и т. д.другую программу и т. д.

Для образования нового процесса и запуска в Для образования нового процесса и запуска в нем программы используются два системных нем программы используются два системных вызова вызова APIAPI — — forkfork()() и и ехесехес ().().

Системный вызов Системный вызов forkfork приводит к созданию приводит к созданию нового адресного пространства, состояние нового адресного пространства, состояние которого абсолютно идентично состоянию которого абсолютно идентично состоянию адресного пространства основного процесса. адресного пространства основного процесса. Для дочернего процесса заводятся копии всех Для дочернего процесса заводятся копии всех сегментов данных. сегментов данных.

Page 25: Современные операционные системы

ПроцессыПроцессы ССразу после выполнения системного вызова разу после выполнения системного вызова

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

Чтобы программа могла разобраться, в каком Чтобы программа могла разобраться, в каком процессе она теперь работает — в основном процессе она теперь работает — в основном или порожденном, функция или порожденном, функция forkfork возвращает возвращает разные значения: 0 в порожденном процессе и разные значения: 0 в порожденном процессе и целое положительное число (идентификатор целое положительное число (идентификатор порожденного процесса —порожденного процесса —PIDPID) в основном ) в основном процессе.процессе.

Page 26: Современные операционные системы

ПроцессыПроцессы

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

Выполнение Выполнение execexec приводит к тому, что в приводит к тому, что в адресное пространство порожденного процесса адресное пространство порожденного процесса загружается новая выполняемая программа и загружается новая выполняемая программа и запускается с адреса, соответствующего входу в запускается с адреса, соответствующего входу в функцию функцию mainmain. .

Page 27: Современные операционные системы

ПроцессыПроцессы

Другими словами, это приводит к замене Другими словами, это приводит к замене текущего программного сегмента и текущего текущего программного сегмента и текущего сегмента данных, которые были унаследованы сегмента данных, которые были унаследованы при выполнении вызова при выполнении вызова forkfork, на новые , на новые соответствующие сегменты, заданные в файле.соответствующие сегменты, заданные в файле.

Прежние сегменты теряются. Это Прежние сегменты теряются. Это эффективный метод смены выполняемой эффективный метод смены выполняемой процессом программы, но не самого процесса. процессом программы, но не самого процесса. Файлы, уже открытые до выполнения Файлы, уже открытые до выполнения execexec, , остаются открытыми после его выполнения.остаются открытыми после его выполнения.

Page 28: Современные операционные системы

ПроцессыПроцессы

В примере пользовательская программа, В примере пользовательская программа, вызываемая как команда вызываемая как команда shellshell, выполняет в , выполняет в отдельном процессе стандартную команду отдельном процессе стандартную команду shell lsshell ls, которая выдает на экран содержимое , которая выдает на экран содержимое текущего каталога файлов.текущего каталога файлов.#include <unistd.h>#include <unistd.h>#include <sys/wait.h>#include <sys/wait.h>mainmain()(){{ifif((forkfork()==0) ()==0) waitwait(0); /* родительский процесс (0); /* родительский процесс */*/

else execlelse execl("("/bin//bin/lsls", "", ", "", NULLNULL): /* порожденный ): /* порожденный процесс */процесс */

}}

Page 29: Современные операционные системы

ПроцессыПроцессы Каждый процесс, за исключением начального, Каждый процесс, за исключением начального,

порождается в результате запуска другим порождается в результате запуска другим процессом операции процессом операции fork().fork(). Каждый Каждый процесс имеет одного родителя, но может процесс имеет одного родителя, но может породить много процессов. породить много процессов.

Начальный процесс создается в результате Начальный процесс создается в результате загрузки системы. После порождения процесса загрузки системы. После порождения процесса с идентификатором 1 с идентификатором 1 ((initinit) н) начальный ачальный процесс становится процессом подкачки и процесс становится процессом подкачки и реализует механизм виртуальной памяти.реализует механизм виртуальной памяти.

Процесс Процесс initinit, является предком любого , является предком любого другого процесса в системе и связан с каждым другого процесса в системе и связан с каждым процессом особым образом.процессом особым образом.