Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 29

Файл №1114671 А. Робачевский - Операционная система UNIX (А. Робачевский - Операционная система UNIX) 29 страницаА. Робачевский - Операционная система UNIX (1114671) страница 292019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 29)

Вэтом случае для отладочной версии удобно создать собственную корневуюиерархию.Процесс также может изменить и текущий каталог. Для этого используют!ся системные вызовыилиintint<unistd.h>charНапример, внутренняя команда командного интерпретаторареализована следующим кодом:может бытьcharчто имя нового каталога, введенного пользователем,уже находится в переменной== 1)Изменение корневого каталога разрешено только для администратора системы — супер!пользователя.

Эта операция таит в себе определенную опасность, т. к. часть утилит опера!ционной системы (если не все) могут оказаться недоступными, в том числе и командаТаким образом, последствия необдуманного изменения корневого каталогамогут стать необратимыми.www.books-shop.comГлава 2. Среда программирования UNIX144Метаданные файлаКак уже говорилось, каждый файл помимо собственно данных содержитметаданные, описывающие его характеристики, например, владельцев,права доступа, тип и размер файла, а также содержащие указатели на фак!тическое расположение данных файла.

Метаданные файла хранятся вструктуре inode. Часть полей этой структуры могут быть получены с по!мощью системных вызовов<sys/stat.h>charstruct stat(const charstruct statfildes, struct statintintВ качестве аргумента функции принимают имя файла или файловый деск!риптори возвращают заполненные поля структуры s t a t , которыеприведены в табл.Таблица 2.15. Поля структуры statПолеЗначениеmode t st modeТип файла и права доступаНомер inode. Поля st_ino и st_dev однозначно определя%ют обычные файлыino_tdev t st devdev_tНомер устройства, на котором расположен файл (номер уст%ройства файловой системы)Для специального файла устройства содержит номер устрой%ства, адресуемого этим файломt stЧисло жестких связейuid t st uidИдентификатор пользователя%владельца файлаgid_t st_gidИдентификатор группы%владельца файлаРазмер файла в байтах.

Для специальных файлов устройствэто поле не определеноoff t st sizest_atimetime t stВремя последнего доступа к файлуВремя последней модификации данных файлаtime t st ctimeВремя последней модификации метаданных файлаlong st b l k s i z eОптимальный размер блока для операцийДляспециальных файлов устройств и каналов это поле не опре%деленоlongЧисло размещенных 512%байтовых блоков хранения данных.Для специальных файлов устройств это поле не определеноst_blocksДля определения типа файла служат следующие макроопределения, опи!санные в файле <sys/stat.h>:www.books-shop.comРабота с файлами145Таблица 2.16.

Определение типа файлаМакроопределениеТип файлаSFIFOСпециальный файл символьного устройстваКаталогSСпециальный файл блочного устройстваSОбычный файлСимволическая связьSСокетВсе значения времени, связанные с файлом (время доступа, модифика!ции данных и метаданных) хранятся в секундах, прошедших с 0 часовянваря 1970 года. Заметим, что информация о времени создания файлаотсутствует.Приведенная ниже программа выводит информацию о файле, имя кото!рого передается ей в качестве аргумента:<sys/stat.h>#include <time.h>argc, char{struct statchar, &s)тип) ptype = "Обычный файл";elsest_mode) ) ptype = "Каталог";elseptype =связь";elseptype = "Симв.

устройство";elseptype =elseptype = "Сокет";elseptype = "FIFO";else ptype = "Неизвестныйинформацию о=/*Права=&/*Номер inode*/=/*Число=/*Устройство, на котором хранятся данные= (%d,www.books-shop.comГлава 2. Среда программирования UNIX==/*Для специальных файлов устройств — номера= (%d,=доступа, модификации и модификации===}Программа использует библиотечные функцииивоз!вращающие, соответственно, старший и младший номера устройства.Функцияпреобразует системное время в удобный формат.Запуск программы на выполнение приведет к следующим результатам:$type = Обычный файлperm =inode = 13= 1dev = (1,= 286= 100rdev = (0, 0)size = 1064atime = Wed Jan 8 17:25:34 1997mtime = Wed Jan 8 17:19:27 1997ctime = Wed Jan 8 17:19:27 1997$131 andyuser1064Jan 8fсПроцессыВ главе 1 уже упоминались процессы. Однако знакомство ограничивалосьпользовательским, или командным интерфейсом операционной системы.В этом разделе попробуем взглянуть на них с точки зрения программиста.Процессы являются основным двигателем операционной системы.

Боль!шинство функций выполняется ядром требованиюили иного процес!са. Выполнение этих функций контролируется привилегиями процесса,которые соответствуют привилегиям пользователя, запустившего его.В этом разделе рассматриваются:Идентификаторы процессаwww.books-shop.comПроцессы/47Программный интерфейс управления памятью: системные вызовынизкого уровня и библиотечные функции, позволяющие упроститьуправление динамической памятью процесса.Важнейшие системные вызовы, обеспечивающие создание новогопроцесса и запуск новой программы.

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

Более мощные средства будут рассмотрены в разделе"Взаимодействие между процессами" главы 3.ППГруппы и сеансы; взаимодействие процесса с пользователем.Ограничения, накладываемые на процесс, и функции, которые по!зволяют управлять этими ограничениями.Идентификаторы процессаВы уже знаете, что каждый процесс характеризуется набором атрибутов иидентификаторов, позволяющих системе управлять его работой. Важней!шими из них являются идентификатор процесса PID и идентификатор ро!дительского процессаPID является именем процесса в операцион!ной системе, по которому мы можем адресовать его, например, при от!правлении сигнала.

PPID указывает на родственные отношения междупроцессами, которые (как и в жизни) в значительной степени определяютего свойства и возможности.Однако нельзя не отметить еще четыре идентификатора, играющие ре!шающую роль при доступе к системным ресурсам: идентификатор пользо!вателя UID, эффективный идентификатор пользователя EUID, идентифи!катор группыи эффективный идентификатор группы EGID. Этиидентификаторы определяют права процесса в файловой системе, и какследствие, в операционной системе в целом. Запуская различные командыи утилиты, можно заметить, что порожденные этими командами процессыполностью отражают права пользователя UNIX. Причина проста — всепроцессы, которые запускаются, имеют идентификатор пользователя иидентификатор группы.

Исключение составляют процессы с установлен!ными флагамии SGID.При регистрации пользователя в системе утилитазапускает ко!мандный интерпретатор, — login shell, имя которого является одним изатрибутов пользователя. При этом идентификаторам UID (EUID) и GID(EGID) процесса shell присваиваются значения, полученные из записипользователя в файле паролей /etc/passwd.

Таким образом, командный ин!терпретатор обладает правами, определенными для данного пользователя.www.books-shop.com148Глава 2.программирования UNIXПри запуске программы командный интерпретатор порождает процесс,который наследует все четыре идентификатора и, следовательно, имеет теже права, что и shell. Поскольку в конкретном сеансе работы пользователяв системе прародителем всех процессов является login shell, то и их поль!зовательские идентификаторы будут идентичны.Казалось бы, эту стройную систему могут "испортить" утилиты с установ!ленными флагами SUID и SGID.

Но не стоит волноваться — как правило,такие программы не позволяют порождать другие процессы, в противномслучае, эти утилиты необходимо немедленно уничтожить!На рис.показан процесс наследования пользовательских идентифика!торов в рамках одного сеанса работы.Рис. 2.10. Наследование пользовательских идентификаторовwww.books-shop.comПроцессы149Для получения значений идентификаторов процесса используются сле!дующие системные вызовы:uid tuid_tgid_tgid_tЭти функции возвращают для сделавшего вызов процесса соответственнореальный и эффективный идентификаторы пользователя и реальный иэффективный идентификаторы группы.Процесс также может изменить значения этих идентификаторов с помо!щью системных вызовов:ttinclude<unistd.h>intintgid)Системные вызовыи setgid(2) устанавливают сразу реальный и эф!фективный идентификаторы, а системные вызовыи setegid(2) —только эффективные.Ниже приведен фрагмент программыизменяющей идентификато!ры процесса на значения, полученные из записи файла паролей.

Характеристики

Тип файла
PDF-файл
Размер
8,11 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее