Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

изменение размера сектора   Найти похожие ветки 

 
Alex Konshin ©   (2004-09-07 20:05) [40]

Не, ну вы точно не читатели.
Там же в документе написано, что можно сделать сектор больше 512, но делается это для того, чтобы прикладные программы могли записать туда некую служебную информацию. Почему я говорю "служебную"? А потому что некоторые команды чтения-записи все равно будут читать-писать 512 байт.
А понятие "кластер" - все-таки физическое. И в документе описано, как он может выглядеть при нестандартном размере сектора.
Этот документ описывает ATA версию 8, т.е. ту, что еще пока не реализуется. Если хотите, можете почитать описания свех остальных версий ATA на том же сайте. Уверен, что по subj там будет то же самое.


 
Shiza   (2004-09-08 12:46) [41]

>А понятие "кластер" - все-таки физическое.

Извинте конечно, я не специалист в этом вопросе, но во всех книгах которыя я читал, кластер - "логическое" понятие. Для дисковода нет такого понятия как кластер. Дисковод работает с цилиндрами, головками, дорожками, секторами, но не с кластерами.

Итак, размер сектора может быть больше 512 байт. А как же его такого-этакого изменить программными средствами? Я почему-то склонен думать что нельзя, но..."что скажет стая?"

И ещё. Господа, обсуждение почему-то не очень активное. Я думаю это всё-таки из-за того, что некоторым людям легче сказать нельзя, чем покопаться в интернете, книгах или в голове.


 
Alex Konshin ©   (2004-09-08 20:53) [42]

Как раз-таки дисковод IMHO работает именно с кластерами, точнее с тем, что в Windows называется кластером. Не, я допускаю, что я могу заблуждаться, но мне кажется, что "длинные сектора" и есть кластеры. Там есть два их варианта, и в обном из них контрольные сумма одна на весь "длинный сектор". Ну чем не кластер? Можно, конечно, покопаться и узнать это, но лень... Кому кроме тебя это надо? :)

И ещё. Господа, обсуждение почему-то не очень активное. Я думаю это всё-таки из-за того, что некоторым людям легче сказать нельзя, чем покопаться в интернете, книгах или в голове.

Так ты документ-то все-таки прочти. Это ж на самом деле и есть самая правда, это описание стандарта ATA, все остальное - выдумки писателей.


 
Игорь Шевченко ©   (2004-09-08 21:49) [43]

Alex Konshin ©   (08.09.04 20:53) [42]


> Как раз-таки дисковод IMHO работает именно с кластерами,
> точнее с тем, что в Windows называется кластером.


Секторы - аппаратно адресуемые блоки носителя.
Кластеры - адресуемые блоки, используемые многими файловыми системами. Размер кластера всегда кратен размеру сектора. файловая система использует кластеры для более эффективного управления дисковым пространством: кластеры, размер которых превышает размер сектора, позволяют разбить диск на блоки меньшей длины - управлять такими блоками легче, чем секторами.

Соломон, Руссинович: "Внутреннее устройство Windows 2000", глава "Файловые системы".

Так что в Windows кластер - это логическое понятие файловой системы.

За документ большое спасибо, обязательно прочитаю, только вот я сразу в этих 366 страницах запутался и не нашел ответа про размер сектора :)


 
Alex Konshin ©   (2004-09-08 23:34) [44]

Кластеры - адресуемые блоки, используемые многими файловыми системами. Размер кластера всегда кратен размеру сектора. файловая система использует кластеры для более эффективного управления дисковым пространством: кластеры, размер которых превышает размер сектора, позволяют разбить диск на блоки меньшей длины - управлять такими блоками легче, чем секторами.

Соломон, Руссинович: "Внутреннее устройство Windows 2000", глава "Файловые системы".

Так что в Windows кластер - это логическое понятие файловой системы.

Так вот судя по документу "длинные сектора" это несколько секторов по 512 объединенных в одну физическую запись, в одном из вариантов даже с одной контрольной суммой на все сектора. То есть, если бы я был разработчиком Windows, так я бы эти самые кластеры реализовывал именно как "длинные сектора", а иначе какой из них толк?

За документ большое спасибо, обязательно прочитаю, только вот я сразу в этих 366 страницах запутался и не нашел ответа про размер сектора :)

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


 
Anatoly Podgoretsky ©   (2004-09-08 23:59) [45]

