Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

ЧАСТЬ 2. Исследование особенностей работы дисковой подсистемы

2.2. Изучение влияния параметра SK в командах "Чтение данных" и "Чтение

удаленных данных":

а) Выполнить команду "Запись данных" для сектора 7 дорожки 7.

Командная фаза:

MT MFM

КОП1:

HDS DS0 DS1

КОП2: 00

(HDS=0 – номер головки; DS1=0 и DS0=0 – номер дисковода)

С: – Номер дорожки (7)

Н: – Номер головки (0)

R: – Номер сектора (7)

N: – Код размера сектора (02h = 512 байт - стандартно)

EOT: – Количество секторов на дорожке (12h=18d - стандартно)

GPL: – Длина межсекторного промежутка для операций «Чтение» и «Запись» (из таблицы параметров дискеты = 1Вh)

DTL: – Максимальная длина передаваемых данных (используется, если не задана длина сектора, иначе – берется из таблицы параметров дискеты = FFh)

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

//нулевые значения этих регистров говорят о том, что операция записи завершена успешно

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (8)

//мы записали данные в 7 и автоматически головка переместилась на следующий сектор (8)

N = – код размера сектора (02 – 512 байт - стандартно)

б) Выполнить команду "Чтение данных" при SK=0 и SK=1.

1) SK = 0

Командная фаза:

MT MFM SK

КОП1:

// SK – SKIP – пропуск данных, не соответствующих типу команды чтения.

В данном случае мы производим чтение данных и SK=0, что означает, что мы будем читать любые данные: и обычные, и удаленные.

HDS DS0 DS1

КОП2: 00

(HDS=0 – номер головки; DS1=0 и DS0=0 – номер дисковода)

С: – Номер дорожки (7)

Н: – Номер головки (0)

R: – Номер сектора (7)

N: – Код размера сектора (02h = 512 байт - стандартно)

EOT: – Количество секторов на дорожке (12h=18d - стандартно)

GPL: – Длина межсекторного промежутка для операций «Чтение» и «Запись» (из таблицы параметров дискеты = 1Вh)

DTL: – Максимальная длина передаваемых данных (используется, если не задана длина сектора, иначе – берется из таблицы параметров дискеты = FFh)

Фаза результата:

Чтение завершено успешно, записанные данные отобразились на экране

2) SK = 1

Командная фаза:

MT MFM SK

КОП1:

// SK – SKIP – пропуск данных, не соответствующих типу команды чтения.

В данном случае мы производим чтение данных и SK=1, что означает, что мы будем читать обычные данные и пропускать удаленные.

HDS DS0 DS1

КОП2: 00

(HDS=0 – номер головки; DS1=0 и DS0=0 – номер дисковода)

С: – Номер дорожки (7)

Н: – Номер головки (0)

R: – Номер сектора (7)

N: – Код размера сектора (02h = 512 байт - стандартно)

EOT: – Количество секторов на дорожке (12h=18d - стандартно)

GPL: – Длина межсекторного промежутка для операций «Чтение» и «Запись» (из таблицы параметров дискеты = 1Вh)

DTL: – Максимальная длина передаваемых данных (используется, если не задана длина сектора, иначе – берется из таблицы параметров дискеты = FFh)

Фаза результата:

Аналогично предыдущему пункту – чтение завершено успешно, записанные данные отобразились на экране, т. к. это обычные данные и читаем мы тоже обычные данные.

в) Выполнить команду "Чтение удаленных данных" при SK=0 и SK=1.

1) SK = 0

Командная фаза:

MT MFM SK

КОП1:

// SK – SKIP – пропуск данных, не соответствующих типу команды чтения.

В данном случае мы производим чтение удаленных данных, а данные на самом деле обычные, но т. к. SK=0, то мы будем читать любые данные: и обычные, и удаленные.

HDS DS0 DS1

КОП2: 00

(HDS=0 – номер головки; DS1=0 и DS0=0 – номер дисковода)

С: – Номер дорожки (7)

Н: – Номер головки (0)

R: – Номер сектора (7)

N: – Код размера сектора (02h = 512 байт - стандартно)

EOT: – Количество секторов на дорожке (12h=18d - стандартно)

GPL: – Длина межсекторного промежутка для операций «Чтение» и «Запись» (из таблицы параметров дискеты = 1Вh)

DTL: – Максимальная длина передаваемых данных (используется, если не задана длина сектора, иначе – берется из таблицы параметров дискеты = FFh)

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

Бит СМ (ST2.6) имеет единичное значение, что означает, что во время операции чтения обнаружен сектор с маркером удаленных данных.

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (7)

N = – код размера сектора (02 – 512 байт - стандартно)

Чтение завершено успешно, записанные данные отобразились на экране

2) SK = 1

Командная фаза:

MT MFM SK

КОП1:

// SK – SKIP – пропуск данных, не соответствующих типу команды чтения.

НЕ нашли? Не то? Что вы ищете?

