- •1. Состав компьютерной системы
- •6 Уровней:
- •2. Функции операционной системы. . Операционная система как расширенная машина и менеджер ресурсов
- •3. Этапы развития операционных систем
- •4. Ос реального времени. Распределенные и сетевые ос
- •5. Принципы разработки современных ос
- •12. Основные понятия, концепция ос
- •13. Ядро ос. Основные понятия (монолитные системы, многоуровневые системы, виртуальные машины)
- •14. Ядро ос. Микроядро//модуль клиент-сервер
- •15. Классификация ос
- •16. Мультипрограммирование или многозадачность, критерии организации мультизадачности
- •17. Многопроцессорность: сложность планирования загрузки процессоров, конфликты доступа к общим ресурсам
- •18. Процессы. Основные понятия, состояния процессов
- •19. Обработка прерываний, вектор прерывания
- •20. Алгоритмы планирования процессов
- •21. Создание процессов
- •Процессы Windows
- •22. Идентификаторы
- •23. Системные вызовы для управления процессами
- •24. Форматы исполняемых файлов
- •25. Основные команды Unix для управления процессами
- •26. Память. Типы адресов
- •27. Методы распределения памяти между процессами без использования внешнего накопителя
- •28. Методы распределения памяти между процессами с использованием внешнего накопителя
- •29. Виртуальная память. Способы организации виртуальной памяти. Страничная организация виртуальной памяти. Сегментная и странично - сегментная организация виртуальной памяти.
- •34. Файловая система Unix, виртуальная файловая система vfs
- •35. Файловые ситемы fat, ntfs. Поддержка длинных имен
- •49. Сравнение вариантов организации взаимодействия сетей
- •51. Программирование сокетов
- •52. Открытая система. Стандартные платформы.
- •53. Интерфейс пользователя ос unix. Метасимволы в именах файла.
51. Программирование сокетов
Для обеспечения сетевых коммуникаций используются сокеты. Сокет это конечная точка сетевых коммуникаций. Каждый использующийся сокет имеет тип и ассоциированный с ним процесс. Сокеты существуют внутри коммуникационных доменов.
В Internet домене сокет - это комбинация IP адреса и номера порта, которая однозначно определяет отдельный сетевой процесс во всей глобальной сети Internet. Два сокета, один для хоста-получателя, другой для хоста-отправителя, определяют соединение для протоколов, ориентированных на установление связи, таких, как TCP.
Создание сокета
Для создания сокета используется системный вызов socket.
Функция socket создает конечную точку для коммуникаций и возвращает файловый дескриптор, ссылающийся на сокет, или -1 в случае ошибки. Данный дескриптор используется в дальнейшем для установления связи.
Установление связи
Со стороны клиента связь устанавливается с помощью стандартной функции connect:
error = connect(s, serveraddr, serveraddrlen);
Connect возвращает 0, если вызов прошел успешно. Возвращенная величина -1 указывает на то, что в процессе установления связи произошла некая ошибка. В случае успешного вызова функции процесс может работать с дескриптором сокета, используя функции read и write, и закрывать канал используя функцию close.
Со стороны сервера процесс установления связи сложнее. Когда сервер желает предложить один из своих сервисов, он связывает сокет с общеизвестным адресом, ассоциирующимся с данным сервисом, и пассивно слушает этот сокет. Для этих целей используется системный вызов listen:
error = listen(s, qlength);
где s это дескриптор сокета, а qlength это максимальное количество запросов на установление связи, которые могут стоять в очереди, ожидая обработки сервером; это количество может быть ограничено особенностями системы.
Когда сервер получает запрос от клиента и принимает решение об установлении связи, он создает новый сокет и связывает его с ассоциацией, эквивалентной 'слушающему сокету'. Для Internet домена это означает тот же самый номер порта.
Передача данных
Когда связь установлена, с помощью различных функций может начаться процесс передачи данных. При наличии связи, пользователь может посылать и получать сообщения с помощью функций read и write:
write(s, buf, sizeof(buf)); read(s, buf, sizeof(buf));
Вызовы send и recv практически идентичны read и write, за исключением того, что добавляется аргумент флагов.
send(s, buf, sizeof(buf), flags); recv(s, buf, sizeof(buf), flags);
Закрывание сокетов
Когда взаимодействующие модули решают прекратить передачу данных и закрыть сеанс связи, они обмениваются трехсторонним рукопожатием с сегментами, содержащими установленный бит "От отправителя больше нет данных" (этот бит еще называется FIN бит).
Если сокет больше не используется, процесс может закрыть его с помощью функции close, вызвав ее с соответствующим дескриптором сокета:
close(s);
52. Открытая система. Стандартные платформы.
До сих пор мы использовали термин "открытые системы", не давая ему точного определения. Одна из основных трудностей для тех, кто связан с миром открытых систем, состоит в том, что данный термин обозначает разное для разных людей и организаций. Фактически же, с практической точки зрения, открытая система должна быть тем, что ждут от нее в каждой организации.
В соответствии с этим определением открытая система есть
"система, реализующая открытые спецификации на интерфейсы, сервисы и поддерживаемые форматы данных, достаточные для того, чтобы обеспечить должным образом разработанным приложениям возможность переноса с минимальными изменениями на широкий диапазон систем, совместной работы с другими приложениями на локальной и удаленных системах и взаимодействия с пользователями в стиле, облегчающем тем переход от системы к системе".
Стандартные платформы
Одна из распространенных точек зрения состоит в признании "открытой" системы, основанной на стандартной аппаратуре и/или стандартной операционной системе. Пример такой системы - IBM PC или любая совместимая с ней система. Большинство таких платформ используют одну и ту же операционную систему и выполняют практически одни и те же приложения.
Многие полагают, что именно операционная система определяет, является ли система открытой, и что предоставляемые ОС сервисы играют существенную роль в том, как компьютерная система функционирует и как она вписывается в объемлющее окружение.
Достижение целей открытых систем требуется стандартизация в значительно более широком диапазоне областей и на уровне более высоком, чем уровень реализации.
