Главная » Просмотр файлов » Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС

Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685), страница 41

Файл №1114685 Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС) 41 страницаКурынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685) страница 412019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

И,соответственно, в этом случае сервер может посылать ответные сообщения клиенту.Завершение работы состоит из двух шагов. Первый шаг заключается в отключении доступак сокету посредством системного вызова shutdown(). Можно закрыть сокет на чтение, на запись, начтение-запись.

Тем самым системе передается информация, что сокет более не нужен. С помощьюэтого вызова обеспечивается корректное прекращение работы с сокетом (в частности, это важнопри организации виртуального канала, который должен гарантировать доставку посланныхданных). Второй шаг заключается в закрытии сокета с помощью системного вызова close() (т.е.закрытие сокета как файла).Далее эту концептуальную модель можно развивать. Например, сервер может порождатьдочерний процесс для каждого вызова accept(), и тогда все действия по работе с данным клиентомложатся на этот дочерний процесс. На родительский процесс возлагается задача прослушивание«главного» сокета и обработка поступающих запросов на соединение.

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

Это означает, что в данной модели у каждого взаимодействующего процессаимеется сокет, через который он может получать информацию от различных источников в отличиеот предыдущей модели, где имеется «главный» известный всем клиентам сокет сервера, черезкоторый неявно передается управляющая информация (заказы на соединение), а затем с каждымклиентом связывается один локальный сокет. Этот механизм позволяет серверувзаимодействовать с клиентом, не зная его имя явно. В текущей модели ситуация симметричная:любой процесс через свой сокет может послать информацию любому другому сокету.

Этоозначает, что механизм отправки имеет соответствующую адресную информацию (т.е.информацию об отправителе и получателе).165Поскольку в данной модели используются дейтаграммные сокеты, то необходимостьобращаться к вызову shutdown() отпадает: в этой модели сообщения проходят (и уходят) однойпорцией данных, поэтому можно сразу закрывать сокет посредством вызова close().Далее будут более подробно рассмотрены упомянутые системные вызовы для работы ссокетами.Для посылки запроса на соединение используется системный вызов connect().#include <sys/types.h>#include <sys/socket.h>int connect(int sockfd, struct sockaddr *serv_addr,int addrlen);Первый параметр функции — дескриптор «своего» сокета, через который будет посылатьсязапрос на соединение.

Второй параметр — указатель на структуру, содержащую адрес сокета, скоторым производится соединение, в формате, который обсуждался выше. Третий параметр —длина структуры, передающейся вызову во втором аргументе.В случае успешного завершения вызов возвращает значение 0, иначе возвращается -1, а впеременную errno заносится код ошибки.Для перехода серверного процесса в режим прослушивания сокета используется системныйвызов listen().#include <sys/types.h>#include <sys/socket.h>int listen(int sockfd, int backlog);Параметры вызова — дескриптор сокета и максимальный размер очереди необработанныхзапросов на соединение. В случае успешного завершения вызов возвращает значение 0, иначевозвращается -1, а в переменную errno заносится код ошибки.Для подтверждения соединения используется системный вызов accept().

Этот вызовожидает появление запроса на соединение (в очереди необработанных запросов), при появлениипоследнего формируется новый сокет, и его дескриптор возвращается в качестве значенияфункции.#include <sys/types.h>#include <sys/socket.h>int accept (int sockfd, struct sockaddr *addr,int *addrlen);Первый параметр данной функции — дескриптор «главного» сокета. Второй параметр —указатель на структуру, в которой возвращается адрес клиентского сокета, с которым установлено166соединение (если адрес клиента не интересует, передается NULL). В последнем параметревозвращается реальная длина упомянутой структуры.Для модели с предварительным установлением соединения можно использовать системныевызовы чтения и записи в файл — соответственно, read() и write() (в качестве параметра этимфункциям передается дескриптор сокета), а также системные вызовы send() (посылка сообщения)и recv() (прием сообщения).#include <sys/types.h>#include <sys/socket.h>int send(int sockfd, const void *msg, int msglen,unsigned int flags);int recv(int sockfd, void *buf, int buflen, unsigned int flags);Параметры: sockfd — дескриптор сокета, через который передаются данные; msg —указатель на начало сообщения; msglen — длина посылаемого сообщения; buf — указатель набуфер для приема сообщения; buflen — первоначальный размер буфера; и, наконец, параметр flagsможет содержать комбинацию специальных опций.