В данном случае мы производим чтение удаленных данных, а данные на самом деле обычные и т. к. SK=1, то мы должны пропускать обычные данные и читать удаленные, каковых не имеем в секторе 5 на дорожке 21.

HDS DS0 DS1

КОП2: 00

(HDS=0 – номер головки; DS1=0 и DS0=0 – номер дисковода)

С: – Номер дорожки (7)

Н: – Номер головки (0)

R: – Номер сектора (7)

N: – Код размера сектора (02h = 512 байт - стандартно)

EOT: – Количество секторов на дорожке (12h=18d - стандартно)

GPL: – Длина межсекторного промежутка для операций «Чтение» и «Запись» (из таблицы параметров дискеты = 1Вh)

DTL: – Максимальная длина передаваемых данных (используется, если не задана длина сектора, иначе – берется из таблицы параметров дискеты = FFh)

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (12h=18d) – прочитана вся дорожка

N = – код размера сектора (02 – 512 байт - стандартно)

Имеем аварийное завершение операции (биты 7 и 6 регистра ST0 равны 0 и 1 соответственно); бит 7 регистра ST1 равен 1 (несуществующий номер сектора), что говорит о том, что контроллер пытался прочесть сектор с адресом, большим существующего; бит СМ (ST2.6) имеет единичное значение, что означает, что во время операции чтения обнаружен сектор с маркером удаленных данных.

г) Выполнить команду "Запись удаленных данных" и повторить пункты б) и в).

1.  Запись удаленных данных

Командная фаза:

MT MFM

КОП1:

HDS DS0 DS1

КОП2: 00

(HDS=0– номер головки; DS1=0 и DS0=0 – номер дисковода)

С: – Номер дорожки (7)

Н: – Номер головки (0)

R: – Номер сектора (7)

N: – Код размера сектора (02h = 512 байт - стандартно)

EOT: – Количество секторов на дорожке (12h=18d - стандартно)

GPL: – Длина межсекторного промежутка для операций «Чтение» и «Запись» (из таблицы параметров дискеты = 1Вh)

DTL: – Максимальная длина передаваемых данных (используется, если не задана длина сектора, иначе – берется из таблицы параметров дискеты = FFh)

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

//форматы регистров состояния описаны выше, нулевые значения этих регистров говорят о том, что операция записи завершена успешно

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (8)

//мы записали данные в сектор 7 и автоматически головка переместилась на следующий сектор 8

N = – код размера сектора (02 – 512 байт - стандартно)

б) чтение данных

SK = 0 – будем читать и обычные и удаленные данные

Командная фаза:

MT MFM SK

КОП1:

все остальные параметры – аналогично предыдущим пунктам

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

Бит СМ (ST2.6) имеет единичное значение, что означает, что во время операции чтения обнаружен сектор с маркером удаленных данных.

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (7)

N = – код размера сектора (02 – 512 байт - стандартно)

Чтение завершено успешно, записанные данные (которые являются удаленными) отобразились на экране

SK = 1 – будем читать только обычные данные (а у нас - удаленные)

Командная фаза:

MT MFM SK

КОП1:

все остальные параметры – аналогично предыдущим пунктам

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

Бит СМ (ST2.6) имеет единичное значение, что означает, что во время операции чтения обнаружен сектор с маркером удаленных данных.

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (8)

N = – код размера сектора (02 – 512 байт - стандартно)

Был прочитан 8-ой сектор, а наш 7-й (в кот. записаны удаленные данные) был пропущен, т. к. мы задали SK=1.

в) чтение удаленных данных

SK = 0 – будем читать и обычные и удаленные данные

Командная фаза:

MT MFM SK

КОП1:

все остальные параметры – аналогично предыдущим пунктам

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

//форматы регистров состояния описаны выше, нулевые значения этих регистров говорят о том, что операция чтения завершена успешно

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (8)

//мы записали данные в 7 и автоматически головка переместилась на следующий сектор 8

N = – код размера сектора (02 – 512 байт - стандартно)

Чтение завершено успешно, удаленные данные прочитаны

SK = 1 – будем читать удаленные данные и пропускать обычные

Командная фаза:

MT MFM SK

КОП1:

все остальные параметры – аналогично предыдущим пунктам

Фаза результата:

ST0 = - регистр состояния КГД

ST1 = - регистр состояния КГД

ST2 = - регистр состояния КГД

//форматы регистров состояния описаны выше, нулевые значения этих регистров говорят о том, что операция чтения завершена успешно

C = – номер дорожки (7)

H = – номер головки (0)

R = – номер сектора (8)

//мы записали данные в 7 и автоматически головка переместилась на следующий сектор 8

N = – код размера сектора (02 – 512 байт - стандартно)

Чтение завершено успешно, удаленные данные прочитаны

Вывод:

1) В регистре ST2 устанавливается флаг CM, информирующий о том, что встречен удаленный сектор.

2)  Если SK=0, то контроллер заканчивает операцию после чтения всех данных сектора.

3)  При SK=1, контроллер пропускает этот сектор и начинает читать следующий.