next up previous contents index
Weiter: Analyse des Systems Hinauf: 18.8 Ein Platten-Treiber Zurück: Aufgabenstellung

Spezifikation der vorgegebenen Schnittstellen

  

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:


package Platten_Defs is

subtype Byte is character;

Sektorlaenge: constant integer := 512; -Bytes

type data is array (0 .. Sektorlaenge-1) of Byte;

end Platten_Defs;

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;



Johann Blieberger
Wed Feb 11 09:58:52 MET 1998