�������� � �������� ��������
�������� ������� (� �����������
������������ ���������� ������������ ����� ����� �������������, �� ������
������, �����������, �� ������� �������� �������� ����������� � state
machine, �������� ����������� ��� ������ ���������) ������������
����� ����������, ������� ���������� ������ (���������� ���������), �
����� ����� ������ � �������. ����� ���������� ������ � �������� ���������,
��� ������� �� ��������, �������. �������� � �������������� ������� ����������
������ ���������� ������������ ����������,
������������ � ������������ ������ � ������������� ����������� (�������
1971].
������ ��������� ������������� ������������ ����������� ��������� � ��������,
�������� � ����� ���� ����������� � ����� ��������� � ����������� ��������������
������� � ��������, ���������� �������� ������ � � ������� ������������
����������, �������� ��� �������������� ������� ������ �� ���������� �����������
[������/���������/������ 2000].
������ �������� ������� � ���, ��� �� ����������� ��������� ����� ������,
�, � ����������� �� �������� ������ � ������ ����������� ���������, ��������
�������� ������� � ���������� ���������. �������, � �� ���������� � ��������
���������� ���������, ����������� ��������
��� ���������� ���������. ��������� ���������
������������ ����� ����, ������� �������� ������������� ���������� ����������
���������� ���������� ��������, � ����� � ���������� ��������� ����� ����.
�������� ����� ��������� ������������: ������� �������� �� � � � �� ��������,
��� ���������� ������� �� � � �. ������� �������� � ����� ������������
��������������� ����� �������, ������������ ���� ���� ������. ����� ����
���������� ��������������� [������/���������/������ 2000]. ������� ���������
����� ��������������� ��� ��������� ������������� ��������� ���������.
����-����� (���. 10.5) �������� ������� �������� ������������ ������ ���������
� ������������ ��� �������� ���������� � 60-� �����. ����� ��������, �������������
�� ���-������������ ���������� � �������� ������� ������ (� ����� �����
��������� ���������� ��������), ����� ���� ������ ��� �������� �������
� ��������� � ���� ����-�����.
� �������� ��������� � ������������ ������ ���������� �������� ������,
���� ��������� ������ �������, ���� � ����� ��������� ����� (���������
����) � ������� (������������ ��������� �����, ���������� � ����� � ���
�� �������). �������, ��� ��� �������� � ������, ���������� �����, ����������
������������� ���������� � ���������� ������ �� �������� �����. ��� ��������,
������ �������������� ���������� ���������, ���� � ������ �� ������ �������
�������, � ����� ������ �������������� ����������� [������� 1971].
������������� � ��������� ������� ���������, ����������� ���� ����� ���������������
��������� �������� ���������� �������� ����� �� ��-'�����. �������, ���
�� �������� ���������� ����� ������� ������� ������������. ����� �������
������ ������ ����������� � �������� �������� �������. ��������� �����
����� ��������� � ���������� ���������� �������� ������������ � ������
���������, � ���� ��������� ���������� ������������ (���. 10.6), �� ���
���������� �������� ���������� ���������� �����-���� �����������, �������
�� �������� ����� ���������� ����������� ����-�����, � ������� ���������
� ������� ���������� �������� ����� ������������ ��� ���� ���������.

���. 10.5. ����-����� ��������
������ ������ ��� ����������� ����-����� ��������� ��������
������ ������, ���� � �� ����� ���������� ���� ����� �� ������ � ��� ����������,
����� ������� ������������ ������ � ������ ���������, � ��� ����� � �
������ "�����" � ����� ������ ���������� ����. � [���� 2000)
���������� ������� ������ ������� ��� ��������� ������� ����������.
��������� �������� ����� ������� ����������� �������� (�������� ������������
���������� ��������� �������� ������) ����� ���������� ����������� ����-�����.
������� ��� ��������� ������������� ������������ ��������� �� ���������
������ � ����� ��������� ����������������� � ����������, �� ���-���� ������
�� ��� ���� ���������� ������������� � ���� ��������� �������� �����������.

