-
Notifications
You must be signed in to change notification settings - Fork 5
/
2kblocks.ps
1745 lines (1725 loc) · 87.2 KB
/
2kblocks.ps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
%%Title: 2kblocks.dvi
%%Pages: 6
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: Times-Bold Times-Roman Times-Italic Courier-Oblique
%%+ Courier Courier-Bold Helvetica-Bold
%%EndComments
%DVIPSCommandLine: dvips 2kblocks.dvi -o
%+ /usr/nemo/doc/www/export/2kblocks.ps
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 1999.02.26:1244
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn
put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley
X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[
(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: 8r.enc
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
% version = "0.6",
% date = "22 June 1996",
% filename = "8r.enc",
% email = "kb@@mail.tug.org",
% address = "135 Center Hill Rd. // Plymouth, MA 02360",
% codetable = "ISO/ASCII",
% checksum = "119 662 4424",
% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% @}
%
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
%
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
%
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
%
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef
/breve /minus /.notdef
% These are the only two remaining unencoded characters, so may as
% well include them.
/Zcaron /zcaron
% 0x10
/caron /dotlessi
% (unusual TeX characters available in, e.g., Lucida Bright)
/dotlessj /ff /ffi /ffl
/.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef
% very contentious; it's so painful not having quoteleft and quoteright
% at 96 and 145 that we move the things normally found there down to here.
/grave /quotesingle
% 0x20 (ASCII begins)
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde
/.notdef % rubout; ASCII ends
% 0x80
/.notdef /.notdef /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /.notdef /.notdef /.notdef
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /.notdef /.notdef /Ydieresis
% 0xA0
/.notdef % nobreakspace
/exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot
/hyphen % Y&Y (also at 45); Windows' softhyphen
/registered
/macron
% 0xD0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
%%EndProcSet
%%BeginProcSet: texps.pro
%!
TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont /setfont cvx]cvx def}def /ObliqueSlant
{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1
roll mul exch}def /ReEncodeFont{/Encoding exch def}def end
%%EndProcSet
%%BeginProcSet: special.pro
%!
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (2kblocks.dvi)
@start /Fa 134[33 1[50 33 37 21 29 29 1[37 37 37 54 21
33 1[21 37 37 21 33 37 33 37 37 8[46 62 1[54 42 37 46
1[46 54 50 62 1[50 1[25 1[54 1[46 54 50 1[46 7[37 37
1[37 2[37 1[37 37 1[19 25 5[25 39[{TeXBase1Encoding ReEncodeFont}48
74.7198 /Times-Italic rf /Fb 105[37 27[33 37 1[54 37
37 21 29 25 1[37 37 37 58 21 37 21 21 37 37 25 33 37
33 37 33 3[25 1[25 2[54 71 1[54 46 42 50 1[42 54 54 66
46 54 29 25 54 54 42 46 54 50 50 54 6[21 37 37 37 37
37 37 37 37 37 37 1[19 25 19 42 1[25 25 37[42 2[{
TeXBase1Encoding ReEncodeFont}67 74.7198 /Times-Roman
rf
%DVIPSBitmapFont: Fc cmmi10 10 3
/Fc 3 111 df<EB0380D907E01307010FEC0F80161F5CA2011F143FA24A1400A2013F5C
A291C7127EA24914FEA2017E5CA201FE1301A2495CA200011403A249ECF018A200031407
1738EEE030150F00071670031F1360153F6D017713E0486C9038E3E1C0903AFF03C1F380
903ACFFF00FF00D9C3FC133ED81FC0C9FCA25BA2123FA290CAFCA25AA2127EA212FEA25A
A212702D377EA432>22 D<D803E0017F14FE3D07F801FFE003FFC03D0E3C0781F00F03E0
3D1C3E1E00F83C01F026383F38D9FC707F00304914E04A90387DC000007049EB7F800060
4991C7FCA200E090C700FE1301485A017E5CA200000201140301FE5F495CA20303140700
0160495C180F03075D1203494A011F13601980030F023F13E00007F000C0495C1901031F
023E1380000F1803494A150061033F150E001FEF1E1C4991C7EA0FF80007C7000EEC03E0
43267EA449>109 D<D803E0137F3A07F801FFE03A0E3C0781F03A1C3E1E00F826383F38
7F00305B4A137C00705B00605BA200E090C712FC485A137EA20000140101FE5C5BA21503
00015D5B15075E120349010F133016C0031F13700007ED80605B17E0EE00C0000F150149
15801603EE0700001FEC0F0E49EB07FC0007C7EA01F02C267EA432>I
E
%EndDVIPSBitmapFont
/Fd 134[46 46 1[46 1[30 36 41 1[51 46 51 76 25 2[25 51
46 1[41 51 41 51 46 12[61 51 14[66 66 61 11[46 46 46
46 46 46 2[23 1[23 44[{TeXBase1Encoding ReEncodeFont}32
91.3242 /Times-Bold rf /Fe 134[46 46 65 1[51 28 46 32
1[51 51 51 74 23 2[23 51 51 1[46 51 46 51 46 26[51 2[60
16[46 46 2[23 28 45[{TeXBase1Encoding ReEncodeFont}26
83.022 /Helvetica-Bold rf
%DVIPSBitmapFont: Ff cmsy10 10 2
/Ff 2 42 df<EB0FE0EB7FFC497E0003EBFF804814C04814E04814F04814F8A24814FCA3
B612FEA86C14FCA36C14F8A26C14F06C14E06C14C06C1480C6EBFE006D5AEB0FE01F207B
A42A>15 D<173CA2173E171E171F8384717E170384717E717E187C007FB812FEBAFC856C
84CBEA03F0727EF000FEF13F80F11FE0F107F8F101FFA2F107F8F11FE0F13F80F1FE00F0
01F84E5A007FB912C0BA5A96C7FC6C5FCB127C604D5A4D5A6017074D5A95C8FC5F171E17
3E173CA248307BAC53>41 D E
%EndDVIPSBitmapFont
/Fg 134[50 50 3[50 50 50 1[50 50 50 1[50 2[50 50 2[50
1[50 1[50 13[50 16[50 21[50 2[50 50 40[{TeXBase1Encoding ReEncodeFont}
19 83.022 /Courier-Bold rf /Fh 134[42 2[42 1[23 1[28
1[42 42 42 8[37 1[37 25[28 1[60 46 24[28 45[{
.167 SlantFont TeXBase1Encoding ReEncodeFont}13 83.022
/Times-Roman rf /Fi 206[25 49[{TeXBase1Encoding ReEncodeFont}1
49.8132 /Times-Roman rf /Fj 107[29 29 25[33 1[48 1[33
18 26 22 1[33 33 33 52 18 2[18 33 33 1[29 33 29 33 29
7[48 4[41 37 2[37 2[59 3[22 5[44 44 48 7[33 33 33 3[33
33 33 33 18 17 22 17 8[33 35[{TeXBase1Encoding ReEncodeFont}42
66.4176 /Times-Roman rf
%DVIPSBitmapFont: Fk cmsy6 6 2
/Fk 2 122 df<136013701360A20040132000E0137038F861F0387E67E0381FFF803807
FE00EA00F0EA07FE381FFF80387E67E038F861F038E060700040132000001300A2137013
6014157B9620>3 D<136013F0A81360A4387C63E0B512F0A2387C63E038006000A313F0
B3A21360A7142F7CA31E>121 D E
%EndDVIPSBitmapFont
/Fl 134[50 50 50 1[50 50 50 50 1[50 50 50 50 50 50 1[50
50 1[50 50 50 50 50 50 8[50 17[50 3[50 6[50 50 4[50 50
1[50 50 50 2[50 50 50 1[50 50 40[{TeXBase1Encoding ReEncodeFont}36
83.022 /Courier rf /Fm 190[42 15[29 49[{TeXBase1Encoding ReEncodeFont}2
58.1154 /Times-Roman rf /Fn 104[83 2[37 37 24[37 42 42
60 42 42 23 32 28 42 42 42 42 65 23 42 23 23 42 42 28
37 42 37 42 37 3[28 1[28 1[60 60 78 60 60 51 46 55 1[46
60 60 74 51 60 1[28 60 60 46 51 60 55 55 60 1[37 3[23
23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 2[28 28
28 35[46 46 2[{TeXBase1Encoding ReEncodeFont}76 83.022
/Times-Roman rf /Fo 136[50 2[50 1[50 8[50 3[50 50 2[50
97[{TeXBase1Encoding ReEncodeFont}7 83.022 /Courier-Oblique
rf /Fp 107[46 46 24[32 37 37 55 37 42 23 32 32 1[42 42
42 60 23 37 1[23 42 42 23 37 42 37 42 42 9[69 2[46 42
2[51 60 55 69 2[37 1[60 60 51 51 2[51 2[42 3[28 12[21
28 21 5[65 35[42 2[{TeXBase1Encoding ReEncodeFont}46
83.022 /Times-Italic rf /Fq 135[50 72 1[55 33 39 44 2[50
55 83 28 55 1[28 55 50 33 44 55 44 55 50 12[66 55 72
8[39 7[72 11[50 50 50 50 50 2[25 46[{TeXBase1Encoding ReEncodeFont}31
99.6264 /Times-Bold rf
%DVIPSBitmapFont: Fr cmsy8 8 2
/Fr 2 122 df<130C131EA50060EB01800078130739FC0C0FC0007FEB3F80393F8C7F00
3807CCF83801FFE038007F80011EC7FCEB7F803801FFE03807CCF8383F8C7F397F0C3F80
00FCEB0FC039781E078000601301000090C7FCA5130C1A1D7C9E23>3
D<1338137CA81338A7007C137CB512FEA3387C387C00001300A5137CB3A41338AD173D7C
AE20>121 D E
%EndDVIPSBitmapFont
/Fs 75[33 58[50 2[50 50 28 39 33 2[50 50 78 28 1[28 28
1[50 33 44 50 44 1[44 11[72 1[55 66 4[89 2[39 33 2[55
2[66 66 72 92 12[50 4[25 46[{TeXBase1Encoding ReEncodeFont}32
99.6264 /Times-Roman rf
%DVIPSBitmapFont: Ft cmsy9 9 1
/Ft 1 14 df<ED0FFF92B512F0020314FC020F14FF91263FF80113C0913AFF80001FF049
48C7EA07F8D907F8EC01FED90FE0EC007FD91F80ED1F8049C96C7E017E707E49707E4848
707E4916004848177C0007187E49173E484883A248CBEA0F80A2003EF007C0A2003C1803
007C19E0A200781801A200F819F0A2481800A96C1801A2007819E0A2007C1803A2003C19
C0003E1807A26CF00F80A26C6CEF1F00A26C6C173E6D177E0003187C6C6C5F6D16016C6C
4C5A017E4C5A6D4C5A6D6C4B5AD90FE0037FC7FCD907F8EC01FED901FEEC07F86D6C6CEB
1FF0913A3FF801FFC0020FB6C8FC020314FC020014F0030F90C9FC44477CB54D>13
D E
%EndDVIPSBitmapFont
/Fu 139[25 1[33 1[42 37 42 4[21 42 1[25 33 1[33 1[37
10[54 1[50 42 2[46 58 5[29 58 2[50 11[37 7[37 2[19 25
45[{TeXBase1Encoding ReEncodeFont}23 74.7198 /Times-Bold
rf /Fv 135[60 3[40 47 53 1[66 60 66 100 33 2[33 66 1[40
53 1[53 1[60 12[80 1[86 11[73 3[80 86 6[40 58[{
TeXBase1Encoding ReEncodeFont}21 119.552 /Times-Bold
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
%%EndSetup
%%Page: 1 1
1 0 bop 1013 374 a Fv(The)30 b(Box:)36 b(A)31 b(Replacement)f(f)m(or)g
(Files)970 522 y Fu(c)948 524 y Ft(\015)18 b Fu(1999)j(IEEE.)c(T)-7
b(o)19 b(appear)g(in)f(Pr)o(oc.)23 b(of)c(the)f(IEEE)h(HotOS-VII.)508
721 y Fs(Francisco)25 b(J.)g(Ballesteros)1452 685 y Fr(\003)353
837 y Fs(Carlos)g(III)h(Uni)n(v)o(ersity)c(of)j(Madrid)487
954 y(nemo@gsyc.inf.uc3m.es)2346 721 y(Ser)n(gio)h(Ar)6
b(\264)-39 b(ev)n(alo)2949 685 y Fr(y)1888 837 y Fs(Re)o(y)24
b(Juan)h(Carlos)g(Uni)n(v)o(ersity)e(of)h(Madrid)2182
954 y(s.are)n(v)n(alo@escet.urjc.es)617 1304 y Fq(Abstract)-83
1511 y Fp(The)31 b(\002le)f(is)i(a)e(well-under)o(stood)f(and)g(very)i
(simple)g(abstr)o(ac-)-182 1611 y(tion,)d(whic)o(h)e(has)h(been)f
(successfully)h(used)g(in)g(both)f(centr)o(alized)-182
1710 y(and)g(distrib)n(uted)g(systems.)47 b(Howe)o(ver)-9
b(,)28 b(\002les)f(ar)m(e)h(not)e(e)n(xpr)m(essive)-182
1810 y(enough)e(to)j(captur)m(e)f(high-le)o(vel)f(data)h(semantics)h
(and)f(r)m(elation-)-182 1910 y(ships,)18 b(including)d(sharing)i(and)f
(data)h(dependencies.)22 b(How)c(many)-182 2009 y(times)27
b(has)f(your)h(oper)o(ating)e(system)i(tr)o(anslated)f(a)g(JPEG)h
(\002gur)m(e)-182 2109 y(into)f(postscript,)i(automatically)d(when)h
(needed?)43 b(How)26 b(do)h(\002les)-182 2209 y(help)33
b(applications)g(to)h(deal)g(with)h(heter)l(o)o(g)o(eneity?)65
b(Mor)m(eo)o(ver)-9 b(,)-182 2308 y(optimization)40 b(opportunities)g
(ar)m(e)h(lost)h(due)f(to)h(the)f(low-le)o(vel)-182 2408
y(natur)m(e)20 b(of)i Fo(read)f Fp(and)f Fo(write)p Fp(;)h(e)o(.g)o(.)
28 b(in)21 b(NFS)h(data)e(is)i(sent)g(twice)-182 2507
y(thr)l(ough)38 b(the)i(network)g(when)g(copying)f(a)h(r)m(emote)g
(\002le)g(within)-182 2607 y(the)32 b(same)h(\002le)g(server)-9
b(.)62 b(W)-8 b(e)34 b(feel)f(that)f(a)h(better)g(abstr)o(action)e(is)
-182 2707 y(needed)f(and)g(pr)l(opose)h(an)f(alternate)h(abstr)o
(action,)h(the)g(\223)p Fn(box)p Fp(\224,)-182 2806 y(to)21
b(solve)g(the)g(pr)l(oblems)g(mentioned)f(abo)o(ve)o(.)26
b(Boxes,)21 b(while)h(being)-182 2906 y(as)30 b(simple)g(as)h(\002les,)
h(ar)m(e)e(mor)m(e)h(e)n(xpr)m(essive)o(.)54 b(W)-8 b(e)31
b(intend)f(to)g(use)-182 3006 y(boxes)d(as)h(a)f(centr)o(al)g(abstr)o
(action)f(for)i(a)g(distrib)n(uted)f(adaptable)-182 3105
y(oper)o(ating)18 b(system)j(we)g(ar)m(e)f(b)n(uilding)o(.)-182
3561 y Fq(1)o(.)25 b(Intr)n(oduction)-83 3800 y Fn(The)f
(\223\002le\224)h(has)g(been)f(used)g(as)h(an)g(OS)g(abstraction)e
(since)i(the)-182 3900 y(epoch.)51 b(Mainly)-5 b(,)30
b(because)f(it)h(is)g(simple)g(to)f(understand.)51 b(Most)-182
3999 y(users)-11 3969 y Fm(1)47 3999 y Fn(are)24 b(comfortable)f
(thinking)g(the)o(y)h(are)h Fp(opening)p Fn(,)e Fp(r)m(eading)p
Fn(,)-182 4099 y Fp(writing)p Fn(,)32 b(and)d Fp(closing)h
Fn(\002les.)55 b(Similarly)-5 b(,)31 b(some)f(operating)e(sys-)-182
4199 y(tems,)c(most)g(notably)e(Plan)h(9)h([7)o(],)g(rely)f(on)g(the)h
(\002le)g(as)g(their)f(cen-)-182 4298 y(tral)31 b(abstraction.)55
b(By)31 b(allo)n(wing)f(remote)g(access)i(to)e(\002les,)35
b(the)o(y)-182 4398 y(pro)o(vide)23 b(a)j(simple)g(yet)f(po)n(werful)f
(structure)h(for)g(b)n(uilding)f(a)i(dis-)-182 4498 y(trib)n(uted)19
b(computing)f(system.)-83 4605 y(But,)37 b(the)c(apparent)e(simplicity)
i(of)g(\002les)h(hides)f(comple)o(xity)-5 b(,)-182 4705
y(which,)24 b(sooner)g(or)g(later)m(,)h(has)f(to)h(be)f(sho)n(wn)g(to)h
(the)f(user)-5 b(.)38 b(Ab)n(use)-182 4804 y(of)31 b
Fl(ioctl)g Fn(in)g(UNIX)h(en)m(vironments)c(is)33 b(an)e(e)o(xample.)57
b(Estab-)-182 4904 y(lishment)18 b(of)h(netw)o(ork)f(connections)f(is)j
(another)e(e)o(xample,)g(where)p -182 5007 788 4 v -99
5060 a Fk(\003)-63 5083 y Fj(P)o(artially)i(supported)e(by)f(Spanish)h
(CICYT)f(grant)h(#TIC-98-1032-C03-03)-96 5142 y Fk(y)-63
5165 y Fj(P)o(artially)28 b(supported)e(by)e(Spanish)i(CICYT)f(grant)g
(#TIC-98-1032-C03-01)-182 5244 y(and)17 b(CAM)g(grant)h
(#CAM-07T/0012/1998)-92 5302 y Fi(1)-63 5325 y Fj(By)f(\223user\224)h
(we)g(mean)f(not)g(only)h(humans,)f(b)o(ut)g(also)h(most)f
(applications.)1974 1304 y Fn(additional)22 b(comple)o(xity)g(is)i
(needed)e(when)h(one)h(uses)g(the)f(\002le)i(ab-)1974
1404 y(straction.)56 b(All)31 b(in)g(all,)i(a)e(netw)o(ork)f
(connection)e(should)i(not)g(be)1974 1503 y(a)g(concern)e(for)h(OS)h
(users,)i(as)f(the)o(y)e(usually)g(think)g(in)h(terms)f(of)1974
1603 y(\223)p Fp(copying)18 b Fn(some)i(data)g(from)g(one)f(place)h(to)
g(another\224.)2073 1703 y(The)29 b(lo)n(w-le)n(v)o(el,)h(ancient,)h
(nature)d(of)h(traditional)g Fl(read)g Fn(and)1974 1802
y Fl(write)16 b Fn(operations)f(is)i(f)o(ar)f(from)g(the)g(semantics)g
(of)h(operations)d(as)1974 1902 y(seen)26 b(by)f(applications.)40
b(Consider)25 b(for)h(instance)f(an)h(application)1974
2001 y(cop)o(ying)18 b(a)j(\002le.)k(It)c(e)o(x)o(ecutes:)p
2208 2094 1502 4 v 2208 2307 4 214 v 2336 2174 a Fl(while)48
b(\(read\(aFile,buffer\)\))2485 2273 y(write\(otherFile,buffer\);)p
3705 2307 V 2208 2310 1502 4 v 2073 2436 a Fn(When)33
b(both)g Fl(aFile)f Fn(and)h Fl(otherFile)f Fn(are)h(remote)f(\002les)
1974 2535 y(held)16 b(in)i(the)f(same)g(\002le)h(serv)o(er)m(,)e(ho)n
(w)g(man)o(y)g(times)i(should)e(\002le)h(data)1974 2635
y(cross)26 b(the)g(netw)o(ork?)40 b(The)26 b(answer)f(should)g(be)h
Fp(none)p Fn(,)g(b)n(ut)f(e)o(xpe-)1974 2735 y(rience)f(says)i
Fp(two)p Fn(.)40 b(Under)24 b(man)o(y)g(circumstances,)h(data)g(cop)o
(ying)1974 2834 y(can)20 b(be)g(a)n(v)n(oided)g(if)h(the)f(system)h
(kno)n(ws)f Fp(both)f Fn(the)i(source)e(and)h(the)1974
2934 y(tar)o(get)15 b(data)h(locations.)23 b(Maintaining)14
b Fl(read)i Fn(and)g Fl(write)f Fn(as)i(sep-)1974 3034
y(arate)28 b(operations)f(harms)h(ef)n(\002cienc)o(y)-5
b(.)48 b(Box)o(es)29 b(pro)o(vide)d(a)j(single)1974 3133
y(operation)23 b(\()p Fl(copy)p Fn(\))h(as)h(a)h(replacement)d(for)h
Fl(read)h Fn(and)f Fl(write)p Fn(.)1974 3233 y(It)i(speci\002es)g(both)
f(the)g(source)g(and)g(tar)o(get)g(location)g(of)g(the)h(data.)1974
3332 y(Thus,)d(cop)o(ying)e(box)o(es)i(can)g(be)g(potentially)f(more)g
(ef)n(\002cient)h(than)1974 3432 y(cop)o(ying)29 b(\002les)j(\(by)f
(means)g(of)f(\002le)i Fl(read)f Fn(and)g Fl(write)g
Fn(opera-)1974 3532 y(tions\).)2073 3631 y(Going)f(further)m(,)h(is)h
(it)f(adequate)f(to)h(maintain)e(the)i(notion)e(of)1974
3731 y(\223opening\224)g(a)k(\002le)f(on)g(a)g(distrib)n(uted)f
(system?)60 b(Self)32 b(contained)1974 3831 y(operations)f(\(which)h
(do)h(not)g(require)e(maintaining)h(a)h(\223connec-)1974
3930 y(tion\224\))27 b(can)g(be)g(more)g(adequate)f(in)h(a)h(distrib)n
(uted)e(en)m(vironment.)1974 4030 y(This)h(has)h(been)e(sho)n(wn)g(by)h
(systems)h(we)f(use)h(e)n(v)o(eryday)c(includ-)1974 4129
y(ing)e(stateless)h(\002le)g(systems)g(lik)o(e)f(NFS)h([9)o(].)31
b(On)22 b(mobile)g(en)m(viron-)1974 4229 y(ments,)32
b(such)e(a)n(v)n(oidance)f(of)h(connection)e(maintenance)g(can)i(be)
1974 4329 y(e)n(v)o(en)19 b(more)h(bene\002cial.)26 b(Box)o(es)20
b(are)g(operated)f(by)i(means)f(of)g(self-)1974 4428
y(contained)25 b(operations)f(which)i(do)g(not)g(depend)f(on)h
(maintaining)1974 4528 y(\(in)20 b(the)g(serv)o(er\))f(a)i(per)n
(-client)e(\223connection\224)f(state.)2073 4628 y(Consider)k(also)h
(some)f(data)g(being)g(shared)f(by)h(dif)n(ferent)f(users)1974
4727 y(or)c(applications.)23 b(Ho)n(w)17 b(do)h(\002les)g(capture)f
(and)g(handle)f(sharing)h(se-)1974 4827 y(mantics?)31
b(Usually)22 b(on)g(a)h(share-all-or)n(-nothing)18 b(basis,)23
b(and)f(typi-)1974 4926 y(cally)h(imposing)f(the)i(same)f(sharing)g
(semantics)g(to)h(e)n(v)o(ery)e(shared)1974 5026 y(\002le)28
b([9)o(,)g(10)o(].)46 b(Box)o(es)28 b(pro)o(vide)d(a)j
Fl(share)f Fn(operation)e(to)j(e)o(xpress)1974 5126 y(that)19
b(tw)o(o)h(dif)n(ferent)d(box)o(es)h(should)g(be)i(seen)f(as)h(a)f
(single)g(one.)25 b(The)1974 5225 y(high)18 b(le)n(v)o(el)g(of)h(the)f
(abstraction)g(allo)n(ws)h(dif)n(ferent)e(underlying)f(im-)1974
5325 y(plementations)i(on)i(a)h(per)n(-box)d(basis.)p
eop
%%Page: 2 2
2 1 bop -83 83 a Fn(Y)-8 b(et)32 b(another)d(incon)m(v)o(enience)f(of)j
(most)g(\002le)h(systems)g(is)g(that)-182 183 y(the)o(y)19
b(pro)o(vide)f(either:)-120 363 y(1.)41 b(Untyped)14
b(\002les,)j(which)d(do)h(not)g(capture)g(application)f(seman-)-16
462 y(tics)28 b(and)e(are)h(error)f(prone)g(\(e.g.)45
b(the)o(y)27 b(can)g(lead)g(to)g(binary)-16 562 y(process)22
b(images)g(being)f(\223nicely\224)h(displayed)f(on)h(the)h(user')-5
b(s)-16 662 y(terminal\).)-120 847 y(2.)41 b(Strongly)15
b(typed)h(\002les,)i(which)f(are)f(typically)g(too)h(restricti)n(v)o
(e.)-16 946 y(The)o(y)25 b(bring)g(the)i(user)f(into)g(frustration:)36
b(editors)26 b(refuse)g(to)-16 1046 y(edit)k(\002les,)j(because)c
(their)h(type)g(is)h(not)e(\223te)o(xt\224;)35 b(compilers)-16
1146 y(refuse)22 b(to)i(compile)e(compiler)g(generated)g(source)g
(\002les,)j(be-)-16 1245 y(cause)34 b(the)o(y)g(are)g(\223output\224)f
(\002les;)43 b(etc.)68 b(This)35 b(model)f(also)-16 1345
y(raises)28 b(the)h(question)e(of)h(which)f(types)h(should)g(the)g
(system)-16 1444 y(pro)o(vide)18 b(and)h(ho)n(w)h(to)g(b)n(uild)g(ne)n
(w)g(ones.)-83 1625 y(In)c(both)g(cases,)h(opportunities)d(to)j
(automate)e(data)h(con)m(v)o(ersions)-182 1724 y(are)25
b(lost.)41 b(As)26 b(an)f(e)o(xample,)g(\002gures)g(written)g(using)g
Fh(FIG)35 b Fn(format)-182 1824 y(can)20 b(be)g(translated)g(to)g
(encapsulated)f(postscript)h(by)g(using)g(a)h(con-)-182
1924 y(v)o(erter)-5 b(.)39 b(Being)26 b(the)f(con)m(v)o(ersion)e
(really)i(simple,)h(it)g(is)g(often)f(hard)-182 2023
y(for)19 b(users)i(to)f(automate\227e)n(v)o(en)e(on)i(strongly)e(typed)
i(\002le)h(systems.)-182 2123 y(\(Of)31 b(course,)j Fl(make)d
Fn(or)g(a)i(similar)e(program)f(can)h(be)h(used,)i(b)n(ut)-182
2222 y(\002les)27 b(are)g(not)f(helping)f(to)i(automate)e(the)i(task.)
44 b(Besides,)29 b(mak)o(e-)-182 2322 y(\002les)j(tend)f(to)h(get)f
(comple)o(x)f(quickly)-5 b(,)33 b(and)e(man)o(y)f(users)i(w)o(ould)-182
2422 y(consider)21 b(them)h(as)i(part)e(of)g(the)h(problem,)e(not)h(as)
i(part)e(of)g(the)h(so-)-182 2521 y(lution.\))-83 2626
y(Box)o(es)28 b(are)f(typed,)h(and)f(need)g(to)g(be)h(type-compatible)c
(to)k(be)-182 2725 y(copied)h(or)h(shared.)55 b(Ho)n(we)n(v)o(er)m(,)31
b(box)o(es)e(can)i(be)f(type-con)m(v)o(erted)-182 2825
y(implicitly)-5 b(,)28 b(on)f(demand,)h(to)g(alle)n(viate)f(user)h
(frustration.)46 b(There)-182 2925 y(is)35 b(a)g(per)n(-application)d
(type-con)m(v)o(erter)f(set)k(to)g(automate)e(trans-)-182
3024 y(lations.)57 b(By)31 b(using)f(con)m(v)o(erters,)h(box)o(es)f
(help)g(in)h(tw)o(o)h(dif)n(ferent)-182 3124 y(w)o(ays:)25
b(\(1\))20 b(the)o(y)g(in)m(v)n(ok)o(e)f(translators,)g(automatically)
-5 b(,)18 b(to)j(perform)-182 3223 y(transformations;)c(and)j(\(2\))f
(the)o(y)h(are)g(able)g(to)g(maintain)f(the)h(\223gen-)-182
3323 y(erated\224)15 b(data)h(up)g(to)g(date)g(\(as)h(it)g(will)g(be)f
(seen)g(in)h(section)f(2.3\).)22 b(The)-182 3423 y(con)m(v)o(erter)17
b(set)k(de\002nes)f(the)g(strength)g(of)g(the)g(typing)f(with)h(box)o
(es.)-83 3527 y(Some)41 b(applications)f(might)g(tailor)h(their)g(con)m
(v)o(erter)e(set)j(to)-182 3627 y(maintain)29 b(the)g(strongly-typed)e
(nature)i(of)h(box)o(es,)h(while)e(others)-182 3726 y(might)14
b(use)i(it)g(to)g(ef)n(fecti)n(v)o(ely)e(nullify)g(the)i(type)f(system)
g(\(e.g.)23 b(by)15 b(in-)-182 3826 y(serting)g(an)g(uni)n(v)o(ersal)f
(type)h(con)m(v)o(erter\).)20 b(Therefore,)14 b(the)i(type)f(sys-)-182
3926 y(tem)g(used)g(for)g(box)o(es)g(is)h(not)g(as)g(restricti)n(v)o(e)
f(as)h(traditional)e(strongly)-182 4025 y(typed)22 b(\002le)j
(systems\227users)f(can)g(relax)f(and)g(adjust)h(it)g(at)h(will)f(by)
-182 4125 y(means)19 b(of)h(the)h(con)m(v)o(erter)c(set.)-83
4229 y(Finally)-5 b(,)17 b(another)f(de\002cienc)o(y)g(of)h(the)h
(\002le)g(abstraction)e(is)j(that)e(it)-182 4329 y(w)o(as)24
b(designed)e(for)g(traditional)g(computing)f(systems)j(with)f(some)-182
4428 y Fp(cor)m(e)30 b Fn(memory)-5 b(,)32 b(and)e(a)h(b)n(unch)f(of)g
Fp(secondary)g Fn(storage.)56 b(No)n(w)o(a-)-182 4528
y(days,)25 b(neither)g(palmtops)f(nor)g(smart)h(cards)g(ha)n(v)o(e)f
(disks,)j(and)d(re-)-182 4628 y(mote)18 b(memory)f(can)i(ha)n(v)o(e)f
(better)g(latenc)o(y)g(than)h(a)g(local)g(disk.)24 b(The)-182
4727 y(distinction)j(between)g(disk-memory)e(and)i(core-memory)e(is)j
(not)-182 4827 y(so)c(clear)-5 b(.)39 b(The)24 b(need)g(to)g
Fp(patc)o(h)f Fn(the)i(\002le)g(abstraction)e(with)i(a)g(sep-)-182
4926 y(arate)h Fp(memory)g(map)f Fn(operation)f(and)i(the)g(need)f(to)h
(emulate)g(\002les)-182 5026 y(on)d(disk-less)h(en)m(vironments)d
(\(e.g.)35 b(PD)m(As\),)25 b(equipped)c(with)j(just)-182
5126 y(a)j(b)n(unch)f(of)h(non-v)n(olatile)e(memory)-5
b(,)26 b(can)h(be)g(symptoms)f(claim-)-182 5225 y(ing)j(that)g(\002les)
h(are)g(an)f(old)g(concept,)h(suggesting)e(that)i(dif)n(ferent)-182
5325 y(abstractions)19 b(ha)n(v)o(e)h(to)g(be)g(de)n(vised.)2073
83 y(Certainly)-5 b(,)34 b(it)e(w)o(ould)f(be)h(feasible)f(to)h
(implement)e(a)i(higher)n(-)1974 183 y(le)n(v)o(el)19
b(abstraction)e(on)i(top)g(of)g(\002les.)25 b(Ho)n(we)n(v)o(er)m(,)17
b(box)o(es)h(are)h(as)h(sim-)1974 282 y(ple)29 b(as)i(\002les)f(and)f
(could)g(be)h(used)f(as)h(a)g(central)f(abstraction)g(for)1974
382 y(structuring)17 b(OS)i(services\227without)e(using)h(yet)g
(another)f(layer)h(of)1974 482 y(softw)o(are)23 b(to)h(adapt,)g
(inadequate,)f(lo)n(wer)n(-le)n(v)o(el)f(system)i(services.)1974
581 y(Note)30 b(that)f(introducing)e(another)i(layer)g(of)g(softw)o
(are)h(on)f(top)g(of)1974 681 y(\002les)18 b(to)g(implement)f(a)h
(box-lik)o(e)e(abstraction)g(is)j(lik)o(ely)e(to)h(de)o(grade)1974
780 y(system)i(performance.)2073 880 y(In)d(a)f(fe)n(w)h(w)o(ords,)f
(the)h(\002le)g(is)g(a)g(good)e(and)h(simple)g(concept.)23
b(But)1974 980 y(other)g(abstractions,)h(lik)o(e)g(the)g(one)f(we)h
(are)g(proposing,)e(could)h(be)1974 1080 y(a)j(better)g(choice)f(for)g
(modern)g(computing)e(systems.)43 b(It)26 b(has)h(just)1974
1179 y(been)20 b(the)i(successfulness)f(of)g(\002les,)h(the)f(one)g
(cutting)f(the)i(birth)e(of)1974 1279 y(ne)n(w)-5 b(,)28
b(potentially)d(better)m(,)j(alternati)n(v)o(es.)44 b(Sadly)-5
b(,)28 b(e)n(v)o(en)e(those)h(au-)1974 1378 y(thors)19
b(who)g(adv)n(ocate)f(that)h(the)g(\223e)n(v)o(erything)e(is)j(a)g
(\002le\224)g(model)e(has)1974 1478 y(had)25 b(its)i(days,)f(ended)e
(up)i(proposing)d(\223inte)o(grated)h(\002le)i(systems\224)1974
1578 y(as)e(the)g(replacement)e(for)i(\002le)g(systems)g([3].)36
b(W)-7 b(e)25 b(think)e(it)h(is)h(time)1974 1677 y(to)d(seek)h(for)e(a)
i Fp(ne)o(w)g Fn(abstraction,)e(that)h(could)g(ful\002ll)g(the)h(needs)
e(of)1974 1777 y(modern)k(computing)f(systems.)45 b(In)26
b(what)g(follo)n(ws)h(we)f(try)h(to)g(do)1974 1877 y(so.)1974
2110 y Fq(2.)d(The)i(box)2073 2327 y Fn(A)34 b(box)f(is)h(an)g(al)o(w)o
(ays-opened)d(recipient)i(containing)e(some)1974 2427
y(data.)j(System)24 b(resources)e(ranging)g(from)g(an)i(entire)f
(application,)1974 2526 y(to)18 b(a)g(user)n(-settable)f(v)n(ariable,)g
(can)g(be)h(represented)d(by)j(box)o(es.)23 b(Ev-)1974
2626 y(ery)d(box)f(\(see)h(\002gure)g(1\):)2036 2793
y(1.)41 b(is)21 b(typed,)2036 2960 y(2.)41 b(may)30 b(contain)g(inner)f
(box)o(es,)j(and)f(might)e(be)i(contained)e(in)2140 3060
y(outer)19 b(box)o(es,)2036 3227 y(3.)41 b(can)20 b(be)g(handled)f
(with)h(three)g(operations:)2140 3395 y Fg(copy\(otherBox,aBox\))38
b Fn(which)44 b(copies)g Fl(aBox)h Fn(to)2323 3494 y
Fl(otherBox)p Fn(,)57 b(\(pro)o(vided)49 b(both)h(box)o(es)h(are)g
(type-)2323 3594 y(compatible\).)2140 3727 y Fg(share\(otherBox,aBox\))
38 b Fn(which)25 b(mak)o(es)g Fl(other-)2323 3827 y(Box)30
b Fn(become)f Fp(lo)o(gically)h Fn(the)g(same)g(as)h
Fl(aBox)g Fn(\(pro-)2323 3927 y(vided)19 b(both)g(box)o(es)g(are)h
(type-compatible\).)2140 4060 y Fg(select\(aBox,aSelector\))p
Ff(\))p Fg(innerBox)2323 4160 y Fn(which)f(returns)h(a)h(handle)e(for)h
(a)h(box)f(inside)g(the)g(gi)n(v)o(en)2323 4259 y(one\227according)15
b(to)k(the)f(name)g(or)g(selector)g(supplied.)2140 4427
y(When)h Fl(aBox)g Fn(and)g Fl(otherBox)f Fn(are)h(not)g
(type-compatible,)2140 4526 y(a)26 b Fp(type)f(con)m(verter)h
Fn(must)f(be)g(used)g(to)h(perform)d(a)j(cop)o(y)e(or)h(a)2140
4626 y(share)20 b(operation.)2140 4759 y(Box)d(operations)f(are)i
(atomic,)f(in)h(the)f(sense)h(that)g(concurrent)2140
4859 y(operations)f(on)i(a)h(gi)n(v)o(en)d(box)i(will)g(be)g
(serialized)g(by)g(the)g(box)2140 4959 y(implementation.)2073
5126 y(T)-7 b(o)50 b(operate)f(on)g(pairs)h(of)f(box)o(es)g(which)g
(are)h(not)f(type-)1974 5225 y(compatible,)33 b(e)n(v)o(ery)e
(application)f(has)i(a)h(set)f(of)g(con)m(v)o(erters,)g(in-)1974
5325 y(cluding:)p eop
%%Page: 3 3
3 2 bop 640 669 a @beginspecial 0 @llx 0 @lly 534 @urx
144 @ury 2976 @rwi @setspecial
%%BeginDocument: copyNlink.eps
%!PS-Adobe-2.0 EPSF-2.0
%%Title: copyNlink.eps
%%Creator: fig2dev Version 3.2 Patchlevel 1
%%CreationDate: Tue Feb 9 17:09:48 1999
%%For: nemo@nautilus.gsyc.inf.uc3m.es (Francisco J. Ballesteros,1.3D02 (3rd floor;bldg 1),+34+1-624x9497,,)
%%Orientation: Portrait
%%BoundingBox: 0 0 534 144
%%Pages: 0
%%BeginSetup
%%EndSetup
%%Magnification: 1.0000
%%EndComments
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def
end
save
-4.0 160.0 translate
1 -1 scale
/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul srgb} bind def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
%%EndProlog
$F2psBegin
10 setmiterlimit
n -1000 3658 m -1000 -1000 l 9958 -1000 l 9958 3658 l cp clip
0.06000 0.06000 sc
% Polyline
7.500 slw
n 825 525 m 2025 525 l 2025 1275 l 825 1275 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 3225 525 m 4425 525 l 4425 1275 l 3225 1275 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 3600 750 m 4350 750 l 4350 975 l 3600 975 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 825 1875 m 2025 1875 l 2025 2625 l 825 2625 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 975 2025 m 1200 2025 l 1200 2250 l 975 2250 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 1425 2025 m 1650 2025 l 1650 2250 l 1425 2250 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 1725 2325 m 1950 2325 l 1950 2550 l 1725 2550 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 3225 1875 m 4425 1875 l 4425 2625 l 3225 2625 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 3375 2025 m 3600 2025 l 3600 2250 l 3375 2250 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 3825 2025 m 4050 2025 l 4050 2250 l 3825 2250 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 4125 2325 m 4350 2325 l 4350 2550 l 4125 2550 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 5325 525 m 6525 525 l 6525 1275 l 5325 1275 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 5475 675 m 5700 675 l 5700 900 l 5475 900 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 5925 675 m 6150 675 l 6150 900 l 5925 900 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 6225 975 m 6450 975 l 6450 1200 l 6225 1200 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 7725 525 m 8925 525 l 8925 1275 l 7725 1275 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 5325 1875 m 6525 1875 l 6525 2625 l 5325 2625 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 5475 2025 m 5700 2025 l 5700 2250 l 5475 2250 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 5925 2025 m 6150 2025 l 6150 2250 l 5925 2250 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 6225 2325 m 6450 2325 l 6450 2550 l 6225 2550 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
15.000 slw
n 5475 1950 m 5550 2025 l 5475 2025 l 5475 2250 l 5700 2250 l 5700 2025 l
5625 2025 l 5700 1950 l gs col0 s gr
% Polyline
7.500 slw
n 7725 1875 m 8925 1875 l 8925 2625 l 7725 2625 l cp gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 6450 2625 m 7875 2625 l gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
n 6525 2175 m 7725 2175 l gs col7 0.95 shd ef gr gs col0 s gr
% Polyline
30.000 slw
n 3300 300 m 3525 525 l 3225 525 l 3225 1275 l 4425 1275 l 4425 525 l
4050 525 l 4275 300 l gs col0 s gr
% Polyline
n 900 1650 m 1125 1875 l 825 1875 l 825 2625 l 2025 2625 l 2025 1875 l
1650 1875 l 1875 1650 l gs col0 s gr
% Polyline
n 3300 1650 m 3525 1875 l 3225 1875 l 3225 2625 l 4425 2625 l 4425 1875 l
4050 1875 l 4275 1650 l gs col0 s gr
% Polyline
15.000 slw
n 975 1950 m 1050 2025 l 975 2025 l 975 2250 l 1200 2250 l 1200 2025 l
1125 2025 l 1200 1950 l gs col0 s gr
% Polyline
n 1425 1950 m 1500 2025 l 1425 2025 l 1425 2250 l 1650 2250 l 1650 2025 l
1575 2025 l 1650 1950 l gs col0 s gr
% Polyline
n 1725 2250 m 1800 2325 l 1725 2325 l 1725 2550 l 1950 2550 l 1950 2325 l
1875 2325 l 1950 2250 l gs col0 s gr
% Polyline
n 3375 1950 m 3450 2025 l 3375 2025 l 3375 2250 l 3600 2250 l 3600 2025 l
3525 2025 l 3600 1950 l gs col0 s gr
% Polyline
n 3825 1950 m 3900 2025 l 3825 2025 l 3825 2250 l 4050 2250 l 4050 2025 l
3975 2025 l 4050 1950 l gs col0 s gr
% Polyline
n 4125 2250 m 4200 2325 l 4125 2325 l 4125 2550 l 4350 2550 l 4350 2325 l
4275 2325 l 4350 2250 l gs col0 s gr
% Polyline
n 6225 900 m 6300 975 l 6225 975 l 6225 1200 l 6450 1200 l 6450 975 l
6375 975 l 6450 900 l gs col0 s gr
% Polyline
n 5925 600 m 6000 675 l 5925 675 l 5925 900 l 6150 900 l 6150 675 l
6075 675 l 6150 600 l gs col0 s gr
% Polyline
n 5475 600 m 5550 675 l 5475 675 l 5475 900 l 5700 900 l 5700 675 l
5625 675 l 5700 600 l gs col0 s gr
% Polyline
n 3600 675 m 3675 750 l 3600 750 l 3600 975 l 4350 975 l 4350 750 l
4200 750 l 4275 675 l gs col0 s gr
% Polyline
30.000 slw
gs clippath
2653 810 m 3013 900 l 2653 990 l 3120 990 l 3120 810 l cp
clip
n 2100 900 m 3075 900 l gs col0 s gr gr
% arrowhead
n 2653 810 m 3013 900 l 2653 990 l col0 s
% Polyline
gs clippath
7153 810 m 7513 900 l 7153 990 l 7620 990 l 7620 810 l cp
clip
n 6600 900 m 7575 900 l gs col0 s gr gr
% arrowhead
n 7153 810 m 7513 900 l 7153 990 l col0 s
% Polyline
n 5400 300 m 5625 525 l 5325 525 l 5325 1275 l 6525 1275 l 6525 525 l
6150 525 l 6375 300 l gs col0 s gr
% Polyline
n 7800 300 m 8025 525 l 7725 525 l 7725 1275 l 8925 1275 l 8925 525 l
8550 525 l 8775 300 l gs col0 s gr
% Polyline
15.000 slw
n 5925 1950 m 6000 2025 l 5925 2025 l 5925 2250 l 6150 2250 l 6150 2025 l
6075 2025 l 6150 1950 l gs col0 s gr
% Polyline
0.000 slw
n 6375 1950 m 7875 1950 l 7875 2625 l 6375 2625 l cp gs col7 0.95 shd ef gr
% Polyline
30.000 slw
n 7950 1650 m 8100 1875 l 7725 1875 l 7725 1950 l 6525 1950 l 6525 1875 l
6150 1875 l 6300 1650 l gs col0 s gr
% Polyline
n 8700 1650 m 8550 1875 l 8925 1875 l 8925 2625 l 5325 2625 l 5325 1875 l
5550 1875 l 5400 1650 l gs col0 s gr
% Polyline
15.000 slw
n 6225 2250 m 6300 2325 l 6225 2325 l 6225 2550 l 6450 2550 l 6450 2325 l
6375 2325 l 6450 2250 l gs col0 s gr
% Polyline
7.500 slw
n 6225 2325 m 6450 2325 l 6450 2550 l 6225 2550 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
15.000 slw
n 6225 2250 m 6300 2325 l 6225 2325 l 6225 2550 l 6450 2550 l 6450 2325 l
6375 2325 l 6450 2250 l gs col0 s gr
% Polyline
30.000 slw
n 900 300 m 1125 525 l 825 525 l 825 1275 l 2025 1275 l 2025 525 l
1650 525 l 1875 300 l gs col0 s gr
% Polyline
15.000 slw
n 1425 600 m 1500 675 l 1425 675 l 1425 900 l 1650 900 l 1650 675 l
1575 675 l 1650 600 l gs col0 s gr
% Polyline
n 1725 900 m 1800 975 l 1725 975 l 1725 1200 l 1950 1200 l 1950 975 l
1875 975 l 1950 900 l gs col0 s gr
% Polyline
7.500 slw
n 975 675 m 1200 675 l 1200 900 l 975 900 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 1425 675 m 1650 675 l 1650 900 l 1425 900 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
n 1725 975 m 1950 975 l 1950 1200 l 1725 1200 l cp gs col7 0.25 shd ef gr gs col0 s gr
% Polyline
15.000 slw
n 975 600 m 1050 675 l 975 675 l 975 900 l 1200 900 l 1200 675 l
1125 675 l 1200 600 l gs col0 s gr
% Polyline
n 1425 600 m 1500 675 l 1425 675 l 1425 900 l 1650 900 l 1650 675 l
1575 675 l 1650 600 l gs col0 s gr
% Polyline
n 1725 900 m 1800 975 l 1725 975 l 1725 1200 l 1950 1200 l 1950 975 l
1875 975 l 1950 900 l gs col0 s gr
/Helvetica ff 240.00 scf sf
2250 675 m
gs 1 -1 sc (copy) col0 sh gr
/Helvetica ff 240.00 scf sf
75 975 m
gs 1 -1 sc (before) col0 sh gr
/Helvetica ff 240.00 scf sf
75 2325 m
gs 1 -1 sc (after) col0 sh gr
/Helvetica ff 240.00 scf sf
6750 675 m
gs 1 -1 sc (share) col0 sh gr
$F2psEnd
rs
%%EndDocument
@endspecial 824 851 a Fe(Figure)23 b(1.)g(Cop)o(ying)f(and)h(sharing)g
(type-compatib)o(le)f(bo)n(x)o(es)-99 1202 y Ff(\017)41
b Fn(A)23 b(set)h(of)f(translators,)g(used)g(to)h(automatically)e
(\223adapt\224)g(the)-16 1301 y(box)d(type)g(when)g(needed,)f(by)i
(doing)e(some)i(transformation.)-16 1401 y(\(e.g.)61
b(the)33 b(L)350 1384 y Fm(A)380 1401 y Fn(T)417 1420
y(E)456 1401 y(X)g(con)m(v)o(erter)e(translates)h(L)1259
1384 y Fm(A)1289 1401 y Fn(T)1326 1420 y(E)1366 1401
y(X)h(document)-16 1500 y(box)o(es)19 b(into)h(D)m(VI)g(box)o(es\).)-99
1714 y Ff(\017)41 b Fn(A)21 b(set)g(of)f(type)g(compatibility)f
(declarations.)24 b(\(e.g.)h(A)c(L)1620 1697 y Fm(A)1650
1714 y Fn(T)1687 1732 y(E)1726 1714 y(X)-16 1813 y(document)d(can)i(be)
g(considered)e(to)j(be)f(a)g(te)o(xt\).)-182 2015 y(When)k(an)h
(application)e(issues)i(a)g Fl(copy)g Fn(\(or)f Fl(share)p
Fn(\))g(operation)-182 2114 y(requiring)31 b(type)i(con)m(v)o(ersion,)h
(the)g(\(per)n(-application\))c(con)m(v)o(erter)-182
2214 y(set)17 b(is)g(searched)e(for)h(a)g(suitable)g(con)m(v)o(erter)-5
b(.)22 b(Con)m(v)o(erters)14 b(and)i(those)-182 2313
y(system)f(entities)h(which)e(are)h(not)g(simple)h(\223data\224,)f(can)
g(be)g(also)h(seen)-182 2413 y(as)22 b(box)o(es.)27 b(Con)m(v)o(erters)
20 b(can)h(be)g(modeled)f(as)i(box)o(es)f(which,)g(once)-182
2513 y(gi)n(v)o(en)26 b(some)i(input)f(box\(es\),)h(generate)e(ne)n(w)i
(contents)f(for)g(their)-182 2612 y(output)19 b(box\(es\).)-83
2724 y(No)n(w)-5 b(,)37 b(we)e(will)f(describe)g(box)f(operations)g(in)
h(more)f(detail,)-182 2823 y(sho)n(wing)d(ho)n(w)g(the)o(y)h(are)g(as)h
(simple)g(to)f(use)h(as)g(\002le)f(operations)-182 2923
y(are,)19 b(while)i(being)e(more)g(po)n(werful.)-182
3166 y Fd(2.1)o(.)j(Copying)g(boxes)-83 3409 y Fn(Assignment,)i(or)g
(cop)o(ying,)f(is)i(a)g(well-understood)c(operation)-182
3508 y(for)d(the)h(common)e(user)h(\(as)i(demonstrated)c(by)j
(popularity)e(of)h Fp(cut-)-182 3608 y(&-paste)p Fn(\).)30
b(The)22 b(box)g Fl(copy)g Fn(operation)f(resembles)h(e)o(xactly)f
(that,)-182 3707 y(as)g(seen)f(in)g(\002gure)g(1.)-83
3819 y(T)-7 b(o)27 b(gi)n(v)o(e)f(some)h(intuition,)g(traditional)f
(operations)f(including)-182 3918 y(message)36 b(deli)n(v)o(ering,)i
(reading)c(and)i(writing)g(data,)k(and)c(name)-182 4018
y(lookups,)18 b(can)h(be)h(done)f(by)g(cop)o(ying)f(box)o(es:)24
b(sending)19 b(a)h(message)-182 4118 y(is)g(a)g(matter)f(of)g(cop)o
(ying)f(the)h(message)h(box)e(from)h(the)g(sender)g(to)g(a)-182
4217 y(box)g(in)g(the)h(recei)n(v)o(er;)f(reading)f(some)i(data)g(from)
e(disk)i(is)h(a)f(matter)-182 4317 y(of)28 b(cop)o(ying)e(a)j(box)e
(from)g(the)h(disk)g(store)h(to)f(a)h(user)f(box)f(of)h(the)-182
4417 y(appropriate)17 b(type.)-83 4528 y(It)f(is)h(because)e
Fl(copy)g Fn(refers)h(to)f(both)g(source)g(and)g(tar)o(get)g(box)o(es,)
-182 4628 y(that)29 b(the)h(actual)f(implementation)e(of)j
Fl(copy)f Fn(can)g(be)h(as)g(simple)-182 4727 y(as)25
b(a)h(memory-to-memory)20 b(cop)o(y)k(\(when)g(box)o(es)g(share)h(both)
f(the)-182 4827 y(node)h(and)i(the)f(protection)f(domain\).)43
b(But)27 b(the)g(implementation)-182 4926 y(can)20 b(also)i(be)f(as)g
(comple)o(x)f(as)h(a)h(remote)e(IPC,)h(in)m(v)n(olving)e(separate)-182
5026 y(protection)31 b(domains)g(in)i(separate)g(nodes,)i(and)d
(requiring)f(data)-182 5126 y(translation)20 b(due)i(to)f
(architectural)g(\(or)g(application\))e(heterogene-)-182
5225 y(ity)-5 b(.)26 b(Finally)-5 b(,)20 b(e)o(xisting)g(techniques)f
(lik)o(e)i(cop)o(y)f(on)g(write)h(could)f(be)-182 5325
y(used)g(by)f(the)i(implementation)c(of)j(cop)o(y)-5
b(.)1974 1202 y Fd(2.2)o(.)23 b(Sharing)e(boxes)2073
1421 y Fn(Sharing)j(is)h(also)g(a)g(well-understood)c(operation.)36
b(If)25 b(a)g(box)e(is)1974 1520 y(being)16 b(shared,)h(those)g(who)f
(share)h(it)h(may)e(look)h(inside)g(and)f(handle)1974
1620 y(its)21 b(contents.)2073 1723 y(Box)o(es)30 b(pro)o(vide)e(a)i
Fp(shar)m(e)g Fn(operation)e(which,)k(once)d(in)m(v)n(ok)o(ed,)1974
1823 y(mak)o(es)d(the)g(in)m(v)n(olv)o(ed)e(box)o(es)i(beha)n(v)o(e)f
(as)i(a)f(single)g(box.)43 b(\(In)25 b(\002g-)1974 1922
y(ure)19 b(1,)g(after)g Fl(share)p Fn(,)g(the)g(box)g(is)h(the)g(same)f
(no)g(matter)g(the)h(open-)1974 2022 y(top)g(used.\))2073
2126 y(Although)27 b(similar)h(to)h(the)f Fl(link)g Fn(operation)f(on)h
(typical)f(\002le)1974 2225 y(systems,)32 b Fl(share)d
Fn(is)h(some)n(what)e(dif)n(ferent:)42 b(it)30 b(can)f(be)g(applied)
1974 2325 y(to)d(inner)f(box)o(es,)i(it)f(can)g(trigger)f(con)m(v)o
(erter)f(e)o(x)o(ecution)g(\(see)i(sec-)1974 2424 y(tion)j(2.3\),)i
(and)e(it)i(can)e(be)h(used)f(to)h(maintain)f(generated)f(box)o(es)1974
2524 y(up-to-date.)d(Moreo)o(v)o(er)m(,)18 b(box)o(es)i(do)g(not)h
Fp(need)h Fn(to)f(be)g(\223on)f(disk\224)h(to)1974 2624