Aus den angegebenen Eigenschaften des Systems können wir nun die vorgegebenen Schnittstellen unseres Systems in Form von Ada-Paketen festlegen. Wir haben dabei einerseits die ,,Schnittstelle nach oben``, die die Operationen festschreibt, die Tasks verwenden müssen, um Leseanforderungen abzusetzen, und andererseits die ,,Schnittstelle nach unten``, die die Operationen des Platten-Controllers fixiert. Unter Platten-Controller verstehen wir dabei einen Prozessor, der den (hardwaremäßigen) Zugriff auf die Platte erledigt.
Wir benötigen als erstes ein Paket, in dem sich wichtige Definitionen befinden:
Die Schnittstelle nach unten sieht folgendermaßen aus:
with Platten_Defs;
package Platten_Controller is
function Positioniere_Lese_Schreibkopf_und_lies(
Spur: natural;
Sektor: natural)
return Platten_Defs.data;
-
-PositioniertdenLese-SchreibkopfderPlatteaufden
-angegebenenSektorderangegebenenSpurund
-liestdieDatendesSektors,ueberdemsichder
-Lese-Schreibkopfdanngeradebefindet.
end Platten_Controller;
Die Schnittstelle nach oben hat anforderungsgemäß folgendes Aussehen:
with Platten_Defs;
package Platten_Treiber is
function Read(
Spur: natural;
Sektor: natural)
return Platten_Defs.data;
-
-LiestdieimangegebenenSektoraufderangegebenenSpur
-abgespeichertenDatenvonderPlatteundgibtsiezur}ck;
-WaehrenddesLesevorgangesistderTask,derdieseFunktion
-aufruft,blockiert.
end Platten_Treiber;