Например:− MSG_OOB — флаг сообщает ОС, что процесс хочет осуществить прием/передачу экстренныхсообщений;− MSG_PEEK — при вызове recv() процесс может прочитать порцию данных, не удаляя ее изсокета. Последующий вызов recv() вновь вернет те же самые данные.Для организации приема и передачи сообщений в модели без предварительногоустановления соединения (3.3) используется пара системных вызовов sendto() и recvfrom().#include <sys/types.h>#include <sys/socket.h>int sendto(int sockfd, const void *msg,int msglen, unsigned int flags,const struct sockaddr *to, int tolen);int recvfrom(int sockfd, void *buf,int buflen, unsigned int flags,struct sockaddr *from, int *fromlen);Первые четыре параметра каждого из вызовов имеют ту же семантику, что и параметрывызовов send() и recv() соответственно.

Остальные параметры имеют следующий смысл: to —167указатель на структуру, содержащую адрес получателя; tolen — размер структуры to; from —указатель на структуру с адресом отправителя; fromlen — размер структуры from.Процесс 2Процесс 1socket()bind()sendto()recvfrom()Процесс Nclose()Рис. 92.Схема работы с сокетами без предварительного установления соединения.Для завершения работы с сокетом используется системный вызов shutdown().#include <sys/types.h>#include <sys/socket.h>int shutdown (int sockfd, int mode);Первый параметр — дескриптор сокета, второй — режим закрытия соединения:− 0 — сокет закрывается для чтения;− 1 — сокет закрывается для записи;− 2 — сокет закрывается и для чтения, и для записи.Для закрытия сокета используется системный вызов close(), в котором в качестве параметрапередается дескриптор сокета.16844.1Файловые системыОсновные концепцииПод файловой системой (ФС) мы будем понимать часть операционной системы,представляющую собой совокупность организованных наборов данных, хранящихся на внешнихзапоминающих устройствах, и программных средств, гарантирующих именованный доступ к этимданным и их защиту.Файловая система является с точки зрения пользователя первым виртуальным ресурсом(который появился в операционных системах), достаточно понятным и достаточно простоиспользуемым во время его работы за машиной.

Если сравнить ФС с другим виртуальнымресурсом — например, виртуальной памятью, то рядовому пользователю ПК может быть совсемне понятным, зачем нужен механизм виртуальной памяти. Появление ФС кардинально измениловзгляд на использование вычислительных систем. Почти сразу с момента использованиявычислительной техники возникла проблема размещения данных во внешней памяти.Необходимость поддержки этого размещения обуславливалось несколькими причинами.

Вопервых, была тривиальная необходимость сохранения данных: время «одноразовых» решенийзадач (когда требовалось, грубо говоря, лишь вычислить значение некой формулы) прошлодостаточно быстро. Появились задачи, требующие больших объемов начальных данных, которые,в свою очередь, являлись результатом решения другой задачи.

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

Однимиз первых внешних запоминающих устройств (ВЗУ) была магнитная лента. Магнитная лента —это устройство последовательного доступа, информация на котором хранится в виде записей(фиксированного или переменного размера). Запись структурно состоит из последовательностисодержательной информации, ограниченной маркерами начала и конца записи. Для доступа кинформации необходимо иметь номер соответствующей записи на ленте.

Соответственно, еслипользователь хотел сохранять данные на магнитной ленте, то ему было необходимо знатьмагнитную ленту как носитель (по номеру или по расположению в хранилище, и т.п.) и номерсвоей записи на этой ленте. Отметим, что относительно эффективная работа с лентой может бытьдостигнута лишь при персональном использовании: в случае, когда одновременно с одной лентойработают два пользователя, возникают достаточно большие накладные расходы (в частности,частое перематывание ленты на начало), что может привести даже к ее порче (разрыву). Решениепроблемы корректности организации данных на магнитной ленте лежало на пользователе: еслипользователь некорректно организовал запись своих данных, то он мог тем самым испортить исвои данные, и чужие записи на ленте.На следующем этапе развития появились устройства прямого доступа (барабаны имагнитные диски), что естественно сказалось на адресации данных на носителе.

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

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

Список файлов лекций

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