Система адресации данных

Система адресации данных — это одна из самых существенных составных частей файловой системы. Именно система адресации позволяет находить нужный файл среди множества как пустых, так и занятых блоков на диске. Файловая система ext2 использует следующую схему адресации блоков файла. Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт. Если размер файла меньше или равен 12 блоков, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса. Если размер файла превышает 12 блоков, то следующее 13-е поле содержит адрес кластера, в котором могут быть расположены номера следующих блоков файла. Таким образом, 13-й элемент адреса используется для косвенной адресации. При максимальном размере блока равном 4096 байт, 13-й элемент, может содержать до 1024 номеров следующих кластеров данных файла. Если размер файла превышает 12+1024 блоков, то используется 14-е поле, в котором находится номер блока, содержащего 1024 номеров блоков, каждый из которых хранят 1024 номеров блоков данных файла. Здесь применяется уже двойная косвенная адресация. И наконец, если файл включает более 12+1024+1048576 = 1049612 блоков, то используется последнее 15-е поле для тройной косвенной адресации.

Таким образом, описанная выше система адресации, позволяет при максимальном размере блока 4 Кб иметь файлы размера до 2 терабайт.

 


 

11. Cетевой чат на основе именованных каналов с выделенным сервером

---------------------------------------------------------------------------------------

Для работы с именованным каналом используется функция CreateNamePipe

Именованные каналы.

Каналы – способ локального и сетевого взаимодействия.

5) функции сервера

6) функции клиента

 

Каналы должны быть с одним именем.

5. СЕРВЕР

Создать канал: HANDLE CreateNamePipe(

LPCTSRT pipename,

DWORD openmode, // режим открытия

DWORD pipemode,

DWORD maxinstance,

DWORD outbufsize,

DWORD inbufsize,

LPSECURITY ATTRIBUTES ProcAttr,//атрибуты безопасности

)

Имя канала: \\.\pipe\<имя > - до 256 символов

FILE_FLAG_FIRST_PIPE_INSTANCE – может присутствовать во втором параметре:

PIPE_ACCESS_DUPLEX, PIPE_ACCESS_INBOUND, PIPE_ACCESS_OUTBOUND

 

FILE_FLAG_WRITE_THROUGH – если процессы находятся на разных машинах в сети

FILE_FLAG_OVERLAPPED – асинхронный режим (для канала)

PIPE_TYPE_BYTE и PIPE_TYPE_MESSAGE – каждая запись в канал – пакет

PIPE_READMODE_BYTE, PIPE_READMODE_MESSAGE

MAXINSTANCES – max допустимое число каналов с таким именем

PIPE_UNLIMITED_INSTANCES

 

DEFOULTTimeout – время ожидания

 

Серверная сторона

CREATE_NAMED_PIPE

BOOL ConnectNamePipe(HANDLE h, LPOVERLAPPED Ov)

 

BOOL DisconnectNamedPipe(HANDLE h)

 

6. КЛИЕНТ

BOOL WiatNamedPipe(LPCTSTR Name, DWORD TimeOut)

 

Подключиться к каналу:

CreateFile

В виде имени – имя канала \\<pc>\piep\<имя>

 

BOOL CallNamedPipe(

LPCTSTR NamePipe, //имя канала

LPVOID InBuf, // входные параметры

DWORD InSize, // сколько будет отправлено байт

LPVOID OutBuf, // выходной результат

DWORD OutSize, // полный размер буфера

LPDWORD BytesRead, // сколько реально прочитано

DWORD TimeOut)

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: