Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Point de vue : Mon histoire du VD0, l'invention du RAM Disk récupérable
(Article écrit par Perry Kivolowitz et extrait d'Amiga.org - mars 2010)
|
|
Mon nom est Perry Kivolowitz.
J'ai écrit le premier disque mémoire récupérable.
À l'époque, ASDG
(la société que j'ai fondée début 1985 avec Dan Esenther et un troisième partenaire dont presque personne n'a
jamais entendu parler) ne fabriquait que des produits matériels - notamment une carte mémoire.
On fabriquait également le boîtier dans lequel la carte mémoire était insérée car il n'y avait aucune
capacité d'extension dans un Amiga 1000 (autre que la mémoire vive).
J'avais entendu dire qu'un concurrent, je ne me souviens plus qui - peut-être que c'était les super gars
de Microbotics ou les sacs à merde de C Ltd, allait sortir un RAM Disk qui survivrait aux redémarrages.
Incroyable, wahou, ça serait une tuerie - ça donnerait un avantage compétitif incroyable pour eux -
une raison impérieuse d'acheter leurs cartes mémoire.
Je me suis dit que je devais les devancer.
La clé de notre "RRD" (Recoverable RAM Disk) ou "VD0" (Virtual Disk) était que l'appel d'allocation mémoire d'AmigaOS
vous permettait de spécifier d'où la mémoire nouvellement allouée devait provenir. L'appel initial
alloue toujours la mémoire à partir de la mémoire basse vers le haut. Mais il y avait
cet autre appel (ou peut-être était-ce le même appel) qui allouait la mémoire de haut en bas.
J'ai sorti un des manuels Amiga les moins connus, je suis presque sûr que c'était un manuel imprimé,
qui décrivait les pilotes de périphériques Amiga. L'exemple de pilote de disque était extrêmement
complexe et écrit en BCPL ou peut-être en B. Quel était le nom de ce langage dans lequel ces cinglés
dont personne n'a plus jamais entendu parler écrivaient ? Je ne m'en souviens plus.
Je suis rentré du travail (j'étais chez AT&T) un vendredi après-midi et j'ai commencé à programmer. J'ai programmé
jusqu'au dimanche soir. Sans arrêt. J'ai quelque part une photo de moi devant mon A1000, enveloppé
dans une couverture (je ne pouvais pas vraiment me permettre de chauffer l'appartement) à la fin de
ce week-end. Je n'avais pas l'air bien.
Mon RRD était écrit en assembleur. J'adorais le langage assembleur 68k. J'avais été parmi les premiers
programmeurs C dans le milieu universitaire (quand Unix a quitté Bell Labs) et j'avais programmé
en assembleur 68k à peu près à la même vitesse tant les deux langages étaient proches.
Un défi important était de décider quand on pouvait faire confiance au RRD après un redémarrage.
Il n'y avait pas d'isolation/protection de la mémoire - tout processus pouvait accéder à n'importe quel octet
en mémoire. La première chose que le code faisait était d'essayer de trouver les premiers octets
alloués au RRD en mémoire, en commençant par le haut de la mémoire et en poursuivant vers le bas à
la recherche d'une sentinelle. Lorsque/si cela était trouvé, il suivait ensuite une structure de
données vers le bas pour déterminer si tous les blocs alloués au RRD étaient encore là.
Je ne me souviens plus - est-ce mon RRD qui était redimensionné dynamiquement ou celui qui est arrivé plus tard ?
C'est peut-être le mien qui redimensionnait dynamiquement. Si toute la mémoire allouée au RRD était toujours
là, elle était réallouée (un autre truc amusant du gestionnaire de mémoire de l'Amiga) et ensuite
vérifiée avec un simple "CRC" (contrôle de redondance cyclique). C'est la principale chose qui ralentissait le RRD -
calculer et vérifier les CRC pour s'assurer que personne d'autre n'avait détruit la mémoire à notre insu.
Mise à jour : Oh, je me souviens maintenant. Mon disque ne se redimensionnait pas dynamiquement - il
allouait dynamiquement. Certains des autres disques mémoire récupérables, qui sont arrivés plus,
tard allouaient tout leur espace en une seule fois. Je pense qu'il y en a eu un qui, au final, allouait
dynamiquement et se redimensionnait dynamiquement mais ce n'était pas le mien. En fait, pour être honnête, je ne
me souviens pas avec certitude si le mien allouait dynamiquement ou non, je sais que j'ai fait quelque chose de mieux
que la version suivante de RRD. J'ai des bandes de sauvegarde qui contiennent le code source de tout
ce qu'ASDG a fait mais aucun moyen de les lire (en supposant qu'ils soient encore lisibles).
Il y avait une quantité incroyable de code là-dedans pour imiter le fatras que j'ai trouvé dans
l'exemple de pilote de disque à partir duquel je travaillais. Les RRD qui sont arrivés plus tard
n'avaient pas ce fatras car d'autres moyens furent trouvés pour écrire des pilotes Amiga.
Je n'avais rien d'autre pour travailler que cet exemple pourri.
Finalement, il s'est avéré que le RRD des autres gars n'est jamais sorti. Il n'a jamais existé. Il s'agissait juste d'une
rumeur. Le mien fut un énorme succès et nous a fait vendre beaucoup de cartes mémoire. Les gens pensaient
que c'était magique.
Pendant longtemps, mon RRD n'était disponible qu'avec les cartes mémoire d'ASDG et il vérifiait le
matériel d'ASDG. À un moment donné, j'ai supprimé la vérification du matériel d'ASDG, mais il n'était
toujours fourni "légalement" que par nous.
Après cela, je l'ai rendu partagiciel pour 10 $. Je crois que c'était l'un des produits
partagiciels les plus réussis jamais réalisés sur Amiga. Je peux vous dire que j'ai survécu grâce à ces
chèques de dix dollars et aux factures envoyées par la poste.
On ne l'a jamais dit, mais j'ai travaillé pendant des années sans être payé tout en développant la société
ASDG. Je vivais sur les économies de mes travaux (consultations) chez AT&T - que Dieu les bénisse.
C'est plusieurs années (trois ?) après l'existence d'ASDG que j'ai reçu mon premier chèque. Je gagnais
6 dollars de l'heure. Et j'étais sacrément fier.
Quelque temps plus tard, un jeune Allemand a fait de l'ingénierie inverse sur mon RRD et en a sorti un
bien meilleur. Des années plus tard, nous en avons parlé et je l'ai félicité. C'était vraiment mieux.
Enfin, apparu le jour où les disques durs sur Amiga n'étaient plus si mauvais. Jusque-là, les disques durs Amiga
étaient incroyablement lents à cause d'une architecture mal conçue. Les premiers disques durs étaient
plus lents que les disquettes. Surtout comparés aux disquettes accélérées par Facc et Facc II -
d'autres logiciels d'ASDG que j'ai écrits. Les disquettes Facc II fonctionnaient à la vitesse de la
mémoire car elles étaient des clones basés sur la mémoire de la disquette qui était chargée à ce moment-là.
À propos, VD0 signifiait "Virtual Disk 0". Le VD0 original a été écrit en 1985 ou peut-être début 1986
car je vivais encore dans le New Jersey.
Quel est le rapport entre VD0 et le disque RAD fourni ensuite dans AmigaOS ?
VD0 pourrait être l'arrière-grand-père de RAD. Probablement un grand-père. La version modifiée du jeune Allemand
serait le fils-de-VD0.
En dehors de cette distinction de redimensionnement/allocation dynamique, il y avait peu de différence
fonctionnelle entre eux. En termes pratiques, cependant, les nouveaux RRD étaient plus rapides et plus
petits. La taille n'était pas très importante - il ne s'agit que de quelques kilo-octets tout au plus.
Je pense que les principales choses qui rendent VD0 important sont :
- La date précoce du programme, c'était le début de la vie commerciale de l'Amiga, en 1985 ou 1986.
- L'importance du problème qu'il a résolu - je suis certain que plusieurs logiciels importants auraient
été beaucoup plus difficiles à écrire si les auteurs avaient dû se contenter de développer uniquement sur
des disquettes. Roman Ormandy, par exemple, a été très enthousiaste pendant le développement de Caligari,
son logiciel de rendu 3D.
- Le fait que cela n'avait jamais été fait auparavant. C'était considéré comme de la magie pure à l'époque.
- Cela a changé la direction d'ASDG. Nous étions une société de matériel informatique de A à Z. Le RRD
a été notre premier produit logiciel et nous a orienté vers la fabrication de logiciels. C'est presque aussi
déterminant que la course en taxi que j'ai prise et qui a complètement changé ASDG. Mais c'est une histoire
pour un autre jour... :)
En résumé, ce n'est pas tant la qualité de la danse de l'ours qui compte, mais le fait que l'ours
danse tout court.
|