Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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, контроллер пропускает этот сектор и начинает читать следующий.