Alex Konshin ©   (08.09.04 23:34) [44]
Толк от них идет с СРМ, в ней был всего выделен всего один байт под количество секторов, а как только размеры дискет подросли, то им ничего не осталось, как сделать блоки из секторов (кластеры). А если учесть, что DOS 1.0 это CPM, то понятно откуда там кластеры, хоть потом и было FAT12
То есть единственная пользы, это меньшее количество блоков в таблице размещения файлов, сама работа усложняется, а место не рационально используется.


 
Anatoly Podgoretsky ©   (2004-09-09 00:07) [46]

Alex Konshin ©   (08.09.04 20:53) [42]
Нет, есть два варианта работы

1. с секторами, адресуются доржка, головка, сектор (эмулируется, а на старых винчестерах и гибких дисках физически)
2. родной, абсолютные адреса (LBA)

И еще по размерам секторов, наиболее распространены три размера

128 байт, в основном в рам дисках

512 байт, исторически сложилось так у ИБМ, хотя стандартные контролеры поддерживают 128, 256, 512 и 1024 (не могу сказать про современные винчестеры, хотя там говорить о реальном размере сектора и количестве дорожек можно только гадая) и это не относится к остальным не родным файловым системам.

2048 CDFS


 
Anatoly Podgoretsky ©   (2004-09-09 00:09) [47]

В дополнение, размер сектора в 512 байт на дискетах появился не сразу, вроде на 3.5 дюйма или на 360 кб, сейчас не помню, но дискеты малой емкость имели в основном 128 байт.


 
Dimaxx   (2004-09-09 00:11) [48]

2 Shiza:

>Интересно, зачем это системе логический сектор, если есть кластер?

Ответ на этот вопрос ищи в ответе на другой вопрос: "А зачем в Линухе используется своя файловая система?" Да потому что кластерный метод запатентован Мелкософтом и за его использование нужно платить немалое бабло! Или я неправ? А Линухам надо было уйти от использования мелкософтовских разработок.


 
Игорь Шевченко ©   (2004-09-09 00:29) [49]

Alex Konshin ©   (08.09.04 23:34) [44]

Я увидел в примере про Long Sectors вариант с 524-байтными секторами и фразы:

"The purpose of the long logical sector feature set is to allow additional data words per sector for server
applications. Sectors with 520 or 528 bytes are typical."

"Devices that implement the Long Logical Sector Feature set are not backward compatible with applications
that use 256 word logical sectors, e.g. desktop and laptop system."

То есть, физически можно разметить так, что сектор, адресуемый по LBA имеет размер больше, чем 512 байт.

А кстати, что есть packet и non-packet device ? :)


 
Cobalt ©   (2004-09-09 00:45) [50]

2 Dimaxx   (09.09.04 00:11) [48]
" - Какая-то у тебя, дядя Фёдор, колбаса неправильная" ;)

Сомневаюсь, что тут именно патент от MS как-то повлиял :)
файловая система MSDOS не поддерживала права доступа к файлам, потому её и не использовали в Линукс как "родную". А он появился ещё до появления NTFS, поэтому её тоже не использовал. а решил пойти своим путём


 
Shiza   (2004-09-09 10:33) [51]

>Кому кроме тебя это надо? :)

"Я хотел помочь людям!" (цитата из мультфилма "Прометей")

Мы немного отклонились от темы. У кого-нибудь есть идеи (в виде строк кода) как изменить размер сектора? Или мы ещё рассуждаем можно его изменить или нет?

И ещё. Коль мы затронули тему АТА, то не лишим будет напомнить, что к винчестеру можно обращатся двумя путями: через 13int (сектор, головка, цилиндр), или как в случае с АТА через порты ввода-вывода (LBA). В каком русле будем плыть дальше?


 
Игорь Шевченко ©   (2004-09-09 10:38) [52]


> что к винчестеру можно обращатся двумя путями: через 13int
> (сектор, головка, цилиндр)


А BIOS как по-твоему обращается ? Тоже через порты.


 
Alex Konshin ©   (2004-09-09 10:55) [53]