���. 10.6. ������������� ������ � ����� ���������
� ������ �������, ��� ���� �������� ������� ����������
������������ ������� ����������� ���������� � ��������� ������ ���������,
������� ����� ���� ������������ ����� ��������� ���������� ��������� ���
������ ����� ����������. ����� �������� ������� ���������� � ����� �������������
�������: ����������� � �������������� ������� ����������-��������� � ������
����� ����������-��������� ������ [������/ ���������/������ 2000 1, ����������
������� ����������, ������� �������������� ���������������� (����/����
2000] � ��. � ���������, ����� ������, ��� ����������� ���� �������� ��������
��������� ������ � ���� ��������� ����������.
��� �������� ������� � ���������� �������� ��������� � ���
����������� (unrolled) �������� � ��������
������ ����. �������� ������������ ��������� �������� ��������
��� �������� ���� ������� 10.2. �������, ��� ������������� ��������� ������
�������� � ������ ������������� � �������� ��� ����������� � ����������
����� ���������, � ���� � �������� ��������� ���������� �� �������, ���
��������� �������� ������ ��� ����� �������, ��� �������� ��������� ��������������
���.
������� ������ ���� �������� ��������� �������, ��, ���������� ������������
��� �����������, ����� ������������� ����� ��������� �� ����� ��� ����-�����
�, ��������, ��������������� ���� ��������� �� ���� ���������. �������
������������� �������� �������������� ��������� �������� �������� ��������
�����������: ���� ���� ��������� �������� ��� ���� ����� �������� ���
������ ��� �����, ������� ��������� ����������.
������� ���������� �������� ��������� ������ ���� �� ����������� �����
���������������� ���������� �� ������ ��������� ���������������� ��������
[������� 1982). ���� ����� ���������� ������� �� �����, �������� ������
�� �������� �������� ���������� ��������� ���������� ���������, � ������������
� ���� ����� ��������� ����������� �������� � ���������� ��������� � ��������
���������. �������� �������, ������� �� ��� ������������ ����������, ��������
� ������� 10.4.
������ 10.4. �������� ������� ��������
����������� IDE/ATA ��� OS/2
VOID NEAR StartSM( NPACB npACB )
}
/* ------------------------------------------------ */
* �������� �������� ������������� ���*/
/* -------------------- */
/* ������� ����������� ��� ������� ��� / *
/* ------------------------------------------------ */
DISABLE
npACB->UseCount++;
iff npACB->UseCount == 1 )
{
do
{
ENABLE
do
{
npACB->Flags &= ~ACBF_WAITSTATE;
switch (npACB->State) {
case ACBS__START :
StartState(npACB);
break;
case ACBS_INTERRUPT:
InterruptState(npACB);
break;
case ACBS_DONE:
DoneState(npACB);
break;
case ACBS_SUSPEND:
SuspendState(npACB);
break;
case ACBS_RETRY:
RetryState(npACB);
break;
case ACBS_RESETCHECK:
ResetCheck(npACB);
break/case ACBS_ERROR:
ErrorState(npACB);
break;
while ( !(npACB->Flags & ACBF WAITSTATE) );
DISABLE
I
while ( � npACB->UseCount ) ;
�������� ������� �������� OS/2
�������� �� ��������, ������ 10.4 ��������� � ������������. ������! �������
startSM � ��� (Adapter Control Block � ����
���������� ��������! ��� � OS/2 ���������� ���� ���������� ��������� ����������).
��� �������� ��������� �� ������� �������� IORB
(Input/Output Request Block � ���� ������� �� ����/�����) � ���������
���������� state, ������� ���������, � ���� ��������� ������ ���������
��������� ������� ������� � �������. �� ���� ����� ��������� ������������,
����� ������� ������� �������. � ����� ��� �������, � ����������� �� ����������
��������, ���������� ��������� ���������� �������� ���������� ���������
�, ��������, ����� ACB_WAITSTATE.
������� startSM (Start State Machine) ����������
��� �� ������� �������� ��������, ��� � �� ����������� ����������. �������
����� ������ � ���� ����� ������� � ����� ������ �� ���� ����� ���, ������������
���� n���� >UseCount ��� �������� ����������,
����� �� ��������� �������������� ����� � ������� �� ����� ��������� �����
����������. �������� ����� ��������, ��� ��������� ENABLE
� DISABLE (������ � ���������� ���������� ��������
������ � �������� ����������, �� �� ��� �������.
(� �������� ���������� �������� ������������ ������, ��� �� �������������
����� ������� interruptstate, ���� �� ����� ���������� �������� ���� ��������
��� ��� ��������� � ���� ��������.
������ ����� �������� IDE/ATA ��� OS/2 ������� � ����������� ��������
DDK (Driver Development Kit� ����� ������������ [���] ������������ ���������),
������� ����� ���� ������ �� ����� [www.ibm.com OS/2
DDK].
����������� ���� � ������� 10.3 ��� ������ ������ ��
����� �� ����� 10.4, ��, � ����������������, ����� ������������ �����
�������� ������� � �������� ���������� ��������� ������������ ����������
fdd->handier, � �������� ���������� �������� ���� ����������
� ��������� �� ������� �������������� ���������� ���������.
|