Операционная система UNIX
Операционная система UNIX читать книгу онлайн
Книга посвящена семейству операционных систем UNIX и содержит информацию о принципах организации, идеологии и архитектуре, объединяющих различные версии этой операционной системы.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
if (nread < 0) { perror("readlink"); exit(1); } /* readlink не завершает строку ' ' */ printf("Символическая связь:n %sn", buf); /* Теперь прочитаем содержимое целевого файла */ printf("Читаем целевой файлn"); fd = open(argv[1], O_RDONLY); if (fd < 0) { perror("open"); exit(2); } nread = read(fd, buf, BUFSIZ); if (nread < 0) { perror("read"); exit(3); } buf[nread] = ' '; printf("Целевой файл:n %sn", buf); close(fd); exit(0);}Перед тем как запустить программу, создадим символическую связь с файлом unix0.txt:
$ <b>ln -s unix0.txt symlink.txt</b>$ <b>ls -l</b>lrwxrwxrwx 1 andy user 10 Jan 6 09:54 symlink.txt -> unix0.txt-rw-r--r-- 1 andy user 498 Jan 6 09:53 unix0.txt$ <b>a.out symlink.txt</b>Читаем символическую связьСимволическая связь:unix0.txtЧитаем целевой файлЦелевой файл:Начиная с 1975 года фирма AT&T начала предоставлять лицензии наиспользование операционной системы как научно-образовательнымучреждениям, так и коммерческим организациям. Поскольку основнаячасть системы поставлялась в исходных текстах, написанных наязыке С, опытным программистам не требовалось детальнойдокументации, чтобы разобраться в архитектуре UNIX. С ростомпопулярности микропроцессоров...Файлы, отображаемые в памяти
Системный вызов mmap(2) предоставляет механизм доступа к файлам, альтернативный вызовам read(2) и write(2). С помощью этого вызова процесс имеет возможность отобразить участки файла в собственное адресное пространство. После этого данные файла могут быть получены или записаны путем чтения или записи в память. Функция mmap(2) определяется следующим образом:
#include <sys/types.h>#include <sys/mman.h>caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fildes, off_t off);Этот вызов задает отображение
lenfildesoffaddrprotprotPROT_READ | PROT_WRITEO_RDWRТаблица 2.12. Права доступа к области памяти
| Значение аргумента prot | Описание | Права доступа к файлу |
|---|---|---|
PROT_READ | Область доступна для чтения | r |
PROT_WRITE | Область доступна для записи | w |
PROT_EXEC | Область доступна для исполнения | x |
PROT_NONE | Область недоступна | - |
Обычно значение
addrОперационная система округляет значение len до следующей страницы виртуальной памяти. [19] Например, если размер файла 96 байтов, а размер страницы 4 Кбайт, то система все равно выделит область памяти размером 4096 байтов. При этом 96 байтов займут собственно данные файла, а остальные 4000 байтов будут заполнены нулями. Процесс может модифицировать и оставшиеся 4000 байтов, но эти изменения не отразятся на содержимом файла. При обращении к участку памяти, лежащему за пределами файла, ядро отправит процессу сигнал
SIGBUSИспользование права на исполнение (
prot = PROT_EXECPROT_NONEАргумент
flagsflags
