Московский физико-технический институт
Опубликован: 16.09.2004 | Доступ: свободный | Студентов: 7771 / 1592 | Оценка: 4.44 / 4.28 | Длительность: 15:33:00
Лекция 1:

Введение в курс практических занятий. Знакомство с операционной системой UNIX

Лекция 1: 1234567 || Лекция 2 >

Системные вызовы и библиотека libc

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

Реальные машинные команды, необходимые для активизации системных вызовов, естественно, отличаются от машины к машине, наряду со способом передачи параметров и результатов между вызывающей программой и ядром. Однако с точки зрения программиста на языке C использование системных вызовов ничем внешне не отличается от использования других функций стандартной ANSI библиотеки языка C, таких как функции работы со строками strlen(), strcpy() и т.д. Стандартная библиотека UNIXlibc – обеспечивает C-интерфейс к каждому системному вызову. Это приводит к тому, что системный вызов выглядит как функция на языке C для программиста. Более того, многие из уже известных вам стандартных функций, например функции для работы с файлами: fopen(), fread(), fwrite() при реализации в операционной системе UNIX будут применять различные системные вызовы. По ходу курса нам придется познакомиться с большим количеством разнообразных системных вызовов и их C-интерфейсами.

Большинство системных вызовов, возвращающих целое значение, использует значение -1 для оповещения о возникновении ошибки и значение большее или равное 0 – при нормальном завершении. Системные вызовы, возвращающие указатели, обычно для идентификации ошибочной ситуации пользуются значением NULL. Для точного определения причины ошибки C-интерфейс предоставляет глобальную переменную errno , описанную в файле <errno.h> вместе с ее возможными значениями и их краткими определениями. Заметим, что анализировать значение переменной errno необходимо сразу после возникновения ошибочной ситуации, так как успешно завершившиеся системные вызовы не изменяют ее значения. Для получения символьной информации об ошибке на стандартном выводе программы для ошибок (по умолчанию экран терминала) может применяться стандартная UNIX-функция perror() .

Функция perror()

Прототип функции

#include <stdio.h>
void perror(char *str);

Описание функции

Функция perror() предназначена для вывода сообщения об ошибке, соответствующего значению системной переменной errno на стандартный поток вывода ошибок. Функция печатает содержимое строки str (если параметр str не равен NULL ), двоеточие, пробел и текст сообщения, соответствующий возникшей ошибке, с последующим символом перевода строки ('\n').

Понятия login и password

Операционная система UNIX является многопользовательской операционной системой. Для обеспечения безопасной работы пользователей и целостности системы доступ к ней должен быть санкционирован. Для каждого пользователя, которому разрешен вход в систему, заводится специальное регистрационное имя – username или login и сохраняется специальный пароль – password, соответствующий этому имени. Как правило, при заведении нового пользователя начальное значение пароля для него задает системный администратор. После первого входа в систему пользователь должен изменить начальное значение пароля с помощью специальной команды. В дальнейшем он может в любой момент изменить пароль по своему желанию.

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

Вход в систему и смена пароля

Настало время первый раз войти в систему. Если в системе установлена графическая оболочка наряду с обычными алфавитно-цифровыми терминалами, лучше всего это сделать с алфавитно-цифрового терминала или его эмулятора. На экране появляется надпись, предлагающая ввести регистрационное имя, как правило, это " login:". Набрав свое регистрационное имя, нажмите клавишу <Enter>. Система запросит у вас пароль, соответствующий введенному имени, выдав специальное приглашение – обычно " Password:". Внимательно наберите пароль, установленный для вас системным администратором, и нажмите клавишу <Enter>. Вводимый пароль на экране не отображается, поэтому набирайте его аккуратно! Если все было сделано правильно, у вас на экране появится приглашение к вводу команд операционной системы.

Пароль, установленный системным администратором, необходимо сменить. "Узнайте у своего системного администратора", какая команда для этого используется на вашей вычислительной системе (чаще всего это команда passwd или yppasswd ). В большинстве UNIX-образных систем требуется, чтобы новый пароль имел не менее шести символов и содержал, по крайней мере, две не буквы и две не цифры. "Узнайте у своего системного администратора", какие ограничения на новый пароль существуют в вашей операционной системе.

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

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

Congratulations!!! Теперь Вы полноценный пользователь операционной системы UNIX.

Лекция 1: 1234567 || Лекция 2 >
лия логовина
лия логовина

организовать двустороннюю поочередную связь процесса-родителя и процесса-ребенка через pipe, используя для синхронизации сигналы sigusr1 и sigusr2.

Макар Оганесов
Макар Оганесов