Андрей Робачевский - Операционная система UNIX

Тут можно читать онлайн Андрей Робачевский - Операционная система UNIX - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство BHV - Санкт-Петербург, год 1997. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Операционная система UNIX
  • Автор:
  • Жанр:
  • Издательство:
    BHV - Санкт-Петербург
  • Год:
    1997
  • Город:
    Санкт-Петербург
  • ISBN:
    5-7791-0057-8
  • Рейтинг:
    4.63/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Андрей Робачевский - Операционная система UNIX краткое содержание

Операционная система UNIX - описание и краткое содержание, автор Андрей Робачевский, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).

Для широкого круга пользователей

Операционная система UNIX - читать онлайн бесплатно полную версию (весь текст целиком)

Операционная система UNIX - читать книгу онлайн бесплатно, автор Андрей Робачевский
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

#include

int chdir(const char* path);

int fchdir(int fildes);

Например, внутренняя команда командного интерпретатора cd может быть реализована следующим кодом:

...

char newdir[PATH_MAX];

...

/* Предположим, что имя нового каталога,

введенного пользователем, уже находится

в переменной newdir*/

if (chdir(newdir) == -1) perror("sh: cd");

...

Метаданные файла

Как уже говорилось, каждый файл помимо собственно данных содержит метаданные , описывающие его характеристики, например, владельцев, права доступа, тип и размер файла, а также содержащие указатели на фактическое расположение данных файла. Метаданные файла хранятся в структуре inode. Часть полей этой структуры могут быть получены с помощью системных вызовов stat(2) :

#include

#include

int stat(const char *path, struct stat *buf);

int lstat (const char *path, struct stat *buf);

int fstat(int fildes, struct stat *buf);

В качестве аргумента функции принимают имя файла или файловый дескриптор ( fstat(2) ) и возвращают заполненные поля структуры stat, которые приведены в табл. 2.15.

Таблица 2.15. Поля структуры stat

Поле Значение
mode_t st_mode Тип файла и права доступа
ino_t st_ino Номер inode. Поля st_inoи st_devоднозначно определяют обычные файлы
dev_t st_dev Номер устройства, на котором расположен файл (номер устройства файловой системы)
dev_t st_rdev Для специального файла устройства содержит номер устройства, адресуемого этим файлом
nlink_t st_link Число жестких связей
uid_t st_uid Идентификатор пользователя-владельца файла
gid_t st_gid Идентификатор группы-владельца файла
off_t st_size Размер файла в байтах. Для специальных файлов устройств это поле не определено
time_t st_atime Время последнего доступа к файлу
time_t st_mtime Время последней модификации данных файла
time_t st_ctime Время последней модификации метаданных файла
long st_blksize Оптимальный размер блока для операций ввода/вывода. Для специальных файлов устройств и каналов это поле не определено
long st_blocks Число размещенных 512-байтовых блоков хранения данных. Для специальных файлов устройств это поле не определено

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

Таблица 2.16. Определение типа файла

Макроопределение Тип файла
S_ISFIFO(mode) FIFO
S_ISCHR(mode) Специальный файл символьного устройства
S_ISDIR(mode) Каталог
S_ISBLK(mode) Специальный файл блочного устройства
S_ISREG(mode) Обычный файл
S_ISLNK(mode) Символическая связь
S_ISSOCK(mode) Сокет

Все значения времени, связанные с файлом (время доступа, модификации данных и метаданных) хранятся в секундах, прошедших с 0 часов 1 января 1970 года. Заметим, что информация о времени создания файла отсутствует.

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

#include

#include

#include

main(int argc, char *argv[]) {

struct stat s;

char* ptype;

lstat(argv[1] , &s); /* Определим тип файла */

if (S_ISREG(s.st_mode)) ptype = "Обычный файл";

else if (S_ISDIR(s.st_mode)) ptype = "Каталог";

else if (S_ISLNK(s.st_mode)) ptype = "Симв. Связь";

else if (S_ISCHR(s.st_mode)) ptype = "Симв. Устройство";

else if (S_ISBLK(s.st_mode)) ptype = "Бл.устройство";

else if (S_ISSOCK(s.st_mode)) ptype = "Сокет";

else if (S_ISFIFO(s.st_mode)) ptype = "FIFO";

else ptype = "Неизвестный тип";

/* Выведем информацию о файле */

/* Его тип */

printf("type = %s\n", ptype);

/* Права доступа */

printf("perm =%o\n", s.st_mode & S_IAMB);

/* Номер inode */

printf("inode = %d\n", s.st_ino);

/* Число связей */

printf("nlink = %d\n", s.st_nlink);

/* Устройство, на котором хранятся данные файла */

printf("dev = (%d, %d)\n", major(s.st_dev), minor(s.st_dev));

/* Владельцы файла */

printf("UID = %d\n", s.st_uid);

printf("GID = %d\n", s.st_gid);

/* Для специальных файлов устройств - номера устройства */

printf("rdev = (%d, %d)\n", major(s.st_rdev),

minor(s.st_rdev));

/* Размер файла */

printf("size = %d\n", s.st_size);

/* Время доступа, модификации и модификации метаданных */

printf("atime = %s", ctime(&s.st_atime));

printf("mtime = %s", ctime(&s.st_mtime));

printf("ctime = %s", ctime(&s.st_ctime));

}

Программа использует библиотечные функции major(3C) и minor(3C) , возвращающие, соответственно, старший и младший номера устройства. Функция ctime(3C) преобразует системное время в удобный формат.

Запуск программы на выполнение приведет к следующим результатам:

$ а.out ftype.c

type = Обычный файл

perm = 644

inode = 13

nlink = 1

dev = (1, 42)

UID = 286

GID = 100

rdev = (0, 0)

size = 1064

atime = Wed Jan 8 17:25:34 1997

mtime = Wed Jan 8 17:19:27 1997

ctime = Wed Jan 8 17:19:27 1997

$ ls -il /tmp/ftype.c

13 -rw-r--r-- 1 andy user 1064 Jan 8 17:19 ftype.c

Процессы

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

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

В этом разделе рассматриваются:

□ Идентификаторы процесса

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

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

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

□ Группы и сеансы; взаимодействие процесса с пользователем.

□ Ограничения, накладываемые на процесс, и функции, которые позволяют управлять этими ограничениями.

Идентификаторы процесса

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Андрей Робачевский читать все книги автора по порядку

Андрей Робачевский - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Операционная система UNIX отзывы


Отзывы читателей о книге Операционная система UNIX, автор: Андрей Робачевский. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x