Жесткий диск делится на дорожки - концентрические окружности, покрывающие поверхность диска Каждая дорожка делится на секторы, размер сектора - 512 байт Затем сектора объединяются в кластеры, кластер содержит 2^N секторов. Кластер является наименьшей единицей адресации к данным. Это делается для ускорения работы файловой системы. То есть файловая система обращается не к сектору (который является минимальной физической единицей хранения данных), а к кластеру, в который объединено несколько секторов (который является минимальной единицей адресации к данным, т.е файловая система не может обращаться напрямую к сектору). Например, в файловой системе FAT есть так называемая таблица размещения файлов, в которую записываются данные о каждом кластере. Т.к она обращается к кластерам, в которые объединены сектора, то эта таблица содержит меньше элементов, что существенно увеличивает быстродействие Размер кластера можно задать при форматировании диска. Чем длиннее кластер (чем больше секторов в себе содержит), тем меньше таблица размещения файлов и бОльшая скорость, но есть и обратная сторона - нерациональное использование памяти, потому что любой файл, насколько маленький он бы не был занимает весь кластер и некоторые сектора в нем могут оказаться просто пустыми. Даже если файл большой и занимает несколько секторов, то последний кусочек с бОльшей долей вероятности займет не полностью последний кластер. Если же указать более маленький размер кластера, то уменьшится быстродействие (т.к увеличится количество кластеров), но память будет расходоваться меньше и будет образовываться меньше пустот.
Стоит упомянуть, что объем хранящихся файлов напрямую влияет на расход памяти. Много мелких файлов как правило сильнее "забивают" память, нежели мало больших. Они могут иметь одинаковый размер в сумме, но при записи на диск мелкие файлы израсходуют больше места, так как каждый файл будет занимать весь кластер, но не все сектора.
И интереса ради стоит упомянуть, что в связи с неэффективностью файловой системы (например, при слишком большом размере кластера) потери могут составлять среднем от 25% до 40% от полной емкости жесткого диска
P.S В общем, интересно учиться на кибернетике в ВУЗе)) Столько нового узнаешь. Главное понять, что к чему, а там уже перескажешь как-нибудь
В начале мы создаем массив случайных элем. Потом работаем с ним. Нам нужны 2 переменные: 1 - переменная, для сохранения результата (номера). 2 - переменная флажок. Мы обходим весь массив ПО СТОЛБЦАМ. В начале обхода конкретного столбца переменной флажка присвоим 1. Сравниваем текущий элемент столбца с последующим, если они не равны то ставим флажок 0
Код: //Размерность массива const n = 3; //Сам массив var ar : array[1..n,1..n] of integer; //Переменные для работы с массивом var i,j : integer; //Переменные для поиска столбца //f - переменная флажок, которая по окончанию обхода столбца будет //показывать одинаковы ли элементы в нем //numb - переменная, в которой сохраним номер столбца с //одинаковыми значениями элементов. var f,numb : integer; begin //Создание и вывод на экран массива //Элементы генерируются случайным образом // for i:=1 to n do begin for j:=1 to n do begin ar[i,j] := random(2); write(ar[i,j]:3); end; writeln; end; //
//Вот сам алгоритм поиска // //Записываем в numb значение -1 //Если в процессе работы значение не изменится (-1) //То означает, что в массиве нет одинаковых столбцов numb := -1;
//Идем по массиву // for j:=1 to n do //Момент начала конкретного j столбца begin //записываем в f значение 1 //Предполагаем, что столбец одинаков //Если в конце обхода конкретного столбца значение f=1 //Значит, что данный столбец одинаков f := 1;
//Идем по столбцу // n-1 //(т.к сравниваем текущий со следующим) for i:=1 to n-1 do begin //Сравниваем текущий элемент столбца, со следующим if (ar[i,j] <> ar[i+1,j]) then //Если они не равны, то изменяем значение флажка f на 0 f := 0; end; //Конец обхода конкретного столбца
//Если столбец одинаков if (f = 1) then //то записываем его номер в numb numb := j; end; //
//Вывод результата if (numb <> -1) then writeln('Столбец №: ',numb) else writeln('Нет ни одного одинакового столбца'); end.
Каждая дорожка делится на секторы, размер сектора - 512 байт
Затем сектора объединяются в кластеры, кластер содержит 2^N секторов. Кластер является наименьшей единицей адресации к данным. Это делается для ускорения работы файловой системы. То есть файловая система обращается не к сектору (который является минимальной физической единицей хранения данных), а к кластеру, в который объединено несколько секторов (который является минимальной единицей адресации к данным, т.е файловая система не может обращаться напрямую к сектору).
Например, в файловой системе FAT есть так называемая таблица размещения файлов, в которую записываются данные о каждом кластере. Т.к она обращается к кластерам, в которые объединены сектора, то эта таблица содержит меньше элементов, что существенно увеличивает быстродействие
Размер кластера можно задать при форматировании диска. Чем длиннее кластер (чем больше секторов в себе содержит), тем меньше таблица размещения файлов и бОльшая скорость, но есть и обратная сторона - нерациональное использование памяти, потому что любой файл, насколько маленький он бы не был занимает весь кластер и некоторые сектора в нем могут оказаться просто пустыми. Даже если файл большой и занимает несколько секторов, то последний кусочек с бОльшей долей вероятности займет не полностью последний кластер.
Если же указать более маленький размер кластера, то уменьшится быстродействие (т.к увеличится количество кластеров), но память будет расходоваться меньше и будет образовываться меньше пустот.
Стоит упомянуть, что объем хранящихся файлов напрямую влияет на расход памяти. Много мелких файлов как правило сильнее "забивают" память, нежели мало больших. Они могут иметь одинаковый размер в сумме, но при записи на диск мелкие файлы израсходуют больше места, так как каждый файл будет занимать весь кластер, но не все сектора.
И интереса ради стоит упомянуть, что в связи с неэффективностью файловой системы (например, при слишком большом размере кластера) потери могут составлять среднем от 25% до 40% от полной емкости жесткого диска
P.S В общем, интересно учиться на кибернетике в ВУЗе)) Столько нового узнаешь. Главное понять, что к чему, а там уже перескажешь как-нибудь