И ещё. Коль мы затронули тему АТА, то не лишим будет напомнить, что к винчестеру можно обращатся двумя путями: через 13int (сектор, головка, цилиндр), или как в случае с АТА через порты ввода-вывода (LBA). В каком русле будем плыть дальше?
Первый путь все равно идет через второй. И все равно не ясно, как Windows отнесется к такому сектору, если она его случайно найдет.
Честно говоря, я не знаю, как винчестер обычно отформатирован и как Windows его читает-пишет. Судя по документу, если используются команды DMA, то сектора будут читаться целиком. И что будет, если размер буфера (512) окажется недостаточным? Как Windows отнесется к такой ошибке? Если же используются команды READ/WRITE BUFFER, то всегда будет читаться 512 байт (опять-таки если верить документу). Но все равно я бы на это закладываться не стал бы. Что будет, если диск начнут дефрагментировать? Если же хочется создать свой не Windows раздел с нестандартными секторами и своими драйверами доступа, то тогда вопросов нет - флаг тебе в руки.
И какой именно размер сектора тебе нужен? О чем хоть разговор?
И, собственно, зачем? Может есть более простое решение?


 
Игорь Шевченко ©   (2004-09-09 12:36) [54]

Alex Konshin ©   (09.09.04 10:55) [53]


> И, собственно, зачем? Может есть более простое решение?


Зачем - я могу попробовать догадаться, скорее всего, защита от несанкционированного копирования :)


 
Shiza   (2004-09-09 14:23) [55]

>А BIOS как по-твоему обращается? Тоже через порты.

Да наверное к любому устройству обращаются через порты, но я не о том. Мы как будем обращаться, с помощью ассемблеровских in-out, или через DeviceIOControl?

>И все равно не ясно, как Windows отнесется к такому сектору, если она его случайно найдет.

Почему же не ясно? Она будет считать его сбойным.

>И какой именно размер сектора тебе нужен? О чем хоть разговор?
>И, собственно, зачем? Может есть более простое решение?

Да помоему некоторые уже забыли вопрос на который мы ищем ответ. :) Вопрос в самом начале форума.


 
Shiza   (2004-09-09 14:26) [56]

>Зачем - я могу попробовать догадаться, скорее всего, защита от несанкционированного копирования :)

Я не знаю зачем это нужно автору вопроса, но мне это интересно.
А насчёт защиты, то это помоему не самый эффективный способ...


 
Alex Konshin ©   (2004-09-09 19:37) [57]

Да наверное к любому устройству обращаются через порты, но я не о том. Мы как будем обращаться, с помощью ассемблеровских in-out, или через DeviceIOControl?

Вот сначала нужно понять, чего хотим, а потом уже способы искать.
Под NT+ в порты не попишешь и DeviceIOControl не всегда поможет.

Да помоему некоторые уже забыли вопрос на который мы ищем ответ. :) Вопрос в самом начале форума.
В вопросе не говорится о конкретном размере. Более-менее ясно, что нельзя сделать сектор меньше 512. Ясно, что теоретически можно сделать его чуть больше 512 или объеденить несколько секторов в длинный. Вот и вопрос: чего хотим и зачем?


 
Shiza   (2004-09-10 10:15) [58]

>Под NT+ в порты не попишешь

Да ну почему не попишешь? Можно и под NT писать и читать порты, просто делается это немного сложнее, чем обычные in-out.

>Вот и вопрос: чего хотим и зачем?

Ладно, хоть я и не автор вопроса, но очень хочеться разобраться. Чего хотим? Размер сектора нужен или 524 байт, или 1024, любой, только бы код был рабочий.


 
Shiza   (2004-09-15 17:14) [59]

А вот ответ тишина :)


 
Alex Konshin ©   (2004-09-15 20:12) [60]

Дык, а кому это нужно?

В порты напрямую не попишешь. Можно что-то сделать через SPTI или miniport, но IMHO этого все равно будет недостаточно. А уж возиться в выходом в 0 кольцо и т.п. хакерские выходки - извольте сами.


 
Shiza   (2004-09-16 16:09) [61]

>В порты напрямую не попишешь.

Да ну блин, ну почему не попишешь??? Можно. И в Win9X, и в WinNT.

>А уж возиться в выходом в 0 кольцо и т.п. хакерские выходки - извольте сами.

Во-первых выход в 0 кольцо не нужен наверное, а во-вторых - я бы назвал это не "хакерские выходки", а низкоуровневое программирование.

>Дык, а кому это нужно?

"Если звёзды зажигают, значит это кому нибудь нужно" (с)


 
Alex Konshin ©   (2004-09-16 20:44) [62]

В NT? В порты контроллера IDE? Ну-ну.
Флаг тебе в руки.


 
Shiza   (2004-09-17 10:41) [63]

>Флаг тебе в руки.

Не груби.

>В порты контроллера IDE?

Я разве сказал в порты контроллера IDE? Я читал и писал в порты в NT, но с портами контроллера IDE не работал. Но логика подсказывает, что если можно писать в порт по адресу $0070, то можно писать и в порт с другим адресом.

Может поправишь?


 
Игорь Шевченко ©   (2004-09-17 10:45) [64]


> но с портами контроллера IDE не работал.


А попробуй поработать. Практика - критерий истины.


 
Shiza   (2004-09-17 12:54) [65]

>А попробуй поработать. Практика - критерий истины.

Я бы попробовал, только у меня не IDE контроллер, а SCSI. Да и потом, кто сказал что мы работаем именно в NT?


 
Игорь Шевченко ©   (2004-09-17 13:21) [66]

Shiza   (17.09.04 12:54) [65]

То есть, насколько я понимаю, тебе важен именно процесс обсуждения, а не результат ?

И какая разница в данном случае, IDE или SCSI ?


 
Shiza   (2004-09-17 17:20) [67]

>То есть, насколько я понимаю, тебе важен именно процесс обсуждения, а не результат?

Зря иронизируете. Вы знаете, Игорь, мне на самом деле важен результат: (Shiza   (10.09.04 10:15) [58] "...только бы код был рабочий.")

>И какая разница в данном случае, IDE или SCSI?

Я знаю адреса портов для общения с IDE и не знаю, совпадают ли они для SCSI. Да и потом, для SCSI существует ASPI...


 
Игорь Шевченко ©   (2004-09-17 17:38) [68]


> Вы знаете, Игорь, мне на самом деле важен результат


Тут Алекс Коншин спрашивал: а зачем ?
Я присоединяюсь к этому вопросу.


 
Alex Konshin ©   (2004-09-18 07:07) [69]

Shiza   (17.09.04 10:41) [63]
>Флаг тебе в руки.
Не груби.

Это кто грубит?
Тебе ответили: тебе нужно - ты и экспериментируй. Мне это неинтересно и пользы от этого я не вижу. Если объяснишь зачем это может быть нужно людям, то тогда и посмотрим, стоит ли заморачиваться.

В регистры IDE под NT ты точно не попишешь. По крайне мере без хакерских штучек.

И на SCSI будут проблемы: ASPI есть не везде и не всегда. MS его не поддерживает, Adaptec свой ASPI убрал, а потом и сам исчез. Другие производители тоже далеко не всегда драйвер ASPI предоставляют. Можно работать через SPTI, но там нужны права админа.


 
Shiza   (2004-09-20 10:52) [70]

>Мне это неинтересно и пользы от этого я не вижу.

Если не интересно, зачем надо было в форум заходить? Сказать: "Я не могу, значит и вы не сумеете."?

Для большинства программистов, которые используют Дельфи, почему-то вопросы низкоуровневого программирования кажутся какими-то запретными. В форумах не обсуждать! С БИОСом работать нельзя, с диском напрямую - ни-ни! А если один программист напишет программу на Дельфи, которая читает Linux-разделы, то проэто никто как-будто и не слышал... Дальше WinAPI не пускают! "Не ходите дети в Африку гулять" (с) :)

>Тут Алекс Коншин спрашивал: а зачем ?

Я могу ошибаться, но по-моему в форум в осовном заходят чтобы задать вопрос, и получить ответ, а не для того, чтобы у них спросили: "А зачем?". Обсуждать давайте как сделать, а не то, зачем это сделать... Если ответ на вопрос не знаете - не отвечайте... Есть предположения как сделать - милости просим :)


 
Shiza   (2004-09-22 10:25) [71]

И тишина... :)



Страницы: 1 2 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.62 MB
Время: 0.035 c
6-1092839005
Lord de Mon
2004-08-18 18:23
2004.10.24
как считать с веб-страницы значение?


1-1097581743
New
2004-10-12 15:49
2004.10.24
Скажите пожайлуста, для чего служат


14-1097065783
Zeqfreed
2004-10-06 16:29
2004.10.24
Photoshop!


14-1096619424
icebeerg
2004-10-01 12:30
2004.10.24
Трабла с ситемой...


3-1096350232
Нович[Ок]
2004-09-28 09:43
2004.10.24
Использование БД при написании системы "СКЛАД"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский