--- /sys/doc/9.ps Mon Jun 12 21:25:24 2000 +++ /sys/doc/9.ps Mon Jul 22 21:37:04 2013 @@ -3129,6 +3129,7 @@ %%EndResource %!PS-Adobe-2.0 %%Version: 0.1 +%%Creator: troff, Plan 9 edition %%Pages: (atend) %%EndComments % @@ -3338,7 +3339,7 @@ /Dl { inpath - {pop pop neg lineto} + {neg lineto pop pop} {newpath neg moveto neg lineto stroke} ifelse } bind def @@ -4089,59 +4090,27 @@ (not) 4791 6508 w (a) 4985 6508 w (system out of a lot of little UNIXes.) 720 6628 w -(The) 970 6784 w -(problems) 1206 6784 w -(with) 1718 6784 w -(UNIX) 1978 6784 w -(were) 2268 6784 w -(too) 2553 6784 w -(deep) 2767 6784 w -(to) 3060 6784 w -(fix,) 3213 6784 w -(but) 3427 6784 w -(some) 3645 6784 w -(of) 3962 6784 w -(its) 4116 6784 w -(ideas) 4289 6784 w -(could) 4599 6784 w -(be) 4921 6784 w -(brought) 720 6904 w -(along.) 1158 6904 w -(The) 1541 6904 w -(best) 1772 6904 w -(was) 2029 6904 w -(its) 2262 6904 w -(use) 2429 6904 w -(of) 2648 6904 w -(the) 2796 6904 w -(file) 3000 6904 w -(system) 3200 6904 w -(to) 3589 6904 w -(coordinate) 3736 6904 w -(naming) 4301 6904 w -(of) 4713 6904 w -(and) 4860 6904 w 8 /S1 f -(__________________) 720 7004 w +(__________________) 720 6980 w 8 /LucidaSansUnicode00 f -(Appeared) 720 7104 w -(in) 1118 7104 w -(a) 1217 7104 w -(slightly) 1287 7104 w -(different) 1595 7104 w -(form) 1957 7104 w -(in) 2169 7104 w +(Appeared) 720 7080 w +(in) 1118 7080 w +(a) 1217 7080 w +(slightly) 1287 7080 w +(different) 1595 7080 w +(form) 1957 7080 w +(in) 2169 7080 w 8 /LucidaSans-Italic f -(Computing) 2268 7104 w -(Systems,) 2719 7104 w +(Computing) 2268 7080 w +(Systems,) 2719 7080 w 8 /LucidaSansUnicode00 f -(Vol) 3083 7104 w -(8) 3233 7104 w -(#3,) 3309 7104 w -(Summer) 3461 7104 w -(1995,) 3806 7104 w -(pp.) 4058 7104 w -(221-254.) 4210 7104 w +(Vol) 3083 7080 w +(8) 3233 7080 w +(#3,) 3309 7080 w +(Summer) 3461 7080 w +(1995,) 3806 7080 w +(pp.) 4058 7080 w +(221-254.) 4210 7080 w cleartomark showpage saveobj restore @@ -4152,663 +4121,673 @@ 2 pagesetup 10 /LucidaSansUnicode00 f (\255 2 \255) 2783 480 w -(access) 720 840 w -(to) 1077 840 w -(resources,) 1217 840 w -(even) 1761 840 w -(those,) 2029 840 w -(such) 2370 840 w -(as) 2638 840 w -(devices,) 2786 840 w -(not) 3218 840 w -(traditionally) 3420 840 w -(treated) 4041 840 w -(as) 4428 840 w -(files.) 4576 840 w -(For) 4884 840 w -(Plan) 720 960 w -(9,) 958 960 w -(we) 1089 960 w -(adopted) 1258 960 w -(this) 1692 960 w -(idea) 1907 960 w -(by) 2146 960 w -(designing) 2297 960 w -(a) 2809 960 w -(network-level) 2900 960 w -(protocol,) 3608 960 w -(called) 4080 960 w -(9P,) 4399 960 w -(to) 4585 960 w -(enable) 4719 960 w -(machines) 720 1080 w -(to) 1215 1080 w -(access) 1349 1080 w -(files) 1700 1080 w -(on) 1938 1080 w -(remote) 2097 1080 w -(systems.) 2477 1080 w -(Above) 2968 1080 w -(this,) 3305 1080 w -(we) 3553 1080 w -(built) 3723 1080 w -(a) 3980 1080 w -(naming) 4072 1080 w -(system) 4472 1080 w -(that) 4849 1080 w -(lets) 720 1200 w -(people) 934 1200 w -(and) 1303 1200 w -(their) 1524 1200 w -(computing) 1790 1200 w -(agents) 2351 1200 w -(build) 2715 1200 w -(customized) 3002 1200 w -(views) 3603 1200 w -(of) 3909 1200 w -(the) 4048 1200 w -(resources) 4244 1200 w -(in) 4754 1200 w -(the) 4885 1200 w -(network.) 720 1320 w -(This is) 1208 1320 w -(where) 1558 1320 w -(Plan) 1883 1320 w -(9) 2117 1320 w -(first) 2213 1320 w -(began) 2441 1320 w -(to) 2772 1320 w -(look) 2903 1320 w -(different:) 3145 1320 w -(a) 3628 1320 w -(Plan) 3716 1320 w -(9) 3950 1320 w -(user) 4046 1320 w -(builds) 4289 1320 w -(a) 4619 1320 w -(private) 4707 1320 w -(computing) 720 1440 w -(environment) 1274 1440 w -(and) 1919 1440 w -(recreates) 2133 1440 w -(it) 2611 1440 w -(wherever) 2711 1440 w -(desired,) 3186 1440 w -(rather) 3610 1440 w -(than) 3935 1440 w -(doing) 4184 1440 w -(all) 4494 1440 w -(comput\255) 4640 1440 w -(ing) 720 1560 w -(on) 911 1560 w -(a) 1072 1560 w -(private) 1165 1560 w -(machine.) 1536 1560 w -(It) 2046 1560 w -(soon) 2150 1560 w -(became) 2423 1560 w -(clear) 2835 1560 w -(that) 3105 1560 w -(this) 3334 1560 w -(model) 3551 1560 w -(was) 3892 1560 w -(richer) 4114 1560 w -(than) 4433 1560 w -(we) 4688 1560 w -(had) 4860 1560 w -(foreseen,) 720 1680 w -(and) 1229 1680 w -(the) 1466 1680 w -(ideas) 1678 1680 w -(of) 1989 1680 w -(per-process) 2144 1680 w -(name) 2793 1680 w -(spaces) 3116 1680 w -(and) 3499 1680 w -(file-system-like) 3735 1680 w -(resources) 4570 1680 w -(were extended throughout the system) 720 1800 w -10 /LucidaSansUnicode20 f -(\024) 2574 1800 w -10 /LucidaSansUnicode00 f -(to processes, graphics, even the network itself.) 2674 1800 w -(By) 970 1956 w -(1989) 1123 1956 w -(the) 1418 1956 w -(system) 1616 1956 w -(had) 1999 1956 w -(become) 2223 1956 w -(solid) 2647 1956 w -(enough) 2924 1956 w -(that) 3333 1956 w -(some) 3568 1956 w -(of) 3873 1956 w -(us) 4015 1956 w -(began) 4172 1956 w -(using) 4514 1956 w -(it) 4824 1956 w -(as) 4934 1956 w -(our) 720 2076 w -(exclusive) 923 2076 w -(computing) 1409 2076 w -(environment.) 1968 2076 w -(This) 2682 2076 w -(meant) 2926 2076 w -(bringing) 3268 2076 w -(along) 3717 2076 w -(many) 4024 2076 w -(of) 4324 2076 w -(the) 4460 2076 w -(services) 4653 2076 w -(and) 720 2196 w -(applications) 934 2196 w -(we) 1553 2196 w -(had) 1720 2196 w -(used) 1934 2196 w -(on) 2200 2196 w -(UNIX.) 2357 2196 w -(We) 2690 2196 w -(used) 2866 2196 w -(this) 3132 2196 w -(opportunity) 3345 2196 w -(to) 3948 2196 w -(revisit) 4081 2196 w -(many) 4411 2196 w -(issues,) 4708 2196 w -(not) 720 2316 w -(just) 920 2316 w -(kernel-resident) 1140 2316 w -(ones,) 1935 2316 w -(that) 2237 2316 w -(we) 2468 2316 w -(felt) 2641 2316 w -(UNIX) 2840 2316 w -(addressed) 3115 2316 w -(badly.) 3654 2316 w -(Plan) 4019 2316 w -(9) 4259 2316 w -(has) 4361 2316 w -(new) 4568 2316 w -(com\255) 4802 2316 w -(pilers,) 720 2436 w -(languages,) 1064 2436 w -(libraries,) 1633 2436 w -(window) 2102 2436 w -(systems,) 2515 2436 w -(and) 2982 2436 w -(many) 3206 2436 w -(new) 3512 2436 w -(applications.) 3751 2436 w -(Many) 4444 2436 w -(of) 4743 2436 w -(the) 4885 2436 w -(old tools were dropped, while those brought along have been polished or rewritten.) 720 2556 w -(Why) 970 2712 w -(be) 1216 2712 w -(so) 1381 2712 w -(all-encompassing?) 1539 2712 w -(The) 2526 2712 w -(distinction) 2754 2712 w -(between) 3312 2712 w -(operating) 3766 2712 w -(system,) 4279 2712 w -(library,) 4698 2712 w -(and) 720 2832 w -(application) 935 2832 w -(is) 1504 2832 w -(important) 1619 2832 w -(to) 2132 2832 w -(the) 2265 2832 w -(operating) 2455 2832 w -(system) 2956 2832 w -(researcher) 3331 2832 w -(but) 3876 2832 w -(uninteresting) 4073 2832 w -(to) 4753 2832 w -(the) 4885 2832 w -(user.) 720 2952 w -(What) 1032 2952 w -(matters) 1310 2952 w -(is) 1718 2952 w -(clean) 1836 2952 w -(functionality.) 2127 2952 w -(By) 2832 2952 w -(building) 2980 2952 w -(a) 3417 2952 w -(complete) 3510 2952 w -(new) 3994 2952 w -(system,) 4227 2952 w -(we) 4638 2952 w -(were) 4810 2952 w -(able) 720 3072 w -(to) 962 3072 w -(solve) 1099 3072 w -(problems) 1387 3072 w -(where) 1883 3072 w -(we) 2214 3072 w -(thought) 2386 3072 w -(they) 2808 3072 w -(should) 3054 3072 w -(be) 3421 3072 w -(solved.) 3579 3072 w -(For) 3993 3072 w -(example,) 4187 3072 w -(there) 4670 3072 w -(is) 4960 3072 w -(no) 720 3192 w -(real) 886 3192 w -10 /LucidaSansUnicode20 f -(\030) 1110 3192 w -10 /LucidaSansUnicode00 f -(tty) 1142 3192 w -(driver) 1311 3192 w -10 /LucidaSansUnicode20 f -(\031) 1593 3192 w -10 /LucidaSansUnicode00 f -(in) 1668 3192 w -(the) 1802 3192 w -(kernel;) 2000 3192 w -(that) 2377 3192 w -(is) 2611 3192 w -(the) 2734 3192 w -(job) 2932 3192 w -(of) 3129 3192 w -(the) 3270 3192 w -(window) 3469 3192 w -(system.) 3882 3192 w -(In) 4330 3192 w -(the) 4465 3192 w -(modern) 4664 3192 w -(world,) 720 3312 w -(multi-vendor) 1062 3312 w -(and) 1743 3312 w -(multi-architecture) 1961 3312 w -(computing) 2885 3312 w -(are) 3443 3312 w -(essential,) 3633 3312 w -(yet) 4129 3312 w -(the) 4312 3312 w -(usual) 4505 3312 w -(com\255) 4802 3312 w -(pilers) 720 3432 w -(and) 1028 3432 w -(tools) 1247 3432 w -(assume) 1525 3432 w -(the) 1932 3432 w -(program) 2126 3432 w -(is) 2581 3432 w -(being) 2700 3432 w -(built) 3011 3432 w -(to) 3270 3432 w -(run) 3407 3432 w -(locally;) 3611 3432 w -(we) 3988 3432 w -(needed) 4161 3432 w -(to) 4557 3432 w -(rethink) 4695 3432 w -(these) 720 3552 w -(issues.) 1028 3552 w -(Most) 1438 3552 w -(important,) 1719 3552 w -(though,) 2275 3552 w -(the) 2699 3552 w -(test) 2900 3552 w -(of) 3126 3552 w -(a) 3269 3552 w -(system) 3369 3552 w -(is) 3754 3552 w -(the) 3879 3552 w -(computing) 4079 3552 w -(environ\255) 4644 3552 w -(ment) 720 3672 w -(it) 1023 3672 w -(provides.) 1144 3672 w -(Producing) 1679 3672 w -(a) 2220 3672 w -(more) 2330 3672 w -(efficient) 2636 3672 w -(way) 3085 3672 w -(to) 3324 3672 w -(run) 3477 3672 w -(the) 3698 3672 w -(old) 3909 3672 w -(UNIX) 4118 3672 w -(warhorses) 4409 3672 w -(is) 4960 3672 w -(empty) 720 3792 w -(engineering;) 1056 3792 w -(we) 1700 3792 w -(were) 1868 3792 w -(more) 2133 3792 w -(interested) 2419 3792 w -(in) 2942 3792 w -(whether) 3068 3792 w -(the) 3494 3792 w -(new) 3684 3792 w -(ideas) 3914 3792 w -(suggested) 4202 3792 w -(by) 4736 3792 w -(the) 4885 3792 w -(architecture) 720 3912 w -(of) 1331 3912 w -(the) 1462 3912 w -(underlying) 1650 3912 w -(system) 2201 3912 w -(encourage) 2574 3912 w -(a) 3113 3912 w -(more) 3202 3912 w -(effective) 3487 3912 w -(way) 3932 3912 w -(of) 4150 3912 w -(working.) 4282 3912 w -(Thus,) 4770 3912 w -(although) 720 4032 w -(Plan) 1184 4032 w -(9) 1419 4032 w -(provides) 1516 4032 w -(an) 1966 4032 w -(emulation) 2117 4032 w -(environment) 2635 4032 w -(for) 3280 4032 w -(running) 3453 4032 w -(POSIX) 3867 4032 w -(commands,) 4179 4032 w -(it) 4773 4032 w -(is) 4872 4032 w -(a) 4985 4032 w -(backwater) 720 4152 w -(of) 1268 4152 w -(the) 1421 4152 w -(system.) 1631 4152 w -(The) 2090 4152 w -(vast) 2326 4152 w -(majority) 2576 4152 w -(of) 3029 4152 w -(system) 3182 4152 w -(software) 3577 4152 w -(is) 4047 4152 w -(developed) 4183 4152 w -(in) 4738 4152 w -(the) 4885 4152 w -10 /LucidaSansUnicode20 f -(\030) 720 4272 w -10 /LucidaSansUnicode00 f -(native) 752 4272 w -10 /LucidaSansUnicode20 f -(\031) 1043 4272 w -10 /LucidaSansUnicode00 f -(Plan 9 environment.) 1107 4272 w -(There) 970 4428 w -(are) 1285 4428 w -(benefits) 1474 4428 w -(to) 1902 4428 w -(having) 2037 4428 w -(an) 2396 4428 w -(all-new) 2550 4428 w -(system.) 2953 4428 w -(First,) 3394 4428 w -(our) 3675 4428 w -(laboratory) 3876 4428 w -(has) 4408 4428 w -(a) 4614 4428 w -(history) 4707 4428 w -(of) 720 4548 w -(building) 856 4548 w -(experimental) 1293 4548 w -(peripheral) 1968 4548 w -(boards.) 2500 4548 w -(To) 2935 4548 w -(make) 3096 4548 w -(it) 3395 4548 w -(easy) 3498 4548 w -(to) 3749 4548 w -(write) 3884 4548 w -(device) 4161 4548 w -(drivers,) 4505 4548 w -(we) 4907 4548 w -(want) 720 4668 w -(a) 987 4668 w -(system) 1078 4668 w -(that) 1454 4668 w -(is) 1681 4668 w -(available) 1797 4668 w -(in) 2257 4668 w -(source) 2385 4668 w -(form) 2744 4668 w -(\(no) 3013 4668 w -(longer) 3206 4668 w -(guaranteed) 3554 4668 w -(with) 4140 4668 w -(UNIX,) 4382 4668 w -(even) 4686 4668 w -(in) 4949 4668 w -(the) 720 4788 w -(laboratory) 928 4788 w -(in) 1476 4788 w -(which) 1620 4788 w -(it) 1954 4788 w -(was) 2073 4788 w -(born\).) 2309 4788 w -(Also,) 2686 4788 w -(we) 2981 4788 w -(want) 3167 4788 w -(to) 3451 4788 w -(redistribute) 3602 4788 w -(our) 4220 4788 w -(work,) 4437 4788 w -(which) 4759 4788 w -(means) 720 4908 w -(the) 1077 4908 w -(software) 1272 4908 w -(must) 1727 4908 w -(be) 2010 4908 w -(locally) 2169 4908 w -(produced.) 2515 4908 w -(For) 3079 4908 w -(example,) 3275 4908 w -(we) 3760 4908 w -(could) 3933 4908 w -(have) 4240 4908 w -(used) 4506 4908 w -(some) 4779 4908 w -(vendors) 720 5028 w -10 /LucidaSansUnicode20 f -(\031) 1106 5028 w -10 /LucidaSansUnicode00 f -(C) 1192 5028 w -(compilers) 1315 5028 w -(for) 1843 5028 w -(our) 2036 5028 w -(system,) 2254 5028 w -(but) 2680 5028 w -(even) 2895 5028 w -(had) 3174 5028 w -(we) 3407 5028 w -(overcome) 3593 5028 w -(the) 4117 5028 w -(problems) 4325 5028 w -(with) 4835 5028 w -(cross-compilation, we would have difficulty redistributing the result.) 720 5148 w -(This) 970 5304 w -(paper) 1211 5304 w -(serves) 1526 5304 w -(as) 1870 5304 w -(an) 2013 5304 w -(overview) 2167 5304 w -(of) 2628 5304 w -(the) 2763 5304 w -(system.) 2955 5304 w -(It) 3396 5304 w -(discusses) 3499 5304 w -(the) 4001 5304 w -(architecture) 4193 5304 w -(from) 4808 5304 w -(the) 720 5424 w -(lowest) 916 5424 w -(building) 1268 5424 w -(blocks) 1708 5424 w -(to) 2062 5424 w -(the) 2200 5424 w -(computing) 2395 5424 w -(environment) 2955 5424 w -(seen) 3606 5424 w -(by) 3871 5424 w -(users.) 4026 5424 w -(It) 4391 5424 w -(also) 4497 5424 w -(serves) 4733 5424 w -(as) 720 5544 w -(an) 860 5544 w -(introduction) 1011 5544 w -(to) 1640 5544 w -(the) 1772 5544 w -(rest) 1961 5544 w -(of) 2180 5544 w -(the) 2312 5544 w -(Plan) 2501 5544 w -(9) 2736 5544 w -(Programmer) 2833 5544 w -10 /LucidaSansUnicode20 f -(\031) 3431 5544 w -10 /LucidaSansUnicode00 f -(s) 3463 5544 w -(Manual,) 3548 5544 w -(which) 3964 5544 w -(it) 4280 5544 w -(accompanies.) 4381 5544 w -(More detail about topics in this paper can be found elsewhere in the manual.) 720 5664 w +(The) 970 840 w +(problems) 1206 840 w +(with) 1718 840 w +(UNIX) 1978 840 w +(were) 2268 840 w +(too) 2553 840 w +(deep) 2767 840 w +(to) 3060 840 w +(fix,) 3213 840 w +(but) 3427 840 w +(some) 3645 840 w +(of) 3962 840 w +(its) 4116 840 w +(ideas) 4289 840 w +(could) 4599 840 w +(be) 4921 840 w +(brought) 720 960 w +(along.) 1158 960 w +(The) 1541 960 w +(best) 1772 960 w +(was) 2029 960 w +(its) 2262 960 w +(use) 2429 960 w +(of) 2648 960 w +(the) 2796 960 w +(file) 3000 960 w +(system) 3200 960 w +(to) 3589 960 w +(coordinate) 3736 960 w +(naming) 4301 960 w +(of) 4713 960 w +(and) 4860 960 w +(access) 720 1080 w +(to) 1077 1080 w +(resources,) 1217 1080 w +(even) 1761 1080 w +(those,) 2029 1080 w +(such) 2370 1080 w +(as) 2638 1080 w +(devices,) 2786 1080 w +(not) 3218 1080 w +(traditionally) 3420 1080 w +(treated) 4041 1080 w +(as) 4428 1080 w +(files.) 4576 1080 w +(For) 4884 1080 w +(Plan) 720 1200 w +(9,) 958 1200 w +(we) 1089 1200 w +(adopted) 1258 1200 w +(this) 1692 1200 w +(idea) 1907 1200 w +(by) 2146 1200 w +(designing) 2297 1200 w +(a) 2809 1200 w +(network-level) 2900 1200 w +(protocol,) 3608 1200 w +(called) 4080 1200 w +(9P,) 4399 1200 w +(to) 4585 1200 w +(enable) 4719 1200 w +(machines) 720 1320 w +(to) 1215 1320 w +(access) 1349 1320 w +(files) 1700 1320 w +(on) 1938 1320 w +(remote) 2097 1320 w +(systems.) 2477 1320 w +(Above) 2968 1320 w +(this,) 3305 1320 w +(we) 3553 1320 w +(built) 3723 1320 w +(a) 3980 1320 w +(naming) 4072 1320 w +(system) 4472 1320 w +(that) 4849 1320 w +(lets) 720 1440 w +(people) 934 1440 w +(and) 1303 1440 w +(their) 1524 1440 w +(computing) 1790 1440 w +(agents) 2351 1440 w +(build) 2715 1440 w +(customized) 3002 1440 w +(views) 3603 1440 w +(of) 3909 1440 w +(the) 4048 1440 w +(resources) 4244 1440 w +(in) 4754 1440 w +(the) 4885 1440 w +(network.) 720 1560 w +(This is) 1208 1560 w +(where) 1558 1560 w +(Plan) 1883 1560 w +(9) 2117 1560 w +(first) 2213 1560 w +(began) 2441 1560 w +(to) 2772 1560 w +(look) 2903 1560 w +(different:) 3145 1560 w +(a) 3628 1560 w +(Plan) 3716 1560 w +(9) 3950 1560 w +(user) 4046 1560 w +(builds) 4289 1560 w +(a) 4619 1560 w +(private) 4707 1560 w +(computing) 720 1680 w +(environment) 1274 1680 w +(and) 1919 1680 w +(recreates) 2133 1680 w +(it) 2611 1680 w +(wherever) 2711 1680 w +(desired,) 3186 1680 w +(rather) 3610 1680 w +(than) 3935 1680 w +(doing) 4184 1680 w +(all) 4494 1680 w +(comput\255) 4640 1680 w +(ing) 720 1800 w +(on) 911 1800 w +(a) 1072 1800 w +(private) 1165 1800 w +(machine.) 1536 1800 w +(It) 2046 1800 w +(soon) 2150 1800 w +(became) 2423 1800 w +(clear) 2835 1800 w +(that) 3105 1800 w +(this) 3334 1800 w +(model) 3551 1800 w +(was) 3892 1800 w +(richer) 4114 1800 w +(than) 4433 1800 w +(we) 4688 1800 w +(had) 4860 1800 w +(foreseen,) 720 1920 w +(and) 1229 1920 w +(the) 1466 1920 w +(ideas) 1678 1920 w +(of) 1989 1920 w +(per-process) 2144 1920 w +(name) 2793 1920 w +(spaces) 3116 1920 w +(and) 3499 1920 w +(file-system-like) 3735 1920 w +(resources) 4570 1920 w +(were extended throughout the system) 720 2040 w +10 /LucidaSansUnicode20 f +(\024) 2574 2040 w +10 /LucidaSansUnicode00 f +(to processes, graphics, even the network itself.) 2674 2040 w +(By) 970 2196 w +(1989) 1123 2196 w +(the) 1418 2196 w +(system) 1616 2196 w +(had) 1999 2196 w +(become) 2223 2196 w +(solid) 2647 2196 w +(enough) 2924 2196 w +(that) 3333 2196 w +(some) 3568 2196 w +(of) 3873 2196 w +(us) 4015 2196 w +(began) 4172 2196 w +(using) 4514 2196 w +(it) 4824 2196 w +(as) 4934 2196 w +(our) 720 2316 w +(exclusive) 923 2316 w +(computing) 1409 2316 w +(environment.) 1968 2316 w +(This) 2682 2316 w +(meant) 2926 2316 w +(bringing) 3268 2316 w +(along) 3717 2316 w +(many) 4024 2316 w +(of) 4324 2316 w +(the) 4460 2316 w +(services) 4653 2316 w +(and) 720 2436 w +(applications) 934 2436 w +(we) 1553 2436 w +(had) 1720 2436 w +(used) 1934 2436 w +(on) 2200 2436 w +(UNIX.) 2357 2436 w +(We) 2690 2436 w +(used) 2866 2436 w +(this) 3132 2436 w +(opportunity) 3345 2436 w +(to) 3948 2436 w +(revisit) 4081 2436 w +(many) 4411 2436 w +(issues,) 4708 2436 w +(not) 720 2556 w +(just) 920 2556 w +(kernel-resident) 1140 2556 w +(ones,) 1935 2556 w +(that) 2237 2556 w +(we) 2468 2556 w +(felt) 2641 2556 w +(UNIX) 2840 2556 w +(addressed) 3115 2556 w +(badly.) 3654 2556 w +(Plan) 4019 2556 w +(9) 4259 2556 w +(has) 4361 2556 w +(new) 4568 2556 w +(com\255) 4802 2556 w +(pilers,) 720 2676 w +(languages,) 1064 2676 w +(libraries,) 1633 2676 w +(window) 2102 2676 w +(systems,) 2515 2676 w +(and) 2982 2676 w +(many) 3206 2676 w +(new) 3512 2676 w +(applications.) 3751 2676 w +(Many) 4444 2676 w +(of) 4743 2676 w +(the) 4885 2676 w +(old tools were dropped, while those brought along have been polished or rewritten.) 720 2796 w +(Why) 970 2952 w +(be) 1216 2952 w +(so) 1381 2952 w +(all-encompassing?) 1539 2952 w +(The) 2526 2952 w +(distinction) 2754 2952 w +(between) 3312 2952 w +(operating) 3766 2952 w +(system,) 4279 2952 w +(library,) 4698 2952 w +(and) 720 3072 w +(application) 935 3072 w +(is) 1504 3072 w +(important) 1619 3072 w +(to) 2132 3072 w +(the) 2265 3072 w +(operating) 2455 3072 w +(system) 2956 3072 w +(researcher) 3331 3072 w +(but) 3876 3072 w +(uninteresting) 4073 3072 w +(to) 4753 3072 w +(the) 4885 3072 w +(user.) 720 3192 w +(What) 1032 3192 w +(matters) 1310 3192 w +(is) 1718 3192 w +(clean) 1836 3192 w +(functionality.) 2127 3192 w +(By) 2832 3192 w +(building) 2980 3192 w +(a) 3417 3192 w +(complete) 3510 3192 w +(new) 3994 3192 w +(system,) 4227 3192 w +(we) 4638 3192 w +(were) 4810 3192 w +(able) 720 3312 w +(to) 962 3312 w +(solve) 1099 3312 w +(problems) 1387 3312 w +(where) 1883 3312 w +(we) 2214 3312 w +(thought) 2386 3312 w +(they) 2808 3312 w +(should) 3054 3312 w +(be) 3421 3312 w +(solved.) 3579 3312 w +(For) 3993 3312 w +(example,) 4187 3312 w +(there) 4670 3312 w +(is) 4960 3312 w +(no) 720 3432 w +(real) 886 3432 w +10 /LucidaSansUnicode20 f +(\030) 1110 3432 w +10 /LucidaSansUnicode00 f +(tty) 1142 3432 w +(driver) 1311 3432 w +10 /LucidaSansUnicode20 f +(\031) 1593 3432 w +10 /LucidaSansUnicode00 f +(in) 1668 3432 w +(the) 1802 3432 w +(kernel;) 2000 3432 w +(that) 2377 3432 w +(is) 2611 3432 w +(the) 2734 3432 w +(job) 2932 3432 w +(of) 3129 3432 w +(the) 3270 3432 w +(window) 3469 3432 w +(system.) 3882 3432 w +(In) 4330 3432 w +(the) 4465 3432 w +(modern) 4664 3432 w +(world,) 720 3552 w +(multi-vendor) 1062 3552 w +(and) 1743 3552 w +(multi-architecture) 1961 3552 w +(computing) 2885 3552 w +(are) 3443 3552 w +(essential,) 3633 3552 w +(yet) 4129 3552 w +(the) 4312 3552 w +(usual) 4505 3552 w +(com\255) 4802 3552 w +(pilers) 720 3672 w +(and) 1028 3672 w +(tools) 1247 3672 w +(assume) 1525 3672 w +(the) 1932 3672 w +(program) 2126 3672 w +(is) 2581 3672 w +(being) 2700 3672 w +(built) 3011 3672 w +(to) 3270 3672 w +(run) 3407 3672 w +(locally;) 3611 3672 w +(we) 3988 3672 w +(needed) 4161 3672 w +(to) 4557 3672 w +(rethink) 4695 3672 w +(these) 720 3792 w +(issues.) 1028 3792 w +(Most) 1438 3792 w +(important,) 1719 3792 w +(though,) 2275 3792 w +(the) 2699 3792 w +(test) 2900 3792 w +(of) 3126 3792 w +(a) 3269 3792 w +(system) 3369 3792 w +(is) 3754 3792 w +(the) 3879 3792 w +(computing) 4079 3792 w +(environ\255) 4644 3792 w +(ment) 720 3912 w +(it) 1023 3912 w +(provides.) 1144 3912 w +(Producing) 1679 3912 w +(a) 2220 3912 w +(more) 2330 3912 w +(efficient) 2636 3912 w +(way) 3085 3912 w +(to) 3324 3912 w +(run) 3477 3912 w +(the) 3698 3912 w +(old) 3909 3912 w +(UNIX) 4118 3912 w +(warhorses) 4409 3912 w +(is) 4960 3912 w +(empty) 720 4032 w +(engineering;) 1056 4032 w +(we) 1700 4032 w +(were) 1868 4032 w +(more) 2133 4032 w +(interested) 2419 4032 w +(in) 2942 4032 w +(whether) 3068 4032 w +(the) 3494 4032 w +(new) 3684 4032 w +(ideas) 3914 4032 w +(suggested) 4202 4032 w +(by) 4736 4032 w +(the) 4885 4032 w +(architecture) 720 4152 w +(of) 1331 4152 w +(the) 1462 4152 w +(underlying) 1650 4152 w +(system) 2201 4152 w +(encourage) 2574 4152 w +(a) 3113 4152 w +(more) 3202 4152 w +(effective) 3487 4152 w +(way) 3932 4152 w +(of) 4150 4152 w +(working.) 4282 4152 w +(Thus,) 4770 4152 w +(although) 720 4272 w +(Plan) 1184 4272 w +(9) 1419 4272 w +(provides) 1516 4272 w +(an) 1966 4272 w +(emulation) 2117 4272 w +(environment) 2635 4272 w +(for) 3280 4272 w +(running) 3453 4272 w +(POSIX) 3867 4272 w +(commands,) 4179 4272 w +(it) 4773 4272 w +(is) 4872 4272 w +(a) 4985 4272 w +(backwater) 720 4392 w +(of) 1268 4392 w +(the) 1421 4392 w +(system.) 1631 4392 w +(The) 2090 4392 w +(vast) 2326 4392 w +(majority) 2576 4392 w +(of) 3029 4392 w +(system) 3182 4392 w +(software) 3577 4392 w +(is) 4047 4392 w +(developed) 4183 4392 w +(in) 4738 4392 w +(the) 4885 4392 w +10 /LucidaSansUnicode20 f +(\030) 720 4512 w +10 /LucidaSansUnicode00 f +(native) 752 4512 w +10 /LucidaSansUnicode20 f +(\031) 1043 4512 w +10 /LucidaSansUnicode00 f +(Plan 9 environment.) 1107 4512 w +(There) 970 4668 w +(are) 1285 4668 w +(benefits) 1474 4668 w +(to) 1902 4668 w +(having) 2037 4668 w +(an) 2396 4668 w +(all-new) 2550 4668 w +(system.) 2953 4668 w +(First,) 3394 4668 w +(our) 3675 4668 w +(laboratory) 3876 4668 w +(has) 4408 4668 w +(a) 4614 4668 w +(history) 4707 4668 w +(of) 720 4788 w +(building) 856 4788 w +(experimental) 1293 4788 w +(peripheral) 1968 4788 w +(boards.) 2500 4788 w +(To) 2935 4788 w +(make) 3096 4788 w +(it) 3395 4788 w +(easy) 3498 4788 w +(to) 3749 4788 w +(write) 3884 4788 w +(device) 4161 4788 w +(drivers,) 4505 4788 w +(we) 4907 4788 w +(want) 720 4908 w +(a) 987 4908 w +(system) 1078 4908 w +(that) 1454 4908 w +(is) 1681 4908 w +(available) 1797 4908 w +(in) 2257 4908 w +(source) 2385 4908 w +(form) 2744 4908 w +(\(no) 3013 4908 w +(longer) 3206 4908 w +(guaranteed) 3554 4908 w +(with) 4140 4908 w +(UNIX,) 4382 4908 w +(even) 4686 4908 w +(in) 4949 4908 w +(the) 720 5028 w +(laboratory) 928 5028 w +(in) 1476 5028 w +(which) 1620 5028 w +(it) 1954 5028 w +(was) 2073 5028 w +(born\).) 2309 5028 w +(Also,) 2686 5028 w +(we) 2981 5028 w +(want) 3167 5028 w +(to) 3451 5028 w +(redistribute) 3602 5028 w +(our) 4220 5028 w +(work,) 4437 5028 w +(which) 4759 5028 w +(means) 720 5148 w +(the) 1077 5148 w +(software) 1272 5148 w +(must) 1727 5148 w +(be) 2010 5148 w +(locally) 2169 5148 w +(produced.) 2515 5148 w +(For) 3079 5148 w +(example,) 3275 5148 w +(we) 3760 5148 w +(could) 3933 5148 w +(have) 4240 5148 w +(used) 4506 5148 w +(some) 4779 5148 w +(vendors) 720 5268 w +10 /LucidaSansUnicode20 f +(\031) 1106 5268 w +10 /LucidaSansUnicode00 f +(C) 1192 5268 w +(compilers) 1315 5268 w +(for) 1843 5268 w +(our) 2036 5268 w +(system,) 2254 5268 w +(but) 2680 5268 w +(even) 2895 5268 w +(had) 3174 5268 w +(we) 3407 5268 w +(overcome) 3593 5268 w +(the) 4117 5268 w +(problems) 4325 5268 w +(with) 4835 5268 w +(cross-compilation, we would have difficulty redistributing the result.) 720 5388 w +(This) 970 5544 w +(paper) 1211 5544 w +(serves) 1526 5544 w +(as) 1870 5544 w +(an) 2013 5544 w +(overview) 2167 5544 w +(of) 2628 5544 w +(the) 2763 5544 w +(system.) 2955 5544 w +(It) 3396 5544 w +(discusses) 3499 5544 w +(the) 4001 5544 w +(architecture) 4193 5544 w +(from) 4808 5544 w +(the) 720 5664 w +(lowest) 916 5664 w +(building) 1268 5664 w +(blocks) 1708 5664 w +(to) 2062 5664 w +(the) 2200 5664 w +(computing) 2395 5664 w +(environment) 2955 5664 w +(seen) 3606 5664 w +(by) 3871 5664 w +(users.) 4026 5664 w +(It) 4391 5664 w +(also) 4497 5664 w +(serves) 4733 5664 w +(as) 720 5784 w +(an) 860 5784 w +(introduction) 1011 5784 w +(to) 1640 5784 w +(the) 1772 5784 w +(rest) 1961 5784 w +(of) 2180 5784 w +(the) 2312 5784 w +(Plan) 2501 5784 w +(9) 2736 5784 w +(Programmer) 2833 5784 w +10 /LucidaSansUnicode20 f +(\031) 3431 5784 w +10 /LucidaSansUnicode00 f +(s) 3463 5784 w +(Manual,) 3548 5784 w +(which) 3964 5784 w +(it) 4280 5784 w +(accompanies.) 4381 5784 w +(More detail about topics in this paper can be found elsewhere in the manual.) 720 5904 w 10 /LucidaSans-Demi f -(Design) 720 5904 w +(Design) 720 6144 w 10 /LucidaSansUnicode00 f -(The) 970 6060 w -(view) 1193 6060 w -(of) 1449 6060 w -(the) 1589 6060 w -(system) 1786 6060 w -(is) 2168 6060 w -(built) 2290 6060 w -(upon) 2552 6060 w -(three) 2842 6060 w -(principles.) 3136 6060 w -(First,) 3716 6060 w -(resources) 4003 6060 w -(are) 4516 6060 w -(named) 4711 6060 w -(and) 720 6180 w -(accessed) 942 6180 w -(like) 1418 6180 w -(files) 1632 6180 w -(in) 1876 6180 w -(a) 2009 6180 w -(hierarchical) 2106 6180 w -(file) 2709 6180 w -(system.) 2901 6180 w -(Second,) 3346 6180 w -(there) 3766 6180 w -(is) 4059 6180 w -(a) 4180 6180 w -(standard) 4276 6180 w -(proto\255) 4744 6180 w -(col,) 720 6300 w -(called) 928 6300 w -(9P,) 1246 6300 w -(for) 1431 6300 w -(accessing) 1605 6300 w -(these) 2109 6300 w -(resources.) 2407 6300 w -(Third,) 2977 6300 w -(the) 3303 6300 w -(disjoint) 3494 6300 w -(hierarchies) 3892 6300 w -(provided) 4461 6300 w -(by) 4925 6300 w -(different) 720 6420 w -(services) 1180 6420 w -(are) 1609 6420 w -(joined) 1803 6420 w -(together) 2146 6420 w -(into) 2600 6420 w -(a) 2831 6420 w -(single) 2927 6420 w -(private) 3257 6420 w -(hierarchical) 3631 6420 w -(file) 4233 6420 w -(name) 4425 6420 w -(space.) 4732 6420 w -(The) 720 6540 w -(unusual) 950 6540 w -(properties) 1382 6540 w -(of) 1929 6540 w -(Plan) 2076 6540 w -(9) 2327 6540 w -(stem) 2440 6540 w -(from) 2727 6540 w -(the) 3009 6540 w -(consistent,) 3214 6540 w -(aggressive) 3793 6540 w -(application) 4358 6540 w -(of) 4942 6540 w -(these principles.) 720 6660 w -(A) 970 6816 w -(large) 1086 6816 w -(Plan) 1376 6816 w -(9) 1624 6816 w -(installation) 1734 6816 w -(has) 2317 6816 w -(a) 2532 6816 w -(number) 2634 6816 w -(of) 3058 6816 w -(computers) 3203 6816 w -(networked) 3765 6816 w -(together,) 4324 6816 w -(each) 4816 6816 w -(providing) 720 6936 w -(a) 1226 6936 w -(particular) 1325 6936 w -(class) 1832 6936 w -(of) 2113 6936 w -(service.) 2255 6936 w -(Shared) 2698 6936 w -(multiprocessor) 3072 6936 w -(servers) 3841 6936 w -(provide) 4232 6936 w -(comput\255) 4640 6936 w -(ing) 720 7056 w -(cycles;) 920 7056 w -(other) 1289 7056 w -(large) 1593 7056 w -(machines) 1883 7056 w -(offer) 2389 7056 w -(file) 2668 7056 w -(storage.) 2866 7056 w -(These) 3341 7056 w -(machines) 3677 7056 w -(are) 4184 7056 w -(located) 4384 7056 w -(in) 4784 7056 w -(an) 4923 7056 w -(air-conditioned) 720 7176 w -(machine) 1551 7176 w -(room) 2033 7176 w -(and) 2363 7176 w -(are) 2617 7176 w -(connected) 2843 7176 w -(by) 3415 7176 w -(high-performance) 3603 7176 w -(networks.) 4565 7176 w -(Lower) 720 7296 w -(bandwidth) 1057 7296 w -(networks) 1617 7296 w -(such) 2109 7296 w -(as) 2384 7296 w -(Ethernet) 2539 7296 w -(or) 2993 7296 w -(ISDN) 3144 7296 w -(connect) 3425 7296 w -(these) 3854 7296 w -(servers) 4165 7296 w -(to) 4563 7296 w -(office-) 4711 7296 w +(The) 970 6300 w +(view) 1193 6300 w +(of) 1449 6300 w +(the) 1589 6300 w +(system) 1786 6300 w +(is) 2168 6300 w +(built) 2290 6300 w +(upon) 2552 6300 w +(three) 2842 6300 w +(principles.) 3136 6300 w +(First,) 3716 6300 w +(resources) 4003 6300 w +(are) 4516 6300 w +(named) 4711 6300 w +(and) 720 6420 w +(accessed) 942 6420 w +(like) 1418 6420 w +(files) 1632 6420 w +(in) 1876 6420 w +(a) 2009 6420 w +(hierarchical) 2106 6420 w +(file) 2709 6420 w +(system.) 2901 6420 w +(Second,) 3346 6420 w +(there) 3766 6420 w +(is) 4059 6420 w +(a) 4180 6420 w +(standard) 4276 6420 w +(proto\255) 4744 6420 w +(col,) 720 6540 w +(called) 928 6540 w +(9P,) 1246 6540 w +(for) 1431 6540 w +(accessing) 1605 6540 w +(these) 2109 6540 w +(resources.) 2407 6540 w +(Third,) 2977 6540 w +(the) 3303 6540 w +(disjoint) 3494 6540 w +(hierarchies) 3892 6540 w +(provided) 4461 6540 w +(by) 4925 6540 w +(different) 720 6660 w +(services) 1180 6660 w +(are) 1609 6660 w +(joined) 1803 6660 w +(together) 2146 6660 w +(into) 2600 6660 w +(a) 2831 6660 w +(single) 2927 6660 w +(private) 3257 6660 w +(hierarchical) 3631 6660 w +(file) 4233 6660 w +(name) 4425 6660 w +(space.) 4732 6660 w +(The) 720 6780 w +(unusual) 950 6780 w +(properties) 1382 6780 w +(of) 1929 6780 w +(Plan) 2076 6780 w +(9) 2327 6780 w +(stem) 2440 6780 w +(from) 2727 6780 w +(the) 3009 6780 w +(consistent,) 3214 6780 w +(aggressive) 3793 6780 w +(application) 4358 6780 w +(of) 4942 6780 w +(these principles.) 720 6900 w +(A) 970 7056 w +(large) 1086 7056 w +(Plan) 1376 7056 w +(9) 1624 7056 w +(installation) 1734 7056 w +(has) 2317 7056 w +(a) 2532 7056 w +(number) 2634 7056 w +(of) 3058 7056 w +(computers) 3203 7056 w +(networked) 3765 7056 w +(together,) 4324 7056 w +(each) 4816 7056 w +(providing) 720 7176 w +(a) 1226 7176 w +(particular) 1325 7176 w +(class) 1832 7176 w +(of) 2113 7176 w +(service.) 2255 7176 w +(Shared) 2698 7176 w +(multiprocessor) 3072 7176 w +(servers) 3841 7176 w +(provide) 4232 7176 w +(comput\255) 4640 7176 w +(ing) 720 7296 w +(cycles;) 920 7296 w +(other) 1289 7296 w +(large) 1593 7296 w +(machines) 1883 7296 w +(offer) 2389 7296 w +(file) 2668 7296 w +(storage.) 2866 7296 w +(These) 3341 7296 w +(machines) 3677 7296 w +(are) 4184 7296 w +(located) 4384 7296 w +(in) 4784 7296 w +(an) 4923 7296 w cleartomark showpage saveobj restore @@ -4819,532 +4798,522 @@ 3 pagesetup 10 /LucidaSansUnicode00 f (\255 3 \255) 2783 480 w -(and) 720 840 w -(home-resident) 941 840 w -(workstations) 1707 840 w -(or) 2368 840 w -(PCs,) 2511 840 w -(called) 2758 840 w -(terminals) 3081 840 w -(in) 3574 840 w -(Plan) 3705 840 w -(9) 3946 840 w -(terminology.) 4049 840 w -(Figure) 4736 840 w -(1 shows the arrangement.) 720 960 w -1928 2878 1928 2640 Dl -1928 2639 2354 2639 Dl -2355 2639 2355 2877 Dl -2355 2878 1929 2878 Dl -1928 2758 1841 2758 Dl -2581 2878 2581 2640 Dl -2581 2639 3007 2639 Dl -3008 2639 3008 2877 Dl -3008 2878 2582 2878 Dl -2581 2878 2581 2640 Dl -2581 2639 3007 2639 Dl -3008 2639 3008 2877 Dl -3008 2878 2582 2878 Dl -3234 2878 3234 2640 Dl -3234 2639 3660 2639 Dl -3661 2639 3661 2877 Dl -3661 2878 3235 2878 Dl -2142 2878 2142 3041 Dl -3448 2878 3448 3041 Dl -2795 2878 2795 3041 Dl -2111 2878 2111 3041 Dl -2173 2878 2173 3041 Dl -2764 2878 2764 3041 Dl -2826 2878 2826 3041 Dl -3416 2878 3416 3041 Dl -3479 2878 3479 3041 Dl -2029 3072 4859 3072 Dl -2029 3104 4859 3104 Dl -3661 2758 3817 2758 Dl -3818 2589 3818 2846 Dl -3818 2589 150 -84 150 84 Da -4119 2589 -150 84 -150 -84 Da -4119 2589 4119 2846 Dl -3818 2846 150 -84 150 84 Da -(CPU) 2046 2778 w -(CPU) 2699 2778 w -1928 2878 1928 2640 Dl -1928 2639 2354 2639 Dl -2355 2639 2355 2877 Dl -2355 2878 1929 2878 Dl -900 2878 900 2640 Dl -900 2639 1326 2639 Dl -1326 2639 1326 2877 Dl -1326 2878 900 2878 Dl -(File) 1029 2778 w -1113 2878 1113 3034 Dl -969 3122 969 3379 Dl -969 3122 150 -84 150 84 Da -1270 3122 -150 84 -150 -84 Da -1270 3122 1270 3379 Dl -969 3379 150 -84 150 84 Da -(File) 3364 2778 w -900 2263 4778 2263 Dl -1113 2639 1113 2263 Dl -2142 2639 2142 2263 Dl -2795 2639 2795 2263 Dl -3448 2639 3448 2263 Dl -4564 2263 4564 2639 Dl -4351 2878 4351 2640 Dl -4351 2639 4777 2639 Dl -4778 2639 4778 2877 Dl -4778 2878 4352 2878 Dl -(Internet) 4670 1442 w -(Gateway) 4362 2778 w -4402 2263 4402 1887 Dl -4188 1886 4188 1648 Dl -4188 1647 4614 1647 Dl -4615 1647 4615 1885 Dl -4615 1886 4189 1886 Dl -(Gateway) 4200 1787 w -4402 1647 4402 1460 Dl -3534 1122 3534 1422 Dl -3446 1184 3621 1184 Dl -3446 1247 3621 1247 Dl -2990 1235 2990 1535 Dl -2902 1298 3077 1298 Dl -2902 1361 3077 1361 Dl -2361 1229 2361 1529 Dl -2273 1291 2448 1291 Dl -2273 1354 2448 1354 Dl -1759 1321 313 313 De -(Term) 1790 1341 w -1527 2263 1527 1968 Dl -1370 1811 313 313 De -(Term) 1401 1831 w -1941 1968 1941 2263 Dl -2355 2263 2355 1968 Dl -1784 1811 313 313 De -(Term) 1815 1831 w -2198 1811 313 313 De -(Term) 2229 1831 w -4860 3040 2030 3040 Dl -4778 2758 4859 2758 Dl -4860 2758 4860 1478 Dl -4875 1541 4860 1479 Dl -4844 1541 4859 1479 Dl -4564 2878 4564 3041 Dl -4596 2878 4596 3041 Dl -4533 2878 4533 3041 Dl -(Ethernet) 3622 2226 w -(Fiber Network) 3081 3212 w -4402 1459 4400 1431 Dl -4399 1431 4391 1403 Dl -4389 1403 4375 1375 Dl -4375 1375 4355 1348 Dl -4354 1348 4295 1294 Dl -4296 1292 4214 1238 Dl -4213 1238 4163 1214 Dl -4163 1214 4107 1196 Dl -4106 1196 4044 1184 Dl -4044 1183 3975 1177 Dl -3975 1176 3901 1176 Dl -3900 1176 3819 1181 Dl -3818 1181 3731 1191 Dl -3731 1191 3638 1207 Dl -3637 1208 2902 1359 Dl -2902 1361 2738 1389 Dl -2737 1389 2592 1401 Dl -2592 1402 2466 1399 Dl -2466 1398 2410 1391 Dl -2409 1389 2358 1377 Dl -2359 1378 2191 1336 Dl -2190 1335 2126 1325 Dl -2125 1325 2074 1322 Dl -1841 2758 1841 3250 Dl -1326 2758 1652 2758 Dl -1653 2758 1653 3250 Dl -1452 3590 1452 3251 Dl -1452 3251 2073 3251 Dl -2073 3251 2073 3590 Dl -2073 3590 1452 3590 Dl -1483 3559 1483 3283 Dl -1483 3282 2041 3282 Dl -2041 3282 2041 3558 Dl -2041 3559 1483 3559 Dl -(Datakit) 1589 3440 w -2073 3420 2327 3420 Dl -2327 3420 2327 3761 Dl -2170 3919 313 313 De -(Term) 2201 3939 w -1969 3590 1969 3762 Dl -1812 3919 313 313 De -(Term) 1843 3939 w -1599 3590 1599 3768 Dl -1436 3925 313 313 De -(Term) 1467 3945 w +(air-conditioned) 720 840 w +(machine) 1551 840 w +(room) 2033 840 w +(and) 2363 840 w +(are) 2617 840 w +(connected) 2843 840 w +(by) 3415 840 w +(high-performance) 3603 840 w +(networks.) 4565 840 w +(Lower) 720 960 w +(bandwidth) 1057 960 w +(networks) 1617 960 w +(such) 2109 960 w +(as) 2384 960 w +(Ethernet) 2539 960 w +(or) 2993 960 w +(ISDN) 3144 960 w +(connect) 3425 960 w +(these) 3854 960 w +(servers) 4165 960 w +(to) 4563 960 w +(office-) 4711 960 w +(and) 720 1080 w +(home-resident) 941 1080 w +(workstations) 1707 1080 w +(or) 2368 1080 w +(PCs,) 2511 1080 w +(called) 2758 1080 w +(terminals) 3081 1080 w +(in) 3574 1080 w +(Plan) 3705 1080 w +(9) 3946 1080 w +(terminology.) 4049 1080 w +(Figure) 4736 1080 w +(1 shows the arrangement.) 720 1200 w +1928 3118 1928 2880 Dl +1928 2879 2354 2879 Dl +2355 2879 2355 3117 Dl +2355 3118 1929 3118 Dl +1928 2998 1841 2998 Dl +2581 3118 2581 2880 Dl +2581 2879 3007 2879 Dl +3008 2879 3008 3117 Dl +3008 3118 2582 3118 Dl +2581 3118 2581 2880 Dl +2581 2879 3007 2879 Dl +3008 2879 3008 3117 Dl +3008 3118 2582 3118 Dl +3234 3118 3234 2880 Dl +3234 2879 3660 2879 Dl +3661 2879 3661 3117 Dl +3661 3118 3235 3118 Dl +2142 3118 2142 3281 Dl +3448 3118 3448 3281 Dl +2795 3118 2795 3281 Dl +2111 3118 2111 3281 Dl +2173 3118 2173 3281 Dl +2764 3118 2764 3281 Dl +2826 3118 2826 3281 Dl +3416 3118 3416 3281 Dl +3479 3118 3479 3281 Dl +2029 3312 4859 3312 Dl +2029 3344 4859 3344 Dl +3661 2998 3817 2998 Dl +3818 2829 3818 3086 Dl +3818 2829 150 -84 150 84 Da +4119 2829 -150 84 -150 -84 Da +4119 2829 4119 3086 Dl +3818 3086 150 -84 150 84 Da +(CPU) 2046 3018 w +(CPU) 2699 3018 w +1928 3118 1928 2880 Dl +1928 2879 2354 2879 Dl +2355 2879 2355 3117 Dl +2355 3118 1929 3118 Dl +900 3118 900 2880 Dl +900 2879 1326 2879 Dl +1326 2879 1326 3117 Dl +1326 3118 900 3118 Dl +(File) 1029 3018 w +1113 3118 1113 3274 Dl +969 3362 969 3619 Dl +969 3362 150 -84 150 84 Da +1270 3362 -150 84 -150 -84 Da +1270 3362 1270 3619 Dl +969 3619 150 -84 150 84 Da +(File) 3364 3018 w +900 2503 4778 2503 Dl +1113 2879 1113 2503 Dl +2142 2879 2142 2503 Dl +2795 2879 2795 2503 Dl +3448 2879 3448 2503 Dl +4564 2503 4564 2879 Dl +4351 3118 4351 2880 Dl +4351 2879 4777 2879 Dl +4778 2879 4778 3117 Dl +4778 3118 4352 3118 Dl +(Internet) 4670 1682 w +(Gateway) 4362 3018 w +4402 2503 4402 2127 Dl +4188 2126 4188 1888 Dl +4188 1887 4614 1887 Dl +4615 1887 4615 2125 Dl +4615 2126 4189 2126 Dl +(Gateway) 4200 2027 w +4402 1887 4402 1700 Dl +3534 1362 3534 1662 Dl +3446 1424 3621 1424 Dl +3446 1487 3621 1487 Dl +2990 1475 2990 1775 Dl +2902 1538 3077 1538 Dl +2902 1601 3077 1601 Dl +2361 1469 2361 1769 Dl +2273 1531 2448 1531 Dl +2273 1594 2448 1594 Dl +1759 1561 313 313 De +(Term) 1790 1581 w +1527 2503 1527 2208 Dl +1370 2051 313 313 De +(Term) 1401 2071 w +1941 2208 1941 2503 Dl +2355 2503 2355 2208 Dl +1784 2051 313 313 De +(Term) 1815 2071 w +2198 2051 313 313 De +(Term) 2229 2071 w +4860 3280 2030 3280 Dl +4778 2998 4859 2998 Dl +4860 2998 4860 1718 Dl +4875 1781 4860 1719 Dl +4844 1781 4859 1719 Dl +4564 3118 4564 3281 Dl +4596 3118 4596 3281 Dl +4533 3118 4533 3281 Dl +(Ethernet) 3622 2466 w +(Fiber Network) 3081 3452 w +4402 1699 4400 1671 Dl +4399 1671 4391 1643 Dl +4389 1643 4375 1615 Dl +4375 1615 4355 1588 Dl +4354 1588 4295 1534 Dl +4296 1532 4214 1478 Dl +4213 1478 4163 1454 Dl +4163 1454 4107 1436 Dl +4106 1436 4044 1424 Dl +4044 1423 3975 1417 Dl +3975 1416 3901 1416 Dl +3900 1416 3819 1421 Dl +3818 1421 3731 1431 Dl +3731 1431 3638 1447 Dl +3637 1448 2902 1599 Dl +2902 1601 2738 1629 Dl +2737 1629 2592 1641 Dl +2592 1642 2466 1639 Dl +2466 1638 2410 1631 Dl +2409 1629 2358 1617 Dl +2359 1618 2191 1576 Dl +2190 1575 2126 1565 Dl +2125 1565 2074 1562 Dl +1841 2998 1841 3490 Dl +1326 2998 1652 2998 Dl +1653 2998 1653 3490 Dl +1452 3830 1452 3491 Dl +1452 3491 2073 3491 Dl +2073 3491 2073 3830 Dl +2073 3830 1452 3830 Dl +1483 3799 1483 3523 Dl +1483 3522 2041 3522 Dl +2041 3522 2041 3798 Dl +2041 3799 1483 3799 Dl +(Datakit) 1589 3680 w +2073 3660 2327 3660 Dl +2327 3660 2327 4001 Dl +2170 4159 313 313 De +(Term) 2201 4179 w +1969 3830 1969 4002 Dl +1812 4159 313 313 De +(Term) 1843 4179 w +1599 3830 1599 4008 Dl +1436 4165 313 313 De +(Term) 1467 4185 w 8 /LucidaSans-Italic f -(Figure) 900 4306 w -(1.) 1177 4306 w -(Structure) 1285 4306 w -(of) 1679 4306 w -(a) 1787 4306 w -(large) 1868 4306 w -(Plan) 2101 4306 w -(9) 2301 4306 w -(installation.) 2383 4306 w +(Figure) 900 4546 w +(1.) 1177 4546 w +(Structure) 1285 4546 w +(of) 1679 4546 w +(a) 1787 4546 w +(large) 1868 4546 w +(Plan) 2101 4546 w +(9) 2301 4546 w +(installation.) 2383 4546 w 8 /LucidaSansUnicode00 f -(CPU) 2902 4306 w -(servers) 3088 4306 w -(and) 3400 4306 w -(file) 3577 4306 w -(servers) 3731 4306 w -(share) 4044 4306 w -(fast) 4290 4306 w -(local-area) 4468 4306 w -(networks,) 900 4416 w -(while) 1320 4416 w -(terminals) 1561 4416 w -(use) 1962 4416 w -(slower) 2136 4416 w -(wider-area) 2427 4416 w -(networks) 2890 4416 w -(such) 3284 4416 w -(as) 3503 4416 w -(Ethernet,) 3625 4416 w -(Datakit,) 4014 4416 w -(or) 4354 4416 w -(telephone) 4473 4416 w -(lines) 900 4526 w -(to) 1113 4526 w -(connect) 1223 4526 w -(to) 1560 4526 w -(them.) 1670 4526 w -(Gateway) 1952 4526 w -(machines,) 2308 4526 w -(which) 2733 4526 w -(are) 2990 4526 w -(just) 3143 4526 w -(CPU) 3319 4526 w -(servers) 3504 4526 w -(connected) 3815 4526 w -(to) 4248 4526 w -(multiple) 4359 4526 w -(net\255) 4709 4526 w -(works,) 900 4646 w -(allow) 1183 4646 w -(machines) 1410 4646 w -(on) 1804 4646 w -(one) 1929 4646 w -(network) 2099 4646 w -(to) 2440 4646 w -(see) 2545 4646 w -(another.) 2702 4646 w -10 /LucidaSansUnicode00 f -(The) 970 4922 w -(modern) 1200 4922 w -(style) 1625 4922 w -(of) 1900 4922 w -(computing) 2048 4922 w -(offers) 2618 4922 w -(each) 2951 4922 w -(user) 3225 4922 w -(a) 3485 4922 w -(dedicated) 3590 4922 w -(workstation) 4113 4922 w -(or) 4732 4922 w -(PC.) 4884 4922 w -(Plan) 720 5042 w -(9) 957 5042 w -10 /LucidaSansUnicode20 f -(\031) 1020 5042 w -10 /LucidaSansUnicode00 f -(s) 1052 5042 w -(approach) 1139 5042 w -(is) 1626 5042 w -(different.) 1741 5042 w -(The) 2258 5042 w -(various) 2474 5042 w -(machines) 2860 5042 w -(with) 3354 5042 w -(screens,) 3594 5042 w -(keyboards,) 4029 5042 w -(and) 4596 5042 w -(mice) 4811 5042 w -(all) 720 5162 w -(provide) 866 5162 w -(access) 1264 5162 w -(to) 1612 5162 w -(the) 1743 5162 w -(resources) 1931 5162 w -(of) 2434 5162 w -(the) 2565 5162 w -(network,) 2753 5162 w -(so) 3210 5162 w -(they) 3355 5162 w -(are) 3596 5162 w -(functionally) 3782 5162 w -(equivalent,) 4382 5162 w -(in) 4949 5162 w -(the) 720 5282 w -(manner) 914 5282 w -(of) 1322 5282 w -(the) 1459 5282 w -(terminals) 1653 5282 w -(attached) 2145 5282 w -(to) 2600 5282 w -(old) 2737 5282 w -(timesharing) 2929 5282 w -(systems.) 3545 5282 w -(When) 4038 5282 w -(someone) 4342 5282 w -(uses) 4820 5282 w -(the) 720 5402 w -(system,) 922 5402 w -(though,) 1341 5402 w -(the) 1766 5402 w -(terminal) 1968 5402 w -(is) 2417 5402 w -(temporarily) 2544 5402 w -(personalized) 3148 5402 w -(by) 3818 5402 w -(that) 3980 5402 w -(user.) 4219 5402 w -(Instead) 4541 5402 w -(of) 4942 5402 w -(customizing) 720 5522 w -(the) 1356 5522 w -(hardware,) 1553 5522 w -(Plan) 2077 5522 w -(9) 2320 5522 w -(offers) 2425 5522 w -(the) 2750 5522 w -(ability) 2947 5522 w -(to) 3283 5522 w -(customize) 3422 5522 w -(one) 3960 5522 w -10 /LucidaSansUnicode20 f -(\031) 4139 5522 w -10 /LucidaSansUnicode00 f -(s) 4171 5522 w -(view) 4263 5522 w -(of) 4518 5522 w -(the) 4657 5522 w -(sys\255) 4853 5522 w -(tem) 720 5642 w -(provided) 943 5642 w -(by) 1408 5642 w -(the) 1560 5642 w -(software.) 1752 5642 w -(That) 2268 5642 w -(customization) 2522 5642 w -(is) 3245 5642 w -(accomplished) 3363 5642 w -(by) 4065 5642 w -(giving) 4218 5642 w -(local,) 4552 5642 w -(per\255) 4847 5642 w -(sonal) 720 5762 w -(names) 1011 5762 w -(for) 1361 5762 w -(the) 1533 5762 w -(publicly) 1721 5762 w -(visible) 2132 5762 w -(resources) 2474 5762 w -(in) 2977 5762 w -(the) 3101 5762 w -(network.) 3289 5762 w -(Plan) 3778 5762 w -(9) 4012 5762 w -(provides) 4108 5762 w -(the) 4557 5762 w -(mech\255) 4745 5762 w -(anism) 720 5882 w -(to) 1059 5882 w -(assemble) 1207 5882 w -(a) 1711 5882 w -(personal) 1816 5882 w -(view) 2284 5882 w -(of) 2548 5882 w -(the) 2696 5882 w -(public) 2901 5882 w -(space) 3248 5882 w -(with) 3574 5882 w -(local) 3829 5882 w -(names) 4104 5882 w -(for) 4471 5882 w -(globally) 4660 5882 w -(accessible) 720 6002 w -(resources.) 1255 6002 w -(Since) 1832 6002 w -(the) 2127 6002 w -(most) 2325 6002 w -(important) 2610 6002 w -(resources) 3131 6002 w -(of) 3644 6002 w -(the) 3784 6002 w -(network) 3981 6002 w -(are) 4415 6002 w -(files,) 4609 6002 w -(the) 4885 6002 w -(model of that view is file-oriented.) 720 6122 w -(The) 970 6278 w -(client) 1194 6278 w -10 /LucidaSansUnicode20 f -(\031) 1458 6278 w -10 /LucidaSansUnicode00 f -(s) 1490 6278 w -(local) 1584 6278 w -(name) 1852 6278 w -(space) 2161 6278 w -(provides) 2480 6278 w -(a) 2939 6278 w -(way) 3038 6278 w -(to) 3266 6278 w -(customize) 3408 6278 w -(the) 3949 6278 w -(user) 4148 6278 w -10 /LucidaSansUnicode20 f -(\031) 4358 6278 w -10 /LucidaSansUnicode00 f -(s) 4390 6278 w -(view) 4485 6278 w -(of) 4743 6278 w -(the) 4885 6278 w -(network.) 720 6398 w -(The) 1213 6398 w -(services) 1431 6398 w -(available) 1855 6398 w -(in) 2315 6398 w -(the) 2443 6398 w -(network) 2635 6398 w -(all) 3064 6398 w -(export) 3214 6398 w -(file) 3570 6398 w -(hierarchies.) 3758 6398 w -(Those) 4391 6398 w -(impor\255) 4720 6398 w -(tant) 720 6518 w -(to) 944 6518 w -(the) 1075 6518 w -(user) 1263 6518 w -(are) 1506 6518 w -(gathered) 1691 6518 w -(together) 2156 6518 w -(into) 2601 6518 w -(a) 2823 6518 w -(custom) 2911 6518 w -(name) 3299 6518 w -(space;) 3598 6518 w -(those) 3939 6518 w -(of) 4240 6518 w -(no) 4372 6518 w -(immediate) 4529 6518 w -(interest) 720 6638 w -(are) 1130 6638 w -(ignored.) 1323 6638 w -(This) 1802 6638 w -(is) 2048 6638 w -(a) 2169 6638 w -(different) 2265 6638 w -(style) 2724 6638 w -(of) 2990 6638 w -(use) 3129 6638 w -(from) 3339 6638 w -(the) 3612 6638 w -(idea) 3808 6638 w -(of) 4051 6638 w -(a) 4189 6638 w -10 /LucidaSansUnicode20 f -(\030) 4284 6638 w -10 /LucidaSansUnicode00 f -(uniform) 4316 6638 w -(global) 4741 6638 w -(name) 720 6758 w -(space) 1019 6758 w -10 /LucidaSansUnicode20 f -(\031) 1295 6758 w -10 /LucidaSansUnicode00 f -(.) 1327 6758 w -(In) 1424 6758 w -(Plan) 1548 6758 w -(9,) 1782 6758 w -(there) 1910 6758 w -(are) 2196 6758 w -(known) 2382 6758 w -(names) 2736 6758 w -(for) 3087 6758 w -(services) 3260 6758 w -(and) 3681 6758 w -(uniform) 3895 6758 w -(names) 4314 6758 w -(for) 4665 6758 w -(files) 4838 6758 w -(exported) 720 6878 w -(by) 1202 6878 w -(those) 1361 6878 w -(services,) 1672 6878 w -(but) 2134 6878 w -(the) 2339 6878 w -(view) 2537 6878 w -(is) 2794 6878 w -(entirely) 2917 6878 w -(local.) 3322 6878 w -(As) 3654 6878 w -(an) 3817 6878 w -(analogy,) 3977 6878 w -(consider) 4428 6878 w -(the) 4885 6878 w -(difference) 720 6998 w -(between) 1263 6998 w -(the) 1725 6998 w -(phrase) 1935 6998 w -10 /LucidaSansUnicode20 f -(\030) 2318 6998 w -10 /LucidaSansUnicode00 f -(my) 2350 6998 w -(house) 2550 6998 w -10 /LucidaSansUnicode20 f -(\031) 2842 6998 w -10 /LucidaSansUnicode00 f -(and) 2929 6998 w -(the) 3164 6998 w -(precise) 3374 6998 w -(address) 3776 6998 w -(of) 4212 6998 w -(the) 4366 6998 w -(speaker) 4577 6998 w -10 /LucidaSansUnicode20 f -(\031) 4957 6998 w -10 /LucidaSansUnicode00 f -(s) 4989 6998 w -(home.) 720 7118 w -(The) 1105 7118 w -(latter) 1335 7118 w -(may) 1639 7118 w -(be) 1887 7118 w -(used) 2054 7118 w -(by) 2334 7118 w -(anyone) 2497 7118 w -(but) 2893 7118 w -(the) 3103 7118 w -(former) 3306 7118 w -(is) 3683 7118 w -(easier) 3811 7118 w -(to) 4147 7118 w -(say) 4293 7118 w -(and) 4499 7118 w -(makes) 4727 7118 w -(sense) 720 7238 w -(when) 1037 7238 w -(spoken.) 1335 7238 w -(It) 1791 7238 w -(also) 1898 7238 w -(changes) 2135 7238 w -(meaning) 2575 7238 w -(depending) 3035 7238 w -(on) 3592 7238 w -(who) 3756 7238 w -(says) 3998 7238 w -(it,) 4249 7238 w -(yet) 4389 7238 w -(that) 4576 7238 w -(does) 4809 7238 w +(CPU) 2902 4546 w +(servers) 3088 4546 w +(and) 3400 4546 w +(file) 3577 4546 w +(servers) 3731 4546 w +(share) 4044 4546 w +(fast) 4290 4546 w +(local-area) 4468 4546 w +(networks,) 900 4656 w +(while) 1320 4656 w +(terminals) 1561 4656 w +(use) 1962 4656 w +(slower) 2136 4656 w +(wider-area) 2427 4656 w +(networks) 2890 4656 w +(such) 3284 4656 w +(as) 3503 4656 w +(Ethernet,) 3625 4656 w +(Datakit,) 4014 4656 w +(or) 4354 4656 w +(telephone) 4473 4656 w +(lines) 900 4766 w +(to) 1113 4766 w +(connect) 1223 4766 w +(to) 1560 4766 w +(them.) 1670 4766 w +(Gateway) 1952 4766 w +(machines,) 2308 4766 w +(which) 2733 4766 w +(are) 2990 4766 w +(just) 3143 4766 w +(CPU) 3319 4766 w +(servers) 3504 4766 w +(connected) 3815 4766 w +(to) 4248 4766 w +(multiple) 4359 4766 w +(net\255) 4709 4766 w +(works,) 900 4886 w +(allow) 1183 4886 w +(machines) 1410 4886 w +(on) 1804 4886 w +(one) 1929 4886 w +(network) 2099 4886 w +(to) 2440 4886 w +(see) 2545 4886 w +(another.) 2702 4886 w +10 /LucidaSansUnicode00 f +(The) 970 5162 w +(modern) 1200 5162 w +(style) 1625 5162 w +(of) 1900 5162 w +(computing) 2048 5162 w +(offers) 2618 5162 w +(each) 2951 5162 w +(user) 3225 5162 w +(a) 3485 5162 w +(dedicated) 3590 5162 w +(workstation) 4113 5162 w +(or) 4732 5162 w +(PC.) 4884 5162 w +(Plan) 720 5282 w +(9) 957 5282 w +10 /LucidaSansUnicode20 f +(\031) 1020 5282 w +10 /LucidaSansUnicode00 f +(s) 1052 5282 w +(approach) 1139 5282 w +(is) 1626 5282 w +(different.) 1741 5282 w +(The) 2258 5282 w +(various) 2474 5282 w +(machines) 2860 5282 w +(with) 3354 5282 w +(screens,) 3594 5282 w +(keyboards,) 4029 5282 w +(and) 4596 5282 w +(mice) 4811 5282 w +(all) 720 5402 w +(provide) 866 5402 w +(access) 1264 5402 w +(to) 1612 5402 w +(the) 1743 5402 w +(resources) 1931 5402 w +(of) 2434 5402 w +(the) 2565 5402 w +(network,) 2753 5402 w +(so) 3210 5402 w +(they) 3355 5402 w +(are) 3596 5402 w +(functionally) 3782 5402 w +(equivalent,) 4382 5402 w +(in) 4949 5402 w +(the) 720 5522 w +(manner) 914 5522 w +(of) 1322 5522 w +(the) 1459 5522 w +(terminals) 1653 5522 w +(attached) 2145 5522 w +(to) 2600 5522 w +(old) 2737 5522 w +(timesharing) 2929 5522 w +(systems.) 3545 5522 w +(When) 4038 5522 w +(someone) 4342 5522 w +(uses) 4820 5522 w +(the) 720 5642 w +(system,) 922 5642 w +(though,) 1341 5642 w +(the) 1766 5642 w +(terminal) 1968 5642 w +(is) 2417 5642 w +(temporarily) 2544 5642 w +(personalized) 3148 5642 w +(by) 3818 5642 w +(that) 3980 5642 w +(user.) 4219 5642 w +(Instead) 4541 5642 w +(of) 4942 5642 w +(customizing) 720 5762 w +(the) 1356 5762 w +(hardware,) 1553 5762 w +(Plan) 2077 5762 w +(9) 2320 5762 w +(offers) 2425 5762 w +(the) 2750 5762 w +(ability) 2947 5762 w +(to) 3283 5762 w +(customize) 3422 5762 w +(one) 3960 5762 w +10 /LucidaSansUnicode20 f +(\031) 4139 5762 w +10 /LucidaSansUnicode00 f +(s) 4171 5762 w +(view) 4263 5762 w +(of) 4518 5762 w +(the) 4657 5762 w +(sys\255) 4853 5762 w +(tem) 720 5882 w +(provided) 943 5882 w +(by) 1408 5882 w +(the) 1560 5882 w +(software.) 1752 5882 w +(That) 2268 5882 w +(customization) 2522 5882 w +(is) 3245 5882 w +(accomplished) 3363 5882 w +(by) 4065 5882 w +(giving) 4218 5882 w +(local,) 4552 5882 w +(per\255) 4847 5882 w +(sonal) 720 6002 w +(names) 1011 6002 w +(for) 1361 6002 w +(the) 1533 6002 w +(publicly) 1721 6002 w +(visible) 2132 6002 w +(resources) 2474 6002 w +(in) 2977 6002 w +(the) 3101 6002 w +(network.) 3289 6002 w +(Plan) 3778 6002 w +(9) 4012 6002 w +(provides) 4108 6002 w +(the) 4557 6002 w +(mech\255) 4745 6002 w +(anism) 720 6122 w +(to) 1059 6122 w +(assemble) 1207 6122 w +(a) 1711 6122 w +(personal) 1816 6122 w +(view) 2284 6122 w +(of) 2548 6122 w +(the) 2696 6122 w +(public) 2901 6122 w +(space) 3248 6122 w +(with) 3574 6122 w +(local) 3829 6122 w +(names) 4104 6122 w +(for) 4471 6122 w +(globally) 4660 6122 w +(accessible) 720 6242 w +(resources.) 1255 6242 w +(Since) 1832 6242 w +(the) 2127 6242 w +(most) 2325 6242 w +(important) 2610 6242 w +(resources) 3131 6242 w +(of) 3644 6242 w +(the) 3784 6242 w +(network) 3981 6242 w +(are) 4415 6242 w +(files,) 4609 6242 w +(the) 4885 6242 w +(model of that view is file-oriented.) 720 6362 w +(The) 970 6518 w +(client) 1194 6518 w +10 /LucidaSansUnicode20 f +(\031) 1458 6518 w +10 /LucidaSansUnicode00 f +(s) 1490 6518 w +(local) 1584 6518 w +(name) 1852 6518 w +(space) 2161 6518 w +(provides) 2480 6518 w +(a) 2939 6518 w +(way) 3038 6518 w +(to) 3266 6518 w +(customize) 3408 6518 w +(the) 3949 6518 w +(user) 4148 6518 w +10 /LucidaSansUnicode20 f +(\031) 4358 6518 w +10 /LucidaSansUnicode00 f +(s) 4390 6518 w +(view) 4485 6518 w +(of) 4743 6518 w +(the) 4885 6518 w +(network.) 720 6638 w +(The) 1213 6638 w +(services) 1431 6638 w +(available) 1855 6638 w +(in) 2315 6638 w +(the) 2443 6638 w +(network) 2635 6638 w +(all) 3064 6638 w +(export) 3214 6638 w +(file) 3570 6638 w +(hierarchies.) 3758 6638 w +(Those) 4391 6638 w +(impor\255) 4720 6638 w +(tant) 720 6758 w +(to) 944 6758 w +(the) 1075 6758 w +(user) 1263 6758 w +(are) 1506 6758 w +(gathered) 1691 6758 w +(together) 2156 6758 w +(into) 2601 6758 w +(a) 2823 6758 w +(custom) 2911 6758 w +(name) 3299 6758 w +(space;) 3598 6758 w +(those) 3939 6758 w +(of) 4240 6758 w +(no) 4372 6758 w +(immediate) 4529 6758 w +(interest) 720 6878 w +(are) 1130 6878 w +(ignored.) 1323 6878 w +(This) 1802 6878 w +(is) 2048 6878 w +(a) 2169 6878 w +(different) 2265 6878 w +(style) 2724 6878 w +(of) 2990 6878 w +(use) 3129 6878 w +(from) 3339 6878 w +(the) 3612 6878 w +(idea) 3808 6878 w +(of) 4051 6878 w +(a) 4189 6878 w +10 /LucidaSansUnicode20 f +(\030) 4284 6878 w +10 /LucidaSansUnicode00 f +(uniform) 4316 6878 w +(global) 4741 6878 w +(name) 720 6998 w +(space) 1019 6998 w +10 /LucidaSansUnicode20 f +(\031) 1295 6998 w +10 /LucidaSansUnicode00 f +(.) 1327 6998 w +(In) 1424 6998 w +(Plan) 1548 6998 w +(9,) 1782 6998 w +(there) 1910 6998 w +(are) 2196 6998 w +(known) 2382 6998 w +(names) 2736 6998 w +(for) 3087 6998 w +(services) 3260 6998 w +(and) 3681 6998 w +(uniform) 3895 6998 w +(names) 4314 6998 w +(for) 4665 6998 w +(files) 4838 6998 w +(exported) 720 7118 w +(by) 1202 7118 w +(those) 1361 7118 w +(services,) 1672 7118 w +(but) 2134 7118 w +(the) 2339 7118 w +(view) 2537 7118 w +(is) 2794 7118 w +(entirely) 2917 7118 w +(local.) 3322 7118 w +(As) 3654 7118 w +(an) 3817 7118 w +(analogy,) 3977 7118 w +(consider) 4428 7118 w +(the) 4885 7118 w +(difference) 720 7238 w +(between) 1263 7238 w +(the) 1725 7238 w +(phrase) 1935 7238 w +10 /LucidaSansUnicode20 f +(\030) 2318 7238 w +10 /LucidaSansUnicode00 f +(my) 2350 7238 w +(house) 2550 7238 w +10 /LucidaSansUnicode20 f +(\031) 2842 7238 w +10 /LucidaSansUnicode00 f +(and) 2929 7238 w +(the) 3164 7238 w +(precise) 3374 7238 w +(address) 3776 7238 w +(of) 4212 7238 w +(the) 4366 7238 w +(speaker) 4577 7238 w +10 /LucidaSansUnicode20 f +(\031) 4957 7238 w +10 /LucidaSansUnicode00 f +(s) 4989 7238 w cleartomark showpage saveobj restore @@ -5355,717 +5324,718 @@ 4 pagesetup 10 /LucidaSansUnicode00 f (\255 4 \255) 2783 480 w -(not) 720 840 w -(cause) 928 840 w -(confusion.) 1251 840 w -(Similarly,) 1839 840 w -(in) 2330 840 w -(Plan) 2469 840 w -(9) 2718 840 w -(the) 2829 840 w -(name) 3032 840 w -10 /LucidaTypewriter f -(/dev/cons) 3346 840 w -10 /LucidaSansUnicode00 f -(always) 4042 840 w -(refers) 4409 840 w -(to) 4739 840 w -(the) 4885 840 w -(user) 720 960 w -10 /LucidaSansUnicode20 f -(\031) 930 960 w -10 /LucidaSansUnicode00 f -(s) 962 960 w -(terminal) 1055 960 w -(and) 1499 960 w -10 /LucidaTypewriter f -(/bin/date) 1721 960 w -10 /LucidaSansUnicode00 f -(the) 2411 960 w -(correct) 2608 960 w -(version) 2988 960 w -(of) 3383 960 w -(the) 3524 960 w -(date) 3722 960 w -(command) 3976 960 w -(to) 4497 960 w -(run,) 4638 960 w -(but) 4878 960 w -(which) 720 1080 w -(files) 1035 1080 w -(those) 1271 1080 w -(names) 1572 1080 w -(represent) 1923 1080 w -(depends) 2419 1080 w -(on) 2866 1080 w -(circumstances) 3022 1080 w -(such) 3745 1080 w -(as) 4004 1080 w -(the) 4143 1080 w -(architecture) 4331 1080 w -(of) 4942 1080 w -(the) 720 1200 w -(machine) 920 1200 w -(executing) 1373 1200 w -10 /LucidaTypewriter f -(date) 1894 1200 w -10 /LucidaSansUnicode00 f -(.) 2182 1200 w -(Plan) 2292 1200 w -(9,) 2539 1200 w -(then,) 2680 1200 w -(has) 2975 1200 w -(local) 3189 1200 w -(name) 3460 1200 w -(spaces) 3772 1200 w -(that) 4145 1200 w -(obey) 4382 1200 w -(globally) 4660 1200 w -(understood) 720 1320 w -(conventions;) 1315 1320 w -(it) 1969 1320 w -(is) 2073 1320 w -(the) 2191 1320 w -(conventions) 2384 1320 w -(that) 3006 1320 w -(guarantee) 3235 1320 w -(sane) 3759 1320 w -(behavior) 4020 1320 w -(in) 4476 1320 w -(the) 4604 1320 w -(pres\255) 4796 1320 w -(ence of local names.) 720 1440 w -(The) 970 1596 w -(9P) 1195 1596 w -(protocol) 1357 1596 w -(is) 1805 1596 w -(structured) 1929 1596 w -(as) 2474 1596 w -(a) 2624 1596 w -(set) 2723 1596 w -(of) 2911 1596 w -(transactions) 3053 1596 w -(that) 3689 1596 w -(send) 3924 1596 w -(a) 4200 1596 w -(request) 4299 1596 w -(from) 4709 1596 w -(a) 4985 1596 w -(client) 720 1716 w -(to) 1028 1716 w -(a) 1170 1716 w -(\(local) 1269 1716 w -(or) 1571 1716 w -(remote\)) 1717 1716 w -(server) 2137 1716 w -(and) 2477 1716 w -(return) 2700 1716 w -(the) 3042 1716 w -(result.) 3240 1716 w -(9P) 3623 1716 w -(controls) 3784 1716 w -(file) 4220 1716 w -(systems,) 4414 1716 w -(not) 4880 1716 w -(just) 720 1836 w -(files:) 941 1836 w -(it) 1216 1836 w -(includes) 1323 1836 w -(procedures) 1767 1836 w -(to) 2353 1836 w -(resolve) 2493 1836 w -(file) 2881 1836 w -(names) 3074 1836 w -(and) 3433 1836 w -(traverse) 3655 1836 w -(the) 4086 1836 w -(name) 4283 1836 w -(hierarchy) 4591 1836 w -(of) 720 1956 w -(the) 854 1956 w -(file) 1045 1956 w -(system) 1232 1956 w -(provided) 1608 1956 w -(by) 2072 1956 w -(the) 2223 1956 w -(server.) 2414 1956 w -(On) 2810 1956 w -(the) 2985 1956 w -(other) 3175 1956 w -(hand,) 3467 1956 w -(the) 3776 1956 w -(client) 3966 1956 w -10 /LucidaSansUnicode20 f -(\031) 4230 1956 w -10 /LucidaSansUnicode00 f -(s) 4262 1956 w -(name) 4348 1956 w -(space) 4649 1956 w -(is) 4960 1956 w -(held) 720 2076 w -(by) 975 2076 w -(the) 1135 2076 w -(client) 1335 2076 w -(system) 1644 2076 w -(alone,) 2029 2076 w -(not) 2369 2076 w -(on) 2574 2076 w -(or) 2742 2076 w -(with) 2889 2076 w -(the) 3139 2076 w -(server,) 3339 2076 w -(a) 3713 2076 w -(distinction) 3814 2076 w -(from) 4371 2076 w -(systems) 4649 2076 w -(such) 720 2196 w -(as) 989 2196 w -(Sprite) 1138 2196 w -([OCDNW88].) 1461 2196 w -(Also,) 2142 2196 w -(file) 2427 2196 w -(access) 2621 2196 w -(is) 2979 2196 w -(at) 3102 2196 w -(the) 3236 2196 w -(level) 3433 2196 w -(of) 3697 2196 w -(bytes,) 3837 2196 w -(not) 4170 2196 w -(blocks,) 4372 2196 w -(which) 4759 2196 w -(distinguishes) 720 2316 w -(9P) 1408 2316 w -(from) 1570 2316 w -(protocols) 1846 2316 w -(like) 2345 2316 w -(NFS) 2561 2316 w -(and) 2787 2316 w -(RFS.) 3011 2316 w -(A) 3290 2316 w -(paper) 3403 2316 w -(by) 3725 2316 w -(Welch) 3884 2316 w -(compares) 4212 2316 w -(Sprite,) 4728 2316 w -(NFS, and Plan 9) 720 2436 w -10 /LucidaSansUnicode20 f -(\031) 1474 2436 w -10 /LucidaSansUnicode00 f -(s network file system structures [Welc94].) 1506 2436 w -(This) 970 2592 w -(approach) 1214 2592 w -(was) 1704 2592 w -(designed) 1926 2592 w -(with) 2407 2592 w -(traditional) 2651 2592 w -(files) 3188 2592 w -(in) 3429 2592 w -(mind,) 3560 2592 w -(but) 3879 2592 w -(can) 4081 2592 w -(be) 4289 2592 w -(extended) 4448 2592 w -(to) 4942 2592 w -(many) 720 2712 w -(other) 1026 2712 w -(resources.) 1327 2712 w -(Plan) 1905 2712 w -(9) 2150 2712 w -(services) 2256 2712 w -(that) 2686 2712 w -(export) 2920 2712 w -(file) 3282 2712 w -(hierarchies) 3476 2712 w -(include) 4052 2712 w -(I/O) 4447 2712 w -(devices,) 4650 2712 w -(backup) 720 2832 w -(services,) 1112 2832 w -(the) 1571 2832 w -(window) 1766 2832 w -(system,) 2175 2832 w -(network) 2587 2832 w -(interfaces,) 3020 2832 w -(and) 3568 2832 w -(many) 3789 2832 w -(others.) 4092 2832 w -(One) 4505 2832 w -(exam\255) 4742 2832 w -(ple) 720 2952 w -(is) 906 2952 w -(the) 1024 2952 w -(process) 1217 2952 w -(file) 1629 2952 w -(system,) 1818 2952 w -10 /LucidaTypewriter f -(/proc) 2228 2952 w -10 /LucidaSansUnicode00 f -(,) 2588 2952 w -(which) 2658 2952 w -(provides) 2976 2952 w -(a) 3429 2952 w -(clean) 3521 2952 w -(way) 3811 2952 w -(to) 4032 2952 w -(examine) 4167 2952 w -(and) 4616 2952 w -(con\255) 4833 2952 w -(trol) 720 3072 w -(running) 923 3072 w -(processes.) 1338 3072 w -(Precursor) 1918 3072 w -(systems) 2413 3072 w -(had) 2840 3072 w -(a) 3056 3072 w -(similar) 3147 3072 w -(idea) 3510 3072 w -([Kill84],) 3749 3072 w -(but) 4161 3072 w -(Plan) 4359 3072 w -(9) 4596 3072 w -(pushes) 4695 3072 w -(the) 720 3192 w -(file) 918 3192 w -(metaphor) 1112 3192 w -(much) 1623 3192 w -(further) 1934 3192 w -([PPTTW93].) 2313 3192 w -(The) 2934 3192 w -(file) 3158 3192 w -(system) 3352 3192 w -(model) 3735 3192 w -(is) 4080 3192 w -(well-understood,) 4202 3192 w -(both) 720 3312 w -(by) 984 3312 w -(system) 1140 3312 w -(builders) 1522 3312 w -(and) 1958 3312 w -(general) 2180 3312 w -(users,) 2583 3312 w -(so) 2918 3312 w -(services) 3072 3312 w -(that) 3501 3312 w -(present) 3734 3312 w -(file-like) 4142 3312 w -(interfaces) 4565 3312 w -(are) 720 3432 w -(easy) 918 3432 w -(to) 1178 3432 w -(build,) 1322 3432 w -(easy) 1645 3432 w -(to) 1904 3432 w -(understand,) 2047 3432 w -(and) 2676 3432 w -(easy) 2901 3432 w -(to) 3160 3432 w -(use.) 3303 3432 w -(Files) 3581 3432 w -(come) 3845 3432 w -(with) 4151 3432 w -(agreed-upon) 4401 3432 w -(rules) 720 3552 w -(for) 1006 3552 w -(protection,) 1192 3552 w -(naming,) 1769 3552 w -(and) 2211 3552 w -(access) 2439 3552 w -(both) 2802 3552 w -(local) 3073 3552 w -(and) 3346 3552 w -(remote,) 3574 3552 w -(so) 3998 3552 w -(services) 4158 3552 w -(built) 4593 3552 w -(this) 4861 3552 w -(way) 720 3672 w -(are) 968 3672 w -(ready-made) 1184 3672 w -(for) 1840 3672 w -(a) 2042 3672 w -(distributed) 2160 3672 w -(system.) 2754 3672 w -(\(This) 3221 3672 w -(is) 3522 3672 w -(a) 3665 3672 w -(distinction) 3783 3672 w -(from) 4357 3672 w -10 /LucidaSansUnicode20 f -(\030) 4652 3672 w -10 /LucidaSansUnicode00 f -(object-) 4684 3672 w -(oriented) 720 3792 w -10 /LucidaSansUnicode20 f -(\031) 1125 3792 w -10 /LucidaSansUnicode00 f -(models,) 1209 3792 w -(where) 1646 3792 w -(these) 1990 3792 w -(issues) 2304 3792 w -(must) 2656 3792 w -(be) 2951 3792 w -(faced) 3122 3792 w -(anew) 3436 3792 w -(for) 3738 3792 w -(every) 3929 3792 w -(class) 4238 3792 w -(of) 4527 3792 w -(object.\)) 4677 3792 w -(Examples in the sections that follow illustrate these ideas in action.) 720 3912 w +(home.) 720 840 w +(The) 1105 840 w +(latter) 1335 840 w +(may) 1639 840 w +(be) 1887 840 w +(used) 2054 840 w +(by) 2334 840 w +(anyone) 2497 840 w +(but) 2893 840 w +(the) 3103 840 w +(former) 3306 840 w +(is) 3683 840 w +(easier) 3811 840 w +(to) 4147 840 w +(say) 4293 840 w +(and) 4499 840 w +(makes) 4727 840 w +(sense) 720 960 w +(when) 1037 960 w +(spoken.) 1335 960 w +(It) 1791 960 w +(also) 1898 960 w +(changes) 2135 960 w +(meaning) 2575 960 w +(depending) 3035 960 w +(on) 3592 960 w +(who) 3756 960 w +(says) 3998 960 w +(it,) 4249 960 w +(yet) 4389 960 w +(that) 4576 960 w +(does) 4809 960 w +(not) 720 1080 w +(cause) 928 1080 w +(confusion.) 1251 1080 w +(Similarly,) 1839 1080 w +(in) 2330 1080 w +(Plan) 2469 1080 w +(9) 2718 1080 w +(the) 2829 1080 w +(name) 3032 1080 w +10 /LucidaTypewriter f +(/dev/cons) 3346 1080 w +10 /LucidaSansUnicode00 f +(always) 4042 1080 w +(refers) 4409 1080 w +(to) 4739 1080 w +(the) 4885 1080 w +(user) 720 1200 w +10 /LucidaSansUnicode20 f +(\031) 930 1200 w +10 /LucidaSansUnicode00 f +(s) 962 1200 w +(terminal) 1055 1200 w +(and) 1499 1200 w +10 /LucidaTypewriter f +(/bin/date) 1721 1200 w +10 /LucidaSansUnicode00 f +(the) 2411 1200 w +(correct) 2608 1200 w +(version) 2988 1200 w +(of) 3383 1200 w +(the) 3524 1200 w +(date) 3722 1200 w +(command) 3976 1200 w +(to) 4497 1200 w +(run,) 4638 1200 w +(but) 4878 1200 w +(which) 720 1320 w +(files) 1035 1320 w +(those) 1271 1320 w +(names) 1572 1320 w +(represent) 1923 1320 w +(depends) 2419 1320 w +(on) 2866 1320 w +(circumstances) 3022 1320 w +(such) 3745 1320 w +(as) 4004 1320 w +(the) 4143 1320 w +(architecture) 4331 1320 w +(of) 4942 1320 w +(the) 720 1440 w +(machine) 920 1440 w +(executing) 1373 1440 w +10 /LucidaTypewriter f +(date) 1894 1440 w +10 /LucidaSansUnicode00 f +(.) 2182 1440 w +(Plan) 2292 1440 w +(9,) 2539 1440 w +(then,) 2680 1440 w +(has) 2975 1440 w +(local) 3189 1440 w +(name) 3460 1440 w +(spaces) 3772 1440 w +(that) 4145 1440 w +(obey) 4382 1440 w +(globally) 4660 1440 w +(understood) 720 1560 w +(conventions;) 1315 1560 w +(it) 1969 1560 w +(is) 2073 1560 w +(the) 2191 1560 w +(conventions) 2384 1560 w +(that) 3006 1560 w +(guarantee) 3235 1560 w +(sane) 3759 1560 w +(behavior) 4020 1560 w +(in) 4476 1560 w +(the) 4604 1560 w +(pres\255) 4796 1560 w +(ence of local names.) 720 1680 w +(The) 970 1836 w +(9P) 1195 1836 w +(protocol) 1357 1836 w +(is) 1805 1836 w +(structured) 1929 1836 w +(as) 2474 1836 w +(a) 2624 1836 w +(set) 2723 1836 w +(of) 2911 1836 w +(transactions) 3053 1836 w +(that) 3689 1836 w +(send) 3924 1836 w +(a) 4200 1836 w +(request) 4299 1836 w +(from) 4709 1836 w +(a) 4985 1836 w +(client) 720 1956 w +(to) 1028 1956 w +(a) 1170 1956 w +(\(local) 1269 1956 w +(or) 1571 1956 w +(remote\)) 1717 1956 w +(server) 2137 1956 w +(and) 2477 1956 w +(return) 2700 1956 w +(the) 3042 1956 w +(result.) 3240 1956 w +(9P) 3623 1956 w +(controls) 3784 1956 w +(file) 4220 1956 w +(systems,) 4414 1956 w +(not) 4880 1956 w +(just) 720 2076 w +(files:) 941 2076 w +(it) 1216 2076 w +(includes) 1323 2076 w +(procedures) 1767 2076 w +(to) 2353 2076 w +(resolve) 2493 2076 w +(file) 2881 2076 w +(names) 3074 2076 w +(and) 3433 2076 w +(traverse) 3655 2076 w +(the) 4086 2076 w +(name) 4283 2076 w +(hierarchy) 4591 2076 w +(of) 720 2196 w +(the) 854 2196 w +(file) 1045 2196 w +(system) 1232 2196 w +(provided) 1608 2196 w +(by) 2072 2196 w +(the) 2223 2196 w +(server.) 2414 2196 w +(On) 2810 2196 w +(the) 2985 2196 w +(other) 3175 2196 w +(hand,) 3467 2196 w +(the) 3776 2196 w +(client) 3966 2196 w +10 /LucidaSansUnicode20 f +(\031) 4230 2196 w +10 /LucidaSansUnicode00 f +(s) 4262 2196 w +(name) 4348 2196 w +(space) 4649 2196 w +(is) 4960 2196 w +(held) 720 2316 w +(by) 975 2316 w +(the) 1135 2316 w +(client) 1335 2316 w +(system) 1644 2316 w +(alone,) 2029 2316 w +(not) 2369 2316 w +(on) 2574 2316 w +(or) 2742 2316 w +(with) 2889 2316 w +(the) 3139 2316 w +(server,) 3339 2316 w +(a) 3713 2316 w +(distinction) 3814 2316 w +(from) 4371 2316 w +(systems) 4649 2316 w +(such) 720 2436 w +(as) 989 2436 w +(Sprite) 1138 2436 w +([OCDNW88].) 1461 2436 w +(Also,) 2142 2436 w +(file) 2427 2436 w +(access) 2621 2436 w +(is) 2979 2436 w +(at) 3102 2436 w +(the) 3236 2436 w +(level) 3433 2436 w +(of) 3697 2436 w +(bytes,) 3837 2436 w +(not) 4170 2436 w +(blocks,) 4372 2436 w +(which) 4759 2436 w +(distinguishes) 720 2556 w +(9P) 1408 2556 w +(from) 1570 2556 w +(protocols) 1846 2556 w +(like) 2345 2556 w +(NFS) 2561 2556 w +(and) 2787 2556 w +(RFS.) 3011 2556 w +(A) 3290 2556 w +(paper) 3403 2556 w +(by) 3725 2556 w +(Welch) 3884 2556 w +(compares) 4212 2556 w +(Sprite,) 4728 2556 w +(NFS, and Plan 9) 720 2676 w +10 /LucidaSansUnicode20 f +(\031) 1474 2676 w +10 /LucidaSansUnicode00 f +(s network file system structures [Welc94].) 1506 2676 w +(This) 970 2832 w +(approach) 1214 2832 w +(was) 1704 2832 w +(designed) 1926 2832 w +(with) 2407 2832 w +(traditional) 2651 2832 w +(files) 3188 2832 w +(in) 3429 2832 w +(mind,) 3560 2832 w +(but) 3879 2832 w +(can) 4081 2832 w +(be) 4289 2832 w +(extended) 4448 2832 w +(to) 4942 2832 w +(many) 720 2952 w +(other) 1026 2952 w +(resources.) 1327 2952 w +(Plan) 1905 2952 w +(9) 2150 2952 w +(services) 2256 2952 w +(that) 2686 2952 w +(export) 2920 2952 w +(file) 3282 2952 w +(hierarchies) 3476 2952 w +(include) 4052 2952 w +(I/O) 4447 2952 w +(devices,) 4650 2952 w +(backup) 720 3072 w +(services,) 1112 3072 w +(the) 1571 3072 w +(window) 1766 3072 w +(system,) 2175 3072 w +(network) 2587 3072 w +(interfaces,) 3020 3072 w +(and) 3568 3072 w +(many) 3789 3072 w +(others.) 4092 3072 w +(One) 4505 3072 w +(exam\255) 4742 3072 w +(ple) 720 3192 w +(is) 906 3192 w +(the) 1024 3192 w +(process) 1217 3192 w +(file) 1629 3192 w +(system,) 1818 3192 w +10 /LucidaTypewriter f +(/proc) 2228 3192 w +10 /LucidaSansUnicode00 f +(,) 2588 3192 w +(which) 2658 3192 w +(provides) 2976 3192 w +(a) 3429 3192 w +(clean) 3521 3192 w +(way) 3811 3192 w +(to) 4032 3192 w +(examine) 4167 3192 w +(and) 4616 3192 w +(con\255) 4833 3192 w +(trol) 720 3312 w +(running) 923 3312 w +(processes.) 1338 3312 w +(Precursor) 1918 3312 w +(systems) 2413 3312 w +(had) 2840 3312 w +(a) 3056 3312 w +(similar) 3147 3312 w +(idea) 3510 3312 w +([Kill84],) 3749 3312 w +(but) 4161 3312 w +(Plan) 4359 3312 w +(9) 4596 3312 w +(pushes) 4695 3312 w +(the) 720 3432 w +(file) 918 3432 w +(metaphor) 1112 3432 w +(much) 1623 3432 w +(further) 1934 3432 w +([PPTTW93].) 2313 3432 w +(The) 2934 3432 w +(file) 3158 3432 w +(system) 3352 3432 w +(model) 3735 3432 w +(is) 4080 3432 w +(well-understood,) 4202 3432 w +(both) 720 3552 w +(by) 984 3552 w +(system) 1140 3552 w +(builders) 1522 3552 w +(and) 1958 3552 w +(general) 2180 3552 w +(users,) 2583 3552 w +(so) 2918 3552 w +(services) 3072 3552 w +(that) 3501 3552 w +(present) 3734 3552 w +(file-like) 4142 3552 w +(interfaces) 4565 3552 w +(are) 720 3672 w +(easy) 918 3672 w +(to) 1178 3672 w +(build,) 1322 3672 w +(easy) 1645 3672 w +(to) 1904 3672 w +(understand,) 2047 3672 w +(and) 2676 3672 w +(easy) 2901 3672 w +(to) 3160 3672 w +(use.) 3303 3672 w +(Files) 3581 3672 w +(come) 3845 3672 w +(with) 4151 3672 w +(agreed-upon) 4401 3672 w +(rules) 720 3792 w +(for) 1006 3792 w +(protection,) 1192 3792 w +(naming,) 1769 3792 w +(and) 2211 3792 w +(access) 2439 3792 w +(both) 2802 3792 w +(local) 3073 3792 w +(and) 3346 3792 w +(remote,) 3574 3792 w +(so) 3998 3792 w +(services) 4158 3792 w +(built) 4593 3792 w +(this) 4861 3792 w +(way) 720 3912 w +(are) 968 3912 w +(ready-made) 1184 3912 w +(for) 1840 3912 w +(a) 2042 3912 w +(distributed) 2160 3912 w +(system.) 2754 3912 w +(\(This) 3221 3912 w +(is) 3522 3912 w +(a) 3665 3912 w +(distinction) 3783 3912 w +(from) 4357 3912 w +10 /LucidaSansUnicode20 f +(\030) 4652 3912 w +10 /LucidaSansUnicode00 f +(object-) 4684 3912 w +(oriented) 720 4032 w +10 /LucidaSansUnicode20 f +(\031) 1125 4032 w +10 /LucidaSansUnicode00 f +(models,) 1209 4032 w +(where) 1646 4032 w +(these) 1990 4032 w +(issues) 2304 4032 w +(must) 2656 4032 w +(be) 2951 4032 w +(faced) 3122 4032 w +(anew) 3436 4032 w +(for) 3738 4032 w +(every) 3929 4032 w +(class) 4238 4032 w +(of) 4527 4032 w +(object.\)) 4677 4032 w +(Examples in the sections that follow illustrate these ideas in action.) 720 4152 w 10 /LucidaSans-Demi f -(The Command-level View) 720 4152 w +(The Command-level View) 720 4392 w 10 /LucidaSansUnicode00 f -(Plan) 970 4308 w -(9) 1209 4308 w -(is) 1310 4308 w -(meant) 1428 4308 w -(to) 1769 4308 w -(be) 1905 4308 w -(used) 2062 4308 w -(from) 2332 4308 w -(a) 2602 4308 w -(machine) 2695 4308 w -(with) 3141 4308 w -(a) 3384 4308 w -(screen) 3477 4308 w -(running) 3832 4308 w -(the) 4251 4308 w -(window) 4445 4308 w -(sys\255) 4853 4308 w -(tem.) 720 4428 w -(It) 1019 4428 w -(has) 1134 4428 w -(no) 1351 4428 w -(notion) 1523 4428 w -(of) 1884 4428 w -10 /LucidaSansUnicode20 f -(\030) 2030 4428 w -10 /LucidaSansUnicode00 f -(teletype) 2062 4428 w -10 /LucidaSansUnicode20 f -(\031) 2448 4428 w -10 /LucidaSansUnicode00 f -(in) 2528 4428 w -(the) 2667 4428 w -(UNIX) 2870 4428 w -(sense.) 3153 4428 w -(The) 3541 4428 w -(keyboard) 3770 4428 w -(handling) 4267 4428 w -(of) 4739 4428 w -(the) 4885 4428 w -(bare) 720 4548 w -(system) 975 4548 w -(is) 1355 4548 w -(rudimentary,) 1475 4548 w -(but) 2138 4548 w -(once) 2340 4548 w -(the) 2610 4548 w -(window) 2805 4548 w -(system,) 3215 4548 w -(8\275) 3628 4548 w -([Pike91],) 3812 4548 w -(is) 4275 4548 w -(running,) 4396 4548 w -(text) 4849 4548 w -(can) 720 4668 w -(be) 921 4668 w -(edited) 1073 4668 w -(with) 1410 4668 w -10 /LucidaSansUnicode20 f -(\030) 1648 4668 w -10 /LucidaSansUnicode00 f -(cut) 1680 4668 w -(and) 1863 4668 w -(paste) 2076 4668 w -10 /LucidaSansUnicode20 f -(\031) 2338 4668 w -10 /LucidaSansUnicode00 f -(operations) 2403 4668 w -(from) 2952 4668 w -(a) 3217 4668 w -(pop-up) 3305 4668 w -(menu, copied between win\255) 3708 4668 w -(dows,) 720 4788 w -(and) 1045 4788 w -(so) 1266 4788 w -(on.) 1419 4788 w -(8\275) 1648 4788 w -(permits) 1833 4788 w -(editing) 2245 4788 w -(text) 2625 4788 w -(from) 2858 4788 w -(the) 3132 4788 w -(past,) 3329 4788 w -(not) 3609 4788 w -(just) 3811 4788 w -(on) 4033 4788 w -(the) 4198 4788 w -(current) 4395 4788 w -(input) 4787 4788 w -(line.) 720 4908 w -(The) 1000 4908 w -(text-editing) 1220 4908 w -(capabilities) 1846 4908 w -(of) 2432 4908 w -(8\275) 2569 4908 w -(are) 2751 4908 w -(strong) 2942 4908 w -(enough) 3295 4908 w -(to) 3699 4908 w -(displace) 3836 4908 w -(special) 4272 4908 w -(features) 4645 4908 w -(such) 720 5028 w -(as) 983 5028 w -(history) 1126 5028 w -(in) 1496 5028 w -(the) 1624 5028 w -(shell,) 1816 5028 w -(paging) 2112 5028 w -(and) 2482 5028 w -(scrolling,) 2699 5028 w -(and) 3183 5028 w -(mail) 3400 5028 w -(editors.) 3643 5028 w -(8\275) 4082 5028 w -(windows) 4262 5028 w -(do) 4719 5028 w -(not) 4880 5028 w -(support) 720 5148 w -(cursor) 1135 5148 w -(addressing) 1479 5148 w -(and,) 2048 5148 w -(except) 2296 5148 w -(for) 2656 5148 w -(one) 2831 5148 w -(terminal) 3046 5148 w -(emulator) 3484 5148 w -(to) 3954 5148 w -(simplify) 4088 5148 w -(connecting) 4507 5148 w -(to traditional systems, there is no cursor-addressing software in Plan 9.) 720 5268 w -(Each) 970 5424 w -(window) 1228 5424 w -(is) 1633 5424 w -(created) 1749 5424 w -(in) 2144 5424 w -(a) 2272 5424 w -(separate) 2364 5424 w -(name) 2815 5424 w -(space.) 3118 5424 w -(Adjustments) 3495 5424 w -(made) 4143 5424 w -(to) 4447 5424 w -(the) 4582 5424 w -(name) 4774 5424 w -(space) 720 5544 w -(in) 1039 5544 w -(a) 1173 5544 w -(window) 1271 5544 w -(do) 1682 5544 w -(not) 1848 5544 w -(affect) 2050 5544 w -(other) 2365 5544 w -(windows) 2664 5544 w -(or) 3126 5544 w -(programs,) 3270 5544 w -(making) 3811 5544 w -(it) 4212 5544 w -(safe) 4320 5544 w -(to) 4561 5544 w -(experi\255) 4701 5544 w -(ment) 720 5664 w -(with) 1013 5664 w -(local) 1263 5664 w -(modifications) 1533 5664 w -(to) 2236 5664 w -(the) 2379 5664 w -(name) 2579 5664 w -(space,) 2890 5664 w -(for) 3243 5664 w -(example) 3427 5664 w -(to) 3885 5664 w -(substitute) 4029 5664 w -(files) 4560 5664 w -(from) 4808 5664 w -(the) 720 5784 w -(dump) 909 5784 w -(file) 1223 5784 w -(system) 1407 5784 w -(when) 1780 5784 w -(debugging.) 2070 5784 w -(Once) 2688 5784 w -(the) 2968 5784 w -(debugging) 3156 5784 w -(is) 3710 5784 w -(done,) 3823 5784 w -(the) 4130 5784 w -(window) 4318 5784 w -(can) 4720 5784 w -(be) 4921 5784 w -(deleted) 720 5904 w -(and) 1115 5904 w -(all) 1330 5904 w -(trace) 1478 5904 w -(of) 1753 5904 w -(the) 1886 5904 w -(experimental) 2076 5904 w -(apparatus) 2749 5904 w -(is) 3266 5904 w -(gone.) 3382 5904 w -(Similar) 3723 5904 w -(arguments) 4089 5904 w -(apply) 4644 5904 w -(to) 4942 5904 w +(Plan) 970 4548 w +(9) 1209 4548 w +(is) 1310 4548 w +(meant) 1428 4548 w +(to) 1769 4548 w +(be) 1905 4548 w +(used) 2062 4548 w +(from) 2332 4548 w +(a) 2602 4548 w +(machine) 2695 4548 w +(with) 3141 4548 w +(a) 3384 4548 w +(screen) 3477 4548 w +(running) 3832 4548 w +(the) 4251 4548 w +(window) 4445 4548 w +(sys\255) 4853 4548 w +(tem.) 720 4668 w +(It) 1019 4668 w +(has) 1134 4668 w +(no) 1351 4668 w +(notion) 1523 4668 w +(of) 1884 4668 w +10 /LucidaSansUnicode20 f +(\030) 2030 4668 w +10 /LucidaSansUnicode00 f +(teletype) 2062 4668 w +10 /LucidaSansUnicode20 f +(\031) 2448 4668 w +10 /LucidaSansUnicode00 f +(in) 2528 4668 w +(the) 2667 4668 w +(UNIX) 2870 4668 w +(sense.) 3153 4668 w +(The) 3541 4668 w +(keyboard) 3770 4668 w +(handling) 4267 4668 w +(of) 4739 4668 w +(the) 4885 4668 w +(bare) 720 4788 w +(system) 975 4788 w +(is) 1355 4788 w +(rudimentary,) 1475 4788 w +(but) 2138 4788 w +(once) 2340 4788 w +(the) 2610 4788 w +(window) 2805 4788 w +(system,) 3215 4788 w +(8\275) 3628 4788 w +([Pike91],) 3812 4788 w +(is) 4275 4788 w +(running,) 4396 4788 w +(text) 4849 4788 w +(can) 720 4908 w +(be) 921 4908 w +(edited) 1073 4908 w +(with) 1410 4908 w +10 /LucidaSansUnicode20 f +(\030) 1648 4908 w +10 /LucidaSansUnicode00 f +(cut) 1680 4908 w +(and) 1863 4908 w +(paste) 2076 4908 w +10 /LucidaSansUnicode20 f +(\031) 2338 4908 w +10 /LucidaSansUnicode00 f +(operations) 2403 4908 w +(from) 2952 4908 w +(a) 3217 4908 w +(pop-up) 3305 4908 w +(menu, copied between win\255) 3708 4908 w +(dows,) 720 5028 w +(and) 1045 5028 w +(so) 1266 5028 w +(on.) 1419 5028 w +(8\275) 1648 5028 w +(permits) 1833 5028 w +(editing) 2245 5028 w +(text) 2625 5028 w +(from) 2858 5028 w +(the) 3132 5028 w +(past,) 3329 5028 w +(not) 3609 5028 w +(just) 3811 5028 w +(on) 4033 5028 w +(the) 4198 5028 w +(current) 4395 5028 w +(input) 4787 5028 w +(line.) 720 5148 w +(The) 1000 5148 w +(text-editing) 1220 5148 w +(capabilities) 1846 5148 w +(of) 2432 5148 w +(8\275) 2569 5148 w +(are) 2751 5148 w +(strong) 2942 5148 w +(enough) 3295 5148 w +(to) 3699 5148 w +(displace) 3836 5148 w +(special) 4272 5148 w +(features) 4645 5148 w +(such) 720 5268 w +(as) 983 5268 w +(history) 1126 5268 w +(in) 1496 5268 w +(the) 1624 5268 w +(shell,) 1816 5268 w +(paging) 2112 5268 w +(and) 2482 5268 w +(scrolling,) 2699 5268 w +(and) 3183 5268 w +(mail) 3400 5268 w +(editors.) 3643 5268 w +(8\275) 4082 5268 w +(windows) 4262 5268 w +(do) 4719 5268 w +(not) 4880 5268 w +(support) 720 5388 w +(cursor) 1135 5388 w +(addressing) 1479 5388 w +(and,) 2048 5388 w +(except) 2296 5388 w +(for) 2656 5388 w +(one) 2831 5388 w +(terminal) 3046 5388 w +(emulator) 3484 5388 w +(to) 3954 5388 w +(simplify) 4088 5388 w +(connecting) 4507 5388 w +(to traditional systems, there is no cursor-addressing software in Plan 9.) 720 5508 w +(Each) 970 5664 w +(window) 1228 5664 w +(is) 1633 5664 w +(created) 1749 5664 w +(in) 2144 5664 w +(a) 2272 5664 w +(separate) 2364 5664 w +(name) 2815 5664 w +(space.) 3118 5664 w +(Adjustments) 3495 5664 w +(made) 4143 5664 w +(to) 4447 5664 w +(the) 4582 5664 w +(name) 4774 5664 w +(space) 720 5784 w +(in) 1039 5784 w +(a) 1173 5784 w +(window) 1271 5784 w +(do) 1682 5784 w +(not) 1848 5784 w +(affect) 2050 5784 w +(other) 2365 5784 w +(windows) 2664 5784 w +(or) 3126 5784 w +(programs,) 3270 5784 w +(making) 3811 5784 w +(it) 4212 5784 w +(safe) 4320 5784 w +(to) 4561 5784 w +(experi\255) 4701 5784 w +(ment) 720 5904 w +(with) 1013 5904 w +(local) 1263 5904 w +(modifications) 1533 5904 w +(to) 2236 5904 w +(the) 2379 5904 w +(name) 2579 5904 w +(space,) 2890 5904 w +(for) 3243 5904 w +(example) 3427 5904 w +(to) 3885 5904 w +(substitute) 4029 5904 w +(files) 4560 5904 w +(from) 4808 5904 w (the) 720 6024 w -(private) 913 6024 w -(space) 1284 6024 w -(each) 1598 6024 w -(window) 1860 6024 w -(has) 2267 6024 w -(for) 2473 6024 w -(environment) 2650 6024 w -(variables,) 3298 6024 w -(notes) 3798 6024 w -(\(analogous) 4102 6024 w -(to) 4670 6024 w -(UNIX) 4805 6024 w -(signals\), etc.) 720 6144 w -(Each) 970 6300 w -(window) 1241 6300 w -(is) 1660 6300 w -(created) 1790 6300 w -(running) 2199 6300 w -(an) 2629 6300 w -(application,) 2796 6300 w -(such) 3412 6300 w -(as) 3688 6300 w -(the) 3844 6300 w -(shell,) 4049 6300 w -(with) 4358 6300 w -(standard) 4613 6300 w -(input) 720 6420 w -(and) 1009 6420 w -(output) 1225 6420 w -(connected) 1583 6420 w -(to) 2118 6420 w -(the) 2252 6420 w -(editable) 2443 6420 w -(text) 2867 6420 w -(of) 3094 6420 w -(the) 3228 6420 w -(window.) 3419 6420 w -(Each) 3888 6420 w -(window) 4146 6420 w -(also) 4551 6420 w -(has) 4782 6420 w -(a) 4985 6420 w -(private) 720 6540 w -(bitmap) 1107 6540 w -(and) 1501 6540 w -(multiplexed) 1735 6540 w -(access) 2367 6540 w -(to) 2737 6540 w -(the) 2890 6540 w -(keyboard,) 3100 6540 w -(mouse,) 3636 6540 w -(and) 4046 6540 w -(other) 4281 6540 w -(graphical) 4593 6540 w -(resources) 720 6660 w -(through) 1235 6660 w -(files) 1667 6660 w -(like) 1914 6660 w -10 /LucidaTypewriter f -(/dev/mouse) 2131 6660 w -10 /LucidaSansUnicode00 f -(,) 2851 6660 w -10 /LucidaTypewriter f -(/dev/bitblt) 2928 6660 w -10 /LucidaSansUnicode00 f -(,) 3720 6660 w -(and) 3796 6660 w -10 /LucidaTypewriter f -(/dev/cons) 4020 6660 w -10 /LucidaSansUnicode00 f -(\(analo\255) 4712 6660 w -(gous) 720 6780 w -(to) 990 6780 w -(UNIX) 1122 6780 w -10 /LucidaSansUnicode20 f -(\031) 1357 6780 w -10 /LucidaSansUnicode00 f -(s) 1389 6780 w -10 /LucidaTypewriter f -(/dev/tty) 1474 6780 w -10 /LucidaSansUnicode00 f -(\).) 2050 6780 w -(These) 2181 6780 w -(files) 2503 6780 w -(are) 2739 6780 w -(provided) 2925 6780 w -(by) 3387 6780 w -(8\275,) 3536 6780 w -(which) 3745 6780 w -(is) 4060 6780 w -(implemented) 4174 6780 w -(as) 4845 6780 w -(a) 4985 6780 w -(file) 720 6900 w -(server.) 904 6900 w -(Unlike) 1298 6900 w -(X) 1634 6900 w -(windows,) 1730 6900 w -(where a new application typically creates a new window to) 2215 6900 w -(run in, an 8\275) 720 7020 w -(graphics) 1397 7020 w -(application) 1844 7020 w -(usually) 2411 7020 w -(runs) 2784 7020 w -(in) 3033 7020 w -(the) 3157 7020 w -(window) 3345 7020 w -(where) 3747 7020 w -(it) 4072 7020 w -(starts.) 4171 7020 w -(It) 4540 7020 w -(is) 4639 7020 w -(possi\255) 4752 7020 w -(ble) 720 7140 w -(and) 909 7140 w -(efficient) 1130 7140 w -(for) 1565 7140 w -(an) 1745 7140 w -(application) 1903 7140 w -(to) 2478 7140 w -(create) 2617 7140 w -(a) 2954 7140 w -(new) 3050 7140 w -(window,) 3286 7140 w -(but) 3728 7140 w -(that) 3931 7140 w -(is) 4162 7140 w -(not) 4282 7140 w -(the) 4482 7140 w -(style) 4677 7140 w -(of) 4942 7140 w -(the) 720 7260 w -(system.) 911 7260 w -(Again) 1351 7260 w -(contrasting) 1664 7260 w -(to) 2248 7260 w -(X,) 2383 7260 w -(in) 2515 7260 w -(which) 2643 7260 w -(a) 2961 7260 w -(remote) 3053 7260 w -(application) 3434 7260 w -(makes) 4005 7260 w -(a) 4355 7260 w -(network) 4447 7260 w -(call) 4876 7260 w +(dump) 909 6024 w +(file) 1223 6024 w +(system) 1407 6024 w +(when) 1780 6024 w +(debugging.) 2070 6024 w +(Once) 2688 6024 w +(the) 2968 6024 w +(debugging) 3156 6024 w +(is) 3710 6024 w +(done,) 3823 6024 w +(the) 4130 6024 w +(window) 4318 6024 w +(can) 4720 6024 w +(be) 4921 6024 w +(deleted) 720 6144 w +(and) 1115 6144 w +(all) 1330 6144 w +(trace) 1478 6144 w +(of) 1753 6144 w +(the) 1886 6144 w +(experimental) 2076 6144 w +(apparatus) 2749 6144 w +(is) 3266 6144 w +(gone.) 3382 6144 w +(Similar) 3723 6144 w +(arguments) 4089 6144 w +(apply) 4644 6144 w +(to) 4942 6144 w +(the) 720 6264 w +(private) 913 6264 w +(space) 1284 6264 w +(each) 1598 6264 w +(window) 1860 6264 w +(has) 2267 6264 w +(for) 2473 6264 w +(environment) 2650 6264 w +(variables,) 3298 6264 w +(notes) 3798 6264 w +(\(analogous) 4102 6264 w +(to) 4670 6264 w +(UNIX) 4805 6264 w +(signals\), etc.) 720 6384 w +(Each) 970 6540 w +(window) 1241 6540 w +(is) 1660 6540 w +(created) 1790 6540 w +(running) 2199 6540 w +(an) 2629 6540 w +(application,) 2796 6540 w +(such) 3412 6540 w +(as) 3688 6540 w +(the) 3844 6540 w +(shell,) 4049 6540 w +(with) 4358 6540 w +(standard) 4613 6540 w +(input) 720 6660 w +(and) 1009 6660 w +(output) 1225 6660 w +(connected) 1583 6660 w +(to) 2118 6660 w +(the) 2252 6660 w +(editable) 2443 6660 w +(text) 2867 6660 w +(of) 3094 6660 w +(the) 3228 6660 w +(window.) 3419 6660 w +(Each) 3888 6660 w +(window) 4146 6660 w +(also) 4551 6660 w +(has) 4782 6660 w +(a) 4985 6660 w +(private) 720 6780 w +(bitmap) 1107 6780 w +(and) 1501 6780 w +(multiplexed) 1735 6780 w +(access) 2367 6780 w +(to) 2737 6780 w +(the) 2890 6780 w +(keyboard,) 3100 6780 w +(mouse,) 3636 6780 w +(and) 4046 6780 w +(other) 4281 6780 w +(graphical) 4593 6780 w +(resources) 720 6900 w +(through) 1235 6900 w +(files) 1667 6900 w +(like) 1914 6900 w +10 /LucidaTypewriter f +(/dev/mouse) 2131 6900 w +10 /LucidaSansUnicode00 f +(,) 2851 6900 w +10 /LucidaTypewriter f +(/dev/bitblt) 2928 6900 w +10 /LucidaSansUnicode00 f +(,) 3720 6900 w +(and) 3796 6900 w +10 /LucidaTypewriter f +(/dev/cons) 4020 6900 w +10 /LucidaSansUnicode00 f +(\(analo\255) 4712 6900 w +(gous) 720 7020 w +(to) 990 7020 w +(UNIX) 1122 7020 w +10 /LucidaSansUnicode20 f +(\031) 1357 7020 w +10 /LucidaSansUnicode00 f +(s) 1389 7020 w +10 /LucidaTypewriter f +(/dev/tty) 1474 7020 w +10 /LucidaSansUnicode00 f +(\).) 2050 7020 w +(These) 2181 7020 w +(files) 2503 7020 w +(are) 2739 7020 w +(provided) 2925 7020 w +(by) 3387 7020 w +(8\275,) 3536 7020 w +(which) 3745 7020 w +(is) 4060 7020 w +(implemented) 4174 7020 w +(as) 4845 7020 w +(a) 4985 7020 w +(file) 720 7140 w +(server.) 904 7140 w +(Unlike) 1298 7140 w +(X) 1634 7140 w +(windows,) 1730 7140 w +(where a new application typically creates a new window to) 2215 7140 w +(run) 720 7260 w +(in,) 939 7260 w +(an) 1116 7260 w +(8\275) 1287 7260 w +(graphics) 1484 7260 w +(application) 1952 7260 w +(usually) 2540 7260 w +(runs) 2934 7260 w +(in) 3204 7260 w +(the) 3349 7260 w +(window) 3558 7260 w +(where) 3981 7260 w +(it) 4327 7260 w +(starts.) 4448 7260 w +(It) 4839 7260 w +(is) 4960 7260 w cleartomark showpage saveobj restore @@ -6076,706 +6046,703 @@ 5 pagesetup 10 /LucidaSansUnicode00 f (\255 5 \255) 2783 480 w -(to) 720 840 w -(the) 851 840 w -(X) 1039 840 w -(server) 1135 840 w -(to) 1465 840 w -(start) 1596 840 w -(running,) 1850 840 w -(a) 2295 840 w -(remote) 2383 840 w -(8\275) 2760 840 w -(application) 2936 840 w -(sees) 3503 840 w -(the) 3750 840 w -10 /LucidaTypewriter f -(mouse) 3938 840 w -10 /LucidaSansUnicode00 f -(,) 4298 840 w -10 /LucidaTypewriter f -(bitblt) 4363 840 w -10 /LucidaSansUnicode00 f -(,) 4795 840 w -(and) 4860 840 w -10 /LucidaTypewriter f -(cons) 720 960 w -10 /LucidaSansUnicode00 f -(files) 1056 960 w -(for) 1306 960 w -(the) 1493 960 w -(window) 1696 960 w -(as) 2113 960 w -(usual) 2267 960 w -(in) 2574 960 w -10 /LucidaTypewriter f -(/dev) 2713 960 w -10 /LucidaSansUnicode00 f -(;) 3001 960 w -(it) 3082 960 w -(does) 3197 960 w -(not) 3477 960 w -(know) 3686 960 w -(whether) 3993 960 w -(the) 4433 960 w -(files) 4637 960 w -(are) 4888 960 w -(local.) 720 1080 w -(It) 1056 1080 w -(just) 1168 1080 w -(reads) 1394 1080 w -(and) 1706 1080 w -(writes) 1932 1080 w -(them) 2269 1080 w -(to) 2563 1080 w -(control) 2707 1080 w -(the) 3095 1080 w -(window;) 3296 1080 w -(the) 3743 1080 w -(network) 3944 1080 w -(connection) 4382 1080 w -(is) 4960 1080 w -(already there and multiplexed.) 720 1200 w -(The) 970 1356 w -(intended) 1186 1356 w -(style) 1649 1356 w -(of) 1909 1356 w -(use) 2042 1356 w -(is) 2246 1356 w -(to) 2361 1356 w -(run) 2494 1356 w -(interactive) 2694 1356 w -(applications) 3234 1356 w -(such) 3854 1356 w -(as) 4115 1356 w -(the) 4257 1356 w -(window) 4448 1356 w -(sys\255) 4853 1356 w -(tem) 720 1476 w -(and) 950 1476 w -(text) 1174 1476 w -(editor) 1408 1476 w -(on) 1738 1476 w -(the) 1904 1476 w -(terminal) 2102 1476 w -(and) 2547 1476 w -(to) 2770 1476 w -(run) 2911 1476 w -(computation-) 3119 1476 w -(or) 3831 1476 w -(file-intensive) 3976 1476 w -(applica\255) 4662 1476 w -(tions) 720 1596 w -(on) 1018 1596 w -(remote) 1199 1596 w -(servers.) 1601 1596 w -(Different) 2071 1596 w -(windows) 2559 1596 w -(may) 3038 1596 w -(be) 3297 1596 w -(running) 3475 1596 w -(programs) 3914 1596 w -(on) 4440 1596 w -(different) 4622 1596 w -(machines) 720 1716 w -(over) 1219 1716 w -(different) 1469 1716 w -(networks,) 1927 1716 w -(but) 2442 1716 w -(by) 2644 1716 w -(making) 2799 1716 w -(the) 3198 1716 w -(name) 3393 1716 w -(space) 3699 1716 w -(equivalent) 4015 1716 w -(in) 4556 1716 w -(all) 4687 1716 w -(win\255) 4839 1716 w -(dows,) 720 1836 w -(this) 1056 1836 w -(is) 1287 1836 w -(transparent:) 1419 1836 w -(the) 2063 1836 w -(same) 2270 1836 w -(commands) 2577 1836 w -(and) 3158 1836 w -(resources) 3391 1836 w -(are) 3914 1836 w -(available,) 4119 1836 w -(with) 4627 1836 w -(the) 4885 1836 w -(same names, wherever the computation is performed.) 720 1956 w -(The) 970 2112 w -(command) 1186 2112 w -(set) 1699 2112 w -(of) 1878 2112 w -(Plan) 2011 2112 w -(9) 2247 2112 w -(is) 2346 2112 w -(similar) 2462 2112 w -(to) 2825 2112 w -(that) 2959 2112 w -(of) 3186 2112 w -(UNIX.) 3320 2112 w -(The) 3655 2112 w -(commands) 3872 2112 w -(fall) 4437 2112 w -(into) 4623 2112 w -(sev\255) 4848 2112 w -(eral) 720 2232 w -(broad) 944 2232 w -(classes.) 1270 2232 w -(Some) 1721 2232 w -(are) 2028 2232 w -(new) 2223 2232 w -(programs) 2461 2232 w -(for) 2971 2232 w -(old) 3153 2232 w -(jobs:) 3349 2232 w -(programs) 3629 2232 w -(like) 4138 2232 w -10 /LucidaTypewriter f -(ls) 4352 2232 w -10 /LucidaSansUnicode00 f -(,) 4496 2232 w -10 /LucidaTypewriter f -(cat) 4570 2232 w -10 /LucidaSansUnicode00 f -(,) 4786 2232 w -(and) 4860 2232 w -10 /LucidaTypewriter f -(who) 720 2352 w -10 /LucidaSansUnicode00 f -(have) 968 2352 w -(familiar) 1226 2352 w -(names) 1627 2352 w -(and) 1977 2352 w -(functions) 2190 2352 w -(but) 2675 2352 w -(are) 2870 2352 w -(new,) 3055 2352 w -(simpler) 3315 2352 w -(implementations.) 3710 2352 w -10 /LucidaTypewriter f -(Who) 4620 2352 w -10 /LucidaSansUnicode00 f -(,) 4836 2352 w -(for) 4901 2352 w -(example,) 720 2472 w -(is) 1215 2472 w -(a) 1345 2472 w -(shell) 1450 2472 w -(script,) 1727 2472 w -(while) 2081 2472 w -10 /LucidaTypewriter f -(ps) 2384 2472 w -10 /LucidaSansUnicode00 f -(is) 2578 2472 w -(just) 2708 2472 w -(95) 2937 2472 w -(lines) 3112 2472 w -(of) 3388 2472 w -(C) 3535 2472 w -(code.) 3653 2472 w -(Some) 3997 2472 w -(commands) 4310 2472 w -(are) 4888 2472 w -(essentially) 720 2592 w -(the) 1268 2592 w -(same) 1464 2592 w -(as) 1760 2592 w -(their) 1908 2592 w -(UNIX) 2175 2592 w -(ancestors:) 2452 2592 w -10 /LucidaTypewriter f -(awk) 2991 2592 w -10 /LucidaSansUnicode00 f -(,) 3207 2592 w -10 /LucidaTypewriter f -(troff) 3281 2592 w -10 /LucidaSansUnicode00 f -(,) 3641 2592 w -(and) 3715 2592 w -(others) 3937 2592 w -(have) 4287 2592 w -(been) 4554 2592 w -(con\255) 4833 2592 w -(verted) 720 2712 w -(to) 1063 2712 w -(ANSI) 1199 2712 w -(C) 1463 2712 w -(and) 1570 2712 w -(extended) 1788 2712 w -(to) 2280 2712 w -(handle) 2415 2712 w -(Unicode,) 2779 2712 w -(but) 3239 2712 w -(are) 3438 2712 w -(still) 3627 2712 w -(the) 3839 2712 w -(familiar) 4031 2712 w -(tools.) 4436 2712 w -(Some) 4776 2712 w -(are) 720 2832 w -(entirely) 930 2832 w -(new) 1350 2832 w -(programs) 1603 2832 w -(for) 2128 2832 w -(old) 2325 2832 w -(niches:) 2536 2832 w -(the) 2937 2832 w -(shell) 3151 2832 w -10 /LucidaTypewriter f -(rc) 3437 2832 w -10 /LucidaSansUnicode00 f -(,) 3581 2832 w -(text) 3672 2832 w -(editor) 3922 2832 w -10 /LucidaTypewriter f -(sam) 4268 2832 w -10 /LucidaSansUnicode00 f -(,) 4484 2832 w -(debugger) 4575 2832 w -10 /LucidaTypewriter f -(acid) 720 2952 w -10 /LucidaSansUnicode00 f -(,) 1008 2952 w -(and) 1074 2952 w -(others) 1287 2952 w -(displace) 1628 2952 w -(the) 2058 2952 w -(better-known) 2246 2952 w -(UNIX) 2947 2952 w -(tools) 3215 2952 w -(with) 3487 2952 w -(similar) 3725 2952 w -(jobs.) 4085 2952 w -(Finally,) 4387 2952 w -(about) 4762 2952 w -(half the commands are new.) 720 3072 w -(Compatibility) 970 3228 w -(was) 1657 3228 w -(not) 1881 3228 w -(a) 2082 3228 w -(requirement) 2178 3228 w -(for) 2815 3228 w -(the) 2995 3228 w -(system.) 3191 3228 w -(Where) 3636 3228 w -(the) 3978 3228 w -(old) 4174 3228 w -(commands) 4368 3228 w -(or) 4938 3228 w -(notation seemed good enough, we kept them.) 720 3348 w -(When they didn) 3026 3348 w +(possible) 720 840 w +(and) 1157 840 w +(efficient) 1371 840 w +(for) 1799 840 w +(an) 1972 840 w +(application) 2123 840 w +(to) 2691 840 w +(create) 2823 840 w +(a) 3152 840 w +(new) 3240 840 w +(window,) 3468 840 w +(but) 3902 840 w +(that) 4097 840 w +(is) 4321 840 w +(not) 4434 840 w +(the) 4627 840 w +(style) 4815 840 w +(of) 720 960 w +(the) 859 960 w +(system.) 1055 960 w +(Again) 1500 960 w +(contrasting) 1818 960 w +(to) 2407 960 w +(X,) 2546 960 w +(in) 2682 960 w +(which) 2814 960 w +(a) 3137 960 w +(remote) 3234 960 w +(application) 3620 960 w +(makes) 4196 960 w +(a) 4551 960 w +(network) 4648 960 w +(call) 720 1080 w +(to) 919 1080 w +(the) 1051 1080 w +(X) 1240 1080 w +(server) 1337 1080 w +(to) 1668 1080 w +(start) 1800 1080 w +(running,) 2055 1080 w +(a) 2501 1080 w +(remote) 2590 1080 w +(8\275) 2968 1080 w +(application) 3145 1080 w +(sees) 3713 1080 w +(the) 3961 1080 w +10 /LucidaTypewriter f +(mouse) 4150 1080 w +10 /LucidaSansUnicode00 f +(,) 4510 1080 w +10 /LucidaTypewriter f +(bitblt) 4576 1080 w +10 /LucidaSansUnicode00 f +(,) 5008 1080 w +(and) 720 1200 w +10 /LucidaTypewriter f +(cons) 935 1200 w +10 /LucidaSansUnicode00 f +(files) 1258 1200 w +(for) 1495 1200 w +(the) 1669 1200 w +(window) 1859 1200 w +(as) 2263 1200 w +(usual) 2404 1200 w +(in) 2698 1200 w +10 /LucidaTypewriter f +(/dev) 2824 1200 w +10 /LucidaSansUnicode00 f +(;) 3112 1200 w +(it) 3179 1200 w +(does) 3280 1200 w +(not) 3546 1200 w +(know) 3741 1200 w +(whether) 4034 1200 w +(the) 4460 1200 w +(files) 4650 1200 w +(are) 4888 1200 w +(local.) 720 1320 w +(It) 1056 1320 w +(just) 1168 1320 w +(reads) 1394 1320 w +(and) 1706 1320 w +(writes) 1932 1320 w +(them) 2269 1320 w +(to) 2563 1320 w +(control) 2707 1320 w +(the) 3095 1320 w +(window;) 3296 1320 w +(the) 3743 1320 w +(network) 3944 1320 w +(connection) 4382 1320 w +(is) 4960 1320 w +(already there and multiplexed.) 720 1440 w +(The) 970 1596 w +(intended) 1186 1596 w +(style) 1649 1596 w +(of) 1909 1596 w +(use) 2042 1596 w +(is) 2246 1596 w +(to) 2361 1596 w +(run) 2494 1596 w +(interactive) 2694 1596 w +(applications) 3234 1596 w +(such) 3854 1596 w +(as) 4115 1596 w +(the) 4257 1596 w +(window) 4448 1596 w +(sys\255) 4853 1596 w +(tem) 720 1716 w +(and) 950 1716 w +(text) 1174 1716 w +(editor) 1408 1716 w +(on) 1738 1716 w +(the) 1904 1716 w +(terminal) 2102 1716 w +(and) 2547 1716 w +(to) 2770 1716 w +(run) 2911 1716 w +(computation-) 3119 1716 w +(or) 3831 1716 w +(file-intensive) 3976 1716 w +(applica\255) 4662 1716 w +(tions) 720 1836 w +(on) 1018 1836 w +(remote) 1199 1836 w +(servers.) 1601 1836 w +(Different) 2071 1836 w +(windows) 2559 1836 w +(may) 3038 1836 w +(be) 3297 1836 w +(running) 3475 1836 w +(programs) 3914 1836 w +(on) 4440 1836 w +(different) 4622 1836 w +(machines) 720 1956 w +(over) 1219 1956 w +(different) 1469 1956 w +(networks,) 1927 1956 w +(but) 2442 1956 w +(by) 2644 1956 w +(making) 2799 1956 w +(the) 3198 1956 w +(name) 3393 1956 w +(space) 3699 1956 w +(equivalent) 4015 1956 w +(in) 4556 1956 w +(all) 4687 1956 w +(win\255) 4839 1956 w +(dows,) 720 2076 w +(this) 1056 2076 w +(is) 1287 2076 w +(transparent:) 1419 2076 w +(the) 2063 2076 w +(same) 2270 2076 w +(commands) 2577 2076 w +(and) 3158 2076 w +(resources) 3391 2076 w +(are) 3914 2076 w +(available,) 4119 2076 w +(with) 4627 2076 w +(the) 4885 2076 w +(same names, wherever the computation is performed.) 720 2196 w +(The) 970 2352 w +(command) 1186 2352 w +(set) 1699 2352 w +(of) 1878 2352 w +(Plan) 2011 2352 w +(9) 2247 2352 w +(is) 2346 2352 w +(similar) 2462 2352 w +(to) 2825 2352 w +(that) 2959 2352 w +(of) 3186 2352 w +(UNIX.) 3320 2352 w +(The) 3655 2352 w +(commands) 3872 2352 w +(fall) 4437 2352 w +(into) 4623 2352 w +(sev\255) 4848 2352 w +(eral) 720 2472 w +(broad) 944 2472 w +(classes.) 1270 2472 w +(Some) 1721 2472 w +(are) 2028 2472 w +(new) 2223 2472 w +(programs) 2461 2472 w +(for) 2971 2472 w +(old) 3153 2472 w +(jobs:) 3349 2472 w +(programs) 3629 2472 w +(like) 4138 2472 w +10 /LucidaTypewriter f +(ls) 4352 2472 w +10 /LucidaSansUnicode00 f +(,) 4496 2472 w +10 /LucidaTypewriter f +(cat) 4570 2472 w +10 /LucidaSansUnicode00 f +(,) 4786 2472 w +(and) 4860 2472 w +10 /LucidaTypewriter f +(who) 720 2592 w +10 /LucidaSansUnicode00 f +(have) 968 2592 w +(familiar) 1226 2592 w +(names) 1627 2592 w +(and) 1977 2592 w +(functions) 2190 2592 w +(but) 2675 2592 w +(are) 2870 2592 w +(new,) 3055 2592 w +(simpler) 3315 2592 w +(implementations.) 3710 2592 w +10 /LucidaTypewriter f +(Who) 4620 2592 w +10 /LucidaSansUnicode00 f +(,) 4836 2592 w +(for) 4901 2592 w +(example,) 720 2712 w +(is) 1215 2712 w +(a) 1345 2712 w +(shell) 1450 2712 w +(script,) 1727 2712 w +(while) 2081 2712 w +10 /LucidaTypewriter f +(ps) 2384 2712 w +10 /LucidaSansUnicode00 f +(is) 2578 2712 w +(just) 2708 2712 w +(95) 2937 2712 w +(lines) 3112 2712 w +(of) 3388 2712 w +(C) 3535 2712 w +(code.) 3653 2712 w +(Some) 3997 2712 w +(commands) 4310 2712 w +(are) 4888 2712 w +(essentially) 720 2832 w +(the) 1268 2832 w +(same) 1464 2832 w +(as) 1760 2832 w +(their) 1908 2832 w +(UNIX) 2175 2832 w +(ancestors:) 2452 2832 w +10 /LucidaTypewriter f +(awk) 2991 2832 w +10 /LucidaSansUnicode00 f +(,) 3207 2832 w +10 /LucidaTypewriter f +(troff) 3281 2832 w +10 /LucidaSansUnicode00 f +(,) 3641 2832 w +(and) 3715 2832 w +(others) 3937 2832 w +(have) 4287 2832 w +(been) 4554 2832 w +(con\255) 4833 2832 w +(verted) 720 2952 w +(to) 1063 2952 w +(ANSI) 1199 2952 w +(C) 1463 2952 w +(and) 1570 2952 w +(extended) 1788 2952 w +(to) 2280 2952 w +(handle) 2415 2952 w +(Unicode,) 2779 2952 w +(but) 3239 2952 w +(are) 3438 2952 w +(still) 3627 2952 w +(the) 3839 2952 w +(familiar) 4031 2952 w +(tools.) 4436 2952 w +(Some) 4776 2952 w +(are) 720 3072 w +(entirely) 930 3072 w +(new) 1350 3072 w +(programs) 1603 3072 w +(for) 2128 3072 w +(old) 2325 3072 w +(niches:) 2536 3072 w +(the) 2937 3072 w +(shell) 3151 3072 w +10 /LucidaTypewriter f +(rc) 3437 3072 w +10 /LucidaSansUnicode00 f +(,) 3581 3072 w +(text) 3672 3072 w +(editor) 3922 3072 w +10 /LucidaTypewriter f +(sam) 4268 3072 w +10 /LucidaSansUnicode00 f +(,) 4484 3072 w +(debugger) 4575 3072 w +10 /LucidaTypewriter f +(acid) 720 3192 w +10 /LucidaSansUnicode00 f +(,) 1008 3192 w +(and) 1074 3192 w +(others) 1287 3192 w +(displace) 1628 3192 w +(the) 2058 3192 w +(better-known) 2246 3192 w +(UNIX) 2947 3192 w +(tools) 3215 3192 w +(with) 3487 3192 w +(similar) 3725 3192 w +(jobs.) 4085 3192 w +(Finally,) 4387 3192 w +(about) 4762 3192 w +(half the commands are new.) 720 3312 w +(Compatibility) 970 3468 w +(was) 1657 3468 w +(not) 1881 3468 w +(a) 2082 3468 w +(requirement) 2178 3468 w +(for) 2815 3468 w +(the) 2995 3468 w +(system.) 3191 3468 w +(Where) 3636 3468 w +(the) 3978 3468 w +(old) 4174 3468 w +(commands) 4368 3468 w +(or) 4938 3468 w +(notation seemed good enough, we kept them.) 720 3588 w +(When they didn) 3026 3588 w 10 /LucidaSansUnicode20 f -(\031) 3780 3348 w +(\031) 3780 3588 w 10 /LucidaSansUnicode00 f -(t, we replaced them.) 3812 3348 w +(t, we replaced them.) 3812 3588 w 10 /LucidaSans-Demi f -(The File Server) 720 3588 w +(The File Server) 720 3828 w 10 /LucidaSansUnicode00 f -(A) 970 3744 w -(central) 1078 3744 w -(file) 1448 3744 w -(server) 1638 3744 w -(stores) 1974 3744 w -(permanent) 2310 3744 w -(files) 2874 3744 w -(and) 3115 3744 w -(presents) 3334 3744 w -(them) 3790 3744 w -(to) 4077 3744 w -(the) 4214 3744 w -(network) 4408 3744 w -(as) 4839 3744 w -(a) 4985 3744 w -(file) 720 3864 w -(hierarchy) 918 3864 w -(exported) 1414 3864 w -(using) 1899 3864 w -(9P.) 2212 3864 w -(The) 2441 3864 w -(server) 2669 3864 w -(is) 3013 3864 w -(a) 3140 3864 w -(stand-alone) 3242 3864 w -(system,) 3878 3864 w -(accessible) 4297 3864 w -(only) 4836 3864 w -(over) 720 3984 w -(the) 978 3984 w -(network,) 1181 3984 w -(designed) 1653 3984 w -(to) 2143 3984 w -(do) 2289 3984 w -(its) 2461 3984 w -(one) 2626 3984 w -(job) 2853 3984 w -(well.) 3055 3984 w -(It) 3359 3984 w -(runs) 3474 3984 w -(no) 3739 3984 w -(user) 3911 3984 w -(processes,) 4170 3984 w -(only) 4732 3984 w +(A) 970 3984 w +(central) 1078 3984 w +(file) 1448 3984 w +(server) 1638 3984 w +(stores) 1974 3984 w +(permanent) 2310 3984 w +(files) 2874 3984 w +(and) 3115 3984 w +(presents) 3334 3984 w +(them) 3790 3984 w +(to) 4077 3984 w +(the) 4214 3984 w +(network) 4408 3984 w +(as) 4839 3984 w (a) 4985 3984 w -(fixed) 720 4104 w -(set) 1005 4104 w -(of) 1188 4104 w -(routines) 1325 4104 w -(compiled) 1763 4104 w -(into) 2247 4104 w -(the) 2475 4104 w -(boot) 2669 4104 w -(image.) 2930 4104 w -(Rather) 3328 4104 w -(than) 3681 4104 w -(a) 3936 4104 w -(set) 4030 4104 w -(of) 4213 4104 w -(disks) 4350 4104 w -(or) 4641 4104 w -(sepa\255) 4782 4104 w -(rate) 720 4224 w -(file) 949 4224 w -(systems,) 1140 4224 w -(the) 1603 4224 w -(main) 1798 4224 w -(hierarchy) 2077 4224 w -(exported) 2566 4224 w -(by) 3044 4224 w -(the) 3200 4224 w -(server) 3396 4224 w -(is) 3734 4224 w -(a) 3855 4224 w -(single) 3951 4224 w -(tree,) 4281 4224 w -(represent\255) 4544 4224 w -(ing) 720 4344 w -(files) 913 4344 w -(on) 1155 4344 w -(many) 1318 4344 w -(disks.) 1620 4344 w -(That) 1976 4344 w -(hierarchy) 2233 4344 w -(is) 2722 4344 w -(shared) 2842 4344 w -(by) 3210 4344 w -(many) 3365 4344 w -(users) 3667 4344 w -(over) 3968 4344 w -(a) 4218 4344 w -(wide) 4313 4344 w -(area) 4577 4344 w -(on) 4823 4344 w -(a) 4985 4344 w -(variety of networks.) 720 4464 w -(Other) 1744 4464 w -(file) 2051 4464 w -(trees) 2235 4464 w -(exported) 2509 4464 w -(by) 2980 4464 w -(the) 3128 4464 w -(server) 3316 4464 w -(include) 3646 4464 w -(special-purpose) 4031 4464 w -(sys\255) 4853 4464 w -(tems such as temporary storage and, as explained below, a backup service.) 720 4584 w -(The file server has three levels of storage.) 970 4740 w -(The) 3074 4740 w -(central) 3288 4740 w -(server) 3652 4740 w -(in) 3982 4740 w -(our) 4106 4740 w -(installation) 4303 4740 w -(has) 4872 4740 w -(about) 720 4860 w -(100) 1031 4860 w -(megabytes) 1253 4860 w -(of) 1811 4860 w -(memory) 1942 4860 w -(buffers,) 2371 4860 w -(27) 2783 4860 w -(gigabytes) 2942 4860 w -(of) 3442 4860 w -(magnetic disks, and 350 giga\255) 3573 4860 w -(bytes) 720 4980 w -(of) 1017 4980 w -(bulk) 1153 4980 w -(storage) 1403 4980 w -(in) 1804 4980 w -(a) 1933 4980 w -(write-once-read-many) 2026 4980 w -(\(WORM\)) 3185 4980 w -(jukebox.) 3602 4980 w -(The) 4095 4980 w -(disk) 4314 4980 w -(is) 4553 4980 w -(a) 4671 4980 w -(cache) 4765 4980 w -(for) 720 5100 w -(the) 905 5100 w -(WORM) 1106 5100 w -(and) 1465 5100 w -(the) 1691 5100 w -(memory) 1892 5100 w -(is) 2333 5100 w -(a) 2458 5100 w -(cache) 2558 5100 w -(for) 2878 5100 w -(the) 3062 5100 w -(disk;) 3262 5100 w -(each) 3540 5100 w -(is) 3809 5100 w -(much) 3934 5100 w -(faster,) 4247 5100 w -(and) 4601 5100 w -(sees) 4826 5100 w -(about an order of magnitude more traffic, than the level) 720 5220 w -(it) 3478 5220 w -(caches.) 3577 5220 w -(The) 4000 5220 w -(addressable) 4214 5220 w -(data) 4830 5220 w -(in) 720 5340 w -(the) 856 5340 w -(file) 1056 5340 w -(system) 1252 5340 w -(can) 1637 5340 w -(be) 1850 5340 w -(larger) 2014 5340 w -(than) 2343 5340 w -(the) 2604 5340 w -(size) 2804 5340 w -(of) 3041 5340 w -(the) 3183 5340 w -(magnetic) 3382 5340 w -(disks,) 3871 5340 w -(because) 4199 5340 w -(they) 4637 5340 w -(are) 4888 5340 w -(only a cache; our main file server has about 40 gigabytes of active storage.) 720 5460 w -(The) 970 5616 w -(most) 1192 5616 w -(unusual) 1475 5616 w -(feature) 1899 5616 w -(of) 2284 5616 w -(the) 2423 5616 w -(file) 2619 5616 w -(server) 2811 5616 w -(comes) 3149 5616 w -(from) 3502 5616 w -(its) 3775 5616 w -(use) 3933 5616 w -(of) 4143 5616 w -(a) 4282 5616 w -(WORM) 4378 5616 w -(device) 4733 5616 w -(for) 720 5736 w -(stable) 901 5736 w -(storage.) 1234 5736 w -(Every) 1703 5736 w -(morning) 2000 5736 w -(at) 2452 5736 w -(5) 2586 5736 w -(o) 2691 5736 w +(file) 720 4104 w +(hierarchy) 918 4104 w +(exported) 1414 4104 w +(using) 1899 4104 w +(9P.) 2212 4104 w +(The) 2441 4104 w +(server) 2669 4104 w +(is) 3013 4104 w +(a) 3140 4104 w +(stand-alone) 3242 4104 w +(system,) 3878 4104 w +(accessible) 4297 4104 w +(only) 4836 4104 w +(over) 720 4224 w +(the) 978 4224 w +(network,) 1181 4224 w +(designed) 1653 4224 w +(to) 2143 4224 w +(do) 2289 4224 w +(its) 2461 4224 w +(one) 2626 4224 w +(job) 2853 4224 w +(well.) 3055 4224 w +(It) 3359 4224 w +(runs) 3474 4224 w +(no) 3739 4224 w +(user) 3911 4224 w +(processes,) 4170 4224 w +(only) 4732 4224 w +(a) 4985 4224 w +(fixed) 720 4344 w +(set) 1005 4344 w +(of) 1188 4344 w +(routines) 1325 4344 w +(compiled) 1763 4344 w +(into) 2247 4344 w +(the) 2475 4344 w +(boot) 2669 4344 w +(image.) 2930 4344 w +(Rather) 3328 4344 w +(than) 3681 4344 w +(a) 3936 4344 w +(set) 4030 4344 w +(of) 4213 4344 w +(disks) 4350 4344 w +(or) 4641 4344 w +(sepa\255) 4782 4344 w +(rate) 720 4464 w +(file) 949 4464 w +(systems,) 1140 4464 w +(the) 1603 4464 w +(main) 1798 4464 w +(hierarchy) 2077 4464 w +(exported) 2566 4464 w +(by) 3044 4464 w +(the) 3200 4464 w +(server) 3396 4464 w +(is) 3734 4464 w +(a) 3855 4464 w +(single) 3951 4464 w +(tree,) 4281 4464 w +(represent\255) 4544 4464 w +(ing) 720 4584 w +(files) 913 4584 w +(on) 1155 4584 w +(many) 1318 4584 w +(disks.) 1620 4584 w +(That) 1976 4584 w +(hierarchy) 2233 4584 w +(is) 2722 4584 w +(shared) 2842 4584 w +(by) 3210 4584 w +(many) 3365 4584 w +(users) 3667 4584 w +(over) 3968 4584 w +(a) 4218 4584 w +(wide) 4313 4584 w +(area) 4577 4584 w +(on) 4823 4584 w +(a) 4985 4584 w +(variety of networks.) 720 4704 w +(Other) 1744 4704 w +(file) 2051 4704 w +(trees) 2235 4704 w +(exported) 2509 4704 w +(by) 2980 4704 w +(the) 3128 4704 w +(server) 3316 4704 w +(include) 3646 4704 w +(special-purpose) 4031 4704 w +(sys\255) 4853 4704 w +(tems such as temporary storage and, as explained below, a backup service.) 720 4824 w +(The file server has three levels of storage.) 970 4980 w +(The) 3074 4980 w +(central) 3288 4980 w +(server) 3652 4980 w +(in) 3982 4980 w +(our) 4106 4980 w +(installation) 4303 4980 w +(has) 4872 4980 w +(about) 720 5100 w +(100) 1031 5100 w +(megabytes) 1253 5100 w +(of) 1811 5100 w +(memory) 1942 5100 w +(buffers,) 2371 5100 w +(27) 2783 5100 w +(gigabytes) 2942 5100 w +(of) 3442 5100 w +(magnetic disks, and 350 giga\255) 3573 5100 w +(bytes) 720 5220 w +(of) 1017 5220 w +(bulk) 1153 5220 w +(storage) 1403 5220 w +(in) 1804 5220 w +(a) 1933 5220 w +(write-once-read-many) 2026 5220 w +(\(WORM\)) 3185 5220 w +(jukebox.) 3602 5220 w +(The) 4095 5220 w +(disk) 4314 5220 w +(is) 4553 5220 w +(a) 4671 5220 w +(cache) 4765 5220 w +(for) 720 5340 w +(the) 905 5340 w +(WORM) 1106 5340 w +(and) 1465 5340 w +(the) 1691 5340 w +(memory) 1892 5340 w +(is) 2333 5340 w +(a) 2458 5340 w +(cache) 2558 5340 w +(for) 2878 5340 w +(the) 3062 5340 w +(disk;) 3262 5340 w +(each) 3540 5340 w +(is) 3809 5340 w +(much) 3934 5340 w +(faster,) 4247 5340 w +(and) 4601 5340 w +(sees) 4826 5340 w +(about an order of magnitude more traffic, than the level) 720 5460 w +(it) 3478 5460 w +(caches.) 3577 5460 w +(The) 4000 5460 w +(addressable) 4214 5460 w +(data) 4830 5460 w +(in) 720 5580 w +(the) 856 5580 w +(file) 1056 5580 w +(system) 1252 5580 w +(can) 1637 5580 w +(be) 1850 5580 w +(larger) 2014 5580 w +(than) 2343 5580 w +(the) 2604 5580 w +(size) 2804 5580 w +(of) 3041 5580 w +(the) 3183 5580 w +(magnetic) 3382 5580 w +(disks,) 3871 5580 w +(because) 4199 5580 w +(they) 4637 5580 w +(are) 4888 5580 w +(only a cache; our main file server has about 40 gigabytes of active storage.) 720 5700 w +(The) 970 5856 w +(most) 1192 5856 w +(unusual) 1475 5856 w +(feature) 1899 5856 w +(of) 2284 5856 w +(the) 2423 5856 w +(file) 2619 5856 w +(server) 2811 5856 w +(comes) 3149 5856 w +(from) 3502 5856 w +(its) 3775 5856 w +(use) 3933 5856 w +(of) 4143 5856 w +(a) 4282 5856 w +(WORM) 4378 5856 w +(device) 4733 5856 w +(for) 720 5976 w +(stable) 901 5976 w +(storage.) 1234 5976 w +(Every) 1703 5976 w +(morning) 2000 5976 w +(at) 2452 5976 w +(5) 2586 5976 w +(o) 2691 5976 w 10 /LucidaSansUnicode20 f -(\031) 2752 5736 w +(\031) 2752 5976 w 10 /LucidaSansUnicode00 f -(clock,) 2784 5736 w -(a) 3108 5736 w +(clock,) 2784 5976 w +(a) 3108 5976 w 10 /LucidaSans-Italic f -(dump) 3205 5736 w +(dump) 3205 5976 w 10 /LucidaSansUnicode00 f -(of) 3524 5736 w -(the) 3664 5736 w -(file) 3861 5736 w -(system) 4053 5736 w -(occurs) 4434 5736 w -(auto\255) 4792 5736 w -(matically.) 720 5856 w -(The) 1265 5856 w -(file) 1497 5856 w -(system) 1699 5856 w -(is) 2090 5856 w -(frozen) 2221 5856 w -(and) 2586 5856 w -(all) 2817 5856 w -(blocks) 2981 5856 w -(modified) 3345 5856 w -(since) 3827 5856 w -(the) 4127 5856 w -(last) 4333 5856 w -(dump) 4556 5856 w -(are) 4888 5856 w -(queued) 720 5976 w -(to) 1116 5976 w -(be) 1248 5976 w -(written) 1401 5976 w -(to) 1774 5976 w -(the) 1906 5976 w -(WORM.) 2095 5976 w -(Once) 2506 5976 w -(the) 2787 5976 w -(blocks) 2976 5976 w -(are) 3323 5976 w -(queued,) 3509 5976 w -(service) 3937 5976 w -(is) 4307 5976 w -(restored) 4421 5976 w -(and) 4860 5976 w -(the) 720 6096 w -(read-only) 916 6096 w -(root) 1434 6096 w -(of) 1675 6096 w -(the) 1814 6096 w -(dumped) 2010 6096 w -(file) 2451 6096 w -(system) 2643 6096 w -(appears) 3024 6096 w -(in) 3449 6096 w -(a) 3581 6096 w -(hierarchy) 3677 6096 w -(of) 4167 6096 w -(all) 4306 6096 w -(dumps) 4461 6096 w -(ever) 4835 6096 w -(taken,) 720 6216 w -(named) 1069 6216 w -(by) 1447 6216 w -(its) 1611 6216 w -(date.) 1777 6216 w -(For) 2101 6216 w -(example,) 2306 6216 w -(the) 2800 6216 w -(directory) 3004 6216 w -10 /LucidaTypewriter f -(/n/dump/1995/0315) 3484 6216 w -10 /LucidaSansUnicode00 f -(is) 4757 6216 w -(the) 4885 6216 w -(root) 720 6336 w -(directory) 971 6336 w -(of) 1453 6336 w -(an) 1602 6336 w -(image) 1770 6336 w -(of) 2116 6336 w -(the) 2265 6336 w -(file) 2471 6336 w -(system) 2673 6336 w -(as) 3065 6336 w -(it) 3223 6336 w -(appeared) 3341 6336 w -(in) 3845 6336 w -(the) 3988 6336 w -(early) 4195 6336 w -(morning) 4480 6336 w -(of) 4942 6336 w -(March) 720 6456 w -(15,) 1059 6456 w -(1995.) 1261 6456 w -(It) 1621 6456 w -(takes) 1731 6456 w -(a) 2032 6456 w -(few) 2131 6456 w -(minutes) 2345 6456 w -(to) 2779 6456 w -(queue) 2921 6456 w -(the) 3264 6456 w -(blocks,) 3463 6456 w -(but) 3852 6456 w -(the) 4057 6456 w -(process) 4255 6456 w -(to) 4672 6456 w -(copy) 4813 6456 w -(blocks to the WORM, which runs in the background, may take hours.) 720 6576 w -(There) 970 6732 w -(are) 1289 6732 w -(two) 1482 6732 w -(ways) 1698 6732 w -(the) 1974 6732 w -(dump) 2170 6732 w -(file) 2492 6732 w -(system) 2684 6732 w -(is) 3065 6732 w -(used.) 3186 6732 w -(The) 3523 6732 w -(first) 3745 6732 w -(is) 3981 6732 w -(by) 4102 6732 w -(the) 4259 6732 w -(users) 4456 6732 w -(them\255) 4759 6732 w -(selves,) 720 6852 w -(who) 1081 6852 w -(can) 1315 6852 w -(browse) 1517 6852 w -(the) 1900 6852 w -(dump) 2089 6852 w -(file) 2403 6852 w -(system) 2587 6852 w -(directly) 2960 6852 w -(or) 3351 6852 w -(attach) 3486 6852 w -(pieces) 3816 6852 w -(of) 4155 6852 w -(it) 4286 6852 w -(to) 4385 6852 w -(their) 4516 6852 w -(name) 4774 6852 w -(space.) 720 6972 w -(For) 1097 6972 w -(example,) 1291 6972 w -(to) 1774 6972 w -(track) 1910 6972 w -(down) 2190 6972 w -(a) 2491 6972 w -(bug,) 2584 6972 w -(it) 2841 6972 w -(is) 2945 6972 w -(straightforward) 3063 6972 w -(to) 3850 6972 w -(try) 3986 6972 w -(the) 4154 6972 w -(compiler) 4347 6972 w -(from) 4808 6972 w -(three) 720 7092 w -(months) 1009 7092 w -(ago) 1412 7092 w -(or) 1627 7092 w -(to) 1766 7092 w -(link) 1901 7092 w -(a) 2116 7092 w -(program) 2208 7092 w -(with) 2661 7092 w -(yesterday) 2903 7092 w -10 /LucidaSansUnicode20 f -(\031) 3366 7092 w -10 /LucidaSansUnicode00 f -(s) 3398 7092 w -(library.) 3486 7092 w -(With) 3897 7092 w -(daily) 4148 7092 w -(snapshots) 4413 7092 w -(of) 4942 7092 w -(all) 720 7212 w -(files,) 882 7212 w -(it) 1165 7212 w -(is) 1280 7212 w -(easy) 1409 7212 w -(to) 1672 7212 w -(find) 1819 7212 w -(when) 2059 7212 w -(a) 2365 7212 w -(particular) 2469 7212 w -(change) 2981 7212 w -(was) 3378 7212 w -(made) 3611 7212 w -(or) 3928 7212 w -(what) 4080 7212 w -(changes) 4361 7212 w -(were) 4810 7212 w +(of) 3524 5976 w +(the) 3664 5976 w +(file) 3861 5976 w +(system) 4053 5976 w +(occurs) 4434 5976 w +(auto\255) 4792 5976 w +(matically.) 720 6096 w +(The) 1265 6096 w +(file) 1497 6096 w +(system) 1699 6096 w +(is) 2090 6096 w +(frozen) 2221 6096 w +(and) 2586 6096 w +(all) 2817 6096 w +(blocks) 2981 6096 w +(modified) 3345 6096 w +(since) 3827 6096 w +(the) 4127 6096 w +(last) 4333 6096 w +(dump) 4556 6096 w +(are) 4888 6096 w +(queued) 720 6216 w +(to) 1116 6216 w +(be) 1248 6216 w +(written) 1401 6216 w +(to) 1774 6216 w +(the) 1906 6216 w +(WORM.) 2095 6216 w +(Once) 2506 6216 w +(the) 2787 6216 w +(blocks) 2976 6216 w +(are) 3323 6216 w +(queued,) 3509 6216 w +(service) 3937 6216 w +(is) 4307 6216 w +(restored) 4421 6216 w +(and) 4860 6216 w +(the) 720 6336 w +(read-only) 916 6336 w +(root) 1434 6336 w +(of) 1675 6336 w +(the) 1814 6336 w +(dumped) 2010 6336 w +(file) 2451 6336 w +(system) 2643 6336 w +(appears) 3024 6336 w +(in) 3449 6336 w +(a) 3581 6336 w +(hierarchy) 3677 6336 w +(of) 4167 6336 w +(all) 4306 6336 w +(dumps) 4461 6336 w +(ever) 4835 6336 w +(taken,) 720 6456 w +(named) 1069 6456 w +(by) 1447 6456 w +(its) 1611 6456 w +(date.) 1777 6456 w +(For) 2101 6456 w +(example,) 2306 6456 w +(the) 2800 6456 w +(directory) 3004 6456 w +10 /LucidaTypewriter f +(/n/dump/1995/0315) 3484 6456 w +10 /LucidaSansUnicode00 f +(is) 4757 6456 w +(the) 4885 6456 w +(root) 720 6576 w +(directory) 971 6576 w +(of) 1453 6576 w +(an) 1602 6576 w +(image) 1770 6576 w +(of) 2116 6576 w +(the) 2265 6576 w +(file) 2471 6576 w +(system) 2673 6576 w +(as) 3065 6576 w +(it) 3223 6576 w +(appeared) 3341 6576 w +(in) 3845 6576 w +(the) 3988 6576 w +(early) 4195 6576 w +(morning) 4480 6576 w +(of) 4942 6576 w +(March) 720 6696 w +(15,) 1059 6696 w +(1995.) 1261 6696 w +(It) 1621 6696 w +(takes) 1731 6696 w +(a) 2032 6696 w +(few) 2131 6696 w +(minutes) 2345 6696 w +(to) 2779 6696 w +(queue) 2921 6696 w +(the) 3264 6696 w +(blocks,) 3463 6696 w +(but) 3852 6696 w +(the) 4057 6696 w +(process) 4255 6696 w +(to) 4672 6696 w +(copy) 4813 6696 w +(blocks to the WORM, which runs in the background, may take hours.) 720 6816 w +(There) 970 6972 w +(are) 1289 6972 w +(two) 1482 6972 w +(ways) 1698 6972 w +(the) 1974 6972 w +(dump) 2170 6972 w +(file) 2492 6972 w +(system) 2684 6972 w +(is) 3065 6972 w +(used.) 3186 6972 w +(The) 3523 6972 w +(first) 3745 6972 w +(is) 3981 6972 w +(by) 4102 6972 w +(the) 4259 6972 w +(users) 4456 6972 w +(them\255) 4759 6972 w +(selves,) 720 7092 w +(who) 1081 7092 w +(can) 1315 7092 w +(browse) 1517 7092 w +(the) 1900 7092 w +(dump) 2089 7092 w +(file) 2403 7092 w +(system) 2587 7092 w +(directly) 2960 7092 w +(or) 3351 7092 w +(attach) 3486 7092 w +(pieces) 3816 7092 w +(of) 4155 7092 w +(it) 4286 7092 w +(to) 4385 7092 w +(their) 4516 7092 w +(name) 4774 7092 w +(space.) 720 7212 w +(For) 1097 7212 w +(example,) 1291 7212 w +(to) 1774 7212 w +(track) 1910 7212 w +(down) 2190 7212 w +(a) 2491 7212 w +(bug,) 2584 7212 w +(it) 2841 7212 w +(is) 2945 7212 w +(straightforward) 3063 7212 w +(to) 3850 7212 w +(try) 3986 7212 w +(the) 4154 7212 w +(compiler) 4347 7212 w +(from) 4808 7212 w cleartomark showpage saveobj restore @@ -6786,761 +6753,761 @@ 6 pagesetup 10 /LucidaSansUnicode00 f (\255 6 \255) 2783 480 w -(made) 720 840 w -(on) 1022 840 w -(a) 1180 840 w -(particular) 1270 840 w -(date.) 1768 840 w -(People) 2078 840 w -(feel) 2432 840 w -(free) 2644 840 w -(to) 2868 840 w -(make) 3000 840 w -(large) 3296 840 w -(speculative) 3573 840 w -(changes) 4148 840 w -(to) 4581 840 w -(files) 4713 840 w -(in) 4949 840 w -(the) 720 960 w -(knowledge) 918 960 w -(that) 1485 960 w -(they) 1719 960 w -(can) 1969 960 w -(be) 2180 960 w -(backed) 2342 960 w -(out) 2731 960 w -(with) 2934 960 w -(a) 3182 960 w -(single) 3281 960 w -(copy) 3614 960 w -(command.) 3885 960 w -(There) 4471 960 w -(is) 4793 960 w -(no) 4917 960 w -(backup) 720 1080 w -(system) 1119 1080 w -(as) 1506 1080 w -(such;) 1658 1080 w -(instead,) 1962 1080 w -(because) 2393 1080 w -(the) 2833 1080 w -(dump) 3034 1080 w -(is) 3361 1080 w -(in) 3487 1080 w -(the) 3624 1080 w -(file) 3825 1080 w -(name) 4022 1080 w -(space,) 4334 1080 w -(backup) 4688 1080 w -(problems can be solved with standard tools such as) 720 1200 w -10 /LucidaTypewriter f -(cp) 3267 1200 w -10 /LucidaSansUnicode00 f -(,) 3411 1200 w -10 /LucidaTypewriter f -(ls) 3475 1200 w -10 /LucidaSansUnicode00 f -(,) 3619 1200 w -10 /LucidaTypewriter f -(grep) 3683 1200 w -10 /LucidaSansUnicode00 f -(, and) 3971 1200 w -10 /LucidaTypewriter f -(diff) 4247 1200 w -10 /LucidaSansUnicode00 f -(.) 4535 1200 w -(The) 970 1356 w -(other) 1189 1356 w -(\(very) 1484 1356 w -(rare\)) 1757 1356 w -(use) 2022 1356 w -(is) 2230 1356 w -(complete) 2349 1356 w -(system) 2834 1356 w -(backup.) 3213 1356 w -(In) 3668 1356 w -(the) 3798 1356 w -(event) 3992 1356 w -(of) 4294 1356 w -(disaster,) 4431 1356 w -(the) 4885 1356 w -(active) 720 1476 w -(file) 1042 1476 w -(system) 1235 1476 w -(can) 1616 1476 w -(be) 1825 1476 w -(initialized) 1985 1476 w -(from) 2501 1476 w -(any) 2774 1476 w -(dump) 2984 1476 w -(by) 3306 1476 w -(clearing) 3462 1476 w -(the) 3888 1476 w -(disk) 4084 1476 w -(cache) 4326 1476 w -(and) 4642 1476 w -(set\255) 4863 1476 w -(ting the root of the active file system to be a copy of the dumped root.) 720 1596 w -(Although) 4218 1596 w -(easy) 4695 1596 w -(to) 4942 1596 w -(do,) 720 1716 w -(this) 914 1716 w -(is) 1131 1716 w -(not) 1249 1716 w -(to) 1447 1716 w -(be) 1583 1716 w -(taken) 1740 1716 w -(lightly:) 2046 1716 w -(besides) 2415 1716 w -(losing) 2821 1716 w -(any) 3152 1716 w -(change) 3358 1716 w -(made) 3743 1716 w -(after) 4047 1716 w -(the) 4310 1716 w -(date) 4502 1716 w -(of) 4750 1716 w -(the) 4885 1716 w -(dump,) 720 1836 w -(this) 1069 1836 w -(recovery) 1284 1836 w -(method) 1730 1836 w -(results) 2138 1836 w -(in) 2501 1836 w -(a) 2628 1836 w -(very) 2719 1836 w -(slow) 2956 1836 w -(system.) 3210 1836 w -(The) 3650 1836 w -(cache) 3868 1836 w -(must) 4180 1836 w -(be) 4460 1836 w -(reloaded) 4616 1836 w -(from) 720 1956 w -(WORM,) 1000 1956 w -(which) 1393 1956 w -(is) 1722 1956 w -(much) 1850 1956 w -(slower) 2166 1956 w -(than) 2529 1956 w -(magnetic) 2793 1956 w -(disks.) 3286 1956 w -(The) 3650 1956 w -(file) 3879 1956 w -(system) 4077 1956 w -(takes) 4464 1956 w -(a) 4768 1956 w -(few) 4870 1956 w -(days to reload the working set and regain its full performance.) 720 2076 w -(Access) 970 2232 w -(permissions) 1334 2232 w -(of) 1956 2232 w -(files) 2089 2232 w -(in) 2326 2232 w -(the) 2452 2232 w -(dump) 2642 2232 w -(are) 2958 2232 w -(the) 3145 2232 w -(same) 3335 2232 w -(as) 3625 2232 w -(they) 3766 2232 w -(were) 4009 2232 w -(when) 4275 2232 w -(the) 4568 2232 w -(dump) 4759 2232 w -(was) 720 2352 w -(made.) 949 2352 w -(Normal) 1326 2352 w -(utilities) 1725 2352 w -(have) 2130 2352 w -(normal) 2401 2352 w -(permissions) 2788 2352 w -(in) 3420 2352 w -(the) 3556 2352 w -(dump) 3756 2352 w -(without) 4082 2352 w -(any) 4492 2352 w -(special) 4706 2352 w -(arrangement.) 720 2472 w -(The) 1440 2472 w -(dump) 1657 2472 w -(file) 1975 2472 w -(system) 2163 2472 w -(is) 2540 2472 w -(read-only,) 2657 2472 w -(though,) 3203 2472 w -(which) 3618 2472 w -(means) 3936 2472 w -(that) 4290 2472 w -(files) 4518 2472 w -(in) 4757 2472 w -(the) 4885 2472 w -(dump) 720 2592 w -(cannot) 1037 2592 w -(be) 1401 2592 w -(written) 1556 2592 w -(regardless) 1930 2592 w -(of) 2470 2592 w -(their) 2603 2592 w -(permission) 2863 2592 w -(bits;) 3434 2592 w -(in) 3681 2592 w -(fact,) 3807 2592 w -(since) 4054 2592 w -(directories) 4338 2592 w -(are) 4888 2592 w -(part of the read-only structure, even the permissions cannot be changed.) 720 2712 w -(Once) 970 2868 w -(a) 1271 2868 w -(file) 1380 2868 w -(is) 1585 2868 w -(written) 1719 2868 w -(to) 2113 2868 w -(WORM,) 2266 2868 w -(it) 2666 2868 w -(cannot) 2787 2868 w -(be) 3170 2868 w -(removed,) 3344 2868 w -(so) 3853 2868 w -(our) 4020 2868 w -(users) 4239 2868 w -(never) 4555 2868 w -(see) 4877 2868 w -10 /LucidaSansUnicode20 f -(\030\030) 720 2988 w -10 /LucidaSansUnicode00 f -(please) 784 2988 w -(clean) 1143 2988 w -(up) 1445 2988 w -(your) 1619 2988 w -(files) 1883 2988 w -10 /LucidaSansUnicode20 f -(\031\031) 2085 2988 w -10 /LucidaSansUnicode00 f -(messages) 2197 2988 w -(and) 2720 2988 w -(there) 2948 2988 w -(is) 3248 2988 w -(no) 3376 2988 w -10 /LucidaTypewriter f -(df) 3547 2988 w -10 /LucidaSansUnicode00 f -(command.) 3739 2988 w -(We) 4329 2988 w -(regard) 4519 2988 w -(the) 4885 2988 w -(WORM) 720 3108 w -(jukebox) 1072 3108 w -(as) 1502 3108 w -(an) 1647 3108 w -(unlimited) 1803 3108 w -(resource.) 2302 3108 w -(The) 2824 3108 w -(only) 3044 3108 w -(issue) 3287 3108 w -(is) 3576 3108 w -(how) 3696 3108 w -(long) 3936 3108 w -(it) 4190 3108 w -(will) 4296 3108 w -(take) 4500 3108 w -(to) 4746 3108 w -(fill.) 4884 3108 w -(Our) 720 3228 w -(WORM) 942 3228 w -(has) 1296 3228 w -(served) 1505 3228 w -(a) 1865 3228 w -(community) 1961 3228 w -(of) 2542 3228 w -(about) 2681 3228 w -(50) 3000 3228 w -(users) 3167 3228 w -(for) 3469 3228 w -(five) 3649 3228 w -(years) 3864 3228 w -(and) 4159 3228 w -(has) 4379 3228 w -(absorbed) 4587 3228 w -(daily) 720 3348 w -(dumps,) 987 3348 w -(consuming) 1390 3348 w -(a) 1962 3348 w -(total) 2056 3348 w -(of) 2314 3348 w -(65%) 2451 3348 w -(of) 2683 3348 w -(the) 2820 3348 w -(storage) 3014 3348 w -(in) 3416 3348 w -(the) 3546 3348 w -(jukebox.) 3741 3348 w -(In) 4236 3348 w -(that) 4367 3348 w -(time,) 4598 3348 w -(the) 4885 3348 w -(manufacturer) 720 3468 w -(has) 1434 3468 w -(improved) 1664 3468 w -(the) 2184 3468 w -(technology,) 2401 3468 w -(doubling) 3028 3468 w -(the) 3521 3468 w -(capacity) 3738 3468 w -(of) 4192 3468 w -(the) 4351 3468 w -(individual) 4567 3468 w -(disks.) 720 3588 w -(If) 1072 3588 w -(we) 1174 3588 w -(were) 1343 3588 w -(to) 1609 3588 w -(upgrade) 1744 3588 w -(to) 2183 3588 w -(the) 2318 3588 w -(new) 2510 3588 w -(media,) 2742 3588 w -(we) 3107 3588 w -(would) 3277 3588 w -(have) 3606 3588 w -(more) 3868 3588 w -(free) 4156 3588 w -(space) 4383 3588 w -(than) 4696 3588 w -(in) 4949 3588 w -(the original empty jukebox.) 720 3708 w -(Technology has created storage faster than we can use it.) 2127 3708 w +(three) 720 840 w +(months) 1009 840 w +(ago) 1412 840 w +(or) 1627 840 w +(to) 1766 840 w +(link) 1901 840 w +(a) 2116 840 w +(program) 2208 840 w +(with) 2661 840 w +(yesterday) 2903 840 w +10 /LucidaSansUnicode20 f +(\031) 3366 840 w +10 /LucidaSansUnicode00 f +(s) 3398 840 w +(library.) 3486 840 w +(With) 3897 840 w +(daily) 4148 840 w +(snapshots) 4413 840 w +(of) 4942 840 w +(all) 720 960 w +(files,) 882 960 w +(it) 1165 960 w +(is) 1280 960 w +(easy) 1409 960 w +(to) 1672 960 w +(find) 1819 960 w +(when) 2059 960 w +(a) 2365 960 w +(particular) 2469 960 w +(change) 2981 960 w +(was) 3378 960 w +(made) 3611 960 w +(or) 3928 960 w +(what) 4080 960 w +(changes) 4361 960 w +(were) 4810 960 w +(made) 720 1080 w +(on) 1022 1080 w +(a) 1180 1080 w +(particular) 1270 1080 w +(date.) 1768 1080 w +(People) 2078 1080 w +(feel) 2432 1080 w +(free) 2644 1080 w +(to) 2868 1080 w +(make) 3000 1080 w +(large) 3296 1080 w +(speculative) 3573 1080 w +(changes) 4148 1080 w +(to) 4581 1080 w +(files) 4713 1080 w +(in) 4949 1080 w +(the) 720 1200 w +(knowledge) 918 1200 w +(that) 1485 1200 w +(they) 1719 1200 w +(can) 1969 1200 w +(be) 2180 1200 w +(backed) 2342 1200 w +(out) 2731 1200 w +(with) 2934 1200 w +(a) 3182 1200 w +(single) 3281 1200 w +(copy) 3614 1200 w +(command.) 3885 1200 w +(There) 4471 1200 w +(is) 4793 1200 w +(no) 4917 1200 w +(backup) 720 1320 w +(system) 1119 1320 w +(as) 1506 1320 w +(such;) 1658 1320 w +(instead,) 1962 1320 w +(because) 2393 1320 w +(the) 2833 1320 w +(dump) 3034 1320 w +(is) 3361 1320 w +(in) 3487 1320 w +(the) 3624 1320 w +(file) 3825 1320 w +(name) 4022 1320 w +(space,) 4334 1320 w +(backup) 4688 1320 w +(problems can be solved with standard tools such as) 720 1440 w +10 /LucidaTypewriter f +(cp) 3267 1440 w +10 /LucidaSansUnicode00 f +(,) 3411 1440 w +10 /LucidaTypewriter f +(ls) 3475 1440 w +10 /LucidaSansUnicode00 f +(,) 3619 1440 w +10 /LucidaTypewriter f +(grep) 3683 1440 w +10 /LucidaSansUnicode00 f +(, and) 3971 1440 w +10 /LucidaTypewriter f +(diff) 4247 1440 w +10 /LucidaSansUnicode00 f +(.) 4535 1440 w +(The) 970 1596 w +(other) 1189 1596 w +(\(very) 1484 1596 w +(rare\)) 1757 1596 w +(use) 2022 1596 w +(is) 2230 1596 w +(complete) 2349 1596 w +(system) 2834 1596 w +(backup.) 3213 1596 w +(In) 3668 1596 w +(the) 3798 1596 w +(event) 3992 1596 w +(of) 4294 1596 w +(disaster,) 4431 1596 w +(the) 4885 1596 w +(active) 720 1716 w +(file) 1042 1716 w +(system) 1235 1716 w +(can) 1616 1716 w +(be) 1825 1716 w +(initialized) 1985 1716 w +(from) 2501 1716 w +(any) 2774 1716 w +(dump) 2984 1716 w +(by) 3306 1716 w +(clearing) 3462 1716 w +(the) 3888 1716 w +(disk) 4084 1716 w +(cache) 4326 1716 w +(and) 4642 1716 w +(set\255) 4863 1716 w +(ting the root of the active file system to be a copy of the dumped root.) 720 1836 w +(Although) 4218 1836 w +(easy) 4695 1836 w +(to) 4942 1836 w +(do,) 720 1956 w +(this) 914 1956 w +(is) 1131 1956 w +(not) 1249 1956 w +(to) 1447 1956 w +(be) 1583 1956 w +(taken) 1740 1956 w +(lightly:) 2046 1956 w +(besides) 2415 1956 w +(losing) 2821 1956 w +(any) 3152 1956 w +(change) 3358 1956 w +(made) 3743 1956 w +(after) 4047 1956 w +(the) 4310 1956 w +(date) 4502 1956 w +(of) 4750 1956 w +(the) 4885 1956 w +(dump,) 720 2076 w +(this) 1069 2076 w +(recovery) 1284 2076 w +(method) 1730 2076 w +(results) 2138 2076 w +(in) 2501 2076 w +(a) 2628 2076 w +(very) 2719 2076 w +(slow) 2956 2076 w +(system.) 3210 2076 w +(The) 3650 2076 w +(cache) 3868 2076 w +(must) 4180 2076 w +(be) 4460 2076 w +(reloaded) 4616 2076 w +(from) 720 2196 w +(WORM,) 1000 2196 w +(which) 1393 2196 w +(is) 1722 2196 w +(much) 1850 2196 w +(slower) 2166 2196 w +(than) 2529 2196 w +(magnetic) 2793 2196 w +(disks.) 3286 2196 w +(The) 3650 2196 w +(file) 3879 2196 w +(system) 4077 2196 w +(takes) 4464 2196 w +(a) 4768 2196 w +(few) 4870 2196 w +(days to reload the working set and regain its full performance.) 720 2316 w +(Access) 970 2472 w +(permissions) 1334 2472 w +(of) 1956 2472 w +(files) 2089 2472 w +(in) 2326 2472 w +(the) 2452 2472 w +(dump) 2642 2472 w +(are) 2958 2472 w +(the) 3145 2472 w +(same) 3335 2472 w +(as) 3625 2472 w +(they) 3766 2472 w +(were) 4009 2472 w +(when) 4275 2472 w +(the) 4568 2472 w +(dump) 4759 2472 w +(was) 720 2592 w +(made.) 949 2592 w +(Normal) 1326 2592 w +(utilities) 1725 2592 w +(have) 2130 2592 w +(normal) 2401 2592 w +(permissions) 2788 2592 w +(in) 3420 2592 w +(the) 3556 2592 w +(dump) 3756 2592 w +(without) 4082 2592 w +(any) 4492 2592 w +(special) 4706 2592 w +(arrangement.) 720 2712 w +(The) 1440 2712 w +(dump) 1657 2712 w +(file) 1975 2712 w +(system) 2163 2712 w +(is) 2540 2712 w +(read-only,) 2657 2712 w +(though,) 3203 2712 w +(which) 3618 2712 w +(means) 3936 2712 w +(that) 4290 2712 w +(files) 4518 2712 w +(in) 4757 2712 w +(the) 4885 2712 w +(dump) 720 2832 w +(cannot) 1037 2832 w +(be) 1401 2832 w +(written) 1556 2832 w +(regardless) 1930 2832 w +(of) 2470 2832 w +(their) 2603 2832 w +(permission) 2863 2832 w +(bits;) 3434 2832 w +(in) 3681 2832 w +(fact,) 3807 2832 w +(since) 4054 2832 w +(directories) 4338 2832 w +(are) 4888 2832 w +(part of the read-only structure, even the permissions cannot be changed.) 720 2952 w +(Once) 970 3108 w +(a) 1271 3108 w +(file) 1380 3108 w +(is) 1585 3108 w +(written) 1719 3108 w +(to) 2113 3108 w +(WORM,) 2266 3108 w +(it) 2666 3108 w +(cannot) 2787 3108 w +(be) 3170 3108 w +(removed,) 3344 3108 w +(so) 3853 3108 w +(our) 4020 3108 w +(users) 4239 3108 w +(never) 4555 3108 w +(see) 4877 3108 w +10 /LucidaSansUnicode20 f +(\030\030) 720 3228 w +10 /LucidaSansUnicode00 f +(please) 784 3228 w +(clean) 1143 3228 w +(up) 1445 3228 w +(your) 1619 3228 w +(files) 1883 3228 w +10 /LucidaSansUnicode20 f +(\031\031) 2085 3228 w +10 /LucidaSansUnicode00 f +(messages) 2197 3228 w +(and) 2720 3228 w +(there) 2948 3228 w +(is) 3248 3228 w +(no) 3376 3228 w +10 /LucidaTypewriter f +(df) 3547 3228 w +10 /LucidaSansUnicode00 f +(command.) 3739 3228 w +(We) 4329 3228 w +(regard) 4519 3228 w +(the) 4885 3228 w +(WORM) 720 3348 w +(jukebox) 1072 3348 w +(as) 1502 3348 w +(an) 1647 3348 w +(unlimited) 1803 3348 w +(resource.) 2302 3348 w +(The) 2824 3348 w +(only) 3044 3348 w +(issue) 3287 3348 w +(is) 3576 3348 w +(how) 3696 3348 w +(long) 3936 3348 w +(it) 4190 3348 w +(will) 4296 3348 w +(take) 4500 3348 w +(to) 4746 3348 w +(fill.) 4884 3348 w +(Our) 720 3468 w +(WORM) 942 3468 w +(has) 1296 3468 w +(served) 1505 3468 w +(a) 1865 3468 w +(community) 1961 3468 w +(of) 2542 3468 w +(about) 2681 3468 w +(50) 3000 3468 w +(users) 3167 3468 w +(for) 3469 3468 w +(five) 3649 3468 w +(years) 3864 3468 w +(and) 4159 3468 w +(has) 4379 3468 w +(absorbed) 4587 3468 w +(daily) 720 3588 w +(dumps,) 987 3588 w +(consuming) 1390 3588 w +(a) 1962 3588 w +(total) 2056 3588 w +(of) 2314 3588 w +(65%) 2451 3588 w +(of) 2683 3588 w +(the) 2820 3588 w +(storage) 3014 3588 w +(in) 3416 3588 w +(the) 3546 3588 w +(jukebox.) 3741 3588 w +(In) 4236 3588 w +(that) 4367 3588 w +(time,) 4598 3588 w +(the) 4885 3588 w +(manufacturer) 720 3708 w +(has) 1434 3708 w +(improved) 1664 3708 w +(the) 2184 3708 w +(technology,) 2401 3708 w +(doubling) 3028 3708 w +(the) 3521 3708 w +(capacity) 3738 3708 w +(of) 4192 3708 w +(the) 4351 3708 w +(individual) 4567 3708 w +(disks.) 720 3828 w +(If) 1072 3828 w +(we) 1174 3828 w +(were) 1343 3828 w +(to) 1609 3828 w +(upgrade) 1744 3828 w +(to) 2183 3828 w +(the) 2318 3828 w +(new) 2510 3828 w +(media,) 2742 3828 w +(we) 3107 3828 w +(would) 3277 3828 w +(have) 3606 3828 w +(more) 3868 3828 w +(free) 4156 3828 w +(space) 4383 3828 w +(than) 4696 3828 w +(in) 4949 3828 w +(the original empty jukebox.) 720 3948 w +(Technology has created storage faster than we can use it.) 2127 3948 w 10 /LucidaSans-Demi f -(Unusual file servers) 720 3948 w +(Unusual file servers) 720 4188 w +10 /LucidaSansUnicode00 f +(Plan) 970 4344 w +(9) 1224 4344 w +(is) 1340 4344 w +(characterized) 1473 4344 w +(by) 2181 4344 w +(a) 2350 4344 w +(variety) 2459 4344 w +(of) 2835 4344 w +(servers) 2987 4344 w +(that) 3389 4344 w +(offer) 3634 4344 w +(a) 3920 4344 w +(file-like) 4029 4344 w +(interface) 4464 4344 w +(to) 4942 4344 w +(unusual) 720 4464 w +(services.) 1138 4464 w +(Many) 1624 4464 w +(of) 1914 4464 w +(these) 2047 4464 w +(are) 2344 4464 w +(implemented) 2530 4464 w +(by) 3201 4464 w +(user-level) 3350 4464 w +(processes,) 3874 4464 w +(although) 4421 4464 w +(the) 4885 4464 w +(distinction) 720 4584 w +(is) 1267 4584 w +(unimportant) 1383 4584 w +(to) 2021 4584 w +(their) 2155 4584 w +(clients;) 2416 4584 w +(whether) 2799 4584 w +(a) 3226 4584 w +(service) 3317 4584 w +(is) 3689 4584 w +(provided) 3805 4584 w +(by) 4270 4584 w +(the) 4422 4584 w +(kernel,) 4614 4584 w +(a) 4985 4584 w +(user) 720 4704 w +(process,) 966 4704 w +(or) 1408 4704 w +(a) 1546 4704 w +(remote) 1637 4704 w +(server) 2017 4704 w +(is) 2350 4704 w +(irrelevant) 2466 4704 w +(to) 2960 4704 w +(the) 3094 4704 w +(way) 3285 4704 w +(it) 3505 4704 w +(is) 3607 4704 w +(used.) 3723 4704 w +(There) 4055 4704 w +(are) 4369 4704 w +(dozens) 4557 4704 w +(of) 4942 4704 w +(such servers; in this section we present three representative ones.) 720 4824 w +(Perhaps) 970 4980 w +(the) 1393 4980 w +(most) 1588 4980 w +(remarkable) 1870 4980 w +(file) 2457 4980 w +(server) 2649 4980 w +(in) 2987 4980 w +(Plan) 3119 4980 w +(9) 3361 4980 w +(is) 3465 4980 w +(8\275,) 3586 4980 w +(the) 3802 4980 w +(window) 3998 4980 w +(system.) 4408 4980 w +(It) 4853 4980 w +(is) 4960 4980 w +(discussed) 720 5100 w +(at) 1237 5100 w +(length) 1369 5100 w +(elsewhere) 1717 5100 w +([Pike91],) 2241 5100 w +(but) 2703 5100 w +(deserves) 2905 5100 w +(a) 3371 5100 w +(brief) 3466 5100 w +(explanation) 3732 5100 w +(here.) 4342 5100 w +(8\275) 4660 5100 w +(pro\255) 4842 5100 w +(vides) 720 5220 w +(two) 1017 5220 w +(interfaces:) 1238 5220 w +(to) 1791 5220 w +(the) 1935 5220 w +(user) 2136 5220 w +(seated) 2393 5220 w +(at) 2758 5220 w +(the) 2897 5220 w +(terminal,) 3099 5220 w +(it) 3580 5220 w +(offers) 3693 5220 w +(a) 4023 5220 w +(traditional) 4125 5220 w +(style) 4670 5220 w +(of) 4942 5220 w +(interaction) 720 5340 w +(with) 1303 5340 w +(multiple) 1571 5340 w +(windows,) 2032 5340 w +(each) 2546 5340 w +(running) 2832 5340 w +(an) 3274 5340 w +(application,) 3453 5340 w +(all) 4081 5340 w +(controlled) 4256 5340 w +(by) 4808 5340 w +(a) 4985 5340 w +(mouse) 720 5460 w +(and) 1092 5460 w +(keyboard.) 1321 5460 w +(To) 1883 5460 w +(the) 2056 5460 w +(client) 2261 5460 w +(programs,) 2575 5460 w +(the) 3124 5460 w +(view) 3329 5460 w +(is) 3593 5460 w +(also) 3723 5460 w +(fairly) 3969 5460 w +(traditional:) 4262 5460 w +(pro\255) 4842 5460 w +(grams) 720 5580 w +(running) 1056 5580 w +(in) 1470 5580 w +(a) 1595 5580 w +(window) 1684 5580 w +(see) 2086 5580 w +(a) 2282 5580 w +(set) 2370 5580 w +(of) 2547 5580 w +(files) 2678 5580 w +(in) 2913 5580 w +10 /LucidaTypewriter f +(/dev) 3037 5580 w +10 /LucidaSansUnicode00 f +(with) 3358 5580 w +(names) 3596 5580 w +(like) 3946 5580 w +10 /LucidaTypewriter f +(mouse) 4151 5580 w +10 /LucidaSansUnicode00 f +(,) 4511 5580 w +10 /LucidaTypewriter f +(screen) 4576 5580 w +10 /LucidaSansUnicode00 f +(,) 5008 5580 w +(and) 720 5700 w +10 /LucidaTypewriter f +(cons) 941 5700 w +10 /LucidaSansUnicode00 f +(.) 1229 5700 w +(Programs) 1334 5700 w +(that) 1834 5700 w +(want) 2066 5700 w +(to) 2338 5700 w +(print) 2477 5700 w +(text) 2750 5700 w +(to) 2982 5700 w +(their) 3121 5700 w +(window) 3387 5700 w +(write) 3798 5700 w +(to) 4080 5700 w +10 /LucidaTypewriter f +(/dev/cons) 4220 5700 w 10 /LucidaSansUnicode00 f -(Plan) 970 4104 w -(9) 1224 4104 w -(is) 1340 4104 w -(characterized) 1473 4104 w -(by) 2181 4104 w -(a) 2350 4104 w -(variety) 2459 4104 w -(of) 2835 4104 w -(servers) 2987 4104 w -(that) 3389 4104 w -(offer) 3634 4104 w -(a) 3920 4104 w -(file-like) 4029 4104 w -(interface) 4464 4104 w -(to) 4942 4104 w -(unusual) 720 4224 w -(services.) 1138 4224 w -(Many) 1624 4224 w -(of) 1914 4224 w -(these) 2047 4224 w -(are) 2344 4224 w -(implemented) 2530 4224 w -(by) 3201 4224 w -(user-level) 3350 4224 w -(processes,) 3874 4224 w -(although) 4421 4224 w -(the) 4885 4224 w -(distinction) 720 4344 w -(is) 1267 4344 w -(unimportant) 1383 4344 w -(to) 2021 4344 w -(their) 2155 4344 w -(clients;) 2416 4344 w -(whether) 2799 4344 w -(a) 3226 4344 w -(service) 3317 4344 w -(is) 3689 4344 w -(provided) 3805 4344 w -(by) 4270 4344 w -(the) 4422 4344 w -(kernel,) 4614 4344 w -(a) 4985 4344 w -(user) 720 4464 w -(process,) 966 4464 w -(or) 1408 4464 w -(a) 1546 4464 w -(remote) 1637 4464 w -(server) 2017 4464 w -(is) 2350 4464 w -(irrelevant) 2466 4464 w -(to) 2960 4464 w -(the) 3094 4464 w -(way) 3285 4464 w -(it) 3505 4464 w -(is) 3607 4464 w -(used.) 3723 4464 w -(There) 4055 4464 w -(are) 4369 4464 w -(dozens) 4557 4464 w -(of) 4942 4464 w -(such servers; in this section we present three representative ones.) 720 4584 w -(Perhaps) 970 4740 w -(the) 1393 4740 w -(most) 1588 4740 w -(remarkable) 1870 4740 w -(file) 2457 4740 w -(server) 2649 4740 w -(in) 2987 4740 w -(Plan) 3119 4740 w -(9) 3361 4740 w -(is) 3465 4740 w -(8\275,) 3586 4740 w -(the) 3802 4740 w -(window) 3998 4740 w -(system.) 4408 4740 w -(It) 4853 4740 w -(is) 4960 4740 w -(discussed) 720 4860 w -(at) 1237 4860 w -(length) 1369 4860 w -(elsewhere) 1717 4860 w -([Pike91],) 2241 4860 w -(but) 2703 4860 w -(deserves) 2905 4860 w -(a) 3371 4860 w -(brief) 3466 4860 w -(explanation) 3732 4860 w -(here.) 4342 4860 w -(8\275) 4660 4860 w -(pro\255) 4842 4860 w -(vides) 720 4980 w -(two) 1017 4980 w -(interfaces:) 1238 4980 w -(to) 1791 4980 w -(the) 1935 4980 w -(user) 2136 4980 w -(seated) 2393 4980 w -(at) 2758 4980 w -(the) 2897 4980 w -(terminal,) 3099 4980 w -(it) 3580 4980 w -(offers) 3693 4980 w -(a) 4023 4980 w -(traditional) 4125 4980 w -(style) 4670 4980 w -(of) 4942 4980 w -(interaction) 720 5100 w -(with) 1303 5100 w -(multiple) 1571 5100 w -(windows,) 2032 5100 w -(each) 2546 5100 w -(running) 2832 5100 w -(an) 3274 5100 w -(application,) 3453 5100 w -(all) 4081 5100 w -(controlled) 4256 5100 w -(by) 4808 5100 w -(a) 4985 5100 w -(mouse) 720 5220 w -(and) 1092 5220 w -(keyboard.) 1321 5220 w -(To) 1883 5220 w -(the) 2056 5220 w -(client) 2261 5220 w -(programs,) 2575 5220 w -(the) 3124 5220 w -(view) 3329 5220 w -(is) 3593 5220 w -(also) 3723 5220 w -(fairly) 3969 5220 w -(traditional:) 4262 5220 w -(pro\255) 4842 5220 w -(grams) 720 5340 w -(running) 1056 5340 w -(in) 1470 5340 w -(a) 1595 5340 w -(window) 1684 5340 w -(see) 2086 5340 w -(a) 2282 5340 w -(set) 2370 5340 w -(of) 2547 5340 w -(files) 2678 5340 w -(in) 2913 5340 w -10 /LucidaTypewriter f -(/dev) 3037 5340 w -10 /LucidaSansUnicode00 f -(with) 3358 5340 w -(names) 3596 5340 w -(like) 3946 5340 w -10 /LucidaTypewriter f -(mouse) 4151 5340 w -10 /LucidaSansUnicode00 f -(,) 4511 5340 w -10 /LucidaTypewriter f -(screen) 4576 5340 w -10 /LucidaSansUnicode00 f -(,) 5008 5340 w -(and) 720 5460 w -10 /LucidaTypewriter f -(cons) 941 5460 w -10 /LucidaSansUnicode00 f -(.) 1229 5460 w -(Programs) 1334 5460 w -(that) 1834 5460 w -(want) 2066 5460 w -(to) 2338 5460 w -(print) 2477 5460 w -(text) 2750 5460 w -(to) 2982 5460 w -(their) 3121 5460 w -(window) 3387 5460 w -(write) 3798 5460 w -(to) 4080 5460 w -10 /LucidaTypewriter f -(/dev/cons) 4220 5460 w -10 /LucidaSansUnicode00 f -(;) 4868 5460 w -(to) 4942 5460 w -(read) 720 5580 w -(the) 970 5580 w -(mouse,) 1160 5580 w -(they) 1550 5580 w -(read) 1792 5580 w -10 /LucidaTypewriter f -(/dev/mouse) 2042 5580 w -10 /LucidaSansUnicode00 f -(.) 2762 5580 w -(In) 2861 5580 w -(the) 2987 5580 w -(Plan) 3177 5580 w -(9) 3413 5580 w -(style,) 3510 5580 w -(bitmap) 3801 5580 w -(graphics) 4175 5580 w -(is) 4623 5580 w -(imple\255) 4737 5580 w -(mented) 720 5700 w -(by) 1123 5700 w -(providing) 1274 5700 w -(a) 1772 5700 w -(file) 1863 5700 w -10 /LucidaTypewriter f -(/dev/bitblt) 2050 5700 w -10 /LucidaSansUnicode00 f -(on) 2878 5700 w -(which) 3037 5700 w -(clients) 3354 5700 w -(write) 3705 5700 w -(encoded) 3981 5700 w -(messages) 4430 5700 w +(;) 4868 5700 w (to) 4942 5700 w -(execute) 720 5820 w -(graphical) 1139 5820 w -(operations) 1626 5820 w -(such) 2182 5820 w -(as) 2448 5820 w -10 /LucidaTypewriter f -(bitblt) 2594 5820 w -10 /LucidaSansUnicode00 f -(\(RasterOp\).) 3066 5820 w -(What) 3680 5820 w -(is) 3960 5820 w -(unusual) 4080 5820 w -(is) 4503 5820 w -(how) 4622 5820 w -(this) 4861 5820 w -(is) 720 5940 w -(done:) 836 5940 w -(8\275) 1146 5940 w -(is) 1325 5940 w -(a) 1441 5940 w -(file) 1532 5940 w -(server,) 1719 5940 w -(serving) 2084 5940 w -(the) 2473 5940 w -(files) 2664 5940 w -(in) 2902 5940 w -10 /LucidaTypewriter f -(/dev) 3029 5940 w -10 /LucidaSansUnicode00 f -(to) 3354 5940 w -(the) 3489 5940 w -(clients) 3681 5940 w -(running) 4033 5940 w -(in) 4450 5940 w -(each) 4578 5940 w -(win\255) 4839 5940 w -(dow.) 720 6060 w -(Although) 1018 6060 w -(every) 1495 6060 w -(window) 1785 6060 w -(looks) 2187 6060 w -(the same to its client, each window has a distinct set) 2480 6060 w -(of) 720 6180 w -(files) 857 6180 w -(in) 1098 6180 w -10 /LucidaTypewriter f -(/dev) 1228 6180 w -10 /LucidaSansUnicode00 f -(.) 1516 6180 w -(8\275) 1619 6180 w -(multiplexes) 1802 6180 w -(its) 2408 6180 w -(clients) 2565 6180 w -10 /LucidaSansUnicode20 f -(\031) 2880 6180 w -10 /LucidaSansUnicode00 f -(access) 2952 6180 w -(to) 3307 6180 w -(the) 3445 6180 w -(resources) 3640 6180 w -(of) 4150 6180 w -(the) 4288 6180 w -(terminal) 4483 6180 w -(by) 4925 6180 w -(serving) 720 6300 w -(multiple) 1112 6300 w -(sets) 1549 6300 w -(of) 1783 6300 w -(files.) 1919 6300 w -(Each) 2223 6300 w -(client) 2483 6300 w -(is) 2785 6300 w -(given) 2903 6300 w -(a) 3202 6300 w -(private) 3295 6300 w -(name) 3666 6300 w -(space) 3970 6300 w -(with) 4284 6300 w -(a) 4527 6300 w +(read) 720 5820 w +(the) 970 5820 w +(mouse,) 1160 5820 w +(they) 1550 5820 w +(read) 1792 5820 w +10 /LucidaTypewriter f +(/dev/mouse) 2042 5820 w +10 /LucidaSansUnicode00 f +(.) 2762 5820 w +(In) 2861 5820 w +(the) 2987 5820 w +(Plan) 3177 5820 w +(9) 3413 5820 w +(style,) 3510 5820 w +(bitmap) 3801 5820 w +(graphics) 4175 5820 w +(is) 4623 5820 w +(imple\255) 4737 5820 w +(mented) 720 5940 w +(by) 1123 5940 w +(providing) 1274 5940 w +(a) 1772 5940 w +(file) 1863 5940 w +10 /LucidaTypewriter f +(/dev/bitblt) 2050 5940 w +10 /LucidaSansUnicode00 f +(on) 2878 5940 w +(which) 3037 5940 w +(clients) 3354 5940 w +(write) 3705 5940 w +(encoded) 3981 5940 w +(messages) 4430 5940 w +(to) 4942 5940 w +(execute) 720 6060 w +(graphical) 1139 6060 w +(operations) 1626 6060 w +(such) 2182 6060 w +(as) 2448 6060 w +10 /LucidaTypewriter f +(bitblt) 2594 6060 w +10 /LucidaSansUnicode00 f +(\(RasterOp\).) 3066 6060 w +(What) 3680 6060 w +(is) 3960 6060 w +(unusual) 4080 6060 w +(is) 4503 6060 w +(how) 4622 6060 w +(this) 4861 6060 w +(is) 720 6180 w +(done:) 836 6180 w +(8\275) 1146 6180 w +(is) 1325 6180 w +(a) 1441 6180 w +(file) 1532 6180 w +(server,) 1719 6180 w +(serving) 2084 6180 w +(the) 2473 6180 w +(files) 2664 6180 w +(in) 2902 6180 w +10 /LucidaTypewriter f +(/dev) 3029 6180 w +10 /LucidaSansUnicode00 f +(to) 3354 6180 w +(the) 3489 6180 w +(clients) 3681 6180 w +(running) 4033 6180 w +(in) 4450 6180 w +(each) 4578 6180 w +(win\255) 4839 6180 w +(dow.) 720 6300 w +(Although) 1018 6300 w +(every) 1495 6300 w +(window) 1785 6300 w +(looks) 2187 6300 w +(the same to its client, each window has a distinct set) 2480 6300 w +(of) 720 6420 w +(files) 857 6420 w +(in) 1098 6420 w +10 /LucidaTypewriter f +(/dev) 1228 6420 w +10 /LucidaSansUnicode00 f +(.) 1516 6420 w +(8\275) 1619 6420 w +(multiplexes) 1802 6420 w +(its) 2408 6420 w +(clients) 2565 6420 w +10 /LucidaSansUnicode20 f +(\031) 2880 6420 w +10 /LucidaSansUnicode00 f +(access) 2952 6420 w +(to) 3307 6420 w +(the) 3445 6420 w +(resources) 3640 6420 w +(of) 4150 6420 w +(the) 4288 6420 w +(terminal) 4483 6420 w +(by) 4925 6420 w +(serving) 720 6540 w +(multiple) 1112 6540 w +(sets) 1549 6540 w +(of) 1783 6540 w +(files.) 1919 6540 w +(Each) 2223 6540 w +(client) 2483 6540 w +(is) 2785 6540 w +(given) 2903 6540 w +(a) 3202 6540 w +(private) 3295 6540 w +(name) 3666 6540 w +(space) 3970 6540 w +(with) 4284 6540 w +(a) 4527 6540 w 10 /LucidaSans-Italic f -(different) 4620 6300 w +(different) 4620 6540 w 10 /LucidaSansUnicode00 f -(set) 720 6420 w -(of) 897 6420 w -(files) 1028 6420 w -(that) 1264 6420 w -(behave) 1489 6420 w -(the) 1867 6420 w -(same) 2056 6420 w -(as) 2345 6420 w -(in) 2485 6420 w -(all) 2610 6420 w -(other) 2757 6420 w -(windows.) 3048 6420 w -(There) 3566 6420 w -(are) 3878 6420 w -(many) 4064 6420 w -(advantages) 4360 6420 w -(to) 4942 6420 w -(this) 720 6540 w -(structure.) 992 6540 w -(One) 1587 6540 w -(is) 1876 6540 w -(that) 2049 6540 w -(8\275) 2333 6540 w -(serves) 2569 6540 w -(the) 2969 6540 w -(same) 3217 6540 w -(files) 3565 6540 w -(it) 3860 6540 w -(needs) 4019 6540 w -(for) 4400 6540 w -(its) 4631 6540 w -(own) 4840 6540 w -(implementation) 720 6660 w -10 /LucidaSansUnicode20 f -(\024) 1482 6660 w -10 /LucidaSansUnicode00 f -(it) 1582 6660 w -(multiplexes) 1700 6660 w -(its) 2318 6660 w -(own) 2487 6660 w -(interface) 2739 6660 w -10 /LucidaSansUnicode20 f -(\024) 3163 6660 w -10 /LucidaSansUnicode00 f -(so) 3263 6660 w -(it) 3427 6660 w -(may) 3546 6660 w -(be) 3799 6660 w -(run,) 3971 6660 w -(recursively,) 4221 6660 w -(as) 4826 6660 w -(a) 4985 6660 w -(client) 720 6780 w -(of) 1054 6780 w -(itself.) 1222 6780 w -(Also,) 1595 6780 w -(consider) 1907 6780 w -(the) 2391 6780 w -(implementation) 2616 6780 w -(of) 3448 6780 w -10 /LucidaTypewriter f -(/dev/tty) 3616 6780 w -10 /LucidaSansUnicode00 f -(in) 4262 6780 w -(UNIX,) 4423 6780 w -(which) 4759 6780 w -(requires) 720 6900 w -(special) 1171 6900 w -(code) 1557 6900 w -(in) 1840 6900 w -(the) 1983 6900 w -(kernel) 2190 6900 w -(to) 2544 6900 w -(redirect) 2694 6900 w -10 /LucidaTypewriter f -(open) 3120 6900 w -10 /LucidaSansUnicode00 f -(calls) 3460 6900 w -(to) 3727 6900 w -(the) 3877 6900 w -(appropriate) 4084 6900 w -(device.) 4701 6900 w -(Instead,) 720 7020 w -(in) 1144 7020 w -(8\275) 1274 7020 w -(the) 1456 7020 w -(equivalent) 1650 7020 w -(service) 2190 7020 w -(falls) 2565 7020 w -(out) 2805 7020 w -(automatically:) 3004 7020 w -(8\275) 3720 7020 w -(serves) 3902 7020 w -10 /LucidaTypewriter f -(/dev/cons) 4248 7020 w -10 /LucidaSansUnicode00 f -(as) 4934 7020 w -(its) 720 7140 w -(basic) 871 7140 w -(function;) 1155 7140 w -(there) 1623 7140 w -(is) 1910 7140 w -(nothing) 2025 7140 w -(extra) 2435 7140 w -(to) 2720 7140 w -(do.) 2853 7140 w -(When) 3076 7140 w -(a) 3377 7140 w -(program) 3467 7140 w -(wants) 3918 7140 w -(to) 4235 7140 w -(read) 4368 7140 w -(from) 4618 7140 w -(the) 4885 7140 w -(keyboard,) 720 7260 w -(it) 1245 7260 w -(opens) 1355 7260 w -10 /LucidaTypewriter f -(/dev/cons) 1692 7260 w -10 /LucidaSansUnicode00 f -(,) 2340 7260 w -(but) 2416 7260 w -(it) 2622 7260 w -(is) 2732 7260 w -(a) 2856 7260 w -(private) 2955 7260 w -(file,) 3332 7260 w -(not) 3559 7260 w -(a) 3763 7260 w -(shared) 3862 7260 w -(one) 4234 7260 w -(with) 4457 7260 w -(special) 4706 7260 w +(set) 720 6660 w +(of) 897 6660 w +(files) 1028 6660 w +(that) 1264 6660 w +(behave) 1489 6660 w +(the) 1867 6660 w +(same) 2056 6660 w +(as) 2345 6660 w +(in) 2485 6660 w +(all) 2610 6660 w +(other) 2757 6660 w +(windows.) 3048 6660 w +(There) 3566 6660 w +(are) 3878 6660 w +(many) 4064 6660 w +(advantages) 4360 6660 w +(to) 4942 6660 w +(this) 720 6780 w +(structure.) 992 6780 w +(One) 1587 6780 w +(is) 1876 6780 w +(that) 2049 6780 w +(8\275) 2333 6780 w +(serves) 2569 6780 w +(the) 2969 6780 w +(same) 3217 6780 w +(files) 3565 6780 w +(it) 3860 6780 w +(needs) 4019 6780 w +(for) 4400 6780 w +(its) 4631 6780 w +(own) 4840 6780 w +(implementation) 720 6900 w +10 /LucidaSansUnicode20 f +(\024) 1482 6900 w +10 /LucidaSansUnicode00 f +(it) 1582 6900 w +(multiplexes) 1700 6900 w +(its) 2318 6900 w +(own) 2487 6900 w +(interface) 2739 6900 w +10 /LucidaSansUnicode20 f +(\024) 3163 6900 w +10 /LucidaSansUnicode00 f +(so) 3263 6900 w +(it) 3427 6900 w +(may) 3546 6900 w +(be) 3799 6900 w +(run,) 3971 6900 w +(recursively,) 4221 6900 w +(as) 4826 6900 w +(a) 4985 6900 w +(client) 720 7020 w +(of) 1054 7020 w +(itself.) 1222 7020 w +(Also,) 1595 7020 w +(consider) 1907 7020 w +(the) 2391 7020 w +(implementation) 2616 7020 w +(of) 3448 7020 w +10 /LucidaTypewriter f +(/dev/tty) 3616 7020 w +10 /LucidaSansUnicode00 f +(in) 4262 7020 w +(UNIX,) 4423 7020 w +(which) 4759 7020 w +(requires) 720 7140 w +(special) 1171 7140 w +(code) 1557 7140 w +(in) 1840 7140 w +(the) 1983 7140 w +(kernel) 2190 7140 w +(to) 2544 7140 w +(redirect) 2694 7140 w +10 /LucidaTypewriter f +(open) 3120 7140 w +10 /LucidaSansUnicode00 f +(calls) 3460 7140 w +(to) 3727 7140 w +(the) 3877 7140 w +(appropriate) 4084 7140 w +(device.) 4701 7140 w +(Instead,) 720 7260 w +(in) 1144 7260 w +(8\275) 1274 7260 w +(the) 1456 7260 w +(equivalent) 1650 7260 w +(service) 2190 7260 w +(falls) 2565 7260 w +(out) 2805 7260 w +(automatically:) 3004 7260 w +(8\275) 3720 7260 w +(serves) 3902 7260 w +10 /LucidaTypewriter f +(/dev/cons) 4248 7260 w +10 /LucidaSansUnicode00 f +(as) 4934 7260 w cleartomark showpage saveobj restore @@ -7551,696 +7518,697 @@ 7 pagesetup 10 /LucidaSansUnicode00 f (\255 7 \255) 2783 480 w -(properties.) 720 840 w -(Again,) 1318 840 w -(local) 1663 840 w -(name) 1924 840 w -(spaces) 2226 840 w -(make) 2589 840 w -(this) 2887 840 w -(possible;) 3102 840 w -(conventions) 3574 840 w -(about) 4195 840 w -(the) 4510 840 w -(consis\255) 4702 840 w -(tency of the files within them make it natural.) 720 960 w -(8\275 has a unique) 970 1116 w -(feature) 1799 1116 w -(made) 2176 1116 w -(possible) 2476 1116 w -(by) 2912 1116 w -(its) 3060 1116 w -(design.) 3210 1116 w -(Because) 3630 1116 w -(it) 4052 1116 w -(is) 4151 1116 w -(implemented) 4264 1116 w -(as) 4934 1116 w -(a) 720 1236 w -(file) 813 1236 w -(server,) 1002 1236 w -(it) 1369 1236 w -(has) 1473 1236 w -(the) 1679 1236 w -(power) 1872 1236 w -(to) 2207 1236 w -(postpone) 2342 1236 w -(answering) 2833 1236 w -(read) 3365 1236 w -(requests) 3617 1236 w -(for) 4071 1236 w -(a) 4247 1236 w -(particular) 4339 1236 w -(win\255) 4839 1236 w -(dow.) 720 1356 w -(This) 1026 1356 w -(behavior) 1272 1356 w -(is) 1732 1356 w -(toggled) 1853 1356 w -(by) 2264 1356 w -(a) 2420 1356 w -(reserved) 2516 1356 w -(key) 2974 1356 w -(on) 3182 1356 w -(the) 3347 1356 w -(keyboard.) 3544 1356 w -(Toggling) 4099 1356 w -(once) 4571 1356 w -(sus\255) 4843 1356 w -(pends) 720 1476 w -(client) 1080 1476 w -(reads) 1409 1476 w -(from) 1740 1476 w -(the) 2037 1476 w -(window;) 2257 1476 w -(toggling) 2723 1476 w -(again) 3191 1476 w -(resumes) 3518 1476 w -(normal) 3992 1476 w -(reads,) 4397 1476 w -(which) 4759 1476 w -(absorb) 720 1596 w -(whatever) 1088 1596 w -(text) 1558 1596 w -(has) 1783 1596 w -(been) 1985 1596 w -(prepared,) 2256 1596 w -(one) 2760 1596 w -(line) 2973 1596 w -(at) 3183 1596 w -(a) 3309 1596 w -(time.) 3398 1596 w -(This) 3711 1596 w -(allows) 3950 1596 w -(the) 4287 1596 w -(user) 4477 1596 w -(to) 4722 1596 w -(edit) 4855 1596 w -(multi-line) 720 1716 w -(input) 1243 1716 w -(text) 1535 1716 w -(on) 1765 1716 w -(the) 1927 1716 w -(screen) 2121 1716 w -(before) 2477 1716 w -(the) 2830 1716 w -(application) 3024 1716 w -(sees) 3597 1716 w -(it,) 3850 1716 w -(obviating) 3986 1716 w -(the) 4474 1716 w -(need) 4667 1716 w -(to) 4942 1716 w -(invoke) 720 1836 w -(a) 1081 1836 w -(separate) 1179 1836 w -(editor) 1636 1836 w -(to) 1966 1836 w -(prepare) 2107 1836 w -(text) 2525 1836 w -(such) 2759 1836 w -(as) 3028 1836 w -(mail) 3177 1836 w -(messages.) 3426 1836 w -(A) 4008 1836 w -(related) 4121 1836 w -(property) 4502 1836 w -(is) 4960 1836 w -(that) 720 1956 w -(reads) 944 1956 w -(are) 1243 1956 w -(answered) 1428 1956 w -(directly) 1922 1956 w -(from) 2313 1956 w -(the) 2578 1956 w -(data) 2766 1956 w -(structure) 3009 1956 w -(defining) 3480 1956 w -(the) 3913 1956 w -(text on the display:) 4101 1956 w -(text) 720 2076 w -(may) 944 2076 w -(be) 1177 2076 w -(edited) 1329 2076 w -(until) 1666 2076 w -(its) 1918 2076 w -(final) 2068 2076 w -(newline) 2313 2076 w -(makes) 2717 2076 w -(the) 3063 2076 w -(prepared) 3251 2076 w -(line) 3722 2076 w -(of) 3931 2076 w -(text) 4062 2076 w -(readable) 4286 2076 w -(by) 4737 2076 w -(the) 4885 2076 w -(client.) 720 2196 w -(Even) 1083 2196 w -(then,) 1342 2196 w -(until) 1625 2196 w -(the) 1878 2196 w -(line) 2067 2196 w -(is) 2277 2196 w -(read,) 2391 2196 w -(the) 2672 2196 w -(text) 2861 2196 w -(the) 3086 2196 w -(client) 3275 2196 w -(will) 3573 2196 w -(read) 3771 2196 w -(can) 4020 2196 w -(be) 4222 2196 w -(changed.) 4375 2196 w -(For) 4884 2196 w -(example, after typing) 720 2316 w +(its) 720 840 w +(basic) 871 840 w +(function;) 1155 840 w +(there) 1623 840 w +(is) 1910 840 w +(nothing) 2025 840 w +(extra) 2435 840 w +(to) 2720 840 w +(do.) 2853 840 w +(When) 3076 840 w +(a) 3377 840 w +(program) 3467 840 w +(wants) 3918 840 w +(to) 4235 840 w +(read) 4368 840 w +(from) 4618 840 w +(the) 4885 840 w +(keyboard,) 720 960 w +(it) 1245 960 w +(opens) 1355 960 w +10 /LucidaTypewriter f +(/dev/cons) 1692 960 w +10 /LucidaSansUnicode00 f +(,) 2340 960 w +(but) 2416 960 w +(it) 2622 960 w +(is) 2732 960 w +(a) 2856 960 w +(private) 2955 960 w +(file,) 3332 960 w +(not) 3559 960 w +(a) 3763 960 w +(shared) 3862 960 w +(one) 4234 960 w +(with) 4457 960 w +(special) 4706 960 w +(properties.) 720 1080 w +(Again,) 1318 1080 w +(local) 1663 1080 w +(name) 1924 1080 w +(spaces) 2226 1080 w +(make) 2589 1080 w +(this) 2887 1080 w +(possible;) 3102 1080 w +(conventions) 3574 1080 w +(about) 4195 1080 w +(the) 4510 1080 w +(consis\255) 4702 1080 w +(tency of the files within them make it natural.) 720 1200 w +(8\275 has a unique) 970 1356 w +(feature) 1799 1356 w +(made) 2176 1356 w +(possible) 2476 1356 w +(by) 2912 1356 w +(its) 3060 1356 w +(design.) 3210 1356 w +(Because) 3630 1356 w +(it) 4052 1356 w +(is) 4151 1356 w +(implemented) 4264 1356 w +(as) 4934 1356 w +(a) 720 1476 w +(file) 813 1476 w +(server,) 1002 1476 w +(it) 1369 1476 w +(has) 1473 1476 w +(the) 1679 1476 w +(power) 1872 1476 w +(to) 2207 1476 w +(postpone) 2342 1476 w +(answering) 2833 1476 w +(read) 3365 1476 w +(requests) 3617 1476 w +(for) 4071 1476 w +(a) 4247 1476 w +(particular) 4339 1476 w +(win\255) 4839 1476 w +(dow.) 720 1596 w +(This) 1026 1596 w +(behavior) 1272 1596 w +(is) 1732 1596 w +(toggled) 1853 1596 w +(by) 2264 1596 w +(a) 2420 1596 w +(reserved) 2516 1596 w +(key) 2974 1596 w +(on) 3182 1596 w +(the) 3347 1596 w +(keyboard.) 3544 1596 w +(Toggling) 4099 1596 w +(once) 4571 1596 w +(sus\255) 4843 1596 w +(pends) 720 1716 w +(client) 1080 1716 w +(reads) 1409 1716 w +(from) 1740 1716 w +(the) 2037 1716 w +(window;) 2257 1716 w +(toggling) 2723 1716 w +(again) 3191 1716 w +(resumes) 3518 1716 w +(normal) 3992 1716 w +(reads,) 4397 1716 w +(which) 4759 1716 w +(absorb) 720 1836 w +(whatever) 1088 1836 w +(text) 1558 1836 w +(has) 1783 1836 w +(been) 1985 1836 w +(prepared,) 2256 1836 w +(one) 2760 1836 w +(line) 2973 1836 w +(at) 3183 1836 w +(a) 3309 1836 w +(time.) 3398 1836 w +(This) 3711 1836 w +(allows) 3950 1836 w +(the) 4287 1836 w +(user) 4477 1836 w +(to) 4722 1836 w +(edit) 4855 1836 w +(multi-line) 720 1956 w +(input) 1243 1956 w +(text) 1535 1956 w +(on) 1765 1956 w +(the) 1927 1956 w +(screen) 2121 1956 w +(before) 2477 1956 w +(the) 2830 1956 w +(application) 3024 1956 w +(sees) 3597 1956 w +(it,) 3850 1956 w +(obviating) 3986 1956 w +(the) 4474 1956 w +(need) 4667 1956 w +(to) 4942 1956 w +(invoke) 720 2076 w +(a) 1081 2076 w +(separate) 1179 2076 w +(editor) 1636 2076 w +(to) 1966 2076 w +(prepare) 2107 2076 w +(text) 2525 2076 w +(such) 2759 2076 w +(as) 3028 2076 w +(mail) 3177 2076 w +(messages.) 3426 2076 w +(A) 4008 2076 w +(related) 4121 2076 w +(property) 4502 2076 w +(is) 4960 2076 w +(that) 720 2196 w +(reads) 944 2196 w +(are) 1243 2196 w +(answered) 1428 2196 w +(directly) 1922 2196 w +(from) 2313 2196 w +(the) 2578 2196 w +(data) 2766 2196 w +(structure) 3009 2196 w +(defining) 3480 2196 w +(the) 3913 2196 w +(text on the display:) 4101 2196 w +(text) 720 2316 w +(may) 944 2316 w +(be) 1177 2316 w +(edited) 1329 2316 w +(until) 1666 2316 w +(its) 1918 2316 w +(final) 2068 2316 w +(newline) 2313 2316 w +(makes) 2717 2316 w +(the) 3063 2316 w +(prepared) 3251 2316 w +(line) 3722 2316 w +(of) 3931 2316 w +(text) 4062 2316 w +(readable) 4286 2316 w +(by) 4737 2316 w +(the) 4885 2316 w +(client.) 720 2436 w +(Even) 1083 2436 w +(then,) 1342 2436 w +(until) 1625 2436 w +(the) 1878 2436 w +(line) 2067 2436 w +(is) 2277 2436 w +(read,) 2391 2436 w +(the) 2672 2436 w +(text) 2861 2436 w +(the) 3086 2436 w +(client) 3275 2436 w +(will) 3573 2436 w +(read) 3771 2436 w +(can) 4020 2436 w +(be) 4222 2436 w +(changed.) 4375 2436 w +(For) 4884 2436 w +(example, after typing) 720 2556 w 9 /LucidaTypewriter f -(%) 1008 2486 w -(make) 1138 2486 w -(rm) 1008 2596 w -(*) 1203 2596 w -10 /LucidaSansUnicode00 f -(to) 720 2776 w -(the) 860 2776 w -(shell,) 1057 2776 w -(the) 1358 2776 w -(user) 1555 2776 w -(can) 1807 2776 w -(backspace) 2017 2776 w -(over) 2562 2776 w -(the) 2814 2776 w -(final) 3012 2776 w -(newline) 3267 2776 w -(at) 3681 2776 w -(any) 3816 2776 w -(time) 4028 2776 w -(until) 4286 2776 w -10 /LucidaTypewriter f -(make) 4548 2776 w -10 /LucidaSansUnicode00 f -(fin\255) 4879 2776 w -(ishes,) 720 2896 w -(holding) 1043 2896 w -(off) 1453 2896 w -(execution) 1630 2896 w -(of) 2146 2896 w -(the) 2285 2896 w -10 /LucidaTypewriter f -(rm) 2481 2896 w -10 /LucidaSansUnicode00 f -(command,) 2666 2896 w -(or) 3217 2896 w -(even) 3360 2896 w -(point) 3627 2896 w -(with) 3920 2896 w -(the) 4166 2896 w -(mouse) 4362 2896 w -(before) 4726 2896 w -(the) 720 3016 w -10 /LucidaTypewriter f -(rm) 907 3016 w -10 /LucidaSansUnicode00 f -(and type another command to be executed first.) 1083 3016 w -(There is no) 970 3172 w -10 /LucidaTypewriter f -(ftp) 1547 3172 w -10 /LucidaSansUnicode00 f -(command in Plan 9.) 1795 3172 w -(Instead,) 2821 3172 w -(a) 3239 3172 w -(user-level) 3327 3172 w -(file) 3850 3172 w -(server) 4034 3172 w -(called) 4364 3172 w -10 /LucidaTypewriter f -(ftpfs) 4680 3172 w -10 /LucidaSansUnicode00 f -(dials) 720 3292 w -(the) 989 3292 w -(FTP) 1186 3292 w -(site,) 1400 3292 w -(logs) 1647 3292 w -(in) 1892 3292 w -(on) 2025 3292 w -(behalf) 2190 3292 w -(of) 2534 3292 w -(the) 2674 3292 w -(user,) 2870 3292 w -(and) 3153 3292 w -(uses) 3374 3292 w -(the) 3635 3292 w -(FTP) 3831 3292 w -(protocol) 4044 3292 w -(to) 4489 3292 w -(examine) 4628 3292 w -(files) 720 3412 w -(in) 971 3412 w -(the) 1111 3412 w -(remote) 1315 3412 w -(directory.) 1708 3412 w -(To) 2252 3412 w -(the) 2425 3412 w -(local) 2629 3412 w -(user,) 2903 3412 w -(it) 3194 3412 w -(offers) 3309 3412 w -(a) 3641 3412 w -(file) 3745 3412 w -(hierarchy,) 3945 3412 w -(attached) 4476 3412 w -(to) 4942 3412 w -10 /LucidaTypewriter f -(/n/ftp) 720 3532 w -10 /LucidaSansUnicode00 f -(in) 1210 3532 w -(the) 1359 3532 w -(local) 1572 3532 w -(name) 1855 3532 w -(space,) 2178 3532 w -(mirroring) 2543 3532 w -(the) 3059 3532 w -(contents) 3271 3532 w -(of) 3745 3532 w -(the) 3900 3532 w -(FTP) 4112 3532 w -(site.) 4341 3532 w -(In) 4635 3532 w -(other) 4783 3532 w -(words,) 720 3652 w -(it) 1093 3652 w -(translates) 1207 3652 w -(the) 1729 3652 w -(FTP) 1932 3652 w -(protocol) 2152 3652 w -(into) 2604 3652 w -(9P) 2841 3652 w -(to) 3007 3652 w -(offer) 3153 3652 w -(Plan) 3433 3652 w -(9) 3682 3652 w -(access) 3793 3652 w -(to) 4156 3652 w -(FTP) 4302 3652 w -(sites.) 4522 3652 w -(The) 4859 3652 w -(implementation) 720 3772 w -(is) 1518 3772 w -(tricky;) 1634 3772 w -10 /LucidaTypewriter f -(ftpfs) 1970 3772 w -10 /LucidaSansUnicode00 f -(must) 2366 3772 w -(do) 2645 3772 w -(some) 2805 3772 w -(sophisticated) 3102 3772 w -(caching) 3783 3772 w -(for) 4191 3772 w -(efficiency) 4365 3772 w -(and) 4860 3772 w -(use) 720 3892 w -(heuristics) 929 3892 w -(to) 1438 3892 w -(decode) 1576 3892 w -(remote) 1966 3892 w -(directory) 2350 3892 w -(information.) 2821 3892 w -(But) 3492 3892 w -(the) 3689 3892 w -(result) 3885 3892 w -(is) 4202 3892 w -(worthwhile:) 4323 3892 w -(all) 4927 3892 w -(the) 720 4012 w -(local) 917 4012 w -(file) 1184 4012 w -(management) 1377 4012 w -(tools) 2050 4012 w -(such) 2331 4012 w -(as) 2599 4012 w -10 /LucidaTypewriter f -(cp) 2747 4012 w -10 /LucidaSansUnicode00 f -(,) 2891 4012 w -10 /LucidaTypewriter f -(grep) 2964 4012 w -10 /LucidaSansUnicode00 f -(,) 3252 4012 w -10 /LucidaTypewriter f -(diff) 3325 4012 w -10 /LucidaSansUnicode00 f -(,) 3613 4012 w -(and) 3686 4012 w -(of) 3907 4012 w -(course) 4046 4012 w -10 /LucidaTypewriter f -(ls) 4409 4012 w -10 /LucidaSansUnicode00 f -(are) 4594 4012 w -(avail\255) 4787 4012 w -(able) 720 4132 w -(to) 964 4132 w -(FTP-served) 1103 4132 w -(files) 1693 4132 w -(exactly) 1936 4132 w -(as) 2318 4132 w -(if) 2466 4132 w -(they) 2574 4132 w -(were) 2823 4132 w -(local) 3095 4132 w -(files.) 3362 4132 w -(Other) 3670 4132 w -(systems) 3986 4132 w -(such) 4419 4132 w -(as) 4687 4132 w -(Jade) 4835 4132 w -(and) 720 4252 w -(Prospero) 936 4252 w -(have) 1400 4252 w -(exploited) 1660 4252 w -(the) 2150 4252 w -(same) 2340 4252 w -(opportunity) 2630 4252 w -([Rao81,) 3233 4252 w -(Neu92],) 3638 4252 w -(but) 4056 4252 w -(because) 4253 4252 w -(of) 4682 4252 w -(local) 4815 4252 w -(name) 720 4372 w -(spaces) 1032 4372 w -(and) 1405 4372 w -(the) 1631 4372 w -(simplicity) 1832 4372 w -(of) 2341 4372 w -(implementing) 2485 4372 w -(9P,) 3202 4372 w -(this) 3398 4372 w -(approach) 3623 4372 w -(fits) 4120 4372 w -(more) 4320 4372 w -(naturally) 4618 4372 w -(into Plan 9 than into other environments.) 720 4492 w -(One) 970 4648 w -(server,) 1214 4648 w -10 /LucidaTypewriter f -(exportfs) 1591 4648 w -10 /LucidaSansUnicode00 f -(,) 2167 4648 w -(is) 2247 4648 w -(a) 2375 4648 w -(user) 2478 4648 w -(process) 2736 4648 w -(that) 3159 4648 w -(takes) 3399 4648 w -(a) 3705 4648 w -(portion) 3809 4648 w -(of) 4212 4648 w -(its) 4359 4648 w -(own) 4525 4648 w -(name) 4774 4648 w -(space) 720 4768 w -(and) 1037 4768 w -(makes) 1258 4768 w -(it) 1612 4768 w -(available) 1719 4768 w -(to) 2183 4768 w -(other) 2322 4768 w -(processes) 2620 4768 w -(by) 3141 4768 w -(translating) 3296 4768 w -(9P) 3856 4768 w -(requests) 4014 4768 w -(into) 4471 4768 w -(system) 4700 4768 w -(calls) 720 4888 w -(to) 976 4888 w -(the) 1115 4888 w -(Plan) 1311 4888 w -(9) 1553 4888 w -(kernel.) 1657 4888 w -(The) 2064 4888 w -(file) 2286 4888 w -(hierarchy) 2478 4888 w -(it) 2968 4888 w -(exports) 3075 4888 w -(may) 3486 4888 w -(contain) 3727 4888 w -(files) 4125 4888 w -(from) 4368 4888 w -(multiple) 4642 4888 w -(servers.) 720 5008 w -10 /LucidaTypewriter f -(Exportfs) 1167 5008 w -10 /LucidaSansUnicode00 f -(is) 1778 5008 w -(usually) 1893 5008 w -(run) 2268 5008 w -(as) 2468 5008 w -(a) 2608 5008 w -(remote) 2697 5008 w -(server) 3075 5008 w -(started) 3406 5008 w -(by) 3780 5008 w -(a) 3929 5008 w -(local) 4018 5008 w -(program,) 4277 5008 w -(either) 4759 5008 w -10 /LucidaTypewriter f -(import) 720 5128 w -10 /LucidaSansUnicode00 f -(or) 1222 5128 w -10 /LucidaTypewriter f -(cpu) 1394 5128 w -10 /LucidaSansUnicode00 f -(.) 1610 5128 w -10 /LucidaTypewriter f -(Import) 1744 5128 w -10 /LucidaSansUnicode00 f -(makes) 2246 5128 w -(a) 2629 5128 w -(network) 2754 5128 w -(call) 3216 5128 w -(to) 3450 5128 w -(the) 3618 5128 w -(remote) 3843 5128 w -(machine,) 4257 5128 w -(starts) 4768 5128 w +(%) 920 2726 w +(make) 1050 2726 w +(rm) 920 2836 w +(*) 1115 2836 w +10 /LucidaSansUnicode00 f +(to) 720 3016 w +(the) 860 3016 w +(shell,) 1057 3016 w +(the) 1358 3016 w +(user) 1555 3016 w +(can) 1807 3016 w +(backspace) 2017 3016 w +(over) 2562 3016 w +(the) 2814 3016 w +(final) 3012 3016 w +(newline) 3267 3016 w +(at) 3681 3016 w +(any) 3816 3016 w +(time) 4028 3016 w +(until) 4286 3016 w +10 /LucidaTypewriter f +(make) 4548 3016 w +10 /LucidaSansUnicode00 f +(fin\255) 4879 3016 w +(ishes,) 720 3136 w +(holding) 1043 3136 w +(off) 1453 3136 w +(execution) 1630 3136 w +(of) 2146 3136 w +(the) 2285 3136 w +10 /LucidaTypewriter f +(rm) 2481 3136 w +10 /LucidaSansUnicode00 f +(command,) 2666 3136 w +(or) 3217 3136 w +(even) 3360 3136 w +(point) 3627 3136 w +(with) 3920 3136 w +(the) 4166 3136 w +(mouse) 4362 3136 w +(before) 4726 3136 w +(the) 720 3256 w +10 /LucidaTypewriter f +(rm) 907 3256 w +10 /LucidaSansUnicode00 f +(and type another command to be executed first.) 1083 3256 w +(There is no) 970 3412 w +10 /LucidaTypewriter f +(ftp) 1547 3412 w +10 /LucidaSansUnicode00 f +(command in Plan 9.) 1795 3412 w +(Instead,) 2821 3412 w +(a) 3239 3412 w +(user-level) 3327 3412 w +(file) 3850 3412 w +(server) 4034 3412 w +(called) 4364 3412 w +10 /LucidaTypewriter f +(ftpfs) 4680 3412 w +10 /LucidaSansUnicode00 f +(dials) 720 3532 w +(the) 989 3532 w +(FTP) 1186 3532 w +(site,) 1400 3532 w +(logs) 1647 3532 w +(in) 1892 3532 w +(on) 2025 3532 w +(behalf) 2190 3532 w +(of) 2534 3532 w +(the) 2674 3532 w +(user,) 2870 3532 w +(and) 3153 3532 w +(uses) 3374 3532 w +(the) 3635 3532 w +(FTP) 3831 3532 w +(protocol) 4044 3532 w +(to) 4489 3532 w +(examine) 4628 3532 w +(files) 720 3652 w +(in) 971 3652 w +(the) 1111 3652 w +(remote) 1315 3652 w +(directory.) 1708 3652 w +(To) 2252 3652 w +(the) 2425 3652 w +(local) 2629 3652 w +(user,) 2903 3652 w +(it) 3194 3652 w +(offers) 3309 3652 w +(a) 3641 3652 w +(file) 3745 3652 w +(hierarchy,) 3945 3652 w +(attached) 4476 3652 w +(to) 4942 3652 w +10 /LucidaTypewriter f +(/n/ftp) 720 3772 w +10 /LucidaSansUnicode00 f +(in) 1210 3772 w +(the) 1359 3772 w +(local) 1572 3772 w +(name) 1855 3772 w +(space,) 2178 3772 w +(mirroring) 2543 3772 w +(the) 3059 3772 w +(contents) 3271 3772 w +(of) 3745 3772 w +(the) 3900 3772 w +(FTP) 4112 3772 w +(site.) 4341 3772 w +(In) 4635 3772 w +(other) 4783 3772 w +(words,) 720 3892 w +(it) 1093 3892 w +(translates) 1207 3892 w +(the) 1729 3892 w +(FTP) 1932 3892 w +(protocol) 2152 3892 w +(into) 2604 3892 w +(9P) 2841 3892 w +(to) 3007 3892 w +(offer) 3153 3892 w +(Plan) 3433 3892 w +(9) 3682 3892 w +(access) 3793 3892 w +(to) 4156 3892 w +(FTP) 4302 3892 w +(sites.) 4522 3892 w +(The) 4859 3892 w +(implementation) 720 4012 w +(is) 1518 4012 w +(tricky;) 1634 4012 w +10 /LucidaTypewriter f +(ftpfs) 1970 4012 w +10 /LucidaSansUnicode00 f +(must) 2366 4012 w +(do) 2645 4012 w +(some) 2805 4012 w +(sophisticated) 3102 4012 w +(caching) 3783 4012 w +(for) 4191 4012 w +(efficiency) 4365 4012 w +(and) 4860 4012 w +(use) 720 4132 w +(heuristics) 929 4132 w +(to) 1438 4132 w +(decode) 1576 4132 w +(remote) 1966 4132 w +(directory) 2350 4132 w +(information.) 2821 4132 w +(But) 3492 4132 w +(the) 3689 4132 w +(result) 3885 4132 w +(is) 4202 4132 w +(worthwhile:) 4323 4132 w +(all) 4927 4132 w +(the) 720 4252 w +(local) 917 4252 w +(file) 1184 4252 w +(management) 1377 4252 w +(tools) 2050 4252 w +(such) 2331 4252 w +(as) 2599 4252 w +10 /LucidaTypewriter f +(cp) 2747 4252 w +10 /LucidaSansUnicode00 f +(,) 2891 4252 w +10 /LucidaTypewriter f +(grep) 2964 4252 w +10 /LucidaSansUnicode00 f +(,) 3252 4252 w +10 /LucidaTypewriter f +(diff) 3325 4252 w +10 /LucidaSansUnicode00 f +(,) 3613 4252 w +(and) 3686 4252 w +(of) 3907 4252 w +(course) 4046 4252 w +10 /LucidaTypewriter f +(ls) 4409 4252 w +10 /LucidaSansUnicode00 f +(are) 4594 4252 w +(avail\255) 4787 4252 w +(able) 720 4372 w +(to) 964 4372 w +(FTP-served) 1103 4372 w +(files) 1693 4372 w +(exactly) 1936 4372 w +(as) 2318 4372 w +(if) 2466 4372 w +(they) 2574 4372 w +(were) 2823 4372 w +(local) 3095 4372 w +(files.) 3362 4372 w +(Other) 3670 4372 w +(systems) 3986 4372 w +(such) 4419 4372 w +(as) 4687 4372 w +(Jade) 4835 4372 w +(and) 720 4492 w +(Prospero) 936 4492 w +(have) 1400 4492 w +(exploited) 1660 4492 w +(the) 2150 4492 w +(same) 2340 4492 w +(opportunity) 2630 4492 w +([Rao81,) 3233 4492 w +(Neu92],) 3638 4492 w +(but) 4056 4492 w +(because) 4253 4492 w +(of) 4682 4492 w +(local) 4815 4492 w +(name) 720 4612 w +(spaces) 1032 4612 w +(and) 1405 4612 w +(the) 1631 4612 w +(simplicity) 1832 4612 w +(of) 2341 4612 w +(implementing) 2485 4612 w +(9P,) 3202 4612 w +(this) 3398 4612 w +(approach) 3623 4612 w +(fits) 4120 4612 w +(more) 4320 4612 w +(naturally) 4618 4612 w +(into Plan 9 than into other environments.) 720 4732 w +(One) 970 4888 w +(server,) 1214 4888 w +10 /LucidaTypewriter f +(exportfs) 1591 4888 w +10 /LucidaSansUnicode00 f +(,) 2167 4888 w +(is) 2247 4888 w +(a) 2375 4888 w +(user) 2478 4888 w +(process) 2736 4888 w +(that) 3159 4888 w +(takes) 3399 4888 w +(a) 3705 4888 w +(portion) 3809 4888 w +(of) 4212 4888 w +(its) 4359 4888 w +(own) 4525 4888 w +(name) 4774 4888 w +(space) 720 5008 w +(and) 1037 5008 w +(makes) 1258 5008 w +(it) 1612 5008 w +(available) 1719 5008 w +(to) 2183 5008 w +(other) 2322 5008 w +(processes) 2620 5008 w +(by) 3141 5008 w +(translating) 3296 5008 w +(9P) 3856 5008 w +(requests) 4014 5008 w +(into) 4471 5008 w +(system) 4700 5008 w +(calls) 720 5128 w +(to) 976 5128 w +(the) 1115 5128 w +(Plan) 1311 5128 w +(9) 1553 5128 w +(kernel.) 1657 5128 w +(The) 2064 5128 w +(file) 2286 5128 w +(hierarchy) 2478 5128 w +(it) 2968 5128 w +(exports) 3075 5128 w +(may) 3486 5128 w +(contain) 3727 5128 w +(files) 4125 5128 w +(from) 4368 5128 w +(multiple) 4642 5128 w +(servers.) 720 5248 w +10 /LucidaTypewriter f +(Exportfs) 1167 5248 w +10 /LucidaSansUnicode00 f +(is) 1778 5248 w +(usually) 1893 5248 w +(run) 2268 5248 w +(as) 2468 5248 w +(a) 2608 5248 w +(remote) 2697 5248 w +(server) 3075 5248 w +(started) 3406 5248 w +(by) 3780 5248 w +(a) 3929 5248 w +(local) 4018 5248 w +(program,) 4277 5248 w +(either) 4759 5248 w +10 /LucidaTypewriter f +(import) 720 5368 w +10 /LucidaSansUnicode00 f +(or) 1222 5368 w +10 /LucidaTypewriter f +(cpu) 1394 5368 w +10 /LucidaSansUnicode00 f +(.) 1610 5368 w +10 /LucidaTypewriter f +(Import) 1744 5368 w +10 /LucidaSansUnicode00 f +(makes) 2246 5368 w +(a) 2629 5368 w +(network) 2754 5368 w +(call) 3216 5368 w +(to) 3450 5368 w +(the) 3618 5368 w +(remote) 3843 5368 w +(machine,) 4257 5368 w +(starts) 4768 5368 w 10 /LucidaTypewriter f -(exportfs) 720 5248 w +(exportfs) 720 5488 w 10 /LucidaSansUnicode00 f -(there, and attaches its 9P connection to the local name space.) 1328 5248 w -(For example,) 4399 5248 w +(there, and attaches its 9P connection to the local name space.) 1328 5488 w +(For example,) 4399 5488 w 9 /LucidaTypewriter f -(import) 1008 5418 w -(helix) 1463 5418 w -(/net) 1853 5418 w -10 /LucidaSansUnicode00 f -(makes) 720 5598 w -(Helix) 1073 5598 w -10 /LucidaSansUnicode20 f -(\031) 1322 5598 w -10 /LucidaSansUnicode00 f -(s) 1354 5598 w -(network) 1445 5598 w -(interfaces) 1877 5598 w -(visible) 2393 5598 w -(in) 2743 5598 w -(the) 2875 5598 w -(local) 3071 5598 w -10 /LucidaTypewriter f -(/net) 3337 5598 w -10 /LucidaSansUnicode00 f -(directory.) 3666 5598 w -(Helix) 4202 5598 w -(is) 4492 5598 w -(a) 4613 5598 w -(central) 4709 5598 w -(server) 720 5718 w -(and) 1054 5718 w -(has) 1271 5718 w -(many) 1476 5718 w -(network) 1775 5718 w -(interfaces,) 2204 5718 w -(so) 2748 5718 w -(this) 2897 5718 w -(permits) 3113 5718 w -(a) 3520 5718 w -(machine) 3612 5718 w -(with) 4057 5718 w -(one) 4299 5718 w -(network) 4514 5718 w -(to) 4942 5718 w -(access) 720 5838 w -(to) 1078 5838 w -(any) 1219 5838 w -(of) 1431 5838 w -(Helix) 1572 5838 w -10 /LucidaSansUnicode20 f -(\031) 1821 5838 w -10 /LucidaSansUnicode00 f -(s) 1853 5838 w -(networks.) 1948 5838 w -(After) 2499 5838 w -(such) 2783 5838 w -(an) 3053 5838 w -(import,) 3214 5838 w -(the) 3614 5838 w -(local) 3813 5838 w -(machine) 4082 5838 w -(may) 4534 5838 w -(make) 4778 5838 w -(calls on any of the networks connected to Helix.) 720 5958 w -(Another example is) 3121 5958 w +(import) 920 5658 w +(helix) 1375 5658 w +(/net) 1765 5658 w +10 /LucidaSansUnicode00 f +(makes) 720 5838 w +(Helix) 1073 5838 w +10 /LucidaSansUnicode20 f +(\031) 1322 5838 w +10 /LucidaSansUnicode00 f +(s) 1354 5838 w +(network) 1445 5838 w +(interfaces) 1877 5838 w +(visible) 2393 5838 w +(in) 2743 5838 w +(the) 2875 5838 w +(local) 3071 5838 w +10 /LucidaTypewriter f +(/net) 3337 5838 w +10 /LucidaSansUnicode00 f +(directory.) 3666 5838 w +(Helix) 4202 5838 w +(is) 4492 5838 w +(a) 4613 5838 w +(central) 4709 5838 w +(server) 720 5958 w +(and) 1054 5958 w +(has) 1271 5958 w +(many) 1476 5958 w +(network) 1775 5958 w +(interfaces,) 2204 5958 w +(so) 2748 5958 w +(this) 2897 5958 w +(permits) 3113 5958 w +(a) 3520 5958 w +(machine) 3612 5958 w +(with) 4057 5958 w +(one) 4299 5958 w +(network) 4514 5958 w +(to) 4942 5958 w +(access) 720 6078 w +(to) 1078 6078 w +(any) 1219 6078 w +(of) 1431 6078 w +(Helix) 1572 6078 w +10 /LucidaSansUnicode20 f +(\031) 1821 6078 w +10 /LucidaSansUnicode00 f +(s) 1853 6078 w +(networks.) 1948 6078 w +(After) 2499 6078 w +(such) 2783 6078 w +(an) 3053 6078 w +(import,) 3214 6078 w +(the) 3614 6078 w +(local) 3813 6078 w +(machine) 4082 6078 w +(may) 4534 6078 w +(make) 4778 6078 w +(calls on any of the networks connected to Helix.) 720 6198 w +(Another example is) 3121 6198 w 9 /LucidaTypewriter f -(import) 1008 6128 w -(helix) 1463 6128 w -(/proc) 1853 6128 w -10 /LucidaSansUnicode00 f -(which makes Helix) 720 6308 w -10 /LucidaSansUnicode20 f -(\031) 1627 6308 w -10 /LucidaSansUnicode00 f -(s processes) 1659 6308 w -(visible) 2256 6308 w -(in) 2598 6308 w -(the) 2722 6308 w -(local) 2910 6308 w -10 /LucidaTypewriter f -(/proc) 3168 6308 w -10 /LucidaSansUnicode00 f -(,) 3528 6308 w -(permitting) 3593 6308 w -(local) 4135 6308 w -(debuggers) 4393 6308 w -(to) 4942 6308 w -(examine remote processes.) 720 6428 w -(The) 970 6584 w -10 /LucidaTypewriter f -(cpu) 1185 6584 w -10 /LucidaSansUnicode00 f -(command) 1435 6584 w -(connects) 1947 6584 w -(the) 2412 6584 w -(local) 2602 6584 w -(terminal) 2862 6584 w -(to) 3299 6584 w -(a) 3432 6584 w -(remote) 3522 6584 w -(CPU) 3901 6584 w -(server.) 4129 6584 w -(It) 4525 6584 w -(works) 4626 6584 w -(in) 4949 6584 w -(the) 720 6704 w -(opposite) 916 6704 w -(direction) 1378 6704 w -(to) 1848 6704 w -10 /LucidaTypewriter f -(import) 1987 6704 w -10 /LucidaSansUnicode00 f -(:) 2419 6704 w -(after) 2492 6704 w -(calling) 2759 6704 w -(the) 3117 6704 w -(server,) 3313 6704 w -(it) 3683 6704 w -(starts) 3790 6704 w -(a) 4103 6704 w +(import) 920 6368 w +(helix) 1375 6368 w +(/proc) 1765 6368 w +10 /LucidaSansUnicode00 f +(which makes Helix) 720 6548 w +10 /LucidaSansUnicode20 f +(\031) 1627 6548 w +10 /LucidaSansUnicode00 f +(s processes) 1659 6548 w +(visible) 2256 6548 w +(in) 2598 6548 w +(the) 2722 6548 w +(local) 2910 6548 w +10 /LucidaTypewriter f +(/proc) 3168 6548 w +10 /LucidaSansUnicode00 f +(,) 3528 6548 w +(permitting) 3593 6548 w +(local) 4135 6548 w +(debuggers) 4393 6548 w +(to) 4942 6548 w +(examine remote processes.) 720 6668 w +(The) 970 6824 w +10 /LucidaTypewriter f +(cpu) 1185 6824 w +10 /LucidaSansUnicode00 f +(command) 1435 6824 w +(connects) 1947 6824 w +(the) 2412 6824 w +(local) 2602 6824 w +(terminal) 2862 6824 w +(to) 3299 6824 w +(a) 3432 6824 w +(remote) 3522 6824 w +(CPU) 3901 6824 w +(server.) 4129 6824 w +(It) 4525 6824 w +(works) 4626 6824 w +(in) 4949 6824 w +(the) 720 6944 w +(opposite) 916 6944 w +(direction) 1378 6944 w +(to) 1848 6944 w +10 /LucidaTypewriter f +(import) 1987 6944 w +10 /LucidaSansUnicode00 f +(:) 2419 6944 w +(after) 2492 6944 w +(calling) 2759 6944 w +(the) 3117 6944 w +(server,) 3313 6944 w +(it) 3683 6944 w +(starts) 3790 6944 w +(a) 4103 6944 w 10 /LucidaSans-Italic f -(local) 4198 6704 w +(local) 4198 6944 w +10 /LucidaTypewriter f +(exportfs) 4464 6944 w +10 /LucidaSansUnicode00 f +(and) 720 7064 w +(mounts) 946 7064 w +(it) 1358 7064 w +(in) 1470 7064 w +(the) 1607 7064 w +(name) 1808 7064 w +(space) 2120 7064 w +(of) 2442 7064 w +(a) 2586 7064 w +(process,) 2687 7064 w +(typically) 3139 7064 w +(a) 3582 7064 w +(newly) 3683 7064 w +(created) 4005 7064 w +(shell,) 4410 7064 w +(on) 4715 7064 w +(the) 4885 7064 w +(server.) 720 7184 w +(It) 1134 7184 w +(then) 1253 7184 w +(rearranges) 1523 7184 w +(the) 2096 7184 w +(name) 2304 7184 w +(space) 2622 7184 w +(to) 2950 7184 w +(make) 3100 7184 w +(local) 3414 7184 w +(device) 3691 7184 w +(files) 4050 7184 w +(\(such) 4304 7184 w +(as) 4615 7184 w +(those) 4773 7184 w +(served) 720 7304 w +(by) 1089 7304 w +(the) 1254 7304 w +(terminal) 1459 7304 w +10 /LucidaSansUnicode20 f +(\031) 1861 7304 w +10 /LucidaSansUnicode00 f +(s) 1893 7304 w +(window) 1994 7304 w +(system\)) 2413 7304 w +(visible) 2836 7304 w +(in) 3195 7304 w +(the) 3337 7304 w +(server) 3543 7304 w +10 /LucidaSansUnicode20 f +(\031) 3840 7304 w +10 /LucidaSansUnicode00 f +(s) 3872 7304 w 10 /LucidaTypewriter f -(exportfs) 4464 6704 w +(/dev) 3974 7304 w 10 /LucidaSansUnicode00 f -(and) 720 6824 w -(mounts) 946 6824 w -(it) 1358 6824 w -(in) 1470 6824 w -(the) 1607 6824 w -(name) 1808 6824 w -(space) 2120 6824 w -(of) 2442 6824 w -(a) 2586 6824 w -(process,) 2687 6824 w -(typically) 3139 6824 w -(a) 3582 6824 w -(newly) 3683 6824 w -(created) 4005 6824 w -(shell,) 4410 6824 w -(on) 4715 6824 w -(the) 4885 6824 w -(server.) 720 6944 w -(It) 1134 6944 w -(then) 1253 6944 w -(rearranges) 1523 6944 w -(the) 2096 6944 w -(name) 2304 6944 w -(space) 2622 6944 w -(to) 2950 6944 w -(make) 3100 6944 w -(local) 3414 6944 w -(device) 3691 6944 w -(files) 4050 6944 w -(\(such) 4304 6944 w -(as) 4615 6944 w -(those) 4773 6944 w -(served) 720 7064 w -(by) 1089 7064 w -(the) 1254 7064 w -(terminal) 1459 7064 w -10 /LucidaSansUnicode20 f -(\031) 1861 7064 w -10 /LucidaSansUnicode00 f -(s) 1893 7064 w -(window) 1994 7064 w -(system\)) 2413 7064 w -(visible) 2836 7064 w -(in) 3195 7064 w -(the) 3337 7064 w -(server) 3543 7064 w -10 /LucidaSansUnicode20 f -(\031) 3840 7064 w -10 /LucidaSansUnicode00 f -(s) 3872 7064 w -10 /LucidaTypewriter f -(/dev) 3974 7064 w -10 /LucidaSansUnicode00 f -(directory.) 4313 7064 w -(The) 4859 7064 w -(effect) 720 7184 w -(of) 1039 7184 w -(running) 1182 7184 w -(a) 1607 7184 w -10 /LucidaTypewriter f -(cpu) 1707 7184 w -10 /LucidaSansUnicode00 f -(command) 1968 7184 w -(is) 2491 7184 w -(therefore) 2616 7184 w -(to) 3108 7184 w -(start) 3251 7184 w -(a) 3517 7184 w -(shell) 3616 7184 w -(on) 3887 7184 w -(a) 4054 7184 w -(fast) 4153 7184 w -(machine,) 4377 7184 w -(one) 4861 7184 w -(more) 720 7304 w -(tightly) 1014 7304 w -(coupled) 1365 7304 w -(to) 1793 7304 w -(the) 1934 7304 w -(file) 2132 7304 w -(server,) 2326 7304 w -(with) 2699 7304 w -(a) 2948 7304 w -(name) 3047 7304 w -(space) 3357 7304 w -(analogous) 3677 7304 w -(to) 4219 7304 w -(the) 4361 7304 w -(local) 4560 7304 w -(one.) 4829 7304 w +(directory.) 4313 7304 w +(The) 4859 7304 w cleartomark showpage saveobj restore @@ -8251,679 +8219,689 @@ 8 pagesetup 10 /LucidaSansUnicode00 f (\255 8 \255) 2783 480 w -(All) 720 840 w -(local) 882 840 w -(device) 1142 840 w -(files) 1484 840 w -(are) 1721 840 w -(visible) 1907 840 w -(remotely,) 2250 840 w -(so) 2741 840 w -(remote) 2887 840 w -(applications) 3265 840 w -(have) 3884 840 w -(full) 4143 840 w -(access) 4334 840 w -(to) 4683 840 w -(local) 4815 840 w -(services) 720 960 w -(such) 1156 960 w -(as) 1431 960 w -(bitmap) 1586 960 w -(graphics,) 1975 960 w -10 /LucidaTypewriter f -(/dev/cons) 2470 960 w -10 /LucidaSansUnicode00 f -(,) 3118 960 w -(and) 3200 960 w -(so) 3430 960 w -(on.) 3592 960 w -(This) 3829 960 w -(is) 4084 960 w -(not) 4214 960 w -(the) 4424 960 w -(same) 4629 960 w -(as) 4934 960 w -10 /LucidaTypewriter f -(rlogin) 720 1080 w -10 /LucidaSansUnicode00 f -(,) 1152 1080 w -(which) 1220 1080 w -(does) 1537 1080 w -(nothing) 1804 1080 w -(to) 2215 1080 w -(reproduce) 2349 1080 w -(the) 2879 1080 w -(local) 3069 1080 w -(name) 3329 1080 w -(space) 3630 1080 w -(on) 3941 1080 w -(the) 4099 1080 w -(remote) 4289 1080 w -(system,) 4668 1080 w -(nor) 720 1200 w -(is) 929 1200 w -(it) 1054 1200 w -(the) 1165 1200 w -(same) 1365 1200 w -(as) 1665 1200 w -(file) 1816 1200 w -(sharing) 2012 1200 w -(with,) 2419 1200 w -(say,) 2701 1200 w -(NFS,) 2937 1200 w -(which) 3197 1200 w -(can) 3524 1200 w -(achieve) 3738 1200 w -(some) 4145 1200 w -(name) 4452 1200 w -(space) 4764 1200 w -(equivalence) 720 1320 w -(but) 1334 1320 w -(not) 1539 1320 w -(the) 1742 1320 w -(combination) 1940 1320 w -(of) 2586 1320 w -(access) 2727 1320 w -(to) 3085 1320 w -(local) 3226 1320 w -(hardware) 3494 1320 w -(devices,) 3987 1320 w -(remote) 4420 1320 w -(files,) 4806 1320 w -(and) 720 1440 w -(remote) 945 1440 w -(CPU) 1334 1440 w -(resources.) 1572 1440 w -(The) 2151 1440 w -10 /LucidaTypewriter f -(cpu) 2377 1440 w -10 /LucidaSansUnicode00 f -(command) 2638 1440 w -(is) 3162 1440 w -(a) 3288 1440 w -(uniquely) 3389 1440 w -(transparent) 3850 1440 w -(mechanism.) 4456 1440 w -(For) 720 1560 w -(example,) 911 1560 w -(it) 1391 1560 w -(is) 1492 1560 w -(reasonable) 1607 1560 w -(to) 2171 1560 w -(start) 2304 1560 w -(a) 2560 1560 w -(window) 2650 1560 w -(system) 3054 1560 w -(in) 3429 1560 w -(a) 3555 1560 w -(window) 3645 1560 w -(running) 4049 1560 w -(a) 4463 1560 w +(effect) 720 840 w +(of) 1039 840 w +(running) 1182 840 w +(a) 1607 840 w +10 /LucidaTypewriter f +(cpu) 1707 840 w +10 /LucidaSansUnicode00 f +(command) 1968 840 w +(is) 2491 840 w +(therefore) 2616 840 w +(to) 3108 840 w +(start) 3251 840 w +(a) 3517 840 w +(shell) 3616 840 w +(on) 3887 840 w +(a) 4054 840 w +(fast) 4153 840 w +(machine,) 4377 840 w +(one) 4861 840 w +(more) 720 960 w +(tightly) 1014 960 w +(coupled) 1365 960 w +(to) 1793 960 w +(the) 1934 960 w +(file) 2132 960 w +(server,) 2326 960 w +(with) 2699 960 w +(a) 2948 960 w +(name) 3047 960 w +(space) 3357 960 w +(analogous) 3677 960 w +(to) 4219 960 w +(the) 4361 960 w +(local) 4560 960 w +(one.) 4829 960 w +(All) 720 1080 w +(local) 882 1080 w +(device) 1142 1080 w +(files) 1484 1080 w +(are) 1721 1080 w +(visible) 1907 1080 w +(remotely,) 2250 1080 w +(so) 2741 1080 w +(remote) 2887 1080 w +(applications) 3265 1080 w +(have) 3884 1080 w +(full) 4143 1080 w +(access) 4334 1080 w +(to) 4683 1080 w +(local) 4815 1080 w +(services) 720 1200 w +(such) 1156 1200 w +(as) 1431 1200 w +(bitmap) 1586 1200 w +(graphics,) 1975 1200 w +10 /LucidaTypewriter f +(/dev/cons) 2470 1200 w +10 /LucidaSansUnicode00 f +(,) 3118 1200 w +(and) 3200 1200 w +(so) 3430 1200 w +(on.) 3592 1200 w +(This) 3829 1200 w +(is) 4084 1200 w +(not) 4214 1200 w +(the) 4424 1200 w +(same) 4629 1200 w +(as) 4934 1200 w +10 /LucidaTypewriter f +(rlogin) 720 1320 w +10 /LucidaSansUnicode00 f +(,) 1152 1320 w +(which) 1220 1320 w +(does) 1537 1320 w +(nothing) 1804 1320 w +(to) 2215 1320 w +(reproduce) 2349 1320 w +(the) 2879 1320 w +(local) 3069 1320 w +(name) 3329 1320 w +(space) 3630 1320 w +(on) 3941 1320 w +(the) 4099 1320 w +(remote) 4289 1320 w +(system,) 4668 1320 w +(nor) 720 1440 w +(is) 929 1440 w +(it) 1054 1440 w +(the) 1165 1440 w +(same) 1365 1440 w +(as) 1665 1440 w +(file) 1816 1440 w +(sharing) 2012 1440 w +(with,) 2419 1440 w +(say,) 2701 1440 w +(NFS,) 2937 1440 w +(which) 3197 1440 w +(can) 3524 1440 w +(achieve) 3738 1440 w +(some) 4145 1440 w +(name) 4452 1440 w +(space) 4764 1440 w +(equivalence) 720 1560 w +(but) 1334 1560 w +(not) 1539 1560 w +(the) 1742 1560 w +(combination) 1940 1560 w +(of) 2586 1560 w +(access) 2727 1560 w +(to) 3085 1560 w +(local) 3226 1560 w +(hardware) 3494 1560 w +(devices,) 3987 1560 w +(remote) 4420 1560 w +(files,) 4806 1560 w +(and) 720 1680 w +(remote) 945 1680 w +(CPU) 1334 1680 w +(resources.) 1572 1680 w +(The) 2151 1680 w +10 /LucidaTypewriter f +(cpu) 2377 1680 w +10 /LucidaSansUnicode00 f +(command) 2638 1680 w +(is) 3162 1680 w +(a) 3288 1680 w +(uniquely) 3389 1680 w +(transparent) 3850 1680 w +(mechanism.) 4456 1680 w +(For) 720 1800 w +(example,) 911 1800 w +(it) 1391 1800 w +(is) 1492 1800 w +(reasonable) 1607 1800 w +(to) 2171 1800 w +(start) 2304 1800 w +(a) 2560 1800 w +(window) 2650 1800 w +(system) 3054 1800 w +(in) 3429 1800 w +(a) 3555 1800 w +(window) 3645 1800 w +(running) 4049 1800 w +(a) 4463 1800 w 10 /LucidaTypewriter f -(cpu) 4552 1560 w +(cpu) 4552 1800 w 10 /LucidaSansUnicode00 f -(com\255) 4802 1560 w -(mand; all windows created there automatically start processes on the CPU server.) 720 1680 w +(com\255) 4802 1800 w +(mand; all windows created there automatically start processes on the CPU server.) 720 1920 w 10 /LucidaSans-Demi f -(Configurability and administration) 720 1920 w +(Configurability and administration) 720 2160 w 10 /LucidaSansUnicode00 f -(The) 970 2076 w -(uniform) 1191 2076 w -(interconnection) 1616 2076 w -(of) 2413 2076 w -(components) 2551 2076 w -(in) 3188 2076 w -(Plan) 3319 2076 w -(9) 3560 2076 w -(makes) 3663 2076 w -(it) 4016 2076 w -(possible) 4122 2076 w -(to) 4566 2076 w -(config\255) 4705 2076 w -(ure) 720 2196 w -(a) 933 2196 w -(Plan) 1042 2196 w -(9) 1297 2196 w -(installation) 1414 2196 w -(many) 2004 2196 w -(different) 2320 2196 w -(ways.) 2792 2196 w -(A) 3145 2196 w -(single) 3268 2196 w -(laptop) 3611 2196 w -(PC) 3973 2196 w -(can) 4151 2196 w -(function) 4372 2196 w -(as) 4826 2196 w -(a) 4985 2196 w -(stand-alone) 720 2316 w -(Plan) 1350 2316 w -(9) 1592 2316 w -(system;) 1696 2316 w -(at) 2110 2316 w -(the) 2244 2316 w -(other) 2441 2316 w -(extreme,) 2740 2316 w -(our) 3214 2316 w -(setup) 3420 2316 w -(has) 3731 2316 w -(central) 3941 2316 w -(multiprocessor) 4314 2316 w -(CPU) 720 2436 w -(servers) 947 2436 w -(and) 1329 2436 w -(file) 1543 2436 w -(servers) 1728 2436 w -(and) 2110 2436 w -(scores) 2324 2436 w -(of) 2669 2436 w -(terminals) 2800 2436 w -(ranging) 3286 2436 w -(from) 3692 2436 w -(small) 3957 2436 w -(PCs) 4247 2436 w -(to) 4455 2436 w -(high-end) 4586 2436 w -(graphics) 720 2556 w -(workstations.) 1167 2556 w -(It) 1885 2556 w -(is) 1985 2556 w -(such) 2099 2556 w -(large) 2359 2556 w -(installations) 2636 2556 w -(that) 3257 2556 w -(best) 3482 2556 w -(represent) 3723 2556 w -(how) 4220 2556 w -(Plan) 4454 2556 w -(9) 4689 2556 w -(oper\255) 4786 2556 w -(ates.) 720 2676 w -(The) 970 2832 w -(system) 1193 2832 w -(software) 1575 2832 w -(is) 2032 2832 w -(portable) 2154 2832 w -(and) 2601 2832 w -(the) 2823 2832 w -(same) 3020 2832 w -(operating) 3317 2832 w -(system) 3825 2832 w -(runs) 4207 2832 w -(on) 4465 2832 w -(all) 4630 2832 w -(hard\255) 4786 2832 w -(ware.) 720 2952 w -(Except) 1046 2952 w -(for) 1401 2952 w -(performance,) 1573 2952 w -(the) 2254 2952 w -(appearance) 2442 2952 w -(of) 3032 2952 w -(the) 3163 2952 w -(system) 3351 2952 w -(on,) 3724 2952 w -(say,) 3912 2952 w -(an SGI workstation) 4135 2952 w -(is) 720 3072 w -(the) 833 3072 w -(same) 1021 3072 w -(as) 1309 3072 w -(on) 1448 3072 w -(a) 1604 3072 w -(laptop.) 1692 3072 w -(Since) 2097 3072 w -(computing) 2382 3072 w -(and) 2935 3072 w -(file) 3148 3072 w -(services) 3332 3072 w -(are) 3752 3072 w -(centralized,) 3937 3072 w -(and) 4538 3072 w -(termi\255) 4751 3072 w -(nals) 720 3192 w -(have) 953 3192 w -(no) 1214 3192 w -(permanent) 1373 3192 w -(file) 1934 3192 w -(storage,) 2120 3192 w -(all) 2550 3192 w -(terminals) 2698 3192 w -(are) 3186 3192 w -(functionally) 3373 3192 w -(identical.) 3974 3192 w -(In) 4484 3192 w -(this) 4610 3192 w -(way,) 4824 3192 w -(Plan 9 has one of the good properties of) 720 3312 w -(old) 2716 3312 w -(timesharing) 2902 3312 w -(systems,) 3512 3312 w -(where) 3968 3312 w -(a) 4293 3312 w -(user) 4381 3312 w -(could) 4624 3312 w -(sit) 4923 3312 w -(in) 720 3432 w -(front) 853 3432 w -(of) 1132 3432 w -(any) 1271 3432 w -(machine) 1481 3432 w -(and) 1930 3432 w -(see) 2151 3432 w -(the) 2355 3432 w -(same) 2551 3432 w -(system.) 2847 3432 w -(In) 3292 3432 w -(the) 3424 3432 w -(modern) 3620 3432 w -(workstation) 4037 3432 w -(commu\255) 4647 3432 w -(nity, machines tend to be owned by people who customize) 720 3552 w -(them) 3606 3552 w -(by) 3887 3552 w -(storing) 4035 3552 w -(private) 4411 3552 w -(infor\255) 4777 3552 w -(mation) 720 3672 w -(on) 1093 3672 w -(local) 1252 3672 w -(disk.) 1513 3672 w -(We) 1814 3672 w -(reject) 1992 3672 w -(this) 2299 3672 w -(style) 2514 3672 w -(of) 2775 3672 w -(use,) 2909 3672 w -(although) 3146 3672 w -(the) 3612 3672 w -(system) 3802 3672 w -(itself) 4177 3672 w -(can) 4451 3672 w -(be) 4654 3672 w -(used) 4808 3672 w -(this) 720 3792 w -(way.) 936 3792 w -(In) 1221 3792 w -(our) 1349 3792 w -(group,) 1551 3792 w -(we) 1910 3792 w -(have) 2081 3792 w -(a) 2344 3792 w -(laboratory) 2437 3792 w -(with) 2970 3792 w -(many) 3213 3792 w -(public-access) 3513 3792 w -(machines) 4221 3792 w -10 /LucidaSansUnicode20 f -(\024) 4680 3792 w -10 /LucidaSansUnicode00 f -(a) 4780 3792 w -(ter\255) 4873 3792 w -(minal room) 720 3912 w -10 /LucidaSansUnicode20 f -(\024) 1276 3912 w -10 /LucidaSansUnicode00 f -(and a user may sit down at any one of them and work.) 1376 3912 w -(Central) 970 4068 w -(file) 1365 4068 w -(servers) 1562 4068 w -(centralize) 1956 4068 w -(not) 2475 4068 w -(just) 2681 4068 w -(the) 2907 4068 w -(files,) 3108 4068 w -(but) 3388 4068 w -(also) 3596 4068 w -(their) 3838 4068 w -(administration) 4109 4068 w -(and) 4860 4068 w -(maintenance.) 720 4188 w -(In) 1460 4188 w -(fact,) 1609 4188 w -(one) 1879 4188 w -(server) 2115 4188 w -(is) 2469 4188 w -(the) 2606 4188 w -(main) 2818 4188 w -(server,) 3114 4188 w -(holding) 3500 4188 w -(all) 3925 4188 w -(system) 4095 4188 w -(files;) 4492 4188 w -(other) 4783 4188 w -(servers) 720 4308 w -(provide) 1104 4308 w -(extra) 1505 4308 w -(storage) 1791 4308 w -(or) 2190 4308 w -(are) 2328 4308 w -(available) 2516 4308 w -(for) 2975 4308 w -(debugging) 3150 4308 w -(and) 3707 4308 w -(other) 3924 4308 w -(special) 4218 4308 w -(uses,) 4589 4308 w -(but) 4878 4308 w -(the) 720 4428 w -(system) 914 4428 w -(software) 1293 4428 w -(resides) 1747 4428 w -(on) 2133 4428 w -(one) 2295 4428 w -(machine.) 2513 4428 w -(This) 3023 4428 w -(means) 3266 4428 w -(that) 3621 4428 w -(each) 3850 4428 w -(program) 4112 4428 w -(has) 4566 4428 w -(a) 4772 4428 w -(sin\255) 4865 4428 w -(gle) 720 4548 w -(copy) 913 4548 w -(of) 1186 4548 w -(the) 1330 4548 w -(binary) 1531 4548 w -(for) 1879 4548 w -(each) 2064 4548 w -(architecture,) 2334 4548 w -(so) 2990 4548 w -(it) 3149 4548 w -(is) 3262 4548 w -(trivial) 3389 4548 w -(to) 3708 4548 w -(install) 3853 4548 w -(updates) 4192 4548 w -(and) 4626 4548 w -(bug) 4853 4548 w -(fixes.) 720 4668 w -(There) 1069 4668 w -(is) 1398 4668 w -(also) 1529 4668 w -(a) 1776 4668 w -(single) 1882 4668 w -(user) 2222 4668 w -(database;) 2483 4668 w -(there) 3001 4668 w -(is) 3304 4668 w -(no) 3435 4668 w -(need) 3609 4668 w -(to) 3897 4668 w -(synchronize) 4046 4668 w -(distinct) 4681 4668 w -10 /LucidaTypewriter f -(/etc/passwd) 720 4788 w -10 /LucidaSansUnicode00 f -(files.) 1561 4788 w -(On) 1876 4788 w -(the) 2065 4788 w -(other) 2269 4788 w -(hand,) 2575 4788 w -(depending) 2898 4788 w -(on) 3464 4788 w -(a) 3637 4788 w -(single) 3742 4788 w -(central) 4081 4788 w -(server) 4462 4788 w -(does) 4809 4788 w -(limit the size of an installation.) 720 4908 w -(Another) 970 5064 w -(example) 1393 5064 w -(of) 1841 5064 w -(the) 1974 5064 w -(power) 2164 5064 w -(of) 2497 5064 w -(centralized) 2631 5064 w -(file) 3203 5064 w -(service) 3390 5064 w -(is) 3762 5064 w -(the) 3878 5064 w -(way) 4069 5064 w -(Plan) 4289 5064 w -(9) 4526 5064 w -(adminis\255) 4625 5064 w -(ters) 720 5184 w -(network) 950 5184 w -(information.) 1387 5184 w -(On) 2063 5184 w -(the) 2248 5184 w -(central) 2448 5184 w -(server) 2824 5184 w -(there) 3166 5184 w -(is) 3463 5184 w -(a) 3588 5184 w -(directory,) 3688 5184 w -10 /LucidaTypewriter f -(/lib/ndb) 4196 5184 w -10 /LucidaSansUnicode00 f -(,) 4772 5184 w -(that) 4849 5184 w -(contains) 720 5304 w -(all) 1176 5304 w -(the) 1337 5304 w -(information) 1540 5304 w -(necessary) 2155 5304 w -(to) 2678 5304 w -(administer) 2824 5304 w -(the) 3388 5304 w -(local) 3591 5304 w -(Ethernet) 3864 5304 w -(and) 4317 5304 w -(other) 4546 5304 w -(net\255) 4852 5304 w -(works.) 720 5424 w -(All) 1108 5424 w -(the) 1271 5424 w -(machines) 1462 5424 w -(use) 1957 5424 w -(the) 2162 5424 w -(same) 2353 5424 w -(database) 2644 5424 w -(to) 3114 5424 w -(talk) 3247 5424 w -(to) 3461 5424 w -(the) 3594 5424 w -(network;) 3784 5424 w -(there) 4243 5424 w -(is) 4530 5424 w -(no) 4645 5424 w -(need) 4803 5424 w -(to) 720 5544 w -(manage) 863 5544 w -(a) 1291 5544 w -(distributed) 1391 5544 w -(naming) 1968 5544 w -(system) 2377 5544 w -(or) 2763 5544 w -(keep) 2911 5544 w -(parallel) 3190 5544 w -(files) 3593 5544 w -(up) 3841 5544 w -(to) 4012 5544 w -(date.) 4156 5544 w -(To) 4477 5544 w -(install) 4647 5544 w -(a) 4985 5544 w -(new) 720 5664 w -(machine) 959 5664 w -(on) 1411 5664 w -(the) 1578 5664 w -(local) 1777 5664 w -(Ethernet,) 2046 5664 w -(choose) 2527 5664 w -(a) 2912 5664 w -(name) 3010 5664 w -(and) 3319 5664 w -(IP) 3542 5664 w -(address) 3669 5664 w -(and) 4092 5664 w -(add) 4315 5664 w -(these) 4539 5664 w -(to) 4844 5664 w -(a) 4985 5664 w -(single) 720 5784 w -(file) 1055 5784 w -(in) 1252 5784 w -10 /LucidaTypewriter f -(/lib/ndb) 1389 5784 w -10 /LucidaSansUnicode00 f -(;) 1965 5784 w -(all) 2043 5784 w -(the) 2202 5784 w -(machines) 2403 5784 w -(in) 2908 5784 w -(the) 3046 5784 w -(installation) 3248 5784 w -(will) 3831 5784 w -(be) 4042 5784 w -(able) 4208 5784 w -(to) 4458 5784 w -(talk) 4603 5784 w -(to) 4829 5784 w -(it) 4974 5784 w -(immediately.) 720 5904 w -(To) 1418 5904 w -(start) 1584 5904 w -(running,) 1847 5904 w -(plug) 2301 5904 w -(the) 2559 5904 w -(machine) 2756 5904 w -(into) 3206 5904 w -(the) 3437 5904 w -(network,) 3634 5904 w -(turn) 4100 5904 w -(it) 4344 5904 w -(on,) 4452 5904 w -(and) 4649 5904 w -(use) 4871 5904 w -(BOOTP and TFTP to load the kernel.) 720 6024 w -(All else is automatic.) 2518 6024 w -(Finally,) 970 6180 w -(the) 1352 6180 w -(automated) 1547 6180 w -(dump) 2106 6180 w -(file) 2427 6180 w -(system) 2618 6180 w -(frees) 2998 6180 w -(all) 3279 6180 w -(users) 3432 6180 w -(from) 3733 6180 w -(the) 4005 6180 w -(need) 4201 6180 w -(to) 4479 6180 w -(maintain) 4618 6180 w -(their) 720 6300 w -(systems,) 991 6300 w -(while) 1460 6300 w -(providing) 1759 6300 w -(easy) 2267 6300 w -(access) 2527 6300 w -(to) 2887 6300 w -(backup) 3030 6300 w -(files) 3427 6300 w -(without) 3674 6300 w -(tapes,) 4084 6300 w -(special) 4423 6300 w -(com\255) 4802 6300 w -(mands,) 720 6420 w -(or) 1114 6420 w -(the) 1254 6420 w -(involvement) 1447 6420 w -(of) 2074 6420 w -(support) 2210 6420 w -(staff.) 2626 6420 w -(It) 2945 6420 w -(is) 3049 6420 w -(difficult) 3168 6420 w -(to) 3581 6420 w -(overstate) 3718 6420 w -(the) 4203 6420 w -(improvement) 4397 6420 w -(in lifestyle afforded by this service.) 720 6540 w -(Plan) 970 6696 w -(9) 1224 6696 w -(runs) 1340 6696 w -(on) 1609 6696 w -(a) 1786 6696 w -(variety) 1895 6696 w -(of) 2271 6696 w -(hardware) 2423 6696 w -(without) 2927 6696 w -(constraining) 3346 6696 w -(how) 4002 6696 w -(to) 4256 6696 w -(configure) 4408 6696 w -(an) 4923 6696 w -(installation.) 720 6816 w -(In) 1366 6816 w -(our) 1503 6816 w -(laboratory,) 1713 6816 w -(we) 2286 6816 w -(chose) 2465 6816 w -(to) 2792 6816 w -(use) 2936 6816 w -(central) 3151 6816 w -(servers) 3527 6816 w -(because) 3920 6816 w -(they) 4359 6816 w -(amortize) 4611 6816 w -(costs) 720 6936 w -(and) 1005 6936 w -(administration.) 1219 6936 w -(A) 2021 6936 w -(sign) 2124 6936 w -(that) 2362 6936 w -(this) 2587 6936 w -(is) 2801 6936 w -(a) 2916 6936 w -(good) 3006 6936 w -(decision) 3288 6936 w -(is) 3725 6936 w -(that) 3840 6936 w -(our) 4066 6936 w -(cheap) 4265 6936 w -(terminals) 4587 6936 w -(remain) 720 7056 w -(comfortable) 1095 7056 w -(places) 1718 7056 w -(to) 2062 7056 w -(work) 2199 7056 w -(for) 2475 7056 w -(about) 2653 7056 w -(five) 2970 7056 w -(years,) 3183 7056 w -(much) 3509 7056 w -(longer) 3816 7056 w -(than) 4166 7056 w -(workstations) 4420 7056 w -(that) 720 7176 w -(must) 950 7176 w -(provide) 1232 7176 w -(the) 1636 7176 w -(complete) 1830 7176 w -(computing) 2315 7176 w -(environment.) 2874 7176 w -(We) 3588 7176 w -(do,) 3770 7176 w -(however,) 3966 7176 w -(upgrade) 4443 7176 w -(the) 4885 7176 w -(central) 720 7296 w -(machines,) 1087 7296 w -(so) 1614 7296 w -(the) 1762 7296 w -(computation) 1952 7296 w -(available) 2598 7296 w -(from) 3056 7296 w -(even) 3323 7296 w -(old) 3584 7296 w -(Plan) 3772 7296 w -(9) 4008 7296 w -(terminals) 4106 7296 w -(improves) 4594 7296 w +(The) 970 2316 w +(uniform) 1191 2316 w +(interconnection) 1616 2316 w +(of) 2413 2316 w +(components) 2551 2316 w +(in) 3188 2316 w +(Plan) 3319 2316 w +(9) 3560 2316 w +(makes) 3663 2316 w +(it) 4016 2316 w +(possible) 4122 2316 w +(to) 4566 2316 w +(config\255) 4705 2316 w +(ure) 720 2436 w +(a) 933 2436 w +(Plan) 1042 2436 w +(9) 1297 2436 w +(installation) 1414 2436 w +(many) 2004 2436 w +(different) 2320 2436 w +(ways.) 2792 2436 w +(A) 3145 2436 w +(single) 3268 2436 w +(laptop) 3611 2436 w +(PC) 3973 2436 w +(can) 4151 2436 w +(function) 4372 2436 w +(as) 4826 2436 w +(a) 4985 2436 w +(stand-alone) 720 2556 w +(Plan) 1350 2556 w +(9) 1592 2556 w +(system;) 1696 2556 w +(at) 2110 2556 w +(the) 2244 2556 w +(other) 2441 2556 w +(extreme,) 2740 2556 w +(our) 3214 2556 w +(setup) 3420 2556 w +(has) 3731 2556 w +(central) 3941 2556 w +(multiprocessor) 4314 2556 w +(CPU) 720 2676 w +(servers) 947 2676 w +(and) 1329 2676 w +(file) 1543 2676 w +(servers) 1728 2676 w +(and) 2110 2676 w +(scores) 2324 2676 w +(of) 2669 2676 w +(terminals) 2800 2676 w +(ranging) 3286 2676 w +(from) 3692 2676 w +(small) 3957 2676 w +(PCs) 4247 2676 w +(to) 4455 2676 w +(high-end) 4586 2676 w +(graphics) 720 2796 w +(workstations.) 1167 2796 w +(It) 1885 2796 w +(is) 1985 2796 w +(such) 2099 2796 w +(large) 2359 2796 w +(installations) 2636 2796 w +(that) 3257 2796 w +(best) 3482 2796 w +(represent) 3723 2796 w +(how) 4220 2796 w +(Plan) 4454 2796 w +(9) 4689 2796 w +(oper\255) 4786 2796 w +(ates.) 720 2916 w +(The) 970 3072 w +(system) 1193 3072 w +(software) 1575 3072 w +(is) 2032 3072 w +(portable) 2154 3072 w +(and) 2601 3072 w +(the) 2823 3072 w +(same) 3020 3072 w +(operating) 3317 3072 w +(system) 3825 3072 w +(runs) 4207 3072 w +(on) 4465 3072 w +(all) 4630 3072 w +(hard\255) 4786 3072 w +(ware.) 720 3192 w +(Except) 1046 3192 w +(for) 1401 3192 w +(performance,) 1573 3192 w +(the) 2254 3192 w +(appearance) 2442 3192 w +(of) 3032 3192 w +(the) 3163 3192 w +(system) 3351 3192 w +(on,) 3724 3192 w +(say,) 3912 3192 w +(an SGI workstation) 4135 3192 w +(is) 720 3312 w +(the) 833 3312 w +(same) 1021 3312 w +(as) 1309 3312 w +(on) 1448 3312 w +(a) 1604 3312 w +(laptop.) 1692 3312 w +(Since) 2097 3312 w +(computing) 2382 3312 w +(and) 2935 3312 w +(file) 3148 3312 w +(services) 3332 3312 w +(are) 3752 3312 w +(centralized,) 3937 3312 w +(and) 4538 3312 w +(termi\255) 4751 3312 w +(nals) 720 3432 w +(have) 953 3432 w +(no) 1214 3432 w +(permanent) 1373 3432 w +(file) 1934 3432 w +(storage,) 2120 3432 w +(all) 2550 3432 w +(terminals) 2698 3432 w +(are) 3186 3432 w +(functionally) 3373 3432 w +(identical.) 3974 3432 w +(In) 4484 3432 w +(this) 4610 3432 w +(way,) 4824 3432 w +(Plan 9 has one of the good properties of) 720 3552 w +(old) 2716 3552 w +(timesharing) 2902 3552 w +(systems,) 3512 3552 w +(where) 3968 3552 w +(a) 4293 3552 w +(user) 4381 3552 w +(could) 4624 3552 w +(sit) 4923 3552 w +(in) 720 3672 w +(front) 853 3672 w +(of) 1132 3672 w +(any) 1271 3672 w +(machine) 1481 3672 w +(and) 1930 3672 w +(see) 2151 3672 w +(the) 2355 3672 w +(same) 2551 3672 w +(system.) 2847 3672 w +(In) 3292 3672 w +(the) 3424 3672 w +(modern) 3620 3672 w +(workstation) 4037 3672 w +(commu\255) 4647 3672 w +(nity, machines tend to be owned by people who customize) 720 3792 w +(them) 3606 3792 w +(by) 3887 3792 w +(storing) 4035 3792 w +(private) 4411 3792 w +(infor\255) 4777 3792 w +(mation) 720 3912 w +(on) 1093 3912 w +(local) 1252 3912 w +(disk.) 1513 3912 w +(We) 1814 3912 w +(reject) 1992 3912 w +(this) 2299 3912 w +(style) 2514 3912 w +(of) 2775 3912 w +(use,) 2909 3912 w +(although) 3146 3912 w +(the) 3612 3912 w +(system) 3802 3912 w +(itself) 4177 3912 w +(can) 4451 3912 w +(be) 4654 3912 w +(used) 4808 3912 w +(this) 720 4032 w +(way.) 936 4032 w +(In) 1221 4032 w +(our) 1349 4032 w +(group,) 1551 4032 w +(we) 1910 4032 w +(have) 2081 4032 w +(a) 2344 4032 w +(laboratory) 2437 4032 w +(with) 2970 4032 w +(many) 3213 4032 w +(public-access) 3513 4032 w +(machines) 4221 4032 w +10 /LucidaSansUnicode20 f +(\024) 4680 4032 w +10 /LucidaSansUnicode00 f +(a) 4780 4032 w +(ter\255) 4873 4032 w +(minal room) 720 4152 w +10 /LucidaSansUnicode20 f +(\024) 1276 4152 w +10 /LucidaSansUnicode00 f +(and a user may sit down at any one of them and work.) 1376 4152 w +(Central) 970 4308 w +(file) 1365 4308 w +(servers) 1562 4308 w +(centralize) 1956 4308 w +(not) 2475 4308 w +(just) 2681 4308 w +(the) 2907 4308 w +(files,) 3108 4308 w +(but) 3388 4308 w +(also) 3596 4308 w +(their) 3838 4308 w +(administration) 4109 4308 w +(and) 4860 4308 w +(maintenance.) 720 4428 w +(In) 1460 4428 w +(fact,) 1609 4428 w +(one) 1879 4428 w +(server) 2115 4428 w +(is) 2469 4428 w +(the) 2606 4428 w +(main) 2818 4428 w +(server,) 3114 4428 w +(holding) 3500 4428 w +(all) 3925 4428 w +(system) 4095 4428 w +(files;) 4492 4428 w +(other) 4783 4428 w +(servers) 720 4548 w +(provide) 1104 4548 w +(extra) 1505 4548 w +(storage) 1791 4548 w +(or) 2190 4548 w +(are) 2328 4548 w +(available) 2516 4548 w +(for) 2975 4548 w +(debugging) 3150 4548 w +(and) 3707 4548 w +(other) 3924 4548 w +(special) 4218 4548 w +(uses,) 4589 4548 w +(but) 4878 4548 w +(the) 720 4668 w +(system) 914 4668 w +(software) 1293 4668 w +(resides) 1747 4668 w +(on) 2133 4668 w +(one) 2295 4668 w +(machine.) 2513 4668 w +(This) 3023 4668 w +(means) 3266 4668 w +(that) 3621 4668 w +(each) 3850 4668 w +(program) 4112 4668 w +(has) 4566 4668 w +(a) 4772 4668 w +(sin\255) 4865 4668 w +(gle) 720 4788 w +(copy) 913 4788 w +(of) 1186 4788 w +(the) 1330 4788 w +(binary) 1531 4788 w +(for) 1879 4788 w +(each) 2064 4788 w +(architecture,) 2334 4788 w +(so) 2990 4788 w +(it) 3149 4788 w +(is) 3262 4788 w +(trivial) 3389 4788 w +(to) 3708 4788 w +(install) 3853 4788 w +(updates) 4192 4788 w +(and) 4626 4788 w +(bug) 4853 4788 w +(fixes.) 720 4908 w +(There) 1069 4908 w +(is) 1398 4908 w +(also) 1529 4908 w +(a) 1776 4908 w +(single) 1882 4908 w +(user) 2222 4908 w +(database;) 2483 4908 w +(there) 3001 4908 w +(is) 3304 4908 w +(no) 3435 4908 w +(need) 3609 4908 w +(to) 3897 4908 w +(synchronize) 4046 4908 w +(distinct) 4681 4908 w +10 /LucidaTypewriter f +(/etc/passwd) 720 5028 w +10 /LucidaSansUnicode00 f +(files.) 1561 5028 w +(On) 1876 5028 w +(the) 2065 5028 w +(other) 2269 5028 w +(hand,) 2575 5028 w +(depending) 2898 5028 w +(on) 3464 5028 w +(a) 3637 5028 w +(single) 3742 5028 w +(central) 4081 5028 w +(server) 4462 5028 w +(does) 4809 5028 w +(limit the size of an installation.) 720 5148 w +(Another) 970 5304 w +(example) 1393 5304 w +(of) 1841 5304 w +(the) 1974 5304 w +(power) 2164 5304 w +(of) 2497 5304 w +(centralized) 2631 5304 w +(file) 3203 5304 w +(service) 3390 5304 w +(is) 3762 5304 w +(the) 3878 5304 w +(way) 4069 5304 w +(Plan) 4289 5304 w +(9) 4526 5304 w +(adminis\255) 4625 5304 w +(ters) 720 5424 w +(network) 950 5424 w +(information.) 1387 5424 w +(On) 2063 5424 w +(the) 2248 5424 w +(central) 2448 5424 w +(server) 2824 5424 w +(there) 3166 5424 w +(is) 3463 5424 w +(a) 3588 5424 w +(directory,) 3688 5424 w +10 /LucidaTypewriter f +(/lib/ndb) 4196 5424 w +10 /LucidaSansUnicode00 f +(,) 4772 5424 w +(that) 4849 5424 w +(contains) 720 5544 w +(all) 1176 5544 w +(the) 1337 5544 w +(information) 1540 5544 w +(necessary) 2155 5544 w +(to) 2678 5544 w +(administer) 2824 5544 w +(the) 3388 5544 w +(local) 3591 5544 w +(Ethernet) 3864 5544 w +(and) 4317 5544 w +(other) 4546 5544 w +(net\255) 4852 5544 w +(works.) 720 5664 w +(All) 1108 5664 w +(the) 1271 5664 w +(machines) 1462 5664 w +(use) 1957 5664 w +(the) 2162 5664 w +(same) 2353 5664 w +(database) 2644 5664 w +(to) 3114 5664 w +(talk) 3247 5664 w +(to) 3461 5664 w +(the) 3594 5664 w +(network;) 3784 5664 w +(there) 4243 5664 w +(is) 4530 5664 w +(no) 4645 5664 w +(need) 4803 5664 w +(to) 720 5784 w +(manage) 863 5784 w +(a) 1291 5784 w +(distributed) 1391 5784 w +(naming) 1968 5784 w +(system) 2377 5784 w +(or) 2763 5784 w +(keep) 2911 5784 w +(parallel) 3190 5784 w +(files) 3593 5784 w +(up) 3841 5784 w +(to) 4012 5784 w +(date.) 4156 5784 w +(To) 4477 5784 w +(install) 4647 5784 w +(a) 4985 5784 w +(new) 720 5904 w +(machine) 959 5904 w +(on) 1411 5904 w +(the) 1578 5904 w +(local) 1777 5904 w +(Ethernet,) 2046 5904 w +(choose) 2527 5904 w +(a) 2912 5904 w +(name) 3010 5904 w +(and) 3319 5904 w +(IP) 3542 5904 w +(address) 3669 5904 w +(and) 4092 5904 w +(add) 4315 5904 w +(these) 4539 5904 w +(to) 4844 5904 w +(a) 4985 5904 w +(single) 720 6024 w +(file) 1055 6024 w +(in) 1252 6024 w +10 /LucidaTypewriter f +(/lib/ndb) 1389 6024 w +10 /LucidaSansUnicode00 f +(;) 1965 6024 w +(all) 2043 6024 w +(the) 2202 6024 w +(machines) 2403 6024 w +(in) 2908 6024 w +(the) 3046 6024 w +(installation) 3248 6024 w +(will) 3831 6024 w +(be) 4042 6024 w +(able) 4208 6024 w +(to) 4458 6024 w +(talk) 4603 6024 w +(to) 4829 6024 w +(it) 4974 6024 w +(immediately.) 720 6144 w +(To) 1418 6144 w +(start) 1584 6144 w +(running,) 1847 6144 w +(plug) 2301 6144 w +(the) 2559 6144 w +(machine) 2756 6144 w +(into) 3206 6144 w +(the) 3437 6144 w +(network,) 3634 6144 w +(turn) 4100 6144 w +(it) 4344 6144 w +(on,) 4452 6144 w +(and) 4649 6144 w +(use) 4871 6144 w +(BOOTP and TFTP to load the kernel.) 720 6264 w +(All else is automatic.) 2518 6264 w +(Finally,) 970 6420 w +(the) 1352 6420 w +(automated) 1547 6420 w +(dump) 2106 6420 w +(file) 2427 6420 w +(system) 2618 6420 w +(frees) 2998 6420 w +(all) 3279 6420 w +(users) 3432 6420 w +(from) 3733 6420 w +(the) 4005 6420 w +(need) 4201 6420 w +(to) 4479 6420 w +(maintain) 4618 6420 w +(their) 720 6540 w +(systems,) 991 6540 w +(while) 1460 6540 w +(providing) 1759 6540 w +(easy) 2267 6540 w +(access) 2527 6540 w +(to) 2887 6540 w +(backup) 3030 6540 w +(files) 3427 6540 w +(without) 3674 6540 w +(tapes,) 4084 6540 w +(special) 4423 6540 w +(com\255) 4802 6540 w +(mands,) 720 6660 w +(or) 1114 6660 w +(the) 1254 6660 w +(involvement) 1447 6660 w +(of) 2074 6660 w +(support) 2210 6660 w +(staff.) 2626 6660 w +(It) 2945 6660 w +(is) 3049 6660 w +(difficult) 3168 6660 w +(to) 3581 6660 w +(overstate) 3718 6660 w +(the) 4203 6660 w +(improvement) 4397 6660 w +(in lifestyle afforded by this service.) 720 6780 w +(Plan) 970 6936 w +(9) 1224 6936 w +(runs) 1340 6936 w +(on) 1609 6936 w +(a) 1786 6936 w +(variety) 1895 6936 w +(of) 2271 6936 w +(hardware) 2423 6936 w +(without) 2927 6936 w +(constraining) 3346 6936 w +(how) 4002 6936 w +(to) 4256 6936 w +(configure) 4408 6936 w +(an) 4923 6936 w +(installation.) 720 7056 w +(In) 1366 7056 w +(our) 1503 7056 w +(laboratory,) 1713 7056 w +(we) 2286 7056 w +(chose) 2465 7056 w +(to) 2792 7056 w +(use) 2936 7056 w +(central) 3151 7056 w +(servers) 3527 7056 w +(because) 3920 7056 w +(they) 4359 7056 w +(amortize) 4611 7056 w +(costs) 720 7176 w +(and) 1005 7176 w +(administration.) 1219 7176 w +(A) 2021 7176 w +(sign) 2124 7176 w +(that) 2362 7176 w +(this) 2587 7176 w +(is) 2801 7176 w +(a) 2916 7176 w +(good) 3006 7176 w +(decision) 3288 7176 w +(is) 3725 7176 w +(that) 3840 7176 w +(our) 4066 7176 w +(cheap) 4265 7176 w +(terminals) 4587 7176 w +(remain) 720 7296 w +(comfortable) 1095 7296 w +(places) 1718 7296 w +(to) 2062 7296 w +(work) 2199 7296 w +(for) 2475 7296 w +(about) 2653 7296 w +(five) 2970 7296 w +(years,) 3183 7296 w +(much) 3509 7296 w +(longer) 3816 7296 w +(than) 4166 7296 w +(workstations) 4420 7296 w cleartomark showpage saveobj restore @@ -8934,645 +8912,612 @@ 9 pagesetup 10 /LucidaSansUnicode00 f (\255 9 \255) 2783 480 w -(with) 720 840 w -(time.) 961 840 w -(The) 1276 840 w -(money) 1493 840 w -(saved) 1853 840 w -(by) 2166 840 w -(avoiding) 2317 840 w -(regular) 2766 840 w -(upgrades) 3149 840 w -(of) 3639 840 w -(terminals) 3774 840 w -(is) 4264 840 w -(instead) 4381 840 w -(spent) 4771 840 w -(on) 720 960 w -(the) 894 960 w -(newest,) 1100 960 w -(fastest) 1522 960 w -(multiprocessor) 1897 960 w -(servers.) 2674 960 w -(We) 3137 960 w -(estimate) 3330 960 w -(this) 3794 960 w -(costs) 4023 960 w -(about) 4324 960 w -(half) 4652 960 w -(the) 4885 960 w -(money) 720 1080 w -(of) 1119 1080 w -(networked) 1292 1080 w -(workstations) 1878 1080 w -(yet) 2573 1080 w -(provides) 2793 1080 w -(general) 3285 1080 w -(access) 3722 1080 w -(to) 4113 1080 w -(more) 4287 1080 w -(powerful) 4614 1080 w -(machines.) 720 1200 w +(that) 720 840 w +(must) 950 840 w +(provide) 1232 840 w +(the) 1636 840 w +(complete) 1830 840 w +(computing) 2315 840 w +(environment.) 2874 840 w +(We) 3588 840 w +(do,) 3770 840 w +(however,) 3966 840 w +(upgrade) 4443 840 w +(the) 4885 840 w +(central) 720 960 w +(machines,) 1087 960 w +(so) 1614 960 w +(the) 1762 960 w +(computation) 1952 960 w +(available) 2598 960 w +(from) 3056 960 w +(even) 3323 960 w +(old) 3584 960 w +(Plan) 3772 960 w +(9) 4008 960 w +(terminals) 4106 960 w +(improves) 4594 960 w +(with) 720 1080 w +(time.) 961 1080 w +(The) 1276 1080 w +(money) 1493 1080 w +(saved) 1853 1080 w +(by) 2166 1080 w +(avoiding) 2317 1080 w +(regular) 2766 1080 w +(upgrades) 3149 1080 w +(of) 3639 1080 w +(terminals) 3774 1080 w +(is) 4264 1080 w +(instead) 4381 1080 w +(spent) 4771 1080 w +(on) 720 1200 w +(the) 894 1200 w +(newest,) 1100 1200 w +(fastest) 1522 1200 w +(multiprocessor) 1897 1200 w +(servers.) 2674 1200 w +(We) 3137 1200 w +(estimate) 3330 1200 w +(this) 3794 1200 w +(costs) 4023 1200 w +(about) 4324 1200 w +(half) 4652 1200 w +(the) 4885 1200 w +(money) 720 1320 w +(of) 1119 1320 w +(networked) 1292 1320 w +(workstations) 1878 1320 w +(yet) 2573 1320 w +(provides) 2793 1320 w +(general) 3285 1320 w +(access) 3722 1320 w +(to) 4113 1320 w +(more) 4287 1320 w +(powerful) 4614 1320 w +(machines.) 720 1440 w 10 /LucidaSans-Demi f -(C Programming) 720 1440 w +(C Programming) 720 1680 w 10 /LucidaSansUnicode00 f -(Plan) 970 1596 w -(9) 1208 1596 w -(utilities) 1309 1596 w -(are) 1706 1596 w -(written) 1896 1596 w -(in) 2273 1596 w -(several) 2402 1596 w -(languages.) 2780 1596 w -(Some) 3376 1596 w -(are) 3678 1596 w -(scripts) 3868 1596 w -(for) 4229 1596 w -(the) 4406 1596 w -(shell,) 4599 1596 w -10 /LucidaTypewriter f -(rc) 4896 1596 w -10 /LucidaSansUnicode00 f -([Duff90];) 720 1716 w -(a) 1190 1716 w -(handful) 1280 1716 w -(are) 1685 1716 w -(written) 1872 1716 w -(in) 2246 1716 w -(a) 2372 1716 w -(new) 2462 1716 w -(C-like) 2692 1716 w -(concurrent) 3025 1716 w -(language) 3583 1716 w -(called) 4060 1716 w -(Alef) 4377 1716 w -([Wint95],) 4602 1716 w -(described) 720 1836 w -(below.) 1229 1836 w -(The) 1615 1836 w -(great) 1832 1836 w -(majority,) 2119 1836 w -(though,) 2586 1836 w -(are) 3001 1836 w -(written) 3190 1836 w -(in) 3566 1836 w -(a) 3694 1836 w -(dialect) 3786 1836 w -(of) 4143 1836 w -(ANSI) 4278 1836 w -(C) 4541 1836 w -([ANSIC].) 4647 1836 w -(Of) 720 1956 w -(these,) 874 1956 w -(most) 1207 1956 w -(are) 1488 1956 w -(entirely) 1679 1956 w -(new) 2080 1956 w -(programs,) 2314 1956 w -(but) 2852 1956 w -(some) 3052 1956 w -(originate) 3351 1956 w -(in) 3821 1956 w -(pre-ANSI) 3950 1956 w -(C) 4432 1956 w -(code) 4539 1956 w -(from) 4808 1956 w -(our) 720 2076 w -(research) 922 2076 w -(UNIX) 1373 2076 w -(system) 1646 2076 w -([UNIX85].) 2024 2076 w -(These) 2553 2076 w -(have) 2880 2076 w -(been) 3144 2076 w -(updated) 3420 2076 w -(to) 3858 2076 w -(ANSI) 3995 2076 w -(C) 4260 2076 w -(and) 4368 2076 w -(reworked) 4587 2076 w -(for portability and cleanliness.) 720 2196 w -(The) 970 2352 w -(Plan) 1184 2352 w -(9) 1418 2352 w -(C) 1514 2352 w -(dialect) 1616 2352 w -(has) 1970 2352 w -(some) 2172 2352 w -(minor) 2467 2352 w -(extensions,) 2787 2352 w -(described) 3379 2352 w -(elsewhere) 3886 2352 w -([Pike95],) 4404 2352 w -(and) 4860 2352 w -(a) 720 2472 w -(few) 819 2472 w -(major) 1032 2472 w -(restrictions.) 1355 2472 w -(The) 2008 2472 w -(most) 2232 2472 w -(important) 2517 2472 w -(restriction) 3038 2472 w -(is) 3576 2472 w -(that) 3699 2472 w -(the) 3933 2472 w -(compiler) 4131 2472 w -(demands) 4597 2472 w -(that) 720 2592 w -(all) 960 2592 w -(function) 1122 2592 w -(definitions) 1572 2592 w -(have) 2137 2592 w -(ANSI) 2411 2592 w -(prototypes) 2686 2592 w -(and) 3257 2592 w -(all) 3486 2592 w -(function) 3648 2592 w -(calls) 4098 2592 w -(appear) 4362 2592 w -(in) 4744 2592 w -(the) 4885 2592 w -(scope) 720 2712 w -(of) 1052 2712 w -(a) 1200 2712 w -(prototyped) 1305 2712 w -(declaration) 1889 2712 w -(of) 2478 2712 w -(the) 2626 2712 w -(function.) 2831 2712 w -(As) 3345 2712 w -(a) 3514 2712 w -(stylistic) 3618 2712 w -(rule,) 4033 2712 w -(the) 4302 2712 w -(prototyped) 4506 2712 w -(declaration is placed in) 720 2832 w -(a) 1876 2832 w -(header) 1964 2832 w -(file) 2330 2832 w -(included) 2514 2832 w -(by) 2962 2832 w -(all) 3110 2832 w -(files) 3256 2832 w -(that) 3491 2832 w -(call) 3715 2832 w -(the) 3912 2832 w -(function.) 4100 2832 w -(Each) 4598 2832 w -(sys\255) 4853 2832 w -(tem) 720 2952 w -(library) 959 2952 w -(has) 1322 2952 w -(an) 1543 2952 w -(associated) 1713 2952 w -(header) 2275 2952 w -(file,) 2661 2952 w -(declaring) 2897 2952 w -(all) 3398 2952 w -(functions) 3564 2952 w -(in) 4069 2952 w -(that) 4213 2952 w -(library.) 4457 2952 w -(For) 4884 2952 w -(example,) 720 3072 w -(the) 1226 3072 w -(standard) 1442 3072 w -(Plan) 1931 3072 w -(9) 2194 3072 w -(library) 2319 3072 w -(is) 2691 3072 w -(called) 2833 3072 w -10 /LucidaTypewriter f -(libc) 3178 3072 w -10 /LucidaSansUnicode00 f -(,) 3466 3072 w -(so) 3560 3072 w -(all) 3734 3072 w -(C) 3909 3072 w -(source) 4040 3072 w -(files) 4424 3072 w -(include) 4688 3072 w -10 /LucidaTypewriter f -() 720 3192 w -10 /LucidaSansUnicode00 f -(.) 1296 3192 w -(These) 1400 3192 w -(rules) 1727 3192 w -(guarantee) 2005 3192 w -(that) 2530 3192 w -(all) 2760 3192 w -(functions) 2912 3192 w -(are) 3403 3192 w -(called) 3594 3192 w -(with) 3916 3192 w -(arguments) 4160 3192 w -(having) 4718 3192 w -(the expected types ) 720 3312 w -10 /LucidaSansUnicode20 f -(\024) 1673 3312 w -10 /LucidaSansUnicode00 f -(something that was not true with pre-ANSI C programs.) 1805 3312 w -(Another) 970 3468 w -(restriction) 1391 3468 w -(is) 1919 3468 w -(that) 2032 3468 w -(the) 2256 3468 w -(C) 2444 3468 w -(compilers) 2547 3468 w -(accept) 3055 3468 w -(only) 3402 3468 w -(a) 3640 3468 w -(subset) 3729 3468 w -(of) 4083 3468 w -(the) 4215 3468 w -(preprocessor) 4404 3468 w -(directives) 720 3588 w -(required) 1220 3588 w -(by) 1666 3588 w -(ANSI.) 1816 3588 w -(The) 2141 3588 w -(main) 2357 3588 w -(omission) 2631 3588 w -(is) 3102 3588 w -10 /LucidaTypewriter f -(#if) 3216 3588 w -10 /LucidaSansUnicode00 f -(,) 3432 3588 w -(since) 3498 3588 w -(we) 3781 3588 w -(believe) 3948 3588 w -(it) 4323 3588 w -(is) 4423 3588 w -(never) 4537 3588 w -(nec\255) 4838 3588 w -(essary) 720 3708 w -(and) 1089 3708 w -(often) 1333 3708 w -(abused.) 1650 3708 w -(Also,) 2128 3708 w -(its) 2434 3708 w -(effect) 2615 3708 w -(is) 2953 3708 w -(better) 3097 3708 w -(achieved) 3451 3708 w -(by) 3939 3708 w -(other) 4118 3708 w -(means.) 4439 3708 w -(For) 4884 3708 w -(instance,) 720 3828 w -(an) 1188 3828 w -10 /LucidaTypewriter f -(#if) 1338 3828 w -10 /LucidaSansUnicode00 f -(used) 1587 3828 w -(to) 1852 3828 w -(toggle) 1983 3828 w -(a feature at compile time can be written as a regular) 2323 3828 w -10 /LucidaTypewriter f -(if) 4896 3828 w -10 /LucidaSansUnicode00 f -(statement,) 720 3948 w -(relying) 1278 3948 w -(on) 1652 3948 w -(compile-time) 1818 3948 w -(constant) 2516 3948 w -(folding) 2975 3948 w -(and) 3361 3948 w -(dead) 3584 3948 w -(code) 3864 3948 w -(elimination) 4138 3948 w -(to) 4723 3948 w -(dis\255) 4864 3948 w -(card object code.) 720 4068 w -(Conditional) 970 4224 w -(compilation,) 1565 4224 w -(even) 2205 4224 w -(with) 2469 4224 w -10 /LucidaTypewriter f -(#ifdef) 2712 4224 w -10 /LucidaSansUnicode00 f -(,) 3144 4224 w -(is) 3214 4224 w -(used) 3332 4224 w -(sparingly) 3602 4224 w -(in) 4084 4224 w -(Plan) 4213 4224 w -(9.) 4452 4224 w -(The) 4617 4224 w -(only) 4836 4224 w -(architecture-dependent) 720 4344 w -10 /LucidaTypewriter f -(#ifdefs) 1913 4344 w -10 /LucidaSansUnicode00 f -(in) 2456 4344 w -(the) 2586 4344 w -(system) 2780 4344 w -(are) 3159 4344 w -(in) 3350 4344 w -(low-level) 3480 4344 w -(routines) 3965 4344 w -(in) 4402 4344 w -(the) 4531 4344 w -(graph\255) 4724 4344 w -(ics) 720 4464 w -(library.) 900 4464 w -(Instead,) 1323 4464 w -(we) 1757 4464 w -(avoid) 1939 4464 w -(such) 2248 4464 w -(dependencies) 2523 4464 w -(or,) 3240 4464 w -(when) 3423 4464 w -(necessary,) 3729 4464 w -(isolate) 4285 4464 w -(them) 4652 4464 w -(in) 4949 4464 w -(separate) 720 4584 w -(source) 1171 4584 w -(files) 1530 4584 w -(or) 1768 4584 w -(libraries.) 1906 4584 w -(Besides) 2400 4584 w -(making) 2800 4584 w -(code) 3195 4584 w -(hard) 3462 4584 w -(to) 3719 4584 w -(read,) 3853 4584 w -10 /LucidaTypewriter f -(#ifdefs) 4136 4584 w -10 /LucidaSansUnicode00 f -(make) 4676 4584 w -(it) 4974 4584 w -(impossible) 720 4704 w -(to) 1278 4704 w -(know) 1409 4704 w -(what) 1700 4704 w -(source) 1964 4704 w -(is) 2319 4704 w -(compiled) 2432 4704 w -(into) 2910 4704 w -(the) 3133 4704 w -(binary) 3322 4704 w -(or) 3658 4704 w -(whether) 3794 4704 w -(source) 4219 4704 w -(protected) 4575 4704 w -(by them will compile or work properly.) 720 4824 w -(They make it harder to maintain software.) 2662 4824 w -(The) 970 4980 w -(standard) 1214 4980 w -(Plan) 1704 4980 w -(9) 1968 4980 w -(library) 2094 4980 w -(overlaps) 2467 4980 w -(much) 2938 4980 w -(of) 3269 4980 w -(ANSI) 3430 4980 w -(C) 3719 4980 w -(and) 3851 4980 w -(POSIX) 4094 4980 w -([POSIX],) 4437 4980 w -(but) 4878 4980 w -(diverges) 720 5100 w -(when) 1168 5100 w -(appropriate) 1463 5100 w -(to) 2065 5100 w -(Plan) 2201 5100 w -(9) 2440 5100 w -10 /LucidaSansUnicode20 f -(\031) 2503 5100 w -10 /LucidaSansUnicode00 f -(s) 2535 5100 w -(goals) 2624 5100 w -(or) 2920 5100 w -(implementation.) 3060 5100 w -(When) 3924 5100 w -(the) 4228 5100 w -(semantics) 4420 5100 w -(of) 4942 5100 w -(a) 720 5220 w -(function) 818 5220 w -(change,) 1262 5220 w -(we) 1686 5220 w -(also) 1863 5220 w -(change) 2103 5220 w -(the) 2495 5220 w -(name.) 2694 5220 w -(For) 3068 5220 w -(instance,) 3268 5220 w -(instead) 3747 5220 w -(of) 4144 5220 w -(UNIX) 4286 5220 w -10 /LucidaSansUnicode20 f -(\031) 4521 5220 w -10 /LucidaSansUnicode00 f -(s) 4553 5220 w -10 /LucidaTypewriter f -(creat) 4648 5220 w -10 /LucidaSansUnicode00 f -(,) 5008 5220 w -(Plan) 720 5340 w -(9) 959 5340 w -(has) 1060 5340 w -(a) 1266 5340 w -10 /LucidaTypewriter f -(create) 1359 5340 w -10 /LucidaSansUnicode00 f -(function) 1828 5340 w -(that) 2266 5340 w -(takes) 2494 5340 w -(three) 2788 5340 w -(arguments,) 3077 5340 w -(the) 3665 5340 w -(original) 3857 5340 w -(two) 4262 5340 w -(plus) 4474 5340 w -(a) 4716 5340 w -(third) 4808 5340 w -(that,) 720 5460 w -(like) 981 5460 w -(the) 1191 5460 w -(second) 1384 5460 w -(argument) 1766 5460 w -(of) 2272 5460 w -10 /LucidaTypewriter f -(open) 2408 5460 w -10 /LucidaSansUnicode00 f -(,) 2696 5460 w -(defines) 2766 5460 w -(whether) 3158 5460 w -(the) 3587 5460 w -(returned) 3781 5460 w -(file) 4238 5460 w -(descriptor) 4428 5460 w -(is) 4960 5460 w -(to) 720 5580 w -(be) 853 5580 w -(opened) 1007 5580 w -(for) 1403 5580 w -(reading,) 1577 5580 w -(writing,) 2012 5580 w -(or) 2416 5580 w -(both.) 2552 5580 w -(This) 2873 5580 w -(design) 3112 5580 w -(was) 3469 5580 w -(forced) 3686 5580 w -(by) 4029 5580 w -(the) 4178 5580 w -(way) 4367 5580 w -(9P) 4585 5580 w -(imple\255) 4737 5580 w -(ments) 720 5700 w -(creation,) 1056 5700 w -(but) 1517 5700 w -(it) 1716 5700 w -(also) 1819 5700 w -(simplifies) 2052 5700 w -(the) 2556 5700 w -(common) 2748 5700 w -(use) 3206 5700 w -(of) 3412 5700 w -10 /LucidaTypewriter f -(create) 3548 5700 w -10 /LucidaSansUnicode00 f -(to) 4018 5700 w -(initialize) 4154 5700 w -(a) 4604 5700 w -(tempo\255) 4697 5700 w -(rary file.) 720 5820 w -(Another departure from ANSI C is that) 970 5976 w -(Plan) 2855 5976 w -(9) 3089 5976 w -(uses) 3185 5976 w -(a) 3438 5976 w -(16-bit) 3526 5976 w -(character) 3872 5976 w -(set) 4354 5976 w -(called) 4531 5976 w -(Uni\255) 4847 5976 w -(code) 720 6096 w -([ISO10646,) 992 6096 w -(Unicode].) 1574 6096 w -(Although) 2103 6096 w -(we) 2588 6096 w -(stopped) 2761 6096 w -(short) 3195 6096 w -(of) 3487 6096 w -(full) 3625 6096 w -(internationalization,) 3822 6096 w -(Plan) 4839 6096 w -(9) 720 6216 w -(treats) 819 6216 w -(the) 1133 6216 w -(representation) 1325 6216 w -(of) 2069 6216 w -(all) 2204 6216 w -(major) 2354 6216 w -(languages) 2671 6216 w -(uniformly) 3202 6216 w -(throughout) 3705 6216 w -(all) 4289 6216 w -(its) 4439 6216 w -(software.) 4593 6216 w -(To) 720 6336 w -(simplify) 891 6336 w -(the) 1321 6336 w -(exchange) 1523 6336 w -(of) 2034 6336 w -(text) 2178 6336 w -(between) 2415 6336 w -(programs,) 2868 6336 w -(the) 3413 6336 w -(characters) 3614 6336 w -(are) 4160 6336 w -(packed) 4358 6336 w -(into) 4750 6336 w -(a) 4985 6336 w -(byte) 720 6456 w -(stream) 997 6456 w -(by) 1399 6456 w -(an) 1583 6456 w -(encoding) 1769 6456 w -(we) 2284 6456 w -(designed,) 2486 6456 w -(called) 3030 6456 w -(UTF-8,) 3383 6456 w -(which) 3792 6456 w -(is) 4143 6456 w -(now) 4293 6456 w -(becoming) 4563 6456 w -(accepted) 720 6576 w -(as) 1203 6576 w -(a) 1360 6576 w -(standard) 1466 6576 w -([FSSUTF].) 1943 6576 w -(It) 2471 6576 w -(has) 2587 6576 w -(several) 2805 6576 w -(attractive) 3195 6576 w -(properties,) 3695 6576 w -(including) 4275 6576 w -(byte-) 4774 6576 w -(order independence, backwards compatibility with ASCII, and ease of implementation.) 720 6696 w -(There) 970 6852 w -(are) 1299 6852 w -(many) 1502 6852 w -(problems) 1815 6852 w -(in) 2323 6852 w -(adapting) 2465 6852 w -(existing) 2942 6852 w -(software) 3380 6852 w -(to) 3846 6852 w -(a) 3995 6852 w -(large) 4101 6852 w -(character) 4395 6852 w -(set) 4896 6852 w -(with) 720 6972 w -(an) 973 6972 w -(encoding) 1138 6972 w -(that) 1632 6972 w -(represents) 1870 6972 w -(characters) 2431 6972 w -(with) 2978 6972 w -(a) 3230 6972 w -(variable) 3332 6972 w -(number) 3759 6972 w -(of) 4183 6972 w -(bytes.) 4328 6972 w -(ANSI) 4698 6972 w -(C) 4971 6972 w -(addresses) 720 7092 w -(some) 1241 7092 w -(of) 1536 7092 w -(the) 1668 7092 w -(issues) 1857 7092 w -(but) 2191 7092 w -(falls) 2387 7092 w -(short) 2622 7092 w -(of) 2908 7092 w -(solving) 3040 7092 w -(them) 3420 7092 w -(all.) 3702 7092 w -(It) 3913 7092 w -(does) 4013 7092 w -(not) 4278 7092 w -(pick) 4472 7092 w -(a) 4708 7092 w -(char\255) 4798 7092 w -(acter) 720 7212 w -(set) 1041 7212 w -(encoding) 1266 7212 w -(and) 1793 7212 w -(does) 2054 7212 w -(not) 2366 7212 w -(define) 2607 7212 w -(all) 2991 7212 w -(the) 3185 7212 w -(necessary) 3421 7212 w -(I/O) 3977 7212 w -(library) 4218 7212 w -(routines.) 4609 7212 w +(Plan) 970 1836 w +(9) 1208 1836 w +(utilities) 1309 1836 w +(are) 1706 1836 w +(written) 1896 1836 w +(in) 2273 1836 w +(several) 2402 1836 w +(languages.) 2780 1836 w +(Some) 3376 1836 w +(are) 3678 1836 w +(scripts) 3868 1836 w +(for) 4229 1836 w +(the) 4406 1836 w +(shell,) 4599 1836 w +10 /LucidaTypewriter f +(rc) 4896 1836 w +10 /LucidaSansUnicode00 f +([Duff90];) 720 1956 w +(a) 1190 1956 w +(handful) 1280 1956 w +(are) 1685 1956 w +(written) 1872 1956 w +(in) 2246 1956 w +(a) 2372 1956 w +(new) 2462 1956 w +(C-like) 2692 1956 w +(concurrent) 3025 1956 w +(language) 3583 1956 w +(called) 4060 1956 w +(Alef) 4377 1956 w +([Wint95],) 4602 1956 w +(described) 720 2076 w +(below.) 1229 2076 w +(The) 1615 2076 w +(great) 1832 2076 w +(majority,) 2119 2076 w +(though,) 2586 2076 w +(are) 3001 2076 w +(written) 3190 2076 w +(in) 3566 2076 w +(a) 3694 2076 w +(dialect) 3786 2076 w +(of) 4143 2076 w +(ANSI) 4278 2076 w +(C) 4541 2076 w +([ANSIC].) 4647 2076 w +(Of) 720 2196 w +(these,) 874 2196 w +(most) 1207 2196 w +(are) 1488 2196 w +(entirely) 1679 2196 w +(new) 2080 2196 w +(programs,) 2314 2196 w +(but) 2852 2196 w +(some) 3052 2196 w +(originate) 3351 2196 w +(in) 3821 2196 w +(pre-ANSI) 3950 2196 w +(C) 4432 2196 w +(code) 4539 2196 w +(from) 4808 2196 w +(our) 720 2316 w +(research) 922 2316 w +(UNIX) 1373 2316 w +(system) 1646 2316 w +([UNIX85].) 2024 2316 w +(These) 2553 2316 w +(have) 2880 2316 w +(been) 3144 2316 w +(updated) 3420 2316 w +(to) 3858 2316 w +(ANSI) 3995 2316 w +(C) 4260 2316 w +(and) 4368 2316 w +(reworked) 4587 2316 w +(for portability and cleanliness.) 720 2436 w +(The) 970 2592 w +(Plan) 1184 2592 w +(9) 1418 2592 w +(C) 1514 2592 w +(dialect) 1616 2592 w +(has) 1970 2592 w +(some) 2172 2592 w +(minor) 2467 2592 w +(extensions,) 2787 2592 w +(described) 3379 2592 w +(elsewhere) 3886 2592 w +([Pike95],) 4404 2592 w +(and) 4860 2592 w +(a) 720 2712 w +(few) 819 2712 w +(major) 1032 2712 w +(restrictions.) 1355 2712 w +(The) 2008 2712 w +(most) 2232 2712 w +(important) 2517 2712 w +(restriction) 3038 2712 w +(is) 3576 2712 w +(that) 3699 2712 w +(the) 3933 2712 w +(compiler) 4131 2712 w +(demands) 4597 2712 w +(that) 720 2832 w +(all) 960 2832 w +(function) 1122 2832 w +(definitions) 1572 2832 w +(have) 2137 2832 w +(ANSI) 2411 2832 w +(prototypes) 2686 2832 w +(and) 3257 2832 w +(all) 3486 2832 w +(function) 3648 2832 w +(calls) 4098 2832 w +(appear) 4362 2832 w +(in) 4744 2832 w +(the) 4885 2832 w +(scope) 720 2952 w +(of) 1052 2952 w +(a) 1200 2952 w +(prototyped) 1305 2952 w +(declaration) 1889 2952 w +(of) 2478 2952 w +(the) 2626 2952 w +(function.) 2831 2952 w +(As) 3345 2952 w +(a) 3514 2952 w +(stylistic) 3618 2952 w +(rule,) 4033 2952 w +(the) 4302 2952 w +(prototyped) 4506 2952 w +(declaration is placed in) 720 3072 w +(a) 1876 3072 w +(header) 1964 3072 w +(file) 2330 3072 w +(included) 2514 3072 w +(by) 2962 3072 w +(all) 3110 3072 w +(files) 3256 3072 w +(that) 3491 3072 w +(call) 3715 3072 w +(the) 3912 3072 w +(function.) 4100 3072 w +(Each) 4598 3072 w +(sys\255) 4853 3072 w +(tem) 720 3192 w +(library) 959 3192 w +(has) 1322 3192 w +(an) 1543 3192 w +(associated) 1713 3192 w +(header) 2275 3192 w +(file,) 2661 3192 w +(declaring) 2897 3192 w +(all) 3398 3192 w +(functions) 3564 3192 w +(in) 4069 3192 w +(that) 4213 3192 w +(library.) 4457 3192 w +(For) 4884 3192 w +(example,) 720 3312 w +(the) 1226 3312 w +(standard) 1442 3312 w +(Plan) 1931 3312 w +(9) 2194 3312 w +(library) 2319 3312 w +(is) 2691 3312 w +(called) 2833 3312 w +10 /LucidaTypewriter f +(libc) 3178 3312 w +10 /LucidaSansUnicode00 f +(,) 3466 3312 w +(so) 3560 3312 w +(all) 3734 3312 w +(C) 3909 3312 w +(source) 4040 3312 w +(files) 4424 3312 w +(include) 4688 3312 w +10 /LucidaTypewriter f +() 720 3432 w +10 /LucidaSansUnicode00 f +(.) 1296 3432 w +(These) 1400 3432 w +(rules) 1727 3432 w +(guarantee) 2005 3432 w +(that) 2530 3432 w +(all) 2760 3432 w +(functions) 2912 3432 w +(are) 3403 3432 w +(called) 3594 3432 w +(with) 3916 3432 w +(arguments) 4160 3432 w +(having) 4718 3432 w +(the expected types ) 720 3552 w +10 /LucidaSansUnicode20 f +(\024) 1673 3552 w +10 /LucidaSansUnicode00 f +(something that was not true with pre-ANSI C programs.) 1805 3552 w +(Another) 970 3708 w +(restriction) 1391 3708 w +(is) 1919 3708 w +(that) 2032 3708 w +(the) 2256 3708 w +(C) 2444 3708 w +(compilers) 2547 3708 w +(accept) 3055 3708 w +(only) 3402 3708 w +(a) 3640 3708 w +(subset) 3729 3708 w +(of) 4083 3708 w +(the) 4215 3708 w +(preprocessor) 4404 3708 w +(directives) 720 3828 w +(required) 1220 3828 w +(by) 1666 3828 w +(ANSI.) 1816 3828 w +(The) 2141 3828 w +(main) 2357 3828 w +(omission) 2631 3828 w +(is) 3102 3828 w +10 /LucidaTypewriter f +(#if) 3216 3828 w +10 /LucidaSansUnicode00 f +(,) 3432 3828 w +(since) 3498 3828 w +(we) 3781 3828 w +(believe) 3948 3828 w +(it) 4323 3828 w +(is) 4423 3828 w +(never) 4537 3828 w +(nec\255) 4838 3828 w +(essary) 720 3948 w +(and) 1089 3948 w +(often) 1333 3948 w +(abused.) 1650 3948 w +(Also,) 2128 3948 w +(its) 2434 3948 w +(effect) 2615 3948 w +(is) 2953 3948 w +(better) 3097 3948 w +(achieved) 3451 3948 w +(by) 3939 3948 w +(other) 4118 3948 w +(means.) 4439 3948 w +(For) 4884 3948 w +(instance,) 720 4068 w +(an) 1188 4068 w +10 /LucidaTypewriter f +(#if) 1338 4068 w +10 /LucidaSansUnicode00 f +(used) 1587 4068 w +(to) 1852 4068 w +(toggle) 1983 4068 w +(a feature at compile time can be written as a regular) 2323 4068 w +10 /LucidaTypewriter f +(if) 4896 4068 w +10 /LucidaSansUnicode00 f +(statement,) 720 4188 w +(relying) 1278 4188 w +(on) 1652 4188 w +(compile-time) 1818 4188 w +(constant) 2516 4188 w +(folding) 2975 4188 w +(and) 3361 4188 w +(dead) 3584 4188 w +(code) 3864 4188 w +(elimination) 4138 4188 w +(to) 4723 4188 w +(dis\255) 4864 4188 w +(card object code.) 720 4308 w +(Conditional) 970 4464 w +(compilation,) 1565 4464 w +(even) 2205 4464 w +(with) 2469 4464 w +10 /LucidaTypewriter f +(#ifdef) 2712 4464 w +10 /LucidaSansUnicode00 f +(,) 3144 4464 w +(is) 3214 4464 w +(used) 3332 4464 w +(sparingly) 3602 4464 w +(in) 4084 4464 w +(Plan) 4213 4464 w +(9.) 4452 4464 w +(The) 4617 4464 w +(only) 4836 4464 w +(architecture-dependent) 720 4584 w +10 /LucidaTypewriter f +(#ifdefs) 1913 4584 w +10 /LucidaSansUnicode00 f +(in) 2456 4584 w +(the) 2586 4584 w +(system) 2780 4584 w +(are) 3159 4584 w +(in) 3350 4584 w +(low-level) 3480 4584 w +(routines) 3965 4584 w +(in) 4402 4584 w +(the) 4531 4584 w +(graph\255) 4724 4584 w +(ics) 720 4704 w +(library.) 900 4704 w +(Instead,) 1323 4704 w +(we) 1757 4704 w +(avoid) 1939 4704 w +(such) 2248 4704 w +(dependencies) 2523 4704 w +(or,) 3240 4704 w +(when) 3423 4704 w +(necessary,) 3729 4704 w +(isolate) 4285 4704 w +(them) 4652 4704 w +(in) 4949 4704 w +(separate) 720 4824 w +(source) 1171 4824 w +(files) 1530 4824 w +(or) 1768 4824 w +(libraries.) 1906 4824 w +(Besides) 2400 4824 w +(making) 2800 4824 w +(code) 3195 4824 w +(hard) 3462 4824 w +(to) 3719 4824 w +(read,) 3853 4824 w +10 /LucidaTypewriter f +(#ifdefs) 4136 4824 w +10 /LucidaSansUnicode00 f +(make) 4676 4824 w +(it) 4974 4824 w +(impossible) 720 4944 w +(to) 1278 4944 w +(know) 1409 4944 w +(what) 1700 4944 w +(source) 1964 4944 w +(is) 2319 4944 w +(compiled) 2432 4944 w +(into) 2910 4944 w +(the) 3133 4944 w +(binary) 3322 4944 w +(or) 3658 4944 w +(whether) 3794 4944 w +(source) 4219 4944 w +(protected) 4575 4944 w +(by them will compile or work properly.) 720 5064 w +(They make it harder to maintain software.) 2662 5064 w +(The) 970 5220 w +(standard) 1214 5220 w +(Plan) 1704 5220 w +(9) 1968 5220 w +(library) 2094 5220 w +(overlaps) 2467 5220 w +(much) 2938 5220 w +(of) 3269 5220 w +(ANSI) 3430 5220 w +(C) 3719 5220 w +(and) 3851 5220 w +(POSIX) 4094 5220 w +([POSIX],) 4437 5220 w +(but) 4878 5220 w +(diverges) 720 5340 w +(when) 1168 5340 w +(appropriate) 1463 5340 w +(to) 2065 5340 w +(Plan) 2201 5340 w +(9) 2440 5340 w +10 /LucidaSansUnicode20 f +(\031) 2503 5340 w +10 /LucidaSansUnicode00 f +(s) 2535 5340 w +(goals) 2624 5340 w +(or) 2920 5340 w +(implementation.) 3060 5340 w +(When) 3924 5340 w +(the) 4228 5340 w +(semantics) 4420 5340 w +(of) 4942 5340 w +(a) 720 5460 w +(function) 818 5460 w +(change,) 1262 5460 w +(we) 1686 5460 w +(also) 1863 5460 w +(change) 2103 5460 w +(the) 2495 5460 w +(name.) 2694 5460 w +(For) 3068 5460 w +(instance,) 3268 5460 w +(instead) 3747 5460 w +(of) 4144 5460 w +(UNIX) 4286 5460 w +10 /LucidaSansUnicode20 f +(\031) 4521 5460 w +10 /LucidaSansUnicode00 f +(s) 4553 5460 w +10 /LucidaTypewriter f +(creat) 4648 5460 w +10 /LucidaSansUnicode00 f +(,) 5008 5460 w +(Plan) 720 5580 w +(9) 959 5580 w +(has) 1060 5580 w +(a) 1266 5580 w +10 /LucidaTypewriter f +(create) 1359 5580 w +10 /LucidaSansUnicode00 f +(function) 1828 5580 w +(that) 2266 5580 w +(takes) 2494 5580 w +(three) 2788 5580 w +(arguments,) 3077 5580 w +(the) 3665 5580 w +(original) 3857 5580 w +(two) 4262 5580 w +(plus) 4474 5580 w +(a) 4716 5580 w +(third) 4808 5580 w +(that,) 720 5700 w +(like) 981 5700 w +(the) 1191 5700 w +(second) 1384 5700 w +(argument) 1766 5700 w +(of) 2272 5700 w +10 /LucidaTypewriter f +(open) 2408 5700 w +10 /LucidaSansUnicode00 f +(,) 2696 5700 w +(defines) 2766 5700 w +(whether) 3158 5700 w +(the) 3587 5700 w +(returned) 3781 5700 w +(file) 4238 5700 w +(descriptor) 4428 5700 w +(is) 4960 5700 w +(to) 720 5820 w +(be) 853 5820 w +(opened) 1007 5820 w +(for) 1403 5820 w +(reading,) 1577 5820 w +(writing,) 2012 5820 w +(or) 2416 5820 w +(both.) 2552 5820 w +(This) 2873 5820 w +(design) 3112 5820 w +(was) 3469 5820 w +(forced) 3686 5820 w +(by) 4029 5820 w +(the) 4178 5820 w +(way) 4367 5820 w +(9P) 4585 5820 w +(imple\255) 4737 5820 w +(ments) 720 5940 w +(creation,) 1056 5940 w +(but) 1517 5940 w +(it) 1716 5940 w +(also) 1819 5940 w +(simplifies) 2052 5940 w +(the) 2556 5940 w +(common) 2748 5940 w +(use) 3206 5940 w +(of) 3412 5940 w +10 /LucidaTypewriter f +(create) 3548 5940 w +10 /LucidaSansUnicode00 f +(to) 4018 5940 w +(initialize) 4154 5940 w +(a) 4604 5940 w +(tempo\255) 4697 5940 w +(rary file.) 720 6060 w +(Another departure from ANSI C is that) 970 6216 w +(Plan) 2855 6216 w +(9) 3089 6216 w +(uses) 3185 6216 w +(a) 3438 6216 w +(16-bit) 3526 6216 w +(character) 3872 6216 w +(set) 4354 6216 w +(called) 4531 6216 w +(Uni\255) 4847 6216 w +(code) 720 6336 w +([ISO10646,) 992 6336 w +(Unicode].) 1574 6336 w +(Although) 2103 6336 w +(we) 2588 6336 w +(stopped) 2761 6336 w +(short) 3195 6336 w +(of) 3487 6336 w +(full) 3625 6336 w +(internationalization,) 3822 6336 w +(Plan) 4839 6336 w +(9) 720 6456 w +(treats) 819 6456 w +(the) 1133 6456 w +(representation) 1325 6456 w +(of) 2069 6456 w +(all) 2204 6456 w +(major) 2354 6456 w +(languages) 2671 6456 w +(uniformly) 3202 6456 w +(throughout) 3705 6456 w +(all) 4289 6456 w +(its) 4439 6456 w +(software.) 4593 6456 w +(To) 720 6576 w +(simplify) 891 6576 w +(the) 1321 6576 w +(exchange) 1523 6576 w +(of) 2034 6576 w +(text) 2178 6576 w +(between) 2415 6576 w +(programs,) 2868 6576 w +(the) 3413 6576 w +(characters) 3614 6576 w +(are) 4160 6576 w +(packed) 4358 6576 w +(into) 4750 6576 w +(a) 4985 6576 w +(byte) 720 6696 w +(stream) 997 6696 w +(by) 1399 6696 w +(an) 1583 6696 w +(encoding) 1769 6696 w +(we) 2284 6696 w +(designed,) 2486 6696 w +(called) 3030 6696 w +(UTF-8,) 3383 6696 w +(which) 3792 6696 w +(is) 4143 6696 w +(now) 4293 6696 w +(becoming) 4563 6696 w +(accepted) 720 6816 w +(as) 1203 6816 w +(a) 1360 6816 w +(standard) 1466 6816 w +([FSSUTF].) 1943 6816 w +(It) 2471 6816 w +(has) 2587 6816 w +(several) 2805 6816 w +(attractive) 3195 6816 w +(properties,) 3695 6816 w +(including) 4275 6816 w +(byte-) 4774 6816 w +(order independence, backwards compatibility with ASCII, and ease of implementation.) 720 6936 w cleartomark showpage saveobj restore @@ -9583,583 +9528,618 @@ 10 pagesetup 10 /LucidaSansUnicode00 f (\255 10 \255) 2752 480 w -(Furthermore,) 720 840 w -(the) 1403 840 w -(functions) 1605 840 w -(it) 2104 840 w +(There) 970 840 w +(are) 1299 840 w +(many) 1502 840 w +(problems) 1815 840 w +(in) 2323 840 w +(adapting) 2465 840 w +(existing) 2942 840 w +(software) 3380 840 w +(to) 3846 840 w +(a) 3995 840 w +(large) 4101 840 w +(character) 4395 840 w +(set) 4896 840 w +(with) 720 960 w +(an) 973 960 w +(encoding) 1138 960 w +(that) 1632 960 w +(represents) 1870 960 w +(characters) 2431 960 w +(with) 2978 960 w +(a) 3230 960 w +(variable) 3332 960 w +(number) 3759 960 w +(of) 4183 960 w +(bytes.) 4328 960 w +(ANSI) 4698 960 w +(C) 4971 960 w +(addresses) 720 1080 w +(some) 1241 1080 w +(of) 1536 1080 w +(the) 1668 1080 w +(issues) 1857 1080 w +(but) 2191 1080 w +(falls) 2387 1080 w +(short) 2622 1080 w +(of) 2908 1080 w +(solving) 3040 1080 w +(them) 3420 1080 w +(all.) 3702 1080 w +(It) 3913 1080 w +(does) 4013 1080 w +(not) 4278 1080 w +(pick) 4472 1080 w +(a) 4708 1080 w +(char\255) 4798 1080 w +(acter) 720 1200 w +(set) 1003 1200 w +(encoding) 1190 1200 w +(and) 1679 1200 w +(does) 1902 1200 w +(not) 2176 1200 w +(define) 2379 1200 w +(all) 2725 1200 w +(the) 2881 1200 w +(necessary) 3078 1200 w +(I/O) 3595 1200 w +(library) 3797 1200 w +(routines.) 4149 1200 w +(Further\255) 4654 1200 w +(more,) 720 1320 w +(the) 1046 1320 w +(functions) 1244 1320 w +(it) 1739 1320 w 10 /LucidaSans-Italic f -(does) 2217 840 w +(does) 1849 1320 w 10 /LucidaSansUnicode00 f -(define) 2484 840 w -(have) 2834 840 w -(engineering) 3106 840 w -(problems.) 3730 840 w -(Since) 4299 840 w -(the) 4599 840 w -(stan\255) 4802 840 w -(dard) 720 960 w -(left) 982 960 w -(too) 1181 960 w -(many) 1380 960 w -(problems) 1682 960 w -(unsolved,) 2179 960 w -(we) 2687 960 w -(decided) 2860 960 w -(to) 3281 960 w -(build) 3419 960 w -(our) 3705 960 w -(own) 3908 960 w -(interface.) 4147 960 w -(A) 4674 960 w -(sepa\255) 4782 960 w -(rate paper has the details [Pike93].) 720 1080 w -(A) 970 1236 w -(small) 1082 1236 w -(class) 1382 1236 w -(of) 1663 1236 w -(Plan) 1805 1236 w -(9) 2050 1236 w -(programs) 2157 1236 w -(do) 2668 1236 w -(not) 2836 1236 w -(follow) 3040 1236 w -(the) 3378 1236 w -(conventions) 3577 1236 w -(discussed) 4205 1236 w -(in) 4726 1236 w -(this) 4861 1236 w -(section.) 720 1356 w -(These) 1180 1356 w -(are) 1516 1356 w -(programs) 1716 1356 w -(imported) 2231 1356 w -(from) 2722 1356 w -(and) 3002 1356 w -(maintained) 3230 1356 w -(by) 3819 1356 w -(the) 3982 1356 w -(UNIX) 4185 1356 w -(community;) 4468 1356 w -10 /LucidaTypewriter f -(tex) 720 1476 w -10 /LucidaSansUnicode00 f -(is) 984 1476 w -(a) 1112 1476 w -(representative) 1216 1476 w -(example.) 1957 1476 w -(To) 2483 1476 w -(avoid) 2656 1476 w -(reconverting) 2965 1476 w -(such) 3624 1476 w -(programs) 3899 1476 w -(every) 4415 1476 w -(time) 4721 1476 w -(a) 4985 1476 w -(new) 720 1596 w -(version) 958 1596 w -(is) 1353 1596 w -(released,) 1476 1596 w -(we) 1958 1596 w -(built) 2134 1596 w -(a) 2397 1596 w -(porting) 2495 1596 w -(environment,) 2892 1596 w -(called) 3577 1596 w -(the) 3902 1596 w -(ANSI) 4099 1596 w -(C/POSIX) 4367 1596 w -(Envi\255) 4810 1596 w -(ronment,) 720 1716 w -(or) 1222 1716 w -(APE) 1382 1716 w -([Tric95].) 1618 1716 w -(APE) 2116 1716 w -(comprises) 2352 1716 w -(separate) 2906 1716 w -(include) 3378 1716 w -(files,) 3788 1716 w -(libraries,) 4080 1716 w -(and) 4564 1716 w -(com\255) 4802 1716 w -(mands,) 720 1836 w -(conforming) 1111 1836 w -(as) 1705 1836 w -(much) 1846 1836 w -(as) 2149 1836 w -(possible) 2290 1836 w -(to) 2727 1836 w -(the) 2859 1836 w -(strict) 3048 1836 w -(ANSI) 3328 1836 w -(C) 3588 1836 w -(and) 3691 1836 w -(base-level) 3905 1836 w -(POSIX) 4444 1836 w -(speci\255) 4757 1836 w -(fications.) 720 1956 w -(To) 1234 1956 w -(port) 1397 1956 w -(network-based) 1638 1956 w -(software) 2415 1956 w -(such) 2869 1956 w -(as) 3134 1956 w -(X) 3279 1956 w -(Windows,) 3381 1956 w -(it) 3881 1956 w -(was) 3986 1956 w -(necessary) 4208 1956 w -(to) 4722 1956 w -(add) 4859 1956 w -(some extensions to those specifications, such as the BSD networking functions.) 720 2076 w +(define) 2113 1320 w +(have) 2460 1320 w +(engineering) 2729 1320 w +(problems.) 3350 1320 w +(Since) 3915 1320 w +(the) 4211 1320 w +(standard) 4410 1320 w +(left) 4881 1320 w +(too) 720 1440 w +(many) 918 1440 w +(problems) 1219 1440 w +(unsolved,) 1715 1440 w +(we) 2222 1440 w +(decided) 2394 1440 w +(to) 2814 1440 w +(build) 2951 1440 w +(our) 3236 1440 w +(own) 3439 1440 w +(interface.) 3677 1440 w +(A) 4203 1440 w +(separate) 4310 1440 w +(paper) 4762 1440 w +(has the details [Pike93].) 720 1560 w +(A) 970 1716 w +(small) 1082 1716 w +(class) 1382 1716 w +(of) 1663 1716 w +(Plan) 1805 1716 w +(9) 2050 1716 w +(programs) 2157 1716 w +(do) 2668 1716 w +(not) 2836 1716 w +(follow) 3040 1716 w +(the) 3378 1716 w +(conventions) 3577 1716 w +(discussed) 4205 1716 w +(in) 4726 1716 w +(this) 4861 1716 w +(section.) 720 1836 w +(These) 1180 1836 w +(are) 1516 1836 w +(programs) 1716 1836 w +(imported) 2231 1836 w +(from) 2722 1836 w +(and) 3002 1836 w +(maintained) 3230 1836 w +(by) 3819 1836 w +(the) 3982 1836 w +(UNIX) 4185 1836 w +(community;) 4468 1836 w +10 /LucidaTypewriter f +(tex) 720 1956 w +10 /LucidaSansUnicode00 f +(is) 984 1956 w +(a) 1112 1956 w +(representative) 1216 1956 w +(example.) 1957 1956 w +(To) 2483 1956 w +(avoid) 2656 1956 w +(reconverting) 2965 1956 w +(such) 3624 1956 w +(programs) 3899 1956 w +(every) 4415 1956 w +(time) 4721 1956 w +(a) 4985 1956 w +(new) 720 2076 w +(version) 958 2076 w +(is) 1353 2076 w +(released,) 1476 2076 w +(we) 1958 2076 w +(built) 2134 2076 w +(a) 2397 2076 w +(porting) 2495 2076 w +(environment,) 2892 2076 w +(called) 3577 2076 w +(the) 3902 2076 w +(ANSI) 4099 2076 w +(C/POSIX) 4367 2076 w +(Envi\255) 4810 2076 w +(ronment,) 720 2196 w +(or) 1222 2196 w +(APE) 1382 2196 w +([Tric95].) 1618 2196 w +(APE) 2116 2196 w +(comprises) 2352 2196 w +(separate) 2906 2196 w +(include) 3378 2196 w +(files,) 3788 2196 w +(libraries,) 4080 2196 w +(and) 4564 2196 w +(com\255) 4802 2196 w +(mands,) 720 2316 w +(conforming) 1111 2316 w +(as) 1705 2316 w +(much) 1846 2316 w +(as) 2149 2316 w +(possible) 2290 2316 w +(to) 2727 2316 w +(the) 2859 2316 w +(strict) 3048 2316 w +(ANSI) 3328 2316 w +(C) 3588 2316 w +(and) 3691 2316 w +(base-level) 3905 2316 w +(POSIX) 4444 2316 w +(speci\255) 4757 2316 w +(fications.) 720 2436 w +(To) 1234 2436 w +(port) 1397 2436 w +(network-based) 1638 2436 w +(software) 2415 2436 w +(such) 2869 2436 w +(as) 3134 2436 w +(X) 3279 2436 w +(Windows,) 3381 2436 w +(it) 3881 2436 w +(was) 3986 2436 w +(necessary) 4208 2436 w +(to) 4722 2436 w +(add) 4859 2436 w +(some extensions to those specifications, such as the BSD networking functions.) 720 2556 w 10 /LucidaSans-Demi f -(Portability and Compilation) 720 2316 w +(Portability and Compilation) 720 2796 w 10 /LucidaSansUnicode00 f -(Plan) 970 2472 w -(9) 1207 2472 w -(is) 1307 2472 w -(portable) 1424 2472 w -(across) 1866 2472 w -(a) 2213 2472 w -(variety) 2305 2472 w -(of) 2664 2472 w -(processor) 2799 2472 w -(architectures.) 3312 2472 w -(Within) 4042 2472 w -(a) 4384 2472 w -(single) 4476 2472 w -(com\255) 4802 2472 w -(puting) 720 2592 w -(session,) 1079 2592 w -(it) 1516 2592 w -(is) 1626 2592 w -(common) 1750 2592 w -(to) 2215 2592 w -(use) 2357 2592 w -(several) 2569 2592 w -(architectures:) 2952 2592 w -(perhaps) 3656 2592 w -(the) 4090 2592 w -(window) 4288 2592 w -(system) 4700 2592 w -(running) 720 2712 w -(on) 1138 2712 w -(an) 1299 2712 w -(Intel) 1454 2712 w -(processor) 1705 2712 w -(connected) 2219 2712 w -(to) 2756 2712 w -(a) 2892 2712 w -(MIPS-based) 2985 2712 w -(CPU) 3593 2712 w -(server) 3824 2712 w -(with) 4160 2712 w -(files) 4404 2712 w -(resident) 4645 2712 w -(on) 720 2832 w -(a) 876 2832 w -(SPARC) 964 2832 w -(system.) 1307 2832 w -(For this heterogeneity to be transparent, there must be conventions) 1743 2832 w -(about) 720 2952 w -(data) 1039 2952 w -(interchange) 1290 2952 w -(between) 1905 2952 w -(programs;) 2354 2952 w -(for) 2895 2952 w -(software) 3076 2952 w -(maintenance) 3533 2952 w -(to) 4193 2952 w -(be) 4333 2952 w -(straightfor\255) 4494 2952 w -(ward, there must be conventions about cross-architecture compilation.) 720 3072 w -(To) 970 3228 w -(avoid) 1144 3228 w -(byte) 1454 3228 w -(order) 1712 3228 w -(problems,) 2024 3228 w -(data) 2563 3228 w -(is) 2823 3228 w -(communicated) 2953 3228 w -(between) 3716 3228 w -(programs) 4174 3228 w -(as) 4692 3228 w -(text) 4849 3228 w -(whenever) 720 3348 w -(practical.) 1241 3348 w -(Sometimes,) 1775 3348 w -(though,) 2396 3348 w -(the) 2833 3348 w -(amount) 3047 3348 w -(of) 3476 3348 w -(data) 3633 3348 w -(is) 3902 3348 w -(high) 4040 3348 w -(enough) 4313 3348 w -(that) 4736 3348 w -(a) 4985 3348 w -(binary) 720 3468 w -(format) 1071 3468 w -(is) 1444 3468 w -(necessary;) 1574 3468 w -(such) 2131 3468 w -(data) 2407 3468 w -(is) 2667 3468 w -(communicated) 2797 3468 w -(as) 3560 3468 w -(a) 3716 3468 w -(byte) 3821 3468 w -(stream) 4079 3468 w -(with) 4462 3468 w -(a) 4717 3468 w -(pre-) 4822 3468 w -(defined) 720 3588 w -(encoding) 1134 3588 w -(for) 1628 3588 w -(multi-byte) 1815 3588 w -(values.) 2379 3588 w -(In) 2796 3588 w -(the) 2934 3588 w -(rare) 3136 3588 w -(cases) 3376 3588 w -(where) 3687 3588 w -(a) 4026 3588 w -(format) 4128 3588 w -(is) 4499 3588 w -(complex) 4626 3588 w -(enough to be defined by a data structure, the structure) 720 3708 w -(is) 3432 3708 w -(never) 3545 3708 w -(communicated) 3845 3708 w -(as) 4591 3708 w -(a) 4730 3708 w -(unit;) 4818 3708 w -(instead,) 720 3828 w -(it) 1140 3828 w -(is) 1240 3828 w -(decomposed) 1354 3828 w -(into) 2006 3828 w -(individual) 2229 3828 w -(fields,) 2736 3828 w -(encoded) 3067 3828 w -(as) 3513 3828 w -(an) 3653 3828 w -(ordered) 3804 3828 w -(byte) 4219 3828 w -(stream,) 4461 3828 w -(and) 4860 3828 w -(then) 720 3948 w -(reassembled) 979 3948 w -(by) 1635 3948 w -(the) 1792 3948 w -(recipient.) 1989 3948 w -(These) 2520 3948 w -(conventions) 2851 3948 w -(affect) 3478 3948 w -(data) 3794 3948 w -(ranging) 4047 3948 w -(from) 4463 3948 w -(kernel) 4738 3948 w -(or) 720 4068 w -(application) 867 4068 w -(program) 1446 4068 w -(state) 1907 4068 w -(information) 2188 4068 w -(to) 2800 4068 w -(object) 2943 4068 w -(file) 3286 4068 w -(intermediates) 3482 4068 w -(generated) 4192 4068 w -(by) 4725 4068 w -(the) 4885 4068 w -(compiler.) 720 4188 w -(Programs,) 970 4344 w -(including) 1494 4344 w -(the) 1976 4344 w -(kernel,) 2164 4344 w -(often) 2531 4344 w -(present) 2817 4344 w -(their) 3216 4344 w -(data) 3474 4344 w -(through) 3717 4344 w -(a) 4137 4344 w -(file) 4225 4344 w -(system) 4409 4344 w -(inter\255) 4782 4344 w -(face,) 720 4464 w -(an) 986 4464 w -(access) 1138 4464 w -(mechanism) 1488 4464 w -(that) 2075 4464 w -(is) 2301 4464 w -(inherently) 2416 4464 w -(portable.) 2937 4464 w -(For) 3441 4464 w -(example,) 3632 4464 w -(the) 4112 4464 w -(system) 4302 4464 w -(clock) 4676 4464 w -(is) 4960 4464 w -(represented) 720 4584 w -(by) 1350 4584 w -(a) 1513 4584 w -(decimal) 1616 4584 w -(number) 2040 4584 w -(in) 2466 4584 w -(the) 2606 4584 w -(file) 2810 4584 w -10 /LucidaTypewriter f -(/dev/time) 3010 4584 w -10 /LucidaSansUnicode00 f -(;) 3658 4584 w -(the) 3739 4584 w -10 /LucidaTypewriter f -(time) 3943 4584 w -10 /LucidaSansUnicode00 f -(library) 4280 4584 w -(function) 4639 4584 w -(\(there) 720 4704 w -(is) 1040 4704 w -(no) 1155 4704 w -10 /LucidaTypewriter f -(time) 1313 4704 w -10 /LucidaSansUnicode00 f -(system) 1636 4704 w -(call\)) 2011 4704 w -(reads) 2243 4704 w -(the) 2544 4704 w -(file) 2734 4704 w -(and) 2919 4704 w -(converts) 3133 4704 w -(it) 3578 4704 w -(to) 3678 4704 w -(binary.) 3810 4704 w -(Similarly,) 4210 4704 w -(instead) 4687 4704 w -(of) 720 4824 w -(encoding) 862 4824 w -(the) 1352 4824 w -(state) 1551 4824 w -(of) 1831 4824 w -(an) 1974 4824 w -(application) 2136 4824 w -(process) 2715 4824 w -(in) 3134 4824 w -(a) 3270 4824 w -(series) 3370 4824 w -(of) 3699 4824 w -(flags) 3842 4824 w -(and) 4121 4824 w -(bits) 4346 4824 w -(in) 4571 4824 w -(private) 4707 4824 w -(memory,) 720 4944 w -(the) 1187 4944 w -(kernel) 1381 4944 w -(presents) 1722 4944 w -(a) 2178 4944 w -(text) 2272 4944 w -(string) 2501 4944 w -(in) 2821 4944 w -(the) 2950 4944 w -(file) 3143 4944 w -(named) 3332 4944 w -10 /LucidaTypewriter f -(status) 3699 4944 w -10 /LucidaSansUnicode00 f -(in) 4169 4944 w -(the) 4298 4944 w -10 /LucidaTypewriter f -(/proc) 4491 4944 w -10 /LucidaSansUnicode00 f -(file) 4889 4944 w -(system) 720 5064 w -(associated) 1106 5064 w -(with) 1661 5064 w -(each) 1912 5064 w -(process.) 2182 5064 w -(The) 2666 5064 w -(Plan) 2893 5064 w -(9) 3140 5064 w -10 /LucidaTypewriter f -(ps) 3249 5064 w -10 /LucidaSansUnicode00 f -(command) 3439 5064 w -(is) 3964 5064 w -(trivial:) 4091 5064 w -(it) 4442 5064 w -(prints) 4555 5064 w -(the) 4885 5064 w -(contents of the desired status files after some minor reformatting; moreover, after) 720 5184 w +(Plan) 970 2952 w +(9) 1207 2952 w +(is) 1307 2952 w +(portable) 1424 2952 w +(across) 1866 2952 w +(a) 2213 2952 w +(variety) 2305 2952 w +(of) 2664 2952 w +(processor) 2799 2952 w +(architectures.) 3312 2952 w +(Within) 4042 2952 w +(a) 4384 2952 w +(single) 4476 2952 w +(com\255) 4802 2952 w +(puting) 720 3072 w +(session,) 1079 3072 w +(it) 1516 3072 w +(is) 1626 3072 w +(common) 1750 3072 w +(to) 2215 3072 w +(use) 2357 3072 w +(several) 2569 3072 w +(architectures:) 2952 3072 w +(perhaps) 3656 3072 w +(the) 4090 3072 w +(window) 4288 3072 w +(system) 4700 3072 w +(running) 720 3192 w +(on) 1138 3192 w +(an) 1299 3192 w +(Intel) 1454 3192 w +(processor) 1705 3192 w +(connected) 2219 3192 w +(to) 2756 3192 w +(a) 2892 3192 w +(MIPS-based) 2985 3192 w +(CPU) 3593 3192 w +(server) 3824 3192 w +(with) 4160 3192 w +(files) 4404 3192 w +(resident) 4645 3192 w +(on) 720 3312 w +(a) 876 3312 w +(SPARC) 964 3312 w +(system.) 1307 3312 w +(For this heterogeneity to be transparent, there must be conventions) 1743 3312 w +(about) 720 3432 w +(data) 1039 3432 w +(interchange) 1290 3432 w +(between) 1905 3432 w +(programs;) 2354 3432 w +(for) 2895 3432 w +(software) 3076 3432 w +(maintenance) 3533 3432 w +(to) 4193 3432 w +(be) 4333 3432 w +(straightfor\255) 4494 3432 w +(ward, there must be conventions about cross-architecture compilation.) 720 3552 w +(To) 970 3708 w +(avoid) 1144 3708 w +(byte) 1454 3708 w +(order) 1712 3708 w +(problems,) 2024 3708 w +(data) 2563 3708 w +(is) 2823 3708 w +(communicated) 2953 3708 w +(between) 3716 3708 w +(programs) 4174 3708 w +(as) 4692 3708 w +(text) 4849 3708 w +(whenever) 720 3828 w +(practical.) 1241 3828 w +(Sometimes,) 1775 3828 w +(though,) 2396 3828 w +(the) 2833 3828 w +(amount) 3047 3828 w +(of) 3476 3828 w +(data) 3633 3828 w +(is) 3902 3828 w +(high) 4040 3828 w +(enough) 4313 3828 w +(that) 4736 3828 w +(a) 4985 3828 w +(binary) 720 3948 w +(format) 1071 3948 w +(is) 1444 3948 w +(necessary;) 1574 3948 w +(such) 2131 3948 w +(data) 2407 3948 w +(is) 2667 3948 w +(communicated) 2797 3948 w +(as) 3560 3948 w +(a) 3716 3948 w +(byte) 3821 3948 w +(stream) 4079 3948 w +(with) 4462 3948 w +(a) 4717 3948 w +(pre-) 4822 3948 w +(defined) 720 4068 w +(encoding) 1134 4068 w +(for) 1628 4068 w +(multi-byte) 1815 4068 w +(values.) 2379 4068 w +(In) 2796 4068 w +(the) 2934 4068 w +(rare) 3136 4068 w +(cases) 3376 4068 w +(where) 3687 4068 w +(a) 4026 4068 w +(format) 4128 4068 w +(is) 4499 4068 w +(complex) 4626 4068 w +(enough to be defined by a data structure, the structure) 720 4188 w +(is) 3432 4188 w +(never) 3545 4188 w +(communicated) 3845 4188 w +(as) 4591 4188 w +(a) 4730 4188 w +(unit;) 4818 4188 w +(instead,) 720 4308 w +(it) 1140 4308 w +(is) 1240 4308 w +(decomposed) 1354 4308 w +(into) 2006 4308 w +(individual) 2229 4308 w +(fields,) 2736 4308 w +(encoded) 3067 4308 w +(as) 3513 4308 w +(an) 3653 4308 w +(ordered) 3804 4308 w +(byte) 4219 4308 w +(stream,) 4461 4308 w +(and) 4860 4308 w +(then) 720 4428 w +(reassembled) 979 4428 w +(by) 1635 4428 w +(the) 1792 4428 w +(recipient.) 1989 4428 w +(These) 2520 4428 w +(conventions) 2851 4428 w +(affect) 3478 4428 w +(data) 3794 4428 w +(ranging) 4047 4428 w +(from) 4463 4428 w +(kernel) 4738 4428 w +(or) 720 4548 w +(application) 867 4548 w +(program) 1446 4548 w +(state) 1907 4548 w +(information) 2188 4548 w +(to) 2800 4548 w +(object) 2943 4548 w +(file) 3286 4548 w +(intermediates) 3482 4548 w +(generated) 4192 4548 w +(by) 4725 4548 w +(the) 4885 4548 w +(compiler.) 720 4668 w +(Programs,) 970 4824 w +(including) 1494 4824 w +(the) 1976 4824 w +(kernel,) 2164 4824 w +(often) 2531 4824 w +(present) 2817 4824 w +(their) 3216 4824 w +(data) 3474 4824 w +(through) 3717 4824 w +(a) 4137 4824 w +(file) 4225 4824 w +(system) 4409 4824 w +(inter\255) 4782 4824 w +(face,) 720 4944 w +(an) 986 4944 w +(access) 1138 4944 w +(mechanism) 1488 4944 w +(that) 2075 4944 w +(is) 2301 4944 w +(inherently) 2416 4944 w +(portable.) 2937 4944 w +(For) 3441 4944 w +(example,) 3632 4944 w +(the) 4112 4944 w +(system) 4302 4944 w +(clock) 4676 4944 w +(is) 4960 4944 w +(represented) 720 5064 w +(by) 1350 5064 w +(a) 1513 5064 w +(decimal) 1616 5064 w +(number) 2040 5064 w +(in) 2466 5064 w +(the) 2606 5064 w +(file) 2810 5064 w +10 /LucidaTypewriter f +(/dev/time) 3010 5064 w +10 /LucidaSansUnicode00 f +(;) 3658 5064 w +(the) 3739 5064 w +10 /LucidaTypewriter f +(time) 3943 5064 w +10 /LucidaSansUnicode00 f +(library) 4280 5064 w +(function) 4639 5064 w +(\(there) 720 5184 w +(is) 1040 5184 w +(no) 1155 5184 w +10 /LucidaTypewriter f +(time) 1313 5184 w +10 /LucidaSansUnicode00 f +(system) 1636 5184 w +(call\)) 2011 5184 w +(reads) 2243 5184 w +(the) 2544 5184 w +(file) 2734 5184 w +(and) 2919 5184 w +(converts) 3133 5184 w +(it) 3578 5184 w +(to) 3678 5184 w +(binary.) 3810 5184 w +(Similarly,) 4210 5184 w +(instead) 4687 5184 w +(of) 720 5304 w +(encoding) 862 5304 w +(the) 1352 5304 w +(state) 1551 5304 w +(of) 1831 5304 w +(an) 1974 5304 w +(application) 2136 5304 w +(process) 2715 5304 w +(in) 3134 5304 w +(a) 3270 5304 w +(series) 3370 5304 w +(of) 3699 5304 w +(flags) 3842 5304 w +(and) 4121 5304 w +(bits) 4346 5304 w +(in) 4571 5304 w +(private) 4707 5304 w +(memory,) 720 5424 w +(the) 1187 5424 w +(kernel) 1381 5424 w +(presents) 1722 5424 w +(a) 2178 5424 w +(text) 2272 5424 w +(string) 2501 5424 w +(in) 2821 5424 w +(the) 2950 5424 w +(file) 3143 5424 w +(named) 3332 5424 w +10 /LucidaTypewriter f +(status) 3699 5424 w +10 /LucidaSansUnicode00 f +(in) 4169 5424 w +(the) 4298 5424 w +10 /LucidaTypewriter f +(/proc) 4491 5424 w +10 /LucidaSansUnicode00 f +(file) 4889 5424 w +(system) 720 5544 w +(associated) 1106 5544 w +(with) 1661 5544 w +(each) 1912 5544 w +(process.) 2182 5544 w +(The) 2666 5544 w +(Plan) 2893 5544 w +(9) 3140 5544 w +10 /LucidaTypewriter f +(ps) 3249 5544 w +10 /LucidaSansUnicode00 f +(command) 3439 5544 w +(is) 3964 5544 w +(trivial:) 4091 5544 w +(it) 4442 5544 w +(prints) 4555 5544 w +(the) 4885 5544 w +(contents of the desired status files after some minor reformatting; moreover, after) 720 5664 w 9 /LucidaTypewriter f -(import) 1008 5354 w -(helix) 1463 5354 w -(/proc) 1853 5354 w -10 /LucidaSansUnicode00 f -(a local) 720 5534 w -10 /LucidaTypewriter f -(ps) 1064 5534 w -10 /LucidaSansUnicode00 f -(command reports on the status of Helix) 1240 5534 w -10 /LucidaSansUnicode20 f -(\031) 3178 5534 w -10 /LucidaSansUnicode00 f -(s processes.) 3210 5534 w -(Each) 970 5690 w -(supported) 1245 5690 w -(architecture) 1795 5690 w -(has) 2426 5690 w -(its) 2647 5690 w -(own) 2818 5690 w -(compilers) 3072 5690 w -(and) 3600 5690 w -(loader.) 3834 5690 w -(The) 4257 5690 w -(C) 4492 5690 w -(and) 4615 5690 w -(Alef) 4849 5690 w -(compilers) 720 5810 w -(produce) 1230 5810 w -(intermediate) 1663 5810 w -(files) 2312 5810 w -(that) 2549 5810 w -(are) 2775 5810 w -(portably) 2962 5810 w -(encoded;) 3398 5810 w -(the) 3877 5810 w -(contents) 4067 5810 w -(are) 4519 5810 w -(unique) 4706 5810 w -(to) 720 5930 w -(the) 856 5930 w -(target) 1049 5930 w -(architecture) 1375 5930 w -(but) 1991 5930 w -(the) 2191 5930 w -(format) 2384 5930 w -(of) 2746 5930 w -(the) 2882 5930 w -(file) 3075 5930 w -(is) 3264 5930 w -(independent) 3382 5930 w -(of) 4029 5930 w -(compiling) 4166 5930 w -(proces\255) 4684 5930 w -(sor) 720 6050 w -(type.) 913 6050 w -(When) 1225 6050 w -(a) 1531 6050 w -(compiler) 1626 6050 w -(for) 2089 6050 w -(a) 2268 6050 w -(given) 2363 6050 w -(architecture) 2663 6050 w -(is) 3280 6050 w -(compiled) 3399 6050 w -(on) 3883 6050 w -(another) 4045 6050 w -(type) 4458 6050 w -(of) 4705 6050 w -(pro\255) 4842 6050 w -(cessor) 720 6170 w -(and) 1080 6170 w -(then) 1309 6170 w -(used) 1575 6170 w -(to) 1856 6170 w -(compile) 2003 6170 w -(a) 2434 6170 w -(program) 2538 6170 w -(there,) 3003 6170 w -(the) 3336 6170 w -(intermediate) 3540 6170 w -(produced) 4203 6170 w -(on) 4712 6170 w -(the) 4885 6170 w -(new) 720 6290 w -(architecture) 975 6290 w -(is) 1613 6290 w -(identical) 1753 6290 w -(to) 2223 6290 w -(the) 2380 6290 w -(intermediate) 2594 6290 w -(produced) 3267 6290 w -(on) 3786 6290 w -(the) 3968 6290 w -(native) 4182 6290 w -(processor.) 4532 6290 w -(From the compiler) 720 6410 w -10 /LucidaSansUnicode20 f -(\031) 1611 6410 w -10 /LucidaSansUnicode00 f -(s point of view, every compilation is a cross-compilation.) 1643 6410 w -(Although) 970 6566 w -(each) 1467 6566 w -(architecture) 1744 6566 w -10 /LucidaSansUnicode20 f -(\031) 2322 6566 w -10 /LucidaSansUnicode00 f -(s) 2354 6566 w -(loader) 2458 6566 w -(accepts) 2816 6566 w -(only) 3233 6566 w -(intermediate) 3490 6566 w -(files) 4157 6566 w -(produced) 4412 6566 w -(by) 4925 6566 w -(compilers) 720 6686 w -(for) 1230 6686 w -(that) 1405 6686 w -(architecture,) 1632 6686 w -(such) 2278 6686 w -(files) 2540 6686 w -(could) 2778 6686 w -(have) 3080 6686 w -(been) 3341 6686 w -(generated) 3613 6686 w -(by) 4136 6686 w -(a) 4286 6686 w -(compiler) 4376 6686 w -(exe\255) 4834 6686 w -(cuting) 720 6806 w -(on) 1057 6806 w -(any) 1214 6806 w -(type) 1417 6806 w -(of) 1659 6806 w -(processor.) 1791 6806 w -(For) 2365 6806 w -(instance,) 2555 6806 w -(it) 3024 6806 w -(is) 3124 6806 w -(possible) 3239 6806 w -(to) 3677 6806 w -(run) 3810 6806 w -(the) 4010 6806 w -(MIPS) 4200 6806 w -(compiler) 4459 6806 w -(on) 4917 6806 w -(a 486, then use the MIPS loader on a SPARC to produce a MIPS executable.) 720 6926 w -(Since) 970 7082 w -(Plan) 1261 7082 w -(9) 1501 7082 w -(runs) 1603 7082 w -(on) 1858 7082 w -(a) 2020 7082 w -(variety) 2114 7082 w -(of) 2475 7082 w -(architectures,) 2612 7082 w -(even) 3312 7082 w -(in) 3577 7082 w -(a) 3707 7082 w -(single) 3801 7082 w -(installation,) 4129 7082 w -(distin\255) 4736 7082 w -(guishing) 720 7202 w -(the) 1255 7202 w -(compilers) 1526 7202 w -(and) 2116 7202 w -(intermediate) 2411 7202 w -(names) 3140 7202 w -(simplifies) 3572 7202 w -(multi-architecture) 4154 7202 w +(import) 920 5834 w +(helix) 1375 5834 w +(/proc) 1765 5834 w +10 /LucidaSansUnicode00 f +(a local) 720 6014 w +10 /LucidaTypewriter f +(ps) 1064 6014 w +10 /LucidaSansUnicode00 f +(command reports on the status of Helix) 1240 6014 w +10 /LucidaSansUnicode20 f +(\031) 3178 6014 w +10 /LucidaSansUnicode00 f +(s processes.) 3210 6014 w +(Each) 970 6170 w +(supported) 1245 6170 w +(architecture) 1795 6170 w +(has) 2426 6170 w +(its) 2647 6170 w +(own) 2818 6170 w +(compilers) 3072 6170 w +(and) 3600 6170 w +(loader.) 3834 6170 w +(The) 4257 6170 w +(C) 4492 6170 w +(and) 4615 6170 w +(Alef) 4849 6170 w +(compilers) 720 6290 w +(produce) 1230 6290 w +(intermediate) 1663 6290 w +(files) 2312 6290 w +(that) 2549 6290 w +(are) 2775 6290 w +(portably) 2962 6290 w +(encoded;) 3398 6290 w +(the) 3877 6290 w +(contents) 4067 6290 w +(are) 4519 6290 w +(unique) 4706 6290 w +(to) 720 6410 w +(the) 856 6410 w +(target) 1049 6410 w +(architecture) 1375 6410 w +(but) 1991 6410 w +(the) 2191 6410 w +(format) 2384 6410 w +(of) 2746 6410 w +(the) 2882 6410 w +(file) 3075 6410 w +(is) 3264 6410 w +(independent) 3382 6410 w +(of) 4029 6410 w +(compiling) 4166 6410 w +(proces\255) 4684 6410 w +(sor) 720 6530 w +(type.) 913 6530 w +(When) 1225 6530 w +(a) 1531 6530 w +(compiler) 1626 6530 w +(for) 2089 6530 w +(a) 2268 6530 w +(given) 2363 6530 w +(architecture) 2663 6530 w +(is) 3280 6530 w +(compiled) 3399 6530 w +(on) 3883 6530 w +(another) 4045 6530 w +(type) 4458 6530 w +(of) 4705 6530 w +(pro\255) 4842 6530 w +(cessor) 720 6650 w +(and) 1080 6650 w +(then) 1309 6650 w +(used) 1575 6650 w +(to) 1856 6650 w +(compile) 2003 6650 w +(a) 2434 6650 w +(program) 2538 6650 w +(there,) 3003 6650 w +(the) 3336 6650 w +(intermediate) 3540 6650 w +(produced) 4203 6650 w +(on) 4712 6650 w +(the) 4885 6650 w +(new) 720 6770 w +(architecture) 975 6770 w +(is) 1613 6770 w +(identical) 1753 6770 w +(to) 2223 6770 w +(the) 2380 6770 w +(intermediate) 2594 6770 w +(produced) 3267 6770 w +(on) 3786 6770 w +(the) 3968 6770 w +(native) 4182 6770 w +(processor.) 4532 6770 w +(From the compiler) 720 6890 w +10 /LucidaSansUnicode20 f +(\031) 1611 6890 w +10 /LucidaSansUnicode00 f +(s point of view, every compilation is a cross-compilation.) 1643 6890 w +(Although) 970 7046 w +(each) 1467 7046 w +(architecture) 1744 7046 w +10 /LucidaSansUnicode20 f +(\031) 2322 7046 w +10 /LucidaSansUnicode00 f +(s) 2354 7046 w +(loader) 2458 7046 w +(accepts) 2816 7046 w +(only) 3233 7046 w +(intermediate) 3490 7046 w +(files) 4157 7046 w +(produced) 4412 7046 w +(by) 4925 7046 w +(compilers) 720 7166 w +(for) 1230 7166 w +(that) 1405 7166 w +(architecture,) 1632 7166 w +(such) 2278 7166 w +(files) 2540 7166 w +(could) 2778 7166 w +(have) 3080 7166 w +(been) 3341 7166 w +(generated) 3613 7166 w +(by) 4136 7166 w +(a) 4286 7166 w +(compiler) 4376 7166 w +(exe\255) 4834 7166 w +(cuting) 720 7286 w +(on) 1057 7286 w +(any) 1214 7286 w +(type) 1417 7286 w +(of) 1659 7286 w +(processor.) 1791 7286 w +(For) 2365 7286 w +(instance,) 2555 7286 w +(it) 3024 7286 w +(is) 3124 7286 w +(possible) 3239 7286 w +(to) 3677 7286 w +(run) 3810 7286 w +(the) 4010 7286 w +(MIPS) 4200 7286 w +(compiler) 4459 7286 w +(on) 4917 7286 w cleartomark showpage saveobj restore @@ -10170,685 +10150,658 @@ 11 pagesetup 10 /LucidaSansUnicode00 f (\255 11 \255) 2752 480 w -(development) 720 840 w -(from) 1383 840 w -(a) 1651 840 w -(single) 1742 840 w -(source) 2067 840 w -(tree.) 2425 840 w -(The) 2715 840 w -(compilers) 2932 840 w -(and) 3442 840 w -(the) 3658 840 w -(loader) 3849 840 w -(for) 4190 840 w -(each) 4365 840 w -(architec\255) 4625 840 w -(ture) 720 960 w -(are) 954 960 w -(uniquely) 1144 960 w -(named;) 1597 960 w -(there) 1996 960 w -(is) 2286 960 w -(no) 2404 960 w -10 /LucidaTypewriter f -(cc) 2564 960 w -10 /LucidaSansUnicode00 f -(command.) 2745 960 w -(The) 3324 960 w -(names) 3542 960 w -(are) 3896 960 w -(derived) 4085 960 w -(by) 4482 960 w -(concate\255) 4634 960 w -(nating) 720 1080 w -(a) 1071 1080 w -(code) 1170 1080 w -(letter) 1445 1080 w -(associated) 1745 1080 w -(with) 2298 1080 w -(the) 2547 1080 w -(target) 2746 1080 w -(architecture) 3078 1080 w -(with) 3700 1080 w -(the) 3949 1080 w -(name) 4148 1080 w -(of) 4459 1080 w -(the) 4602 1080 w -(com\255) 4802 1080 w -(piler) 720 1200 w -(or) 971 1200 w -(loader.) 1106 1200 w -(For) 1508 1200 w -(example,) 1697 1200 w -(the) 2175 1200 w -(letter) 2363 1200 w -10 /LucidaSansUnicode20 f -(\030) 2652 1200 w -10 /LucidaSansUnicode00 f -(8) 2684 1200 w -10 /LucidaSansUnicode20 f -(\031) 2747 1200 w -10 /LucidaSansUnicode00 f -(is) 2812 1200 w -(the) 2925 1200 w -(code) 3113 1200 w -(letter) 3377 1200 w -(for Intel) 3666 1200 w +(a 486, then use the MIPS loader on a SPARC to produce a MIPS executable.) 720 840 w +(Since) 970 996 w +(Plan) 1261 996 w +(9) 1501 996 w +(runs) 1603 996 w +(on) 1858 996 w +(a) 2020 996 w +(variety) 2114 996 w +(of) 2475 996 w +(architectures,) 2612 996 w +(even) 3312 996 w +(in) 3577 996 w +(a) 3707 996 w +(single) 3801 996 w +(installation,) 4129 996 w +(distin\255) 4736 996 w +(guishing) 720 1116 w +(the) 1189 1116 w +(compilers) 1394 1116 w +(and) 1918 1116 w +(intermediate) 2147 1116 w +(names) 2810 1116 w +(simplifies) 3176 1116 w +(multi-architecture) 3692 1116 w +(develop\255) 4627 1116 w +(ment) 720 1236 w +(from) 1006 1236 w +(a) 1276 1236 w +(single) 1369 1236 w +(source) 1696 1236 w +(tree.) 2056 1236 w +(The) 2348 1236 w +(compilers) 2567 1236 w +(and) 3079 1236 w +(the) 3297 1236 w +(loader) 3490 1236 w +(for) 3833 1236 w +(each) 4010 1236 w +(architecture) 4272 1236 w +(are) 4888 1236 w +(uniquely) 720 1356 w +(named;) 1177 1356 w +(there) 1580 1356 w +(is) 1874 1356 w +(no) 1996 1356 w +10 /LucidaTypewriter f +(cc) 2161 1356 w +10 /LucidaSansUnicode00 f +(command.) 2347 1356 w +(The) 2931 1356 w +(names) 3154 1356 w +(are) 3513 1356 w +(derived) 3707 1356 w +(by) 4108 1356 w +(concatenating) 4264 1356 w +(a) 4985 1356 w +(code) 720 1476 w +(letter) 1004 1476 w +(associated) 1313 1476 w +(with) 1875 1476 w +(the) 2133 1476 w +(target) 2341 1476 w +(architecture) 2682 1476 w +(with) 3313 1476 w +(the) 3571 1476 w +(name) 3780 1476 w +(of) 4100 1476 w +(the) 4252 1476 w +(compiler) 4461 1476 w +(or) 4938 1476 w +(loader.) 720 1596 w +(For) 1123 1596 w +(example,) 1313 1596 w +(the) 1792 1596 w +(letter) 1981 1596 w +10 /LucidaSansUnicode20 f +(\030) 2271 1596 w +10 /LucidaSansUnicode00 f +(8) 2303 1596 w +10 /LucidaSansUnicode20 f +(\031) 2366 1596 w +10 /LucidaSansUnicode00 f +(is) 2432 1596 w +(the) 2546 1596 w +(code) 2735 1596 w +(letter) 3000 1596 w +(for) 3289 1596 w +(Intel) 3461 1596 w 10 /LucidaSans-Italic f -(x) 4082 1200 w -10 /LucidaSansUnicode00 f -(86 processors; the) 4136 1200 w -(C) 720 1320 w -(compiler) 827 1320 w -(is) 1288 1320 w -(named) 1406 1320 w -10 /LucidaTypewriter f -(8c) 1773 1320 w +(x) 3707 1596 w 10 /LucidaSansUnicode00 f -(,) 1917 1320 w -(the) 1987 1320 w -(Alef) 2180 1320 w -(compiler) 2409 1320 w +(86) 3761 1596 w +(processors;) 3920 1596 w +(the) 4512 1596 w +(C) 4700 1596 w +(com\255) 4802 1596 w +(piler) 720 1716 w +(is) 984 1716 w +(named) 1110 1716 w +10 /LucidaTypewriter f +(8c) 1485 1716 w +10 /LucidaSansUnicode00 f +(,) 1629 1716 w +(the) 1707 1716 w +(Alef) 1908 1716 w +(compiler) 2145 1716 w +10 /LucidaTypewriter f +(8al) 2614 1716 w +10 /LucidaSansUnicode00 f +(,) 2830 1716 w +(and) 2908 1716 w +(the) 3134 1716 w +(loader) 3335 1716 w +(is) 3686 1716 w +(called) 3812 1716 w 10 /LucidaTypewriter f -(8al) 2870 1320 w +(8l) 4141 1716 w 10 /LucidaSansUnicode00 f -(,) 3086 1320 w -(and) 3156 1320 w -(the) 3374 1320 w -(loader) 3567 1320 w -(is) 3910 1320 w -(called) 4028 1320 w -10 /LucidaTypewriter f -(8l) 4350 1320 w -10 /LucidaSansUnicode00 f -(.) 4494 1320 w -(Similarly,) 4597 1320 w -(the compiler intermediate files are suffixed) 720 1440 w -10 /LucidaTypewriter f -(.8) 2854 1440 w -10 /LucidaSansUnicode00 f -(, not) 2998 1440 w +(.) 4285 1716 w +(Similarly,) 4395 1716 w +(the) 4885 1716 w +(compiler intermediate files are suffixed) 720 1836 w 10 /LucidaTypewriter f -(.o) 3254 1440 w +(.8) 2667 1836 w 10 /LucidaSansUnicode00 f -(.) 3398 1440 w -(The) 970 1596 w -(Plan) 1192 1596 w -(9) 1434 1596 w -(build) 1538 1596 w -(program) 1825 1596 w -10 /LucidaTypewriter f -(mk) 2282 1596 w -10 /LucidaSansUnicode00 f -(,) 2426 1596 w -(a) 2499 1596 w -(relative) 2595 1596 w -(of) 2991 1596 w +(, not) 2811 1836 w 10 /LucidaTypewriter f -(make) 3130 1596 w +(.o) 3067 1836 w 10 /LucidaSansUnicode00 f -(,) 3418 1596 w -(reads) 3491 1596 w -(the) 3798 1596 w -(names) 3994 1596 w -(of) 4353 1596 w -(the) 4493 1596 w -(current) 4690 1596 w -(and) 720 1716 w -(target) 934 1716 w -(architectures) 1256 1716 w -(from) 1919 1716 w -(environment) 2185 1716 w -(variables) 2830 1716 w -(called) 3294 1716 w -10 /LucidaTypewriter f -($cputype) 3610 1716 w -10 /LucidaSansUnicode00 f -(and) 4219 1716 w -10 /LucidaTypewriter f -($objtype) 4432 1716 w -10 /LucidaSansUnicode00 f -(.) 5008 1716 w -(By) 720 1836 w -(default) 876 1836 w -(the) 1261 1836 w -(current) 1462 1836 w -(processor) 1858 1836 w -(is) 2380 1836 w -(the) 2506 1836 w -(target,) 2707 1836 w -(but) 3073 1836 w -(setting) 3281 1836 w -10 /LucidaTypewriter f -($objtype) 3661 1836 w -10 /LucidaSansUnicode00 f -(to) 4283 1836 w -(the) 4427 1836 w -(name) 4629 1836 w -(of) 4942 1836 w -(another architecture before invoking) 720 1956 w +(.) 3211 1836 w +(The) 970 1992 w +(Plan) 1192 1992 w +(9) 1434 1992 w +(build) 1538 1992 w +(program) 1825 1992 w +10 /LucidaTypewriter f +(mk) 2282 1992 w +10 /LucidaSansUnicode00 f +(,) 2426 1992 w +(a) 2499 1992 w +(relative) 2595 1992 w +(of) 2991 1992 w +10 /LucidaTypewriter f +(make) 3130 1992 w +10 /LucidaSansUnicode00 f +(,) 3418 1992 w +(reads) 3491 1992 w +(the) 3798 1992 w +(names) 3994 1992 w +(of) 4353 1992 w +(the) 4493 1992 w +(current) 4690 1992 w +(and) 720 2112 w +(target) 934 2112 w +(architectures) 1256 2112 w +(from) 1919 2112 w +(environment) 2185 2112 w +(variables) 2830 2112 w +(called) 3294 2112 w +10 /LucidaTypewriter f +($cputype) 3610 2112 w +10 /LucidaSansUnicode00 f +(and) 4219 2112 w +10 /LucidaTypewriter f +($objtype) 4432 2112 w +10 /LucidaSansUnicode00 f +(.) 5008 2112 w +(By) 720 2232 w +(default) 876 2232 w +(the) 1261 2232 w +(current) 1462 2232 w +(processor) 1858 2232 w +(is) 2380 2232 w +(the) 2506 2232 w +(target,) 2707 2232 w +(but) 3073 2232 w +(setting) 3281 2232 w +10 /LucidaTypewriter f +($objtype) 3661 2232 w +10 /LucidaSansUnicode00 f +(to) 4283 2232 w +(the) 4427 2232 w +(name) 4629 2232 w +(of) 4942 2232 w +(another architecture before invoking) 720 2352 w 10 /LucidaTypewriter f -(mk) 2529 1956 w +(mk) 2529 2352 w 10 /LucidaSansUnicode00 f -(results in a cross-build:) 2705 1956 w +(results in a cross-build:) 2705 2352 w 9 /LucidaTypewriter f -(%) 1008 2126 w -(objtype=sparc) 1138 2126 w -(mk) 2048 2126 w -10 /LucidaSansUnicode00 f -(builds) 720 2306 w -(a) 1057 2306 w -(program) 1152 2306 w -(for) 1608 2306 w -(the) 1787 2306 w -(SPARC) 1982 2306 w -(architecture) 2332 2306 w -(regardless) 2950 2306 w -(of) 3495 2306 w -(the) 3633 2306 w -(executing) 3829 2306 w -(machine.) 4346 2306 w -(The) 4859 2306 w -(value) 720 2426 w -(of) 1026 2426 w -10 /LucidaTypewriter f -($objtype) 1176 2426 w -10 /LucidaSansUnicode00 f -(selects) 1804 2426 w -(a) 2187 2426 w -(file) 2294 2426 w -(of) 2497 2426 w -(architecture-dependent) 2646 2426 w -(variable) 3851 2426 w -(definitions) 4282 2426 w -(that) 4849 2426 w -(configures) 720 2546 w -(the) 1284 2546 w -(build) 1491 2546 w -(to) 1789 2546 w -(use) 1939 2546 w -(the) 2160 2546 w -(appropriate) 2367 2546 w -(compilers) 2983 2546 w -(and) 3509 2546 w -(loader.) 3742 2546 w -(Although) 4164 2546 w -(simple-) 4661 2546 w -(minded,) 720 2666 w -(this) 1156 2666 w -(technique) 1373 2666 w -(works) 1889 2666 w -(well) 2215 2666 w -(in) 2444 2666 w -(practice:) 2573 2666 w -(all) 3026 2666 w -(applications) 3177 2666 w -(in) 3800 2666 w -(Plan) 3929 2666 w -(9) 4168 2666 w -(are) 4269 2666 w -(built) 4459 2666 w -(from) 4716 2666 w -(a) 4985 2666 w -(single) 720 2786 w -(source) 1044 2786 w -(tree) 1401 2786 w -(and) 1626 2786 w -(it) 1841 2786 w -(is) 1942 2786 w -(possible) 2057 2786 w -(to) 2496 2786 w -(build) 2630 2786 w -(the) 2912 2786 w -(various) 3103 2786 w -(architectures) 3490 2786 w -(in) 4155 2786 w -(parallel) 4282 2786 w -(without) 4675 2786 w -(conflict.) 720 2906 w +(%) 920 2522 w +(objtype=sparc) 1050 2522 w +(mk) 1960 2522 w +10 /LucidaSansUnicode00 f +(builds) 720 2702 w +(a) 1057 2702 w +(program) 1152 2702 w +(for) 1608 2702 w +(the) 1787 2702 w +(SPARC) 1982 2702 w +(architecture) 2332 2702 w +(regardless) 2950 2702 w +(of) 3495 2702 w +(the) 3633 2702 w +(executing) 3829 2702 w +(machine.) 4346 2702 w +(The) 4859 2702 w +(value) 720 2822 w +(of) 1026 2822 w +10 /LucidaTypewriter f +($objtype) 1176 2822 w +10 /LucidaSansUnicode00 f +(selects) 1804 2822 w +(a) 2187 2822 w +(file) 2294 2822 w +(of) 2497 2822 w +(architecture-dependent) 2646 2822 w +(variable) 3851 2822 w +(definitions) 4282 2822 w +(that) 4849 2822 w +(configures) 720 2942 w +(the) 1284 2942 w +(build) 1491 2942 w +(to) 1789 2942 w +(use) 1939 2942 w +(the) 2160 2942 w +(appropriate) 2367 2942 w +(compilers) 2983 2942 w +(and) 3509 2942 w +(loader.) 3742 2942 w +(Although) 4164 2942 w +(simple-) 4661 2942 w +(minded,) 720 3062 w +(this) 1156 3062 w +(technique) 1373 3062 w +(works) 1889 3062 w +(well) 2215 3062 w +(in) 2444 3062 w +(practice:) 2573 3062 w +(all) 3026 3062 w +(applications) 3177 3062 w +(in) 3800 3062 w +(Plan) 3929 3062 w +(9) 4168 3062 w +(are) 4269 3062 w +(built) 4459 3062 w +(from) 4716 3062 w +(a) 4985 3062 w +(single) 720 3182 w +(source) 1044 3182 w +(tree) 1401 3182 w +(and) 1626 3182 w +(it) 1841 3182 w +(is) 1942 3182 w +(possible) 2057 3182 w +(to) 2496 3182 w +(build) 2630 3182 w +(the) 2912 3182 w +(various) 3103 3182 w +(architectures) 3490 3182 w +(in) 4155 3182 w +(parallel) 4282 3182 w +(without) 4675 3182 w +(conflict.) 720 3302 w 10 /LucidaSans-Demi f -(Parallel programming) 720 3146 w +(Parallel programming) 720 3542 w +10 /LucidaSansUnicode00 f +(Plan) 970 3698 w +(9) 1214 3698 w +10 /LucidaSansUnicode20 f +(\031) 1277 3698 w 10 /LucidaSansUnicode00 f -(Plan) 970 3302 w -(9) 1214 3302 w +(s) 1309 3698 w +(support) 1403 3698 w +(for) 1824 3698 w +(parallel) 2006 3698 w +(programming) 2406 3698 w +(has) 3111 3698 w +(two) 3322 3698 w +(aspects.) 3540 3698 w +(First,) 4011 3698 w +(the) 4298 3698 w +(kernel) 4496 3698 w +(pro\255) 4842 3698 w +(vides) 720 3818 w +(a) 1006 3818 w +(simple) 1096 3818 w +(process) 1452 3818 w +(model) 1861 3818 w +(and) 2198 3818 w +(a) 2413 3818 w +(few) 2502 3818 w +(carefully) 2706 3818 w +(designed) 3152 3818 w +(system) 3628 3818 w +(calls) 4002 3818 w +(for) 4251 3818 w +(synchroniza\255) 4424 3818 w +(tion) 720 3938 w +(and) 957 3938 w +(sharing.) 1185 3938 w +(Second,) 1659 3938 w +(a) 2086 3938 w +(new) 2189 3938 w +(parallel) 2432 3938 w +(programming) 2837 3938 w +(language) 3547 3938 w +(called) 4039 3938 w +(Alef) 4371 3938 w +(supports) 4611 3938 w +(concurrent) 720 4058 w +(programming.) 1279 4058 w +(Although) 2040 4058 w +(it) 2519 4058 w +(is) 2620 4058 w +(possible) 2735 4058 w +(to) 3173 4058 w +(write) 3306 4058 w +(parallel) 3581 4058 w +(programs) 3973 4058 w +(in) 4475 4058 w +(C,) 4600 4058 w +(Alef) 4735 4058 w +(is) 4960 4058 w +(the parallel language of choice.) 720 4178 w +(There) 970 4334 w +(is) 1287 4334 w +(a) 1406 4334 w +(trend) 1500 4334 w +(in) 1798 4334 w +(new) 1928 4334 w +(operating) 2162 4334 w +(systems) 2667 4334 w +(to) 3097 4334 w +(implement) 3234 4334 w +(two) 3791 4334 w +(classes) 4005 4334 w +(of) 4389 4334 w +(processes:) 4527 4334 w +(normal) 720 4454 w +(UNIX-style) 1102 4454 w +(processes) 1661 4454 w +(and) 2183 4454 w +(light-weight) 2404 4454 w +(kernel) 3044 4454 w +(threads.) 3386 4454 w +(Instead,) 3855 4454 w +(Plan) 4280 4454 w +(9) 4521 4454 w +(provides) 4624 4454 w +(a) 720 4574 w +(single) 813 4574 w +(class) 1140 4574 w +(of) 1415 4574 w +(process) 1552 4574 w +(but) 1965 4574 w +(allows) 2166 4574 w +(fine) 2507 4574 w +(control) 2730 4574 w +(of) 3111 4574 w +(the) 3248 4574 w +(sharing) 3442 4574 w +(of) 3843 4574 w +(a) 3980 4574 w +(process) 4074 4574 w +10 /LucidaSansUnicode20 f +(\031) 4448 4574 w +10 /LucidaSansUnicode00 f +(s) 4480 4574 w +(resources) 4570 4574 w +(such) 720 4694 w +(as) 982 4694 w +(memory) 1124 4694 w +(and) 1556 4694 w +(file) 1772 4694 w +(descriptors.) 1959 4694 w +(A) 2603 4694 w +(single) 2708 4694 w +(class) 3033 4694 w +(of) 3305 4694 w +(process) 3438 4694 w +(is) 3847 4694 w +(a) 3962 4694 w +(feasible) 4052 4694 w +(approach) 4463 4694 w +(in) 4949 4694 w +(Plan) 720 4814 w +(9) 962 4814 w +(because) 1066 4814 w +(the) 1501 4814 w +(kernel) 1697 4814 w +(has) 2040 4814 w +(an) 2249 4814 w +(efficient) 2407 4814 w +(system) 2842 4814 w +(call) 3223 4814 w +(interface) 3428 4814 w +(and) 3893 4814 w +(cheap) 4114 4814 w +(process) 4443 4814 w +(cre\255) 4859 4814 w +(ation and scheduling.) 720 4934 w +(Parallel) 970 5090 w +(programs) 1354 5090 w +(have) 1856 5090 w +(three) 2117 5090 w +(basic) 2405 5090 w +(requirements:) 2690 5090 w +(management) 3405 5090 w +(of) 4072 5090 w +(resources) 4206 5090 w +(shared) 4712 5090 w +(between) 720 5210 w +(processes,) 1172 5210 w +(an) 1730 5210 w +(interface) 1891 5210 w +(to) 2359 5210 w +(the) 2501 5210 w +(scheduler,) 2700 5210 w +(and) 3247 5210 w +(fine-grain) 3471 5210 w +(process) 4006 5210 w +(synchroniza\255) 4424 5210 w +(tion) 720 5330 w +(using) 952 5330 w +(spin) 1261 5330 w +(locks.) 1509 5330 w +(On) 1866 5330 w +(Plan) 2049 5330 w +(9,) 2293 5330 w +(new) 2431 5330 w +(processes) 2669 5330 w +(are) 3193 5330 w +(created) 3388 5330 w +(using) 3790 5330 w +(the) 4099 5330 w +10 /LucidaTypewriter f +(rfork) 4297 5330 w +10 /LucidaSansUnicode00 f +(system) 4700 5330 w +(call.) 720 5450 w +10 /LucidaTypewriter f +(Rfork) 998 5450 w +10 /LucidaSansUnicode00 f +(takes) 1407 5450 w +(a) 1713 5450 w +(single) 1817 5450 w +(argument,) 2155 5450 w +(a) 2704 5450 w +(bit) 2808 5450 w +(vector) 2986 5450 w +(that) 3333 5450 w +(specifies) 3573 5450 w +(which) 4045 5450 w +(of) 4375 5450 w +(the) 4522 5450 w +(parent) 4726 5450 w +(process) 720 5570 w +10 /LucidaSansUnicode20 f +(\031) 1094 5570 w +10 /LucidaSansUnicode00 f +(s) 1126 5570 w +(resources) 1243 5570 w +(should) 1779 5570 w +(be) 2173 5570 w +(shared,) 2358 5570 w +(copied,) 2784 5570 w +(or) 3205 5570 w +(created) 3373 5570 w +(anew) 3798 5570 w +(in) 4114 5570 w +(the) 4272 5570 w +(child.) 4494 5570 w +(The) 4859 5570 w +(resources) 720 5690 w +(controlled) 1254 5690 w +(by) 1808 5690 w +10 /LucidaTypewriter f +(rfork) 1987 5690 w +10 /LucidaSansUnicode00 f +(include) 2411 5690 w +(the) 2827 5690 w +(name) 3046 5690 w +(space,) 3376 5690 w +(the) 3747 5690 w +(environment,) 3965 5690 w +(the) 4671 5690 w +(file) 4889 5690 w +(descriptor) 720 5810 w +(table,) 1247 5810 w +(memory) 1553 5810 w +(segments,) 1983 5810 w +(and) 2517 5810 w +(notes) 2731 5810 w +(\(Plan) 3032 5810 w +(9) 3300 5810 w +10 /LucidaSansUnicode20 f +(\031) 3363 5810 w +10 /LucidaSansUnicode00 f +(s) 3395 5810 w +(analog) 3480 5810 w +(of) 3838 5810 w +(UNIX) 3970 5810 w +(signals\).) 4240 5810 w +(One) 4711 5810 w +(of) 4942 5810 w +(the) 720 5930 w +(bits) 914 5930 w +(controls) 1133 5930 w +(whether) 1565 5930 w +(the) 1995 5930 w +10 /LucidaTypewriter f +(rfork) 2189 5930 w +10 /LucidaSansUnicode00 f +(call) 2588 5930 w +(will) 2791 5930 w +(create) 2994 5930 w +(a) 3328 5930 w +(new) 3421 5930 w +(process;) 3654 5930 w +(if) 4098 5930 w +(the) 4202 5930 w +(bit) 4395 5930 w +(is) 4562 5930 w +(off,) 4680 5930 w +(the) 4885 5930 w +(resulting modification) 720 6050 w +(to) 1821 6050 w +(the) 1952 6050 w +(resources) 2140 6050 w +(occurs) 2643 6050 w +(in) 2993 6050 w +(the) 3117 6050 w +(process) 3305 6050 w +(making) 3712 6050 w +(the) 4104 6050 w +(call.) 4292 6050 w +(For) 4553 6050 w +(exam\255) 4742 6050 w +(ple,) 720 6170 w +(a) 936 6170 w +(process) 1027 6170 w +(calls) 1437 6170 w +10 /LucidaTypewriter f +(rfork\(RFNAMEG\)) 1688 6170 w +10 /LucidaSansUnicode00 f +(to) 2732 6170 w +(disconnect) 2866 6170 w +(its) 3425 6170 w +(name) 3578 6170 w +(space) 3880 6170 w +(from) 4192 6170 w +(its) 4459 6170 w +(parent) 4611 6170 w +10 /LucidaSansUnicode20 f +(\031) 4925 6170 w +10 /LucidaSansUnicode00 f +(s.) 4957 6170 w +(Alef) 720 6290 w +(uses) 953 6290 w +(a) 1215 6290 w +(fine-grained) 1312 6290 w +(fork) 1964 6290 w +(in) 2203 6290 w +(which) 2336 6290 w +(all) 2659 6290 w +(the) 2814 6290 w +(resources,) 3011 6290 w +(including) 3555 6290 w +(memory,) 4046 6290 w +(are) 4517 6290 w +(shared) 4712 6290 w +(between parent and child, analogous to creating a kernel thread in many systems.) 720 6410 w +(An) 970 6566 w +(indication) 1134 6566 w +(that) 1645 6566 w +10 /LucidaTypewriter f +(rfork) 1869 6566 w +10 /LucidaSansUnicode00 f +(is) 2262 6566 w +(the) 2375 6566 w +(right) 2563 6566 w +(model) 2827 6566 w +(is) 3162 6566 w +(the) 3276 6566 w +(variety) 3465 6566 w +(of) 3821 6566 w +(ways) 3953 6566 w +(it) 4222 6566 w +(is) 4322 6566 w +(used.) 4436 6566 w +(Other) 4766 6566 w +(than) 720 6686 w +(the) 972 6686 w +(canonical) 1163 6686 w +(use) 1653 6686 w +(in) 1857 6686 w +(the) 1983 6686 w +(library) 2173 6686 w +(routine) 2518 6686 w +10 /LucidaTypewriter f +(fork) 2901 6686 w +10 /LucidaSansUnicode00 f +(,) 3189 6686 w +(it) 3256 6686 w +(is) 3357 6686 w +(hard) 3472 6686 w +(to) 3728 6686 w +(find) 3861 6686 w +(two) 4087 6686 w +(calls) 4297 6686 w +(to) 4547 6686 w +10 /LucidaTypewriter f +(rfork) 4680 6686 w +10 /LucidaSansUnicode00 f +(with) 720 6806 w +(the) 968 6806 w +(same) 1166 6806 w +(bits) 1464 6806 w +(set;) 1687 6806 w +(programs) 1906 6806 w +(use) 2416 6806 w +(it) 2628 6806 w +(to) 2737 6806 w +(create) 2878 6806 w +(many) 3217 6806 w +(different) 3523 6806 w +(forms) 3985 6806 w +(of) 4312 6806 w +(sharing) 4454 6806 w +(and) 4860 6806 w +(resource) 720 6926 w +(allocation.) 1181 6926 w +(A) 1756 6926 w +(system) 1867 6926 w +(with) 2248 6926 w +(just) 2494 6926 w +(two) 2715 6926 w +(types) 2931 6926 w +(of) 3231 6926 w +(processes) 3370 6926 w +10 /LucidaSansUnicode20 f +(\024) 3851 6926 w +10 /LucidaSansUnicode00 f +(regular) 3951 6926 w +(processes) 4338 6926 w +(and) 4860 6926 w +(threads) 720 7046 w 10 /LucidaSansUnicode20 f -(\031) 1277 3302 w +(\024) 1085 7046 w 10 /LucidaSansUnicode00 f -(s) 1309 3302 w -(support) 1403 3302 w -(for) 1824 3302 w -(parallel) 2006 3302 w -(programming) 2406 3302 w -(has) 3111 3302 w -(two) 3322 3302 w -(aspects.) 3540 3302 w -(First,) 4011 3302 w -(the) 4298 3302 w -(kernel) 4496 3302 w -(pro\255) 4842 3302 w -(vides) 720 3422 w -(a) 1006 3422 w -(simple) 1096 3422 w -(process) 1452 3422 w -(model) 1861 3422 w -(and) 2198 3422 w -(a) 2413 3422 w -(few) 2502 3422 w -(carefully) 2706 3422 w -(designed) 3152 3422 w -(system) 3628 3422 w -(calls) 4002 3422 w -(for) 4251 3422 w -(synchroniza\255) 4424 3422 w -(tion) 720 3542 w -(and) 957 3542 w -(sharing.) 1185 3542 w -(Second,) 1659 3542 w -(a) 2086 3542 w -(new) 2189 3542 w -(parallel) 2432 3542 w -(programming) 2837 3542 w -(language) 3547 3542 w -(called) 4039 3542 w -(Alef) 4371 3542 w -(supports) 4611 3542 w -(concurrent) 720 3662 w -(programming.) 1279 3662 w -(Although) 2040 3662 w -(it) 2519 3662 w -(is) 2620 3662 w -(possible) 2735 3662 w -(to) 3173 3662 w -(write) 3306 3662 w -(parallel) 3581 3662 w -(programs) 3973 3662 w -(in) 4475 3662 w -(C,) 4600 3662 w -(Alef) 4735 3662 w -(is) 4960 3662 w -(the parallel language of choice.) 720 3782 w -(There) 970 3938 w -(is) 1287 3938 w -(a) 1406 3938 w -(trend) 1500 3938 w -(in) 1798 3938 w -(new) 1928 3938 w -(operating) 2162 3938 w -(systems) 2667 3938 w -(to) 3097 3938 w -(implement) 3234 3938 w -(two) 3791 3938 w -(classes) 4005 3938 w -(of) 4389 3938 w -(processes:) 4527 3938 w -(normal) 720 4058 w -(UNIX-style) 1102 4058 w -(processes) 1661 4058 w -(and) 2183 4058 w -(light-weight) 2404 4058 w -(kernel) 3044 4058 w -(threads.) 3386 4058 w -(Instead,) 3855 4058 w -(Plan) 4280 4058 w -(9) 4521 4058 w -(provides) 4624 4058 w -(a) 720 4178 w -(single) 813 4178 w -(class) 1140 4178 w -(of) 1415 4178 w -(process) 1552 4178 w -(but) 1965 4178 w -(allows) 2166 4178 w -(fine) 2507 4178 w -(control) 2730 4178 w -(of) 3111 4178 w -(the) 3248 4178 w -(sharing) 3442 4178 w -(of) 3843 4178 w -(a) 3980 4178 w -(process) 4074 4178 w -10 /LucidaSansUnicode20 f -(\031) 4448 4178 w -10 /LucidaSansUnicode00 f -(s) 4480 4178 w -(resources) 4570 4178 w -(such) 720 4298 w -(as) 982 4298 w -(memory) 1124 4298 w -(and) 1556 4298 w -(file) 1772 4298 w -(descriptors.) 1959 4298 w -(A) 2603 4298 w -(single) 2708 4298 w -(class) 3033 4298 w -(of) 3305 4298 w -(process) 3438 4298 w -(is) 3847 4298 w -(a) 3962 4298 w -(feasible) 4052 4298 w -(approach) 4463 4298 w -(in) 4949 4298 w -(Plan) 720 4418 w -(9) 962 4418 w -(because) 1066 4418 w -(the) 1501 4418 w -(kernel) 1697 4418 w -(has) 2040 4418 w -(an) 2249 4418 w -(efficient) 2407 4418 w -(system) 2842 4418 w -(call) 3223 4418 w -(interface) 3428 4418 w -(and) 3893 4418 w -(cheap) 4114 4418 w -(process) 4443 4418 w -(cre\255) 4859 4418 w -(ation and scheduling.) 720 4538 w -(Parallel) 970 4694 w -(programs) 1354 4694 w -(have) 1856 4694 w -(three) 2117 4694 w -(basic) 2405 4694 w -(requirements:) 2690 4694 w -(management) 3405 4694 w -(of) 4072 4694 w -(resources) 4206 4694 w -(shared) 4712 4694 w -(between) 720 4814 w -(processes,) 1172 4814 w -(an) 1730 4814 w -(interface) 1891 4814 w -(to) 2359 4814 w -(the) 2501 4814 w -(scheduler,) 2700 4814 w -(and) 3247 4814 w -(fine-grain) 3471 4814 w -(process) 4006 4814 w -(synchroniza\255) 4424 4814 w -(tion) 720 4934 w -(using) 952 4934 w -(spin) 1261 4934 w -(locks.) 1509 4934 w -(On) 1866 4934 w -(Plan) 2049 4934 w -(9,) 2293 4934 w -(new) 2431 4934 w -(processes) 2669 4934 w -(are) 3193 4934 w -(created) 3388 4934 w -(using) 3790 4934 w -(the) 4099 4934 w -10 /LucidaTypewriter f -(rfork) 4297 4934 w -10 /LucidaSansUnicode00 f -(system) 4700 4934 w -(call.) 720 5054 w -10 /LucidaTypewriter f -(Rfork) 998 5054 w -10 /LucidaSansUnicode00 f -(takes) 1407 5054 w -(a) 1713 5054 w -(single) 1817 5054 w -(argument,) 2155 5054 w -(a) 2704 5054 w -(bit) 2808 5054 w -(vector) 2986 5054 w -(that) 3333 5054 w -(specifies) 3573 5054 w -(which) 4045 5054 w -(of) 4375 5054 w -(the) 4522 5054 w -(parent) 4726 5054 w -(process) 720 5174 w -10 /LucidaSansUnicode20 f -(\031) 1094 5174 w -10 /LucidaSansUnicode00 f -(s) 1126 5174 w -(resources) 1243 5174 w -(should) 1779 5174 w -(be) 2173 5174 w -(shared,) 2358 5174 w -(copied,) 2784 5174 w -(or) 3205 5174 w -(created) 3373 5174 w -(anew) 3798 5174 w -(in) 4114 5174 w -(the) 4272 5174 w -(child.) 4494 5174 w -(The) 4859 5174 w -(resources) 720 5294 w -(controlled) 1254 5294 w -(by) 1808 5294 w -10 /LucidaTypewriter f -(rfork) 1987 5294 w -10 /LucidaSansUnicode00 f -(include) 2411 5294 w -(the) 2827 5294 w -(name) 3046 5294 w -(space,) 3376 5294 w -(the) 3747 5294 w -(environment,) 3965 5294 w -(the) 4671 5294 w -(file) 4889 5294 w -(descriptor) 720 5414 w -(table,) 1247 5414 w -(memory) 1553 5414 w -(segments,) 1983 5414 w -(and) 2517 5414 w -(notes) 2731 5414 w -(\(Plan) 3032 5414 w -(9) 3300 5414 w -10 /LucidaSansUnicode20 f -(\031) 3363 5414 w -10 /LucidaSansUnicode00 f -(s) 3395 5414 w -(analog) 3480 5414 w -(of) 3838 5414 w -(UNIX) 3970 5414 w -(signals\).) 4240 5414 w -(One) 4711 5414 w -(of) 4942 5414 w -(the) 720 5534 w -(bits) 914 5534 w -(controls) 1133 5534 w -(whether) 1565 5534 w -(the) 1995 5534 w -10 /LucidaTypewriter f -(rfork) 2189 5534 w -10 /LucidaSansUnicode00 f -(call) 2588 5534 w -(will) 2791 5534 w -(create) 2994 5534 w -(a) 3328 5534 w -(new) 3421 5534 w -(process;) 3654 5534 w -(if) 4098 5534 w -(the) 4202 5534 w -(bit) 4395 5534 w -(is) 4562 5534 w -(off,) 4680 5534 w -(the) 4885 5534 w -(resulting modification) 720 5654 w -(to) 1821 5654 w -(the) 1952 5654 w -(resources) 2140 5654 w -(occurs) 2643 5654 w -(in) 2993 5654 w -(the) 3117 5654 w -(process) 3305 5654 w -(making) 3712 5654 w -(the) 4104 5654 w -(call.) 4292 5654 w -(For) 4553 5654 w -(exam\255) 4742 5654 w -(ple,) 720 5774 w -(a) 936 5774 w -(process) 1027 5774 w -(calls) 1437 5774 w -10 /LucidaTypewriter f -(rfork\(RFNAMEG\)) 1688 5774 w -10 /LucidaSansUnicode00 f -(to) 2732 5774 w -(disconnect) 2866 5774 w -(its) 3425 5774 w -(name) 3578 5774 w -(space) 3880 5774 w -(from) 4192 5774 w -(its) 4459 5774 w -(parent) 4611 5774 w -10 /LucidaSansUnicode20 f -(\031) 4925 5774 w -10 /LucidaSansUnicode00 f -(s.) 4957 5774 w -(Alef) 720 5894 w -(uses) 953 5894 w -(a) 1215 5894 w -(fine-grained) 1312 5894 w -(fork) 1964 5894 w -(in) 2203 5894 w -(which) 2336 5894 w -(all) 2659 5894 w -(the) 2814 5894 w -(resources,) 3011 5894 w -(including) 3555 5894 w -(memory,) 4046 5894 w -(are) 4517 5894 w -(shared) 4712 5894 w -(between parent and child, analogous to creating a kernel thread in many systems.) 720 6014 w -(An) 970 6170 w -(indication) 1134 6170 w -(that) 1645 6170 w -10 /LucidaTypewriter f -(rfork) 1869 6170 w -10 /LucidaSansUnicode00 f -(is) 2262 6170 w -(the) 2375 6170 w -(right) 2563 6170 w -(model) 2827 6170 w -(is) 3162 6170 w -(the) 3276 6170 w -(variety) 3465 6170 w -(of) 3821 6170 w -(ways) 3953 6170 w -(it) 4222 6170 w -(is) 4322 6170 w -(used.) 4436 6170 w -(Other) 4766 6170 w -(than) 720 6290 w -(the) 972 6290 w -(canonical) 1163 6290 w -(use) 1653 6290 w -(in) 1857 6290 w -(the) 1983 6290 w -(library) 2173 6290 w -(routine) 2518 6290 w -10 /LucidaTypewriter f -(fork) 2901 6290 w -10 /LucidaSansUnicode00 f -(,) 3189 6290 w -(it) 3256 6290 w -(is) 3357 6290 w -(hard) 3472 6290 w -(to) 3728 6290 w -(find) 3861 6290 w -(two) 4087 6290 w -(calls) 4297 6290 w -(to) 4547 6290 w -10 /LucidaTypewriter f -(rfork) 4680 6290 w -10 /LucidaSansUnicode00 f -(with) 720 6410 w -(the) 968 6410 w -(same) 1166 6410 w -(bits) 1464 6410 w -(set;) 1687 6410 w -(programs) 1906 6410 w -(use) 2416 6410 w -(it) 2628 6410 w -(to) 2737 6410 w -(create) 2878 6410 w -(many) 3217 6410 w -(different) 3523 6410 w -(forms) 3985 6410 w -(of) 4312 6410 w -(sharing) 4454 6410 w -(and) 4860 6410 w -(resource) 720 6530 w -(allocation.) 1181 6530 w -(A) 1756 6530 w -(system) 1867 6530 w -(with) 2248 6530 w -(just) 2494 6530 w -(two) 2715 6530 w -(types) 2931 6530 w -(of) 3231 6530 w -(processes) 3370 6530 w -10 /LucidaSansUnicode20 f -(\024) 3851 6530 w -10 /LucidaSansUnicode00 f -(regular) 3951 6530 w -(processes) 4338 6530 w -(and) 4860 6530 w -(threads) 720 6650 w -10 /LucidaSansUnicode20 f -(\024) 1085 6650 w -10 /LucidaSansUnicode00 f -(could not handle this variety.) 1185 6650 w -(There) 970 6806 w -(are) 1287 6806 w -(two) 1478 6806 w -(ways) 1693 6806 w -(to) 1968 6806 w -(share) 2106 6806 w -(memory.) 2411 6806 w -(First,) 2911 6806 w -(a) 3195 6806 w -(flag) 3290 6806 w -(to) 3513 6806 w -10 /LucidaTypewriter f -(rfork) 3651 6806 w -10 /LucidaSansUnicode00 f -(causes) 4051 6806 w -(all) 4417 6806 w -(the) 4570 6806 w -(mem\255) 4765 6806 w -(ory) 720 6926 w -(segments) 907 6926 w -(of) 1408 6926 w -(the) 1539 6926 w -(parent) 1727 6926 w -(to) 2074 6926 w -(be) 2205 6926 w -(shared with the child \(except the stack, which is forked) 2357 6926 w -(copy-on-write) 720 7046 w -(regardless\).) 1474 7046 w -(Alternatively,) 2124 7046 w -(a) 2808 7046 w -(new) 2911 7046 w -(segment) 3154 7046 w -(of) 3619 7046 w -(memory) 3765 7046 w -(may) 4209 7046 w -(be) 4457 7046 w -(attached) 4624 7046 w -(using) 720 7166 w -(the) 1024 7166 w -10 /LucidaTypewriter f -(segattach) 1217 7166 w -10 /LucidaSansUnicode00 f -(system) 1903 7166 w -(call;) 2281 7166 w -(such) 2515 7166 w -(a) 2779 7166 w -(segment) 2872 7166 w -(will) 3326 7166 w -(always) 3527 7166 w -(be) 3883 7166 w -(shared) 4039 7166 w -(between) 4404 7166 w -(par\255) 4848 7166 w -(ent and child.) 720 7286 w +(could not handle this variety.) 1185 7046 w cleartomark showpage saveobj restore @@ -10859,647 +10812,626 @@ 12 pagesetup 10 /LucidaSansUnicode00 f (\255 12 \255) 2752 480 w -(The) 970 840 w -10 /LucidaTypewriter f -(rendezvous) 1192 840 w -10 /LucidaSansUnicode00 f -(system) 1953 840 w -(call) 2334 840 w -(provides) 2539 840 w -(a) 2996 840 w -(way) 3092 840 w -(for) 3317 840 w -(processes) 3497 840 w -(to) 4019 840 w -(synchronize.) 4159 840 w -(Alef) 4849 840 w -(uses) 720 960 w -(it) 995 960 w -(to) 1116 960 w -(implement) 1269 960 w -(communication) 1842 960 w -(channels,) 2642 960 w -(queuing) 3156 960 w -(locks,) 3606 960 w -(multiple) 3942 960 w -(reader/writer) 4394 960 w -(locks,) 720 1080 w -(and) 1049 1080 w -(the) 1276 1080 w -(sleep) 1478 1080 w -(and) 1780 1080 w -(wakeup) 2007 1080 w -(mechanism.) 2426 1080 w -10 /LucidaTypewriter f -(Rendezvous) 3090 1080 w -10 /LucidaSansUnicode00 f -(takes) 3858 1080 w -(two) 4163 1080 w -(arguments,) 4386 1080 w -(a) 4985 1080 w -(tag) 720 1200 w -(and) 915 1200 w -(a) 1136 1200 w -(value.) 1232 1200 w -(When) 1591 1200 w -(a) 1897 1200 w -(process) 1992 1200 w -(calls) 2406 1200 w -10 /LucidaTypewriter f -(rendezvous) 2661 1200 w -10 /LucidaSansUnicode00 f -(with) 3421 1200 w -(a) 3666 1200 w -(tag) 3761 1200 w -(it) 3955 1200 w -(sleeps) 4061 1200 w -(until) 4407 1200 w -(another) 4666 1200 w -(process) 720 1320 w -(presents) 1131 1320 w -(a) 1585 1320 w -(matching) 1677 1320 w -(tag.) 2165 1320 w -(When) 2420 1320 w -(a) 2723 1320 w -(pair) 2815 1320 w -(of) 3040 1320 w -(tags) 3175 1320 w -(match,) 3418 1320 w -(the) 3786 1320 w -(values) 3979 1320 w -(are) 4322 1320 w -(exchanged) 4512 1320 w -(between) 720 1440 w -(the) 1164 1440 w -(two) 1356 1440 w -(processes) 1568 1440 w -(and) 2086 1440 w -(both) 2303 1440 w -10 /LucidaTypewriter f -(rendezvous) 2563 1440 w -10 /LucidaSansUnicode00 f -(calls) 3319 1440 w -(return.) 3570 1440 w -(This) 3969 1440 w -(primitive) 4210 1440 w -(is) 4675 1440 w -(suffi\255) 4791 1440 w -(cient to implement the full set of synchronization routines.) 720 1560 w -(Finally,) 970 1716 w -(spin) 1352 1716 w -(locks) 1597 1716 w -(are) 1887 1716 w -(provided) 2079 1716 w -(by) 2547 1716 w -(an) 2702 1716 w -(architecture-dependent) 2859 1716 w -(library) 4053 1716 w -(at) 4403 1716 w -(user) 4535 1716 w -(level.) 4786 1716 w -(Most) 720 1836 w -(processors) 991 1836 w -(provide) 1554 1836 w -(atomic) 1955 1836 w -(test) 2317 1836 w -(and) 2534 1836 w -(set) 2750 1836 w -(instructions) 2930 1836 w -(that) 3539 1836 w -(can) 3765 1836 w -(be) 3968 1836 w -(used) 4122 1836 w -(to) 4389 1836 w -(implement) 4522 1836 w -(locks.) 720 1956 w -(A) 1073 1956 w -(notable) 1182 1956 w -(exception) 1585 1956 w -(is) 2101 1956 w -(the) 2221 1956 w -(MIPS) 2416 1956 w -(R3000,) 2680 1956 w -(so) 3067 1956 w -(the) 3219 1956 w -(SGI) 3414 1956 w -(Power) 3609 1956 w -(series) 3939 1956 w -(multiprocessors) 4263 1956 w -(have) 720 2076 w -(special) 979 2076 w -(lock) 1347 2076 w -(hardware) 1580 2076 w -(on) 2064 2076 w -(the) 2221 2076 w -(bus.) 2410 2076 w -(User) 2684 2076 w -(processes) 2935 2076 w -(gain) 3450 2076 w -(access) 3691 2076 w -(to) 4039 2076 w -(the) 4170 2076 w -(lock) 4358 2076 w -(hardware) 4590 2076 w -(by) 720 2196 w -(mapping) 881 2196 w -(pages) 1354 2196 w -(of) 1687 2196 w -(hardware) 1831 2196 w -(locks) 2327 2196 w -(into) 2623 2196 w -(their) 2858 2196 w -(address) 3129 2196 w -(space) 3555 2196 w -(using) 3877 2196 w -(the) 4190 2196 w -10 /LucidaTypewriter f -(segattach) 4392 2196 w -10 /LucidaSansUnicode00 f -(system call.) 720 2316 w -(A) 970 2472 w -(Plan) 1078 2472 w -(9) 1318 2472 w -(process) 1420 2472 w -(in) 1833 2472 w -(a) 1963 2472 w -(system) 2057 2472 w -(call) 2437 2472 w -(will) 2641 2472 w -(block) 2845 2472 w -(regardless) 3147 2472 w -(of) 3692 2472 w -(its) 3830 2472 w -10 /LucidaSansUnicode20 f -(\030) 3987 2472 w -10 /LucidaSansUnicode00 f -(weight) 4019 2472 w -10 /LucidaSansUnicode20 f -(\031) 4342 2472 w -10 /LucidaSansUnicode00 f -(.) 4374 2472 w -(This) 4478 2472 w -(means) 4723 2472 w -(that) 720 2592 w -(when) 949 2592 w -(a) 1244 2592 w -(program) 1337 2592 w -(wishes) 1791 2592 w -(to) 2155 2592 w -(read) 2291 2592 w -(from) 2544 2592 w -(a) 2814 2592 w -(slow) 2907 2592 w -(device) 3163 2592 w -(without) 3508 2592 w -(blocking) 3910 2592 w -(the) 4362 2592 w -(entire) 4554 2592 w -(cal\255) 4872 2592 w -(culation,) 720 2712 w -(it) 1176 2712 w -(must) 1280 2712 w -(fork) 1562 2712 w -(a) 1798 2712 w -(process) 1892 2712 w -(to) 2305 2712 w -(do) 2442 2712 w -(the) 2605 2712 w -(read) 2799 2712 w -(for) 3053 2712 w -(it.) 3231 2712 w -(The) 3400 2712 w -(solution) 3620 2712 w -(is) 4051 2712 w -(to) 4170 2712 w -(start) 4307 2712 w -(a) 4567 2712 w -(satellite) 4661 2712 w -(process) 720 2832 w -(that) 1132 2832 w -(does) 1361 2832 w -(the) 1630 2832 w -(I/O) 1823 2832 w -(and) 2021 2832 w -(delivers) 2239 2832 w -(the) 2654 2832 w -(answer) 2847 2832 w -(to) 3227 2832 w -(the) 3363 2832 w -(main) 3556 2832 w -(program) 3833 2832 w -(through) 4287 2832 w -(shared) 4712 2832 w -(memory) 720 2952 w -(or) 1168 2952 w -(perhaps) 1322 2952 w -(a) 1765 2952 w -(pipe.) 1872 2952 w -(This) 2199 2952 w -(sounds) 2457 2952 w -(onerous) 2860 2952 w -(but) 3307 2952 w -(works) 3522 2952 w -(easily) 3863 2952 w -(and) 4188 2952 w -(efficiently) 4421 2952 w -(in) 4949 2952 w -(practice;) 720 3072 w -(in) 1174 3072 w -(fact,) 1304 3072 w -(most) 1555 3072 w -(interactive) 1836 3072 w -(Plan) 2380 3072 w -(9) 2619 3072 w -(applications,) 2720 3072 w -(even) 3375 3072 w -(relatively) 3639 3072 w -(ordinary) 4113 3072 w -(ones) 4555 3072 w -(writ\255) 4823 3072 w -(ten in C, such as the text editor Sam [Pike87], run as multiprocess programs.) 720 3192 w -(The) 970 3348 w -(kernel) 1197 3348 w -(support) 1546 3348 w -(for) 1971 3348 w -(parallel) 2157 3348 w -(programming) 2561 3348 w -(in) 3270 3348 w -(Plan) 3408 3348 w -(9) 3656 3348 w -(is) 3766 3348 w -(a) 3893 3348 w -(few) 3995 3348 w -(hundred) 4212 3348 w -(lines) 4668 3348 w -(of) 4942 3348 w -(portable) 720 3468 w -(code;) 1160 3468 w -(a) 1458 3468 w -(handful) 1548 3468 w -(of) 1953 3468 w -(simple) 2086 3468 w -(primitives) 2442 3468 w -(enable) 2957 3468 w -(the) 3313 3468 w -(problems) 3503 3468 w -(to) 3995 3468 w -(be) 4128 3468 w -(handled) 4282 3468 w -(cleanly) 4706 3468 w -(at) 720 3588 w -(user) 848 3588 w -(level.) 1095 3588 w -(Although) 1418 3588 w -(the) 1899 3588 w -(primitives) 2091 3588 w -(work) 2608 3588 w -(fine) 2882 3588 w -(from) 3103 3588 w -(C,) 3372 3588 w -(they) 3510 3588 w -(are) 3754 3588 w -(particularly) 3943 3588 w -(expressive) 4524 3588 w -(from) 720 3708 w -(within) 985 3708 w -(Alef.) 1314 3708 w -(The) 1602 3708 w -(creation) 1816 3708 w -(and) 2241 3708 w -(management of slave I/O processes can be written in) 2454 3708 w -(a) 720 3828 w -(few) 808 3828 w -(lines) 1011 3828 w -(of) 1271 3828 w -(Alef,) 1403 3828 w -(providing) 1660 3828 w -(the) 2156 3828 w -(foundation) 2345 3828 w -(for) 2908 3828 w -(a) 3081 3828 w -(consistent) 3170 3828 w -(means) 3701 3828 w -(of) 4052 3828 w -(multiplexing) 4184 3828 w -(data) 4830 3828 w -(flows) 720 3948 w -(between) 1010 3948 w -(arbitrary) 1452 3948 w -(processes.) 1901 3948 w -(Moreover,) 2481 3948 w -(implementing) 3002 3948 w -(it) 3707 3948 w -(in) 3807 3948 w -(a) 3932 3948 w -(language) 4021 3948 w -(rather) 4498 3948 w -(than) 4824 3948 w -(in the kernel ensures consistent semantics between all devices and provides a) 720 4068 w -(more) 4543 4068 w -(gen\255) 4827 4068 w -(eral) 720 4188 w -(multiplexing) 950 4188 w -(primitive.) 1610 4188 w -(Compare) 2151 4188 w -(this) 2637 4188 w -(to) 2864 4188 w -(the) 3010 4188 w -(UNIX) 3213 4188 w -10 /LucidaTypewriter f -(select) 3496 4188 w -10 /LucidaSansUnicode00 f -(system) 3976 4188 w -(call:) 4364 4188 w -10 /LucidaTypewriter f -(select) 4608 4188 w -10 /LucidaSansUnicode00 f -(applies) 720 4308 w -(only) 1104 4308 w -(to) 1346 4308 w -(a) 1482 4308 w -(restricted) 1575 4308 w -(set) 2075 4308 w -(of) 2257 4308 w -(devices,) 2393 4308 w -(legislates) 2821 4308 w -(a) 3314 4308 w -(style) 3407 4308 w -(of) 3670 4308 w -(multiprogramming) 3806 4308 w -(in) 4756 4308 w -(the) 4885 4308 w -(kernel, does not extend across networks, is difficult to implement, and is hard to use.) 720 4428 w -(Another) 970 4584 w -(reason) 1395 4584 w -(parallel) 1758 4584 w -(programming) 2152 4584 w -(is) 2851 4584 w -(important) 2968 4584 w -(in) 3483 4584 w -(Plan) 3612 4584 w -(9) 3851 4584 w -(is) 3952 4584 w -(that) 4070 4584 w -(multi-threaded) 4299 4584 w -(user-level) 720 4704 w -(file) 1255 4704 w -(servers) 1451 4704 w -(are) 1844 4704 w -(the) 2041 4704 w -(preferred) 2241 4704 w -(way) 2739 4704 w -(to) 2967 4704 w -(implement) 3109 4704 w -(services.) 3671 4704 w -(Examples) 4166 4704 w -(of) 4672 4704 w -(such) 4814 4704 w -(servers) 720 4824 w -(include) 1101 4824 w -(the) 1486 4824 w -(programming) 1674 4824 w -(environment) 2369 4824 w -(Acme) 3013 4824 w -([Pike94],) 3315 4824 w -(the) 3770 4824 w -(name) 3958 4824 w -(space) 4258 4824 w -(exporting) 4568 4824 w -(tool) 720 4944 w -10 /LucidaTypewriter f -(exportfs) 951 4944 w -10 /LucidaSansUnicode00 f -([PPTTW93],) 1570 4944 w -(the) 2159 4944 w -(HTTP) 2357 4944 w -(daemon,) 2655 4944 w -(and) 3120 4944 w -(the) 3343 4944 w -(network) 3541 4944 w -(name) 3976 4944 w -(servers) 4284 4944 w -10 /LucidaTypewriter f -(cs) 4674 4944 w -10 /LucidaSansUnicode00 f -(and) 4860 4944 w -10 /LucidaTypewriter f -(dns) 720 5064 w -10 /LucidaSansUnicode00 f -([PrWi93].) 974 5064 w -(Complex) 1479 5064 w -(applications) 1949 5064 w -(such) 2572 5064 w -(as) 2836 5064 w -(Acme) 2980 5064 w -(prove) 3287 5064 w -(that) 3598 5064 w -(careful) 3827 5064 w -(operating) 4196 5064 w -(system) 4700 5064 w -(support) 720 5184 w -(can) 1136 5184 w -(reduce) 1342 5184 w -(the) 1709 5184 w -(difficulty) 1902 5184 w -(of) 2366 5184 w -(writing) 2502 5184 w -(multi-threaded) 2877 5184 w -(applications) 3656 5184 w -(without) 4279 5184 w -(moving) 4681 5184 w -(threading and synchronization primitives into the kernel.) 720 5304 w +(There) 970 840 w +(are) 1287 840 w +(two) 1478 840 w +(ways) 1693 840 w +(to) 1968 840 w +(share) 2106 840 w +(memory.) 2411 840 w +(First,) 2911 840 w +(a) 3195 840 w +(flag) 3290 840 w +(to) 3513 840 w +10 /LucidaTypewriter f +(rfork) 3651 840 w +10 /LucidaSansUnicode00 f +(causes) 4051 840 w +(all) 4417 840 w +(the) 4570 840 w +(mem\255) 4765 840 w +(ory) 720 960 w +(segments) 907 960 w +(of) 1408 960 w +(the) 1539 960 w +(parent) 1727 960 w +(to) 2074 960 w +(be) 2205 960 w +(shared with the child \(except the stack, which is forked) 2357 960 w +(copy-on-write) 720 1080 w +(regardless\).) 1474 1080 w +(Alternatively,) 2124 1080 w +(a) 2808 1080 w +(new) 2911 1080 w +(segment) 3154 1080 w +(of) 3619 1080 w +(memory) 3765 1080 w +(may) 4209 1080 w +(be) 4457 1080 w +(attached) 4624 1080 w +(using) 720 1200 w +(the) 1024 1200 w +10 /LucidaTypewriter f +(segattach) 1217 1200 w +10 /LucidaSansUnicode00 f +(system) 1903 1200 w +(call;) 2281 1200 w +(such) 2515 1200 w +(a) 2779 1200 w +(segment) 2872 1200 w +(will) 3326 1200 w +(always) 3527 1200 w +(be) 3883 1200 w +(shared) 4039 1200 w +(between) 4404 1200 w +(par\255) 4848 1200 w +(ent and child.) 720 1320 w +(The) 970 1476 w +10 /LucidaTypewriter f +(rendezvous) 1192 1476 w +10 /LucidaSansUnicode00 f +(system) 1953 1476 w +(call) 2334 1476 w +(provides) 2539 1476 w +(a) 2996 1476 w +(way) 3092 1476 w +(for) 3317 1476 w +(processes) 3497 1476 w +(to) 4019 1476 w +(synchronize.) 4159 1476 w +(Alef) 4849 1476 w +(uses) 720 1596 w +(it) 995 1596 w +(to) 1116 1596 w +(implement) 1269 1596 w +(communication) 1842 1596 w +(channels,) 2642 1596 w +(queuing) 3156 1596 w +(locks,) 3606 1596 w +(multiple) 3942 1596 w +(reader/writer) 4394 1596 w +(locks,) 720 1716 w +(and) 1049 1716 w +(the) 1276 1716 w +(sleep) 1478 1716 w +(and) 1780 1716 w +(wakeup) 2007 1716 w +(mechanism.) 2426 1716 w +10 /LucidaTypewriter f +(Rendezvous) 3090 1716 w +10 /LucidaSansUnicode00 f +(takes) 3858 1716 w +(two) 4163 1716 w +(arguments,) 4386 1716 w +(a) 4985 1716 w +(tag) 720 1836 w +(and) 915 1836 w +(a) 1136 1836 w +(value.) 1232 1836 w +(When) 1591 1836 w +(a) 1897 1836 w +(process) 1992 1836 w +(calls) 2406 1836 w +10 /LucidaTypewriter f +(rendezvous) 2661 1836 w +10 /LucidaSansUnicode00 f +(with) 3421 1836 w +(a) 3666 1836 w +(tag) 3761 1836 w +(it) 3955 1836 w +(sleeps) 4061 1836 w +(until) 4407 1836 w +(another) 4666 1836 w +(process) 720 1956 w +(presents) 1131 1956 w +(a) 1585 1956 w +(matching) 1677 1956 w +(tag.) 2165 1956 w +(When) 2420 1956 w +(a) 2723 1956 w +(pair) 2815 1956 w +(of) 3040 1956 w +(tags) 3175 1956 w +(match,) 3418 1956 w +(the) 3786 1956 w +(values) 3979 1956 w +(are) 4322 1956 w +(exchanged) 4512 1956 w +(between) 720 2076 w +(the) 1164 2076 w +(two) 1356 2076 w +(processes) 1568 2076 w +(and) 2086 2076 w +(both) 2303 2076 w +10 /LucidaTypewriter f +(rendezvous) 2563 2076 w +10 /LucidaSansUnicode00 f +(calls) 3319 2076 w +(return.) 3570 2076 w +(This) 3969 2076 w +(primitive) 4210 2076 w +(is) 4675 2076 w +(suffi\255) 4791 2076 w +(cient to implement the full set of synchronization routines.) 720 2196 w +(Finally,) 970 2352 w +(spin) 1352 2352 w +(locks) 1597 2352 w +(are) 1887 2352 w +(provided) 2079 2352 w +(by) 2547 2352 w +(an) 2702 2352 w +(architecture-dependent) 2859 2352 w +(library) 4053 2352 w +(at) 4403 2352 w +(user) 4535 2352 w +(level.) 4786 2352 w +(Most) 720 2472 w +(processors) 991 2472 w +(provide) 1554 2472 w +(atomic) 1955 2472 w +(test) 2317 2472 w +(and) 2534 2472 w +(set) 2750 2472 w +(instructions) 2930 2472 w +(that) 3539 2472 w +(can) 3765 2472 w +(be) 3968 2472 w +(used) 4122 2472 w +(to) 4389 2472 w +(implement) 4522 2472 w +(locks.) 720 2592 w +(A) 1073 2592 w +(notable) 1182 2592 w +(exception) 1585 2592 w +(is) 2101 2592 w +(the) 2221 2592 w +(MIPS) 2416 2592 w +(R3000,) 2680 2592 w +(so) 3067 2592 w +(the) 3219 2592 w +(SGI) 3414 2592 w +(Power) 3609 2592 w +(series) 3939 2592 w +(multiprocessors) 4263 2592 w +(have) 720 2712 w +(special) 979 2712 w +(lock) 1347 2712 w +(hardware) 1580 2712 w +(on) 2064 2712 w +(the) 2221 2712 w +(bus.) 2410 2712 w +(User) 2684 2712 w +(processes) 2935 2712 w +(gain) 3450 2712 w +(access) 3691 2712 w +(to) 4039 2712 w +(the) 4170 2712 w +(lock) 4358 2712 w +(hardware) 4590 2712 w +(by) 720 2832 w +(mapping) 881 2832 w +(pages) 1354 2832 w +(of) 1687 2832 w +(hardware) 1831 2832 w +(locks) 2327 2832 w +(into) 2623 2832 w +(their) 2858 2832 w +(address) 3129 2832 w +(space) 3555 2832 w +(using) 3877 2832 w +(the) 4190 2832 w +10 /LucidaTypewriter f +(segattach) 4392 2832 w +10 /LucidaSansUnicode00 f +(system call.) 720 2952 w +(A) 970 3108 w +(Plan) 1078 3108 w +(9) 1318 3108 w +(process) 1420 3108 w +(in) 1833 3108 w +(a) 1963 3108 w +(system) 2057 3108 w +(call) 2437 3108 w +(will) 2641 3108 w +(block) 2845 3108 w +(regardless) 3147 3108 w +(of) 3692 3108 w +(its) 3830 3108 w +10 /LucidaSansUnicode20 f +(\030) 3987 3108 w +10 /LucidaSansUnicode00 f +(weight) 4019 3108 w +10 /LucidaSansUnicode20 f +(\031) 4342 3108 w +10 /LucidaSansUnicode00 f +(.) 4374 3108 w +(This) 4478 3108 w +(means) 4723 3108 w +(that) 720 3228 w +(when) 949 3228 w +(a) 1244 3228 w +(program) 1337 3228 w +(wishes) 1791 3228 w +(to) 2155 3228 w +(read) 2291 3228 w +(from) 2544 3228 w +(a) 2814 3228 w +(slow) 2907 3228 w +(device) 3163 3228 w +(without) 3508 3228 w +(blocking) 3910 3228 w +(the) 4362 3228 w +(entire) 4554 3228 w +(cal\255) 4872 3228 w +(culation,) 720 3348 w +(it) 1176 3348 w +(must) 1280 3348 w +(fork) 1562 3348 w +(a) 1798 3348 w +(process) 1892 3348 w +(to) 2305 3348 w +(do) 2442 3348 w +(the) 2605 3348 w +(read) 2799 3348 w +(for) 3053 3348 w +(it.) 3231 3348 w +(The) 3400 3348 w +(solution) 3620 3348 w +(is) 4051 3348 w +(to) 4170 3348 w +(start) 4307 3348 w +(a) 4567 3348 w +(satellite) 4661 3348 w +(process) 720 3468 w +(that) 1132 3468 w +(does) 1361 3468 w +(the) 1630 3468 w +(I/O) 1823 3468 w +(and) 2021 3468 w +(delivers) 2239 3468 w +(the) 2654 3468 w +(answer) 2847 3468 w +(to) 3227 3468 w +(the) 3363 3468 w +(main) 3556 3468 w +(program) 3833 3468 w +(through) 4287 3468 w +(shared) 4712 3468 w +(memory) 720 3588 w +(or) 1168 3588 w +(perhaps) 1322 3588 w +(a) 1765 3588 w +(pipe.) 1872 3588 w +(This) 2199 3588 w +(sounds) 2457 3588 w +(onerous) 2860 3588 w +(but) 3307 3588 w +(works) 3522 3588 w +(easily) 3863 3588 w +(and) 4188 3588 w +(efficiently) 4421 3588 w +(in) 4949 3588 w +(practice;) 720 3708 w +(in) 1174 3708 w +(fact,) 1304 3708 w +(most) 1555 3708 w +(interactive) 1836 3708 w +(Plan) 2380 3708 w +(9) 2619 3708 w +(applications,) 2720 3708 w +(even) 3375 3708 w +(relatively) 3639 3708 w +(ordinary) 4113 3708 w +(ones) 4555 3708 w +(writ\255) 4823 3708 w +(ten in C, such as the text editor Sam [Pike87], run as multiprocess programs.) 720 3828 w +(The) 970 3984 w +(kernel) 1197 3984 w +(support) 1546 3984 w +(for) 1971 3984 w +(parallel) 2157 3984 w +(programming) 2561 3984 w +(in) 3270 3984 w +(Plan) 3408 3984 w +(9) 3656 3984 w +(is) 3766 3984 w +(a) 3893 3984 w +(few) 3995 3984 w +(hundred) 4212 3984 w +(lines) 4668 3984 w +(of) 4942 3984 w +(portable) 720 4104 w +(code;) 1160 4104 w +(a) 1458 4104 w +(handful) 1548 4104 w +(of) 1953 4104 w +(simple) 2086 4104 w +(primitives) 2442 4104 w +(enable) 2957 4104 w +(the) 3313 4104 w +(problems) 3503 4104 w +(to) 3995 4104 w +(be) 4128 4104 w +(handled) 4282 4104 w +(cleanly) 4706 4104 w +(at) 720 4224 w +(user) 848 4224 w +(level.) 1095 4224 w +(Although) 1418 4224 w +(the) 1899 4224 w +(primitives) 2091 4224 w +(work) 2608 4224 w +(fine) 2882 4224 w +(from) 3103 4224 w +(C,) 3372 4224 w +(they) 3510 4224 w +(are) 3754 4224 w +(particularly) 3943 4224 w +(expressive) 4524 4224 w +(from) 720 4344 w +(within) 985 4344 w +(Alef.) 1314 4344 w +(The) 1602 4344 w +(creation) 1816 4344 w +(and) 2241 4344 w +(management of slave I/O processes can be written in) 2454 4344 w +(a) 720 4464 w +(few) 808 4464 w +(lines) 1011 4464 w +(of) 1271 4464 w +(Alef,) 1403 4464 w +(providing) 1660 4464 w +(the) 2156 4464 w +(foundation) 2345 4464 w +(for) 2908 4464 w +(a) 3081 4464 w +(consistent) 3170 4464 w +(means) 3701 4464 w +(of) 4052 4464 w +(multiplexing) 4184 4464 w +(data) 4830 4464 w +(flows) 720 4584 w +(between) 1010 4584 w +(arbitrary) 1452 4584 w +(processes.) 1901 4584 w +(Moreover,) 2481 4584 w +(implementing) 3002 4584 w +(it) 3707 4584 w +(in) 3807 4584 w +(a) 3932 4584 w +(language) 4021 4584 w +(rather) 4498 4584 w +(than) 4824 4584 w +(in the kernel ensures consistent semantics between all devices and provides a) 720 4704 w +(more) 4543 4704 w +(gen\255) 4827 4704 w +(eral) 720 4824 w +(multiplexing) 950 4824 w +(primitive.) 1610 4824 w +(Compare) 2151 4824 w +(this) 2637 4824 w +(to) 2864 4824 w +(the) 3010 4824 w +(UNIX) 3213 4824 w +10 /LucidaTypewriter f +(select) 3496 4824 w +10 /LucidaSansUnicode00 f +(system) 3976 4824 w +(call:) 4364 4824 w +10 /LucidaTypewriter f +(select) 4608 4824 w +10 /LucidaSansUnicode00 f +(applies) 720 4944 w +(only) 1104 4944 w +(to) 1346 4944 w +(a) 1482 4944 w +(restricted) 1575 4944 w +(set) 2075 4944 w +(of) 2257 4944 w +(devices,) 2393 4944 w +(legislates) 2821 4944 w +(a) 3314 4944 w +(style) 3407 4944 w +(of) 3670 4944 w +(multiprogramming) 3806 4944 w +(in) 4756 4944 w +(the) 4885 4944 w +(kernel, does not extend across networks, is difficult to implement, and is hard to use.) 720 5064 w +(Another) 970 5220 w +(reason) 1395 5220 w +(parallel) 1758 5220 w +(programming) 2152 5220 w +(is) 2851 5220 w +(important) 2968 5220 w +(in) 3483 5220 w +(Plan) 3612 5220 w +(9) 3851 5220 w +(is) 3952 5220 w +(that) 4070 5220 w +(multi-threaded) 4299 5220 w +(user-level) 720 5340 w +(file) 1255 5340 w +(servers) 1451 5340 w +(are) 1844 5340 w +(the) 2041 5340 w +(preferred) 2241 5340 w +(way) 2739 5340 w +(to) 2967 5340 w +(implement) 3109 5340 w +(services.) 3671 5340 w +(Examples) 4166 5340 w +(of) 4672 5340 w +(such) 4814 5340 w +(servers) 720 5460 w +(include) 1101 5460 w +(the) 1486 5460 w +(programming) 1674 5460 w +(environment) 2369 5460 w +(Acme) 3013 5460 w +([Pike94],) 3315 5460 w +(the) 3770 5460 w +(name) 3958 5460 w +(space) 4258 5460 w +(exporting) 4568 5460 w +(tool) 720 5580 w +10 /LucidaTypewriter f +(exportfs) 951 5580 w +10 /LucidaSansUnicode00 f +([PPTTW93],) 1570 5580 w +(the) 2159 5580 w +(HTTP) 2357 5580 w +(daemon,) 2655 5580 w +(and) 3120 5580 w +(the) 3343 5580 w +(network) 3541 5580 w +(name) 3976 5580 w +(servers) 4284 5580 w +10 /LucidaTypewriter f +(cs) 4674 5580 w +10 /LucidaSansUnicode00 f +(and) 4860 5580 w +10 /LucidaTypewriter f +(dns) 720 5700 w +10 /LucidaSansUnicode00 f +([PrWi93].) 974 5700 w +(Complex) 1479 5700 w +(applications) 1949 5700 w +(such) 2572 5700 w +(as) 2836 5700 w +(Acme) 2980 5700 w +(prove) 3287 5700 w +(that) 3598 5700 w +(careful) 3827 5700 w +(operating) 4196 5700 w +(system) 4700 5700 w +(support) 720 5820 w +(can) 1136 5820 w +(reduce) 1342 5820 w +(the) 1709 5820 w +(difficulty) 1902 5820 w +(of) 2366 5820 w +(writing) 2502 5820 w +(multi-threaded) 2877 5820 w +(applications) 3656 5820 w +(without) 4279 5820 w +(moving) 4681 5820 w +(threading and synchronization primitives into the kernel.) 720 5940 w 10 /LucidaSans-Demi f -(Implementation of Name Spaces) 720 5544 w +(Implementation of Name Spaces) 720 6180 w 10 /LucidaSansUnicode00 f -(User) 970 5700 w -(processes) 1237 5700 w -(construct) 1769 5700 w -(name) 2273 5700 w -(spaces) 2590 5700 w -(using) 2968 5700 w -(three) 3285 5700 w -(system) 3588 5700 w -(calls:) 3979 5700 w -10 /LucidaTypewriter f -(mount) 4277 5700 w -10 /LucidaSansUnicode00 f -(,) 4637 5700 w -10 /LucidaTypewriter f -(bind) 4720 5700 w -10 /LucidaSansUnicode00 f -(,) 5008 5700 w -(and) 720 5820 w -10 /LucidaTypewriter f -(unmount) 946 5820 w -10 /LucidaSansUnicode00 f -(.) 1450 5820 w -(The) 1560 5820 w -10 /LucidaTypewriter f -(mount) 1787 5820 w -10 /LucidaSansUnicode00 f -(system) 2193 5820 w -(call) 2579 5820 w -(attaches) 2789 5820 w -(a) 3239 5820 w -(tree) 3340 5820 w -(served) 3576 5820 w -(by) 3941 5820 w -(a) 4102 5820 w -(file) 4203 5820 w -(server) 4400 5820 w -(to) 4742 5820 w -(the) 4885 5820 w -(current) 720 5940 w -(name) 1109 5940 w -(space.) 1414 5940 w -(Before) 1793 5940 w -(calling) 2141 5940 w -10 /LucidaTypewriter f -(mount) 2497 5940 w -10 /LucidaSansUnicode00 f -(,) 2857 5940 w -(the) 2928 5940 w -(client) 3122 5940 w -(must) 3425 5940 w -(\(by) 3707 5940 w -(outside) 3894 5940 w -(means\)) 4293 5940 w -(acquire) 4683 5940 w -(a) 720 6060 w -(connection) 815 6060 w -(to) 1386 6060 w -(the) 1523 6060 w -(server) 1717 6060 w -(in) 2053 6060 w -(the) 2183 6060 w -(form) 2377 6060 w -(of) 2648 6060 w -(a) 2785 6060 w -(file) 2879 6060 w -(descriptor) 3069 6060 w -(that) 3601 6060 w -(may) 3831 6060 w -(be) 4070 6060 w -(written) 4228 6060 w -(and) 4606 6060 w -(read) 4825 6060 w -(to transmit 9P messages.) 720 6180 w -(That file descriptor represents a pipe or network connection.) 2008 6180 w -(The) 970 6336 w -10 /LucidaTypewriter f -(mount) 1193 6336 w -10 /LucidaSansUnicode00 f -(call) 1595 6336 w -(attaches) 1801 6336 w -(a) 2247 6336 w -(new) 2344 6336 w -(hierarchy) 2581 6336 w -(to) 3072 6336 w -(the) 3212 6336 w -(existing) 3409 6336 w -(name) 3838 6336 w -(space.) 4146 6336 w -(The) 4528 6336 w -10 /LucidaTypewriter f -(bind) 4752 6336 w -10 /LucidaSansUnicode00 f -(system) 720 6456 w -(call,) 1094 6456 w -(on) 1324 6456 w -(the) 1481 6456 w -(other) 1670 6456 w -(hand,) 1961 6456 w -(duplicates) 2269 6456 w -(some) 2799 6456 w -(piece) 3094 6456 w -(of) 3382 6456 w -(existing) 3513 6456 w -(name) 3933 6456 w -(space) 4232 6456 w -(at) 4541 6456 w -(another) 4666 6456 w -(point in the name space.) 720 6576 w -(The) 1984 6576 w -10 /LucidaTypewriter f -(unmount) 2197 6576 w -10 /LucidaSansUnicode00 f -(system call allows components to be removed.) 2733 6576 w -(Using) 970 6732 w -(either) 1277 6732 w -10 /LucidaTypewriter f -(bind) 1592 6732 w -10 /LucidaSansUnicode00 f -(or) 1914 6732 w -10 /LucidaTypewriter f -(mount) 2050 6732 w -10 /LucidaSansUnicode00 f -(,) 2410 6732 w -(multiple) 2476 6732 w -(directories) 2908 6732 w -(may) 3457 6732 w -(be) 3691 6732 w -(stacked) 3844 6732 w -(at) 4249 6732 w -(a) 4375 6732 w -(single) 4464 6732 w -(point) 4788 6732 w -(in) 720 6852 w -(the) 848 6852 w -(name) 1040 6852 w -(space.) 1343 6852 w -(In) 1719 6852 w -(Plan) 1846 6852 w -(9) 2083 6852 w -(terminology,) 2182 6852 w -(this) 2833 6852 w -(is) 3048 6852 w -(a) 3164 6852 w -10 /LucidaSans-Italic f -(union) 3255 6852 w +(User) 970 6336 w +(processes) 1237 6336 w +(construct) 1769 6336 w +(name) 2273 6336 w +(spaces) 2590 6336 w +(using) 2968 6336 w +(three) 3285 6336 w +(system) 3588 6336 w +(calls:) 3979 6336 w +10 /LucidaTypewriter f +(mount) 4277 6336 w +10 /LucidaSansUnicode00 f +(,) 4637 6336 w +10 /LucidaTypewriter f +(bind) 4720 6336 w +10 /LucidaSansUnicode00 f +(,) 5008 6336 w +(and) 720 6456 w +10 /LucidaTypewriter f +(unmount) 946 6456 w +10 /LucidaSansUnicode00 f +(.) 1450 6456 w +(The) 1560 6456 w +10 /LucidaTypewriter f +(mount) 1787 6456 w +10 /LucidaSansUnicode00 f +(system) 2193 6456 w +(call) 2579 6456 w +(attaches) 2789 6456 w +(a) 3239 6456 w +(tree) 3340 6456 w +(served) 3576 6456 w +(by) 3941 6456 w +(a) 4102 6456 w +(file) 4203 6456 w +(server) 4400 6456 w +(to) 4742 6456 w +(the) 4885 6456 w +(current) 720 6576 w +(name) 1109 6576 w +(space.) 1414 6576 w +(Before) 1793 6576 w +(calling) 2141 6576 w +10 /LucidaTypewriter f +(mount) 2497 6576 w +10 /LucidaSansUnicode00 f +(,) 2857 6576 w +(the) 2928 6576 w +(client) 3122 6576 w +(must) 3425 6576 w +(\(by) 3707 6576 w +(outside) 3894 6576 w +(means\)) 4293 6576 w +(acquire) 4683 6576 w +(a) 720 6696 w +(connection) 815 6696 w +(to) 1386 6696 w +(the) 1523 6696 w +(server) 1717 6696 w +(in) 2053 6696 w +(the) 2183 6696 w +(form) 2377 6696 w +(of) 2648 6696 w +(a) 2785 6696 w +(file) 2879 6696 w +(descriptor) 3069 6696 w +(that) 3601 6696 w +(may) 3831 6696 w +(be) 4070 6696 w +(written) 4228 6696 w +(and) 4606 6696 w +(read) 4825 6696 w +(to transmit 9P messages.) 720 6816 w +(That file descriptor represents a pipe or network connection.) 2008 6816 w +(The) 970 6972 w +10 /LucidaTypewriter f +(mount) 1193 6972 w +10 /LucidaSansUnicode00 f +(call) 1595 6972 w +(attaches) 1801 6972 w +(a) 2247 6972 w +(new) 2344 6972 w +(hierarchy) 2581 6972 w +(to) 3072 6972 w +(the) 3212 6972 w +(existing) 3409 6972 w +(name) 3838 6972 w +(space.) 4146 6972 w +(The) 4528 6972 w +10 /LucidaTypewriter f +(bind) 4752 6972 w +10 /LucidaSansUnicode00 f +(system) 720 7092 w +(call,) 1094 7092 w +(on) 1324 7092 w +(the) 1481 7092 w +(other) 1670 7092 w +(hand,) 1961 7092 w +(duplicates) 2269 7092 w +(some) 2799 7092 w +(piece) 3094 7092 w +(of) 3382 7092 w +(existing) 3513 7092 w +(name) 3933 7092 w +(space) 4232 7092 w +(at) 4541 7092 w +(another) 4666 7092 w +(point in the name space.) 720 7212 w +(The) 1984 7212 w +10 /LucidaTypewriter f +(unmount) 2197 7212 w 10 /LucidaSansUnicode00 f -(directory) 3563 6852 w -(and) 4030 6852 w -(behaves) 4246 6852 w -(like) 4677 6852 w -(the) 4885 6852 w -(concatenation) 720 6972 w -(of) 1455 6972 w -(the) 1609 6972 w -(constituent) 1820 6972 w -(directories.) 2421 6972 w -(A) 3056 6972 w -(flag) 3181 6972 w -(argument) 3420 6972 w -(to) 3944 6972 w -10 /LucidaTypewriter f -(bind) 4098 6972 w -10 /LucidaSansUnicode00 f -(and) 4443 6972 w -10 /LucidaTypewriter f -(mount) 4680 6972 w -10 /LucidaSansUnicode00 f -(specifies) 720 7092 w -(the) 1190 7092 w -(position) 1392 7092 w -(of) 1832 7092 w -(a) 1977 7092 w -(new) 2079 7092 w -(directory) 2321 7092 w -(in) 2799 7092 w -(the) 2937 7092 w -(union,) 3139 7092 w -(permitting) 3494 7092 w -(new) 4050 7092 w -(elements) 4291 7092 w -(to) 4777 7092 w -(be) 4921 7092 w -(added either at the front or rear of the union or to replace it) 720 7212 w -(entirely.) 3676 7212 w -(When) 4135 7212 w -(a) 4434 7212 w -(file) 4522 7212 w -(lookup) 4706 7212 w +(system call allows components to be removed.) 2733 7212 w cleartomark showpage saveobj restore @@ -11510,716 +11442,717 @@ 13 pagesetup 10 /LucidaSansUnicode00 f (\255 13 \255) 2752 480 w -(is) 720 840 w -(performed) 838 840 w -(in) 1387 840 w -(a) 1515 840 w -(union) 1607 840 w -(directory,) 1920 840 w -(each) 2420 840 w -(component) 2681 840 w -(of) 3264 840 w -(the) 3399 840 w -(union) 3591 840 w -(is) 3904 840 w -(searched) 4021 840 w -(in) 4493 840 w -(turn) 4621 840 w -(and) 4860 840 w -(the) 720 960 w -(first) 916 960 w -(match) 1152 960 w -(taken;) 1491 960 w -(likewise,) 1832 960 w -(when) 2290 960 w -(a) 2588 960 w -(union) 2684 960 w -(directory) 3001 960 w -(is) 3473 960 w -(read,) 3594 960 w -(the) 3882 960 w -(contents) 4078 960 w -(of) 4536 960 w -(each) 4676 960 w -(of) 4942 960 w -(the) 720 1080 w -(component) 913 1080 w -(directories) 1497 1080 w -(is) 2050 1080 w -(read) 2168 1080 w -(in) 2420 1080 w -(turn.) 2548 1080 w -(Union) 2851 1080 w -(directories) 3171 1080 w -(are) 3723 1080 w -(one) 3912 1080 w -(of) 4128 1080 w -(the) 4263 1080 w -(most) 4455 1080 w -(widely) 4734 1080 w -(used) 720 1200 w -(organizational) 1010 1200 w -(features) 1763 1200 w -(of) 2216 1200 w -(the) 2372 1200 w -(Plan) 2585 1200 w -(9) 2844 1200 w -(name) 2965 1200 w -(space.) 3289 1200 w -(For) 3687 1200 w -(instance,) 3901 1200 w -(the) 4395 1200 w -(directory) 4609 1200 w -10 /LucidaTypewriter f -(/bin) 720 1320 w -10 /LucidaSansUnicode00 f -(is) 1063 1320 w -(built) 1198 1320 w -(as) 1473 1320 w -(a) 1633 1320 w -(union) 1742 1320 w -(of) 2072 1320 w -10 /LucidaTypewriter f -(/$cputype/bin) 2224 1320 w -10 /LucidaSansUnicode00 f -(\(program) 3214 1320 w -(binaries\),) 3717 1320 w -10 /LucidaTypewriter f -(/rc/bin) 4222 1320 w -10 /LucidaSansUnicode00 f -(\(shell) 4780 1320 w -(scripts\),) 720 1440 w -(and) 1153 1440 w -(perhaps) 1378 1440 w -(more) 1814 1440 w -(directories) 2110 1440 w -(provided) 2670 1440 w -(by) 3143 1440 w -(the) 3304 1440 w -(user.) 3505 1440 w -(This) 3825 1440 w -(construction) 4076 1440 w -(makes) 4727 1440 w -(the shell) 720 1560 w -10 /LucidaTypewriter f -($PATH) 1166 1560 w -10 /LucidaSansUnicode00 f -(variable unnecessary.) 1558 1560 w -(One) 970 1716 w -(question) 1206 1716 w -(raised) 1667 1716 w -(by) 2002 1716 w -(union) 2157 1716 w -(directories) 2473 1716 w -(is) 3028 1716 w -(which) 3148 1716 w -(element) 3470 1716 w -(of) 3900 1716 w -(the) 4039 1716 w -(union) 4235 1716 w -(receives) 4552 1716 w -(a) 4985 1716 w -(newly) 720 1836 w -(created) 1029 1836 w -(file.) 1421 1836 w -(After) 1669 1836 w -(several) 1942 1836 w -(designs,) 2315 1836 w -(we) 2754 1836 w -(decided) 2920 1836 w -(on) 3334 1836 w -(the) 3490 1836 w -(following.) 3678 1836 w -(By default, direc\255) 4222 1836 w -(tories) 720 1956 w -(in) 1028 1956 w -(unions) 1152 1956 w -(do) 1512 1956 w -(not) 1670 1956 w -(accept) 1864 1956 w -(new) 2211 1956 w -(files,) 2440 1956 w -(although) 2708 1956 w -(the) 3172 1956 w -10 /LucidaTypewriter f -(create) 3361 1956 w -10 /LucidaSansUnicode00 f -(system) 3827 1956 w -(call) 4201 1956 w -(applied) 4399 1956 w -(to) 4791 1956 w -(an) 4923 1956 w -(existing) 720 2076 w -(file) 1143 2076 w -(succeeds) 1330 2076 w -(normally.) 1807 2076 w -(When) 2329 2076 w -(a) 2631 2076 w -(directory) 2722 2076 w -(is) 3189 2076 w -(added) 3305 2076 w -(to) 3641 2076 w -(the) 3775 2076 w -(union,) 3966 2076 w -(a) 4310 2076 w -(flag) 4401 2076 w -(to) 4619 2076 w -10 /LucidaTypewriter f -(bind) 4752 2076 w -10 /LucidaSansUnicode00 f -(or) 720 2196 w -10 /LucidaTypewriter f -(mount) 866 2196 w -10 /LucidaSansUnicode00 f -(enables) 1270 2196 w -(create) 1686 2196 w -(permission) 2026 2196 w -(\(a) 2606 2196 w -(property) 2738 2196 w -(of) 3197 2196 w -(the) 3340 2196 w -(name) 3540 2196 w -(space\)) 3851 2196 w -(in) 4205 2196 w -(that) 4341 2196 w -(directory.) 4577 2196 w -(When) 720 2316 w -(a) 1026 2316 w -(file) 1121 2316 w -(is) 1311 2316 w -(being) 1430 2316 w -(created) 1741 2316 w -(with) 2139 2316 w -(a) 2383 2316 w -(new) 2477 2316 w -(name) 2711 2316 w -(in) 3016 2316 w -(a) 3146 2316 w -(union,) 3240 2316 w -(it) 3587 2316 w -(is) 3692 2316 w -(created) 3811 2316 w -(in) 4209 2316 w -(the) 4339 2316 w -(first) 4533 2316 w -(direc\255) 4767 2316 w -(tory) 720 2436 w -(of) 950 2436 w -(the) 1087 2436 w -(union) 1281 2436 w -(with) 1596 2436 w -(create) 1840 2436 w -(permission;) 2175 2436 w -(if) 2782 2436 w -(that) 2887 2436 w -(creation) 3117 2436 w -(fails,) 3548 2436 w -(the) 3820 2436 w -(entire) 4014 2436 w -10 /LucidaTypewriter f -(create) 4335 2436 w -10 /LucidaSansUnicode00 f -(fails.) 4807 2436 w -(This) 720 2556 w -(scheme) 960 2556 w -(enables) 1364 2556 w -(the) 1770 2556 w -(common) 1959 2556 w -(use) 2414 2556 w -(of) 2617 2556 w -(placing) 2749 2556 w -(a) 3134 2556 w -(private) 3223 2556 w -(directory) 3590 2556 w -(anywhere) 4055 2556 w -(in) 4550 2556 w -(a) 4675 2556 w -(union) 4764 2556 w -(of public ones, while allowing creation only in the private directory.) 720 2676 w -(By convention, kernel device) 970 2832 w -(file) 2383 2832 w -(systems) 2567 2832 w -(are) 2991 2832 w -(bound) 3176 2832 w -(into) 3520 2832 w -(the) 3742 2832 w +(Using) 970 840 w +(either) 1277 840 w 10 /LucidaTypewriter f -(/dev) 3930 2832 w +(bind) 1592 840 w 10 /LucidaSansUnicode00 f -(directory,) 4251 2832 w -(but) 4747 2832 w -(to) 4942 2832 w -(bootstrap) 720 2952 w -(the) 1232 2952 w -(name) 1430 2952 w -(space) 1739 2952 w -(building) 2058 2952 w -(process) 2500 2952 w -(it) 2917 2952 w -(is) 3025 2952 w -(necessary) 3147 2952 w -(to) 3664 2952 w -(have) 3804 2952 w -(a) 4071 2952 w -(notation) 4168 2952 w -(that) 4614 2952 w -(per\255) 4847 2952 w -(mits) 720 3072 w -(direct) 967 3072 w -(access) 1281 3072 w -(to) 1633 3072 w -(the) 1768 3072 w -(devices) 1960 3072 w -(without) 2355 3072 w -(an) 2757 3072 w -(existing) 2911 3072 w -(name) 3335 3072 w -(space.) 3638 3072 w -(The) 4016 3072 w -(root) 4235 3072 w -(directory) 4473 3072 w -(of) 4942 3072 w -(the) 720 3192 w -(tree) 923 3192 w -(served) 1161 3192 w -(by) 1528 3192 w -(a) 1691 3192 w -(device) 1794 3192 w -(driver) 2149 3192 w -(can) 2479 3192 w -(be) 2694 3192 w -(accessed) 2860 3192 w -(using) 3341 3192 w -(the) 3654 3192 w -(syntax) 3856 3192 w +(or) 1914 840 w 10 /LucidaTypewriter f -(#) 4221 3192 w +(mount) 2050 840 w +10 /LucidaSansUnicode00 f +(,) 2410 840 w +(multiple) 2476 840 w +(directories) 2908 840 w +(may) 3457 840 w +(be) 3691 840 w +(stacked) 3844 840 w +(at) 4249 840 w +(a) 4375 840 w +(single) 4464 840 w +(point) 4788 840 w +(in) 720 960 w +(the) 848 960 w +(name) 1040 960 w +(space.) 1343 960 w +(In) 1719 960 w +(Plan) 1846 960 w +(9) 2083 960 w +(terminology,) 2182 960 w +(this) 2833 960 w +(is) 3048 960 w +(a) 3164 960 w 10 /LucidaSans-Italic f -(c) 4293 3192 w +(union) 3255 960 w 10 /LucidaSansUnicode00 f -(,) 4343 3192 w -(where) 4422 3192 w +(directory) 3563 960 w +(and) 4030 960 w +(behaves) 4246 960 w +(like) 4677 960 w +(the) 4885 960 w +(concatenation) 720 1080 w +(of) 1455 1080 w +(the) 1609 1080 w +(constituent) 1820 1080 w +(directories.) 2421 1080 w +(A) 3056 1080 w +(flag) 3181 1080 w +(argument) 3420 1080 w +(to) 3944 1080 w +10 /LucidaTypewriter f +(bind) 4098 1080 w +10 /LucidaSansUnicode00 f +(and) 4443 1080 w +10 /LucidaTypewriter f +(mount) 4680 1080 w +10 /LucidaSansUnicode00 f +(specifies) 720 1200 w +(the) 1190 1200 w +(position) 1392 1200 w +(of) 1832 1200 w +(a) 1977 1200 w +(new) 2079 1200 w +(directory) 2321 1200 w +(in) 2799 1200 w +(the) 2937 1200 w +(union,) 3139 1200 w +(permitting) 3494 1200 w +(new) 4050 1200 w +(elements) 4291 1200 w +(to) 4777 1200 w +(be) 4921 1200 w +(added either at the front or rear of the union or to replace it) 720 1320 w +(entirely.) 3676 1320 w +(When) 4135 1320 w +(a) 4434 1320 w +(file) 4522 1320 w +(lookup) 4706 1320 w +(is) 720 1440 w +(performed) 838 1440 w +(in) 1387 1440 w +(a) 1515 1440 w +(union) 1607 1440 w +(directory,) 1920 1440 w +(each) 2420 1440 w +(component) 2681 1440 w +(of) 3264 1440 w +(the) 3399 1440 w +(union) 3591 1440 w +(is) 3904 1440 w +(searched) 4021 1440 w +(in) 4493 1440 w +(turn) 4621 1440 w +(and) 4860 1440 w +(the) 720 1560 w +(first) 916 1560 w +(match) 1152 1560 w +(taken;) 1491 1560 w +(likewise,) 1832 1560 w +(when) 2290 1560 w +(a) 2588 1560 w +(union) 2684 1560 w +(directory) 3001 1560 w +(is) 3473 1560 w +(read,) 3594 1560 w +(the) 3882 1560 w +(contents) 4078 1560 w +(of) 4536 1560 w +(each) 4676 1560 w +(of) 4942 1560 w +(the) 720 1680 w +(component) 913 1680 w +(directories) 1497 1680 w +(is) 2050 1680 w +(read) 2168 1680 w +(in) 2420 1680 w +(turn.) 2548 1680 w +(Union) 2851 1680 w +(directories) 3171 1680 w +(are) 3723 1680 w +(one) 3912 1680 w +(of) 4128 1680 w +(the) 4263 1680 w +(most) 4455 1680 w +(widely) 4734 1680 w +(used) 720 1800 w +(organizational) 1010 1800 w +(features) 1763 1800 w +(of) 2216 1800 w +(the) 2372 1800 w +(Plan) 2585 1800 w +(9) 2844 1800 w +(name) 2965 1800 w +(space.) 3289 1800 w +(For) 3687 1800 w +(instance,) 3901 1800 w +(the) 4395 1800 w +(directory) 4609 1800 w +10 /LucidaTypewriter f +(/bin) 720 1920 w +10 /LucidaSansUnicode00 f +(is) 1063 1920 w +(built) 1198 1920 w +(as) 1473 1920 w +(a) 1633 1920 w +(union) 1742 1920 w +(of) 2072 1920 w +10 /LucidaTypewriter f +(/$cputype/bin) 2224 1920 w +10 /LucidaSansUnicode00 f +(\(program) 3214 1920 w +(binaries\),) 3717 1920 w +10 /LucidaTypewriter f +(/rc/bin) 4222 1920 w +10 /LucidaSansUnicode00 f +(\(shell) 4780 1920 w +(scripts\),) 720 2040 w +(and) 1153 2040 w +(perhaps) 1378 2040 w +(more) 1814 2040 w +(directories) 2110 2040 w +(provided) 2670 2040 w +(by) 3143 2040 w +(the) 3304 2040 w +(user.) 3505 2040 w +(This) 3825 2040 w +(construction) 4076 2040 w +(makes) 4727 2040 w +(the shell) 720 2160 w +10 /LucidaTypewriter f +($PATH) 1166 2160 w +10 /LucidaSansUnicode00 f +(variable unnecessary.) 1558 2160 w +(One) 970 2316 w +(question) 1206 2316 w +(raised) 1667 2316 w +(by) 2002 2316 w +(union) 2157 2316 w +(directories) 2473 2316 w +(is) 3028 2316 w +(which) 3148 2316 w +(element) 3470 2316 w +(of) 3900 2316 w +(the) 4039 2316 w +(union) 4235 2316 w +(receives) 4552 2316 w +(a) 4985 2316 w +(newly) 720 2436 w +(created) 1029 2436 w +(file.) 1421 2436 w +(After) 1669 2436 w +(several) 1942 2436 w +(designs,) 2315 2436 w +(we) 2754 2436 w +(decided) 2920 2436 w +(on) 3334 2436 w +(the) 3490 2436 w +(following.) 3678 2436 w +(By default, direc\255) 4222 2436 w +(tories) 720 2556 w +(in) 1028 2556 w +(unions) 1152 2556 w +(do) 1512 2556 w +(not) 1670 2556 w +(accept) 1864 2556 w +(new) 2211 2556 w +(files,) 2440 2556 w +(although) 2708 2556 w +(the) 3172 2556 w +10 /LucidaTypewriter f +(create) 3361 2556 w +10 /LucidaSansUnicode00 f +(system) 3827 2556 w +(call) 4201 2556 w +(applied) 4399 2556 w +(to) 4791 2556 w +(an) 4923 2556 w +(existing) 720 2676 w +(file) 1143 2676 w +(succeeds) 1330 2676 w +(normally.) 1807 2676 w +(When) 2329 2676 w +(a) 2631 2676 w +(directory) 2722 2676 w +(is) 3189 2676 w +(added) 3305 2676 w +(to) 3641 2676 w +(the) 3775 2676 w +(union,) 3966 2676 w +(a) 4310 2676 w +(flag) 4401 2676 w +(to) 4619 2676 w +10 /LucidaTypewriter f +(bind) 4752 2676 w +10 /LucidaSansUnicode00 f +(or) 720 2796 w +10 /LucidaTypewriter f +(mount) 866 2796 w +10 /LucidaSansUnicode00 f +(enables) 1270 2796 w +(create) 1686 2796 w +(permission) 2026 2796 w +(\(a) 2606 2796 w +(property) 2738 2796 w +(of) 3197 2796 w +(the) 3340 2796 w +(name) 3540 2796 w +(space\)) 3851 2796 w +(in) 4205 2796 w +(that) 4341 2796 w +(directory.) 4577 2796 w +(When) 720 2916 w +(a) 1026 2916 w +(file) 1121 2916 w +(is) 1311 2916 w +(being) 1430 2916 w +(created) 1741 2916 w +(with) 2139 2916 w +(a) 2383 2916 w +(new) 2477 2916 w +(name) 2711 2916 w +(in) 3016 2916 w +(a) 3146 2916 w +(union,) 3240 2916 w +(it) 3587 2916 w +(is) 3692 2916 w +(created) 3811 2916 w +(in) 4209 2916 w +(the) 4339 2916 w +(first) 4533 2916 w +(direc\255) 4767 2916 w +(tory) 720 3036 w +(of) 950 3036 w +(the) 1087 3036 w +(union) 1281 3036 w +(with) 1596 3036 w +(create) 1840 3036 w +(permission;) 2175 3036 w +(if) 2782 3036 w +(that) 2887 3036 w +(creation) 3117 3036 w +(fails,) 3548 3036 w +(the) 3820 3036 w +(entire) 4014 3036 w +10 /LucidaTypewriter f +(create) 4335 3036 w +10 /LucidaSansUnicode00 f +(fails.) 4807 3036 w +(This) 720 3156 w +(scheme) 960 3156 w +(enables) 1364 3156 w +(the) 1770 3156 w +(common) 1959 3156 w +(use) 2414 3156 w +(of) 2617 3156 w +(placing) 2749 3156 w +(a) 3134 3156 w +(private) 3223 3156 w +(directory) 3590 3156 w +(anywhere) 4055 3156 w +(in) 4550 3156 w +(a) 4675 3156 w +(union) 4764 3156 w +(of public ones, while allowing creation only in the private directory.) 720 3276 w +(By convention, kernel device) 970 3432 w +(file) 2383 3432 w +(systems) 2567 3432 w +(are) 2991 3432 w +(bound) 3176 3432 w +(into) 3520 3432 w +(the) 3742 3432 w +10 /LucidaTypewriter f +(/dev) 3930 3432 w +10 /LucidaSansUnicode00 f +(directory,) 4251 3432 w +(but) 4747 3432 w +(to) 4942 3432 w +(bootstrap) 720 3552 w +(the) 1232 3552 w +(name) 1430 3552 w +(space) 1739 3552 w +(building) 2058 3552 w +(process) 2500 3552 w +(it) 2917 3552 w +(is) 3025 3552 w +(necessary) 3147 3552 w +(to) 3664 3552 w +(have) 3804 3552 w +(a) 4071 3552 w +(notation) 4168 3552 w +(that) 4614 3552 w +(per\255) 4847 3552 w +(mits) 720 3672 w +(direct) 967 3672 w +(access) 1281 3672 w +(to) 1633 3672 w +(the) 1768 3672 w +(devices) 1960 3672 w +(without) 2355 3672 w +(an) 2757 3672 w +(existing) 2911 3672 w +(name) 3335 3672 w +(space.) 3638 3672 w +(The) 4016 3672 w +(root) 4235 3672 w +(directory) 4473 3672 w +(of) 4942 3672 w +(the) 720 3792 w +(tree) 923 3792 w +(served) 1161 3792 w +(by) 1528 3792 w +(a) 1691 3792 w +(device) 1794 3792 w +(driver) 2149 3792 w +(can) 2479 3792 w +(be) 2694 3792 w +(accessed) 2860 3792 w +(using) 3341 3792 w +(the) 3654 3792 w +(syntax) 3856 3792 w +10 /LucidaTypewriter f +(#) 4221 3792 w 10 /LucidaSans-Italic f -(c) 4761 3192 w +(c) 4293 3792 w 10 /LucidaSansUnicode00 f -(is) 4858 3192 w -(a) 4985 3192 w -(unique) 720 3312 w -(character) 1106 3312 w -(\(typically) 1607 3312 w -(a) 2089 3312 w -(letter\)) 2196 3312 w -(identifying) 2537 3312 w -(the) 3107 3312 w +(,) 4343 3792 w +(where) 4422 3792 w 10 /LucidaSans-Italic f -(type) 3314 3312 w +(c) 4761 3792 w 10 /LucidaSansUnicode00 f -(of) 3573 3312 w -(the) 3724 3312 w -(device.) 3932 3312 w -(Simple) 4356 3312 w -(device) 4733 3312 w -(drivers) 720 3432 w -(serve) 1094 3432 w -(a) 1391 3432 w -(single) 1487 3432 w -(level) 1817 3432 w -(directory) 2080 3432 w -(containing) 2552 3432 w -(a) 3102 3432 w -(few) 3197 3432 w -(files.) 3407 3432 w -(As) 3713 3432 w -(an) 3873 3432 w -(example,) 4030 3432 w -(each) 4515 3432 w -(serial) 4779 3432 w -(port is represented by a data and a control file:) 720 3552 w -9 /LucidaTypewriter f -(%) 1008 3722 w -(bind) 1138 3722 w -(-a) 1463 3722 w -('#t') 1658 3722 w -(/dev) 1983 3722 w -(%) 1008 3832 w -(cd) 1138 3832 w -(/dev) 1333 3832 w -(%) 1008 3942 w -(ls) 1138 3942 w -(-l) 1333 3942 w -(eia*) 1528 3942 w -(--rw-rw-rw-) 1008 4052 w -(t) 1788 4052 w -(0) 1918 4052 w -(bootes) 2048 4052 w -(bootes) 2503 4052 w -(0) 2958 4052 w -(Feb) 3088 4052 w -(24) 3348 4052 w -(21:14) 3543 4052 w -(eia1) 3933 4052 w -(--rw-rw-rw-) 1008 4162 w -(t) 1788 4162 w -(0) 1918 4162 w -(bootes) 2048 4162 w -(bootes) 2503 4162 w -(0) 2958 4162 w -(Feb) 3088 4162 w -(24) 3348 4162 w -(21:14) 3543 4162 w -(eia1ctl) 3933 4162 w -(--rw-rw-rw-) 1008 4272 w -(t) 1788 4272 w -(0) 1918 4272 w -(bootes) 2048 4272 w -(bootes) 2503 4272 w -(0) 2958 4272 w -(Feb) 3088 4272 w -(24) 3348 4272 w -(21:14) 3543 4272 w -(eia2) 3933 4272 w -(--rw-rw-rw-) 1008 4382 w -(t) 1788 4382 w -(0) 1918 4382 w -(bootes) 2048 4382 w -(bootes) 2503 4382 w -(0) 2958 4382 w -(Feb) 3088 4382 w -(24) 3348 4382 w -(21:14) 3543 4382 w -(eia2ctl) 3933 4382 w -10 /LucidaSansUnicode00 f -(The) 720 4562 w -10 /LucidaTypewriter f -(bind) 943 4562 w -10 /LucidaSansUnicode00 f -(program) 1273 4562 w -(is) 1732 4562 w -(an) 1855 4562 w -(encapsulation) 2015 4562 w -(of) 2731 4562 w -(the) 2872 4562 w -10 /LucidaTypewriter f -(bind) 3070 4562 w -10 /LucidaSansUnicode00 f -(system) 3401 4562 w -(call;) 3784 4562 w -(its) 4023 4562 w -10 /LucidaTypewriter f -(-a) 4183 4562 w -10 /LucidaSansUnicode00 f -(flag) 4370 4562 w -(positions) 4596 4562 w -(the) 720 4682 w -(new) 913 4682 w -(directory) 1146 4682 w -(at) 1615 4682 w -(the) 1745 4682 w -(end) 1938 4682 w -(of) 2157 4682 w -(the) 2292 4682 w -(union.) 2484 4682 w -(The) 2861 4682 w -(data) 3079 4682 w -(files) 3326 4682 w -10 /LucidaTypewriter f -(eia1) 3565 4682 w -10 /LucidaSansUnicode00 f -(and) 3890 4682 w -10 /LucidaTypewriter f -(eia2) 4107 4682 w -10 /LucidaSansUnicode00 f -(may) 4432 4682 w -(be) 4669 4682 w -(read) 4825 4682 w -(and) 720 4802 w -(written) 938 4802 w -(to) 1315 4802 w -(communicate) 1451 4802 w -(over) 2139 4802 w -(the) 2387 4802 w -(serial) 2580 4802 w -(line.) 2879 4802 w -(Instead) 3157 4802 w -(of) 3548 4802 w -(using) 3684 4802 w -(special) 3989 4802 w -(operations) 4362 4802 w -(on) 4917 4802 w -(these) 720 4922 w -(files) 1054 4922 w -(to) 1328 4922 w -(control) 1498 4922 w -(the) 1912 4922 w -(devices,) 2139 4922 w -(commands) 2601 4922 w -(written) 3202 4922 w -(to) 3613 4922 w -(the) 3783 4922 w -(files) 4010 4922 w -10 /LucidaTypewriter f -(eia1ctl) 4284 4922 w -10 /LucidaSansUnicode00 f -(and) 4860 4922 w -10 /LucidaTypewriter f -(eia2ctl) 720 5042 w -10 /LucidaSansUnicode00 f -(control) 1257 5042 w -(the) 1632 5042 w -(corresponding) 1820 5042 w -(device;) 2556 5042 w -(for) 2928 5042 w -(example,) 3100 5042 w -(writing) 3579 5042 w -(the) 3950 5042 w -(text) 4139 5042 w -(string) 4364 5042 w -10 /LucidaTypewriter f -(b1200) 4680 5042 w -10 /LucidaSansUnicode00 f -(to) 720 5162 w -10 /LucidaTypewriter f -(/dev/eia1ctl) 851 5162 w -10 /LucidaSansUnicode00 f -(sets) 1748 5162 w -(the) 1976 5162 w -(speed) 2164 5162 w -(of) 2486 5162 w -(that) 2617 5162 w -(line) 2841 5162 w -(to) 3050 5162 w -(1200) 3181 5162 w -(baud.) 3466 5162 w -(Compare) 3806 5162 w -(this to the UNIX) 4277 5162 w -10 /LucidaTypewriter f -(ioctl) 720 5282 w -10 /LucidaSansUnicode00 f -(system) 1121 5282 w -(call:) 1502 5282 w -(in) 1739 5282 w -(Plan) 1871 5282 w -(9,) 2113 5282 w -(devices) 2249 5282 w -(are) 2649 5282 w -(controlled) 2843 5282 w -(by) 3375 5282 w -(textual) 3532 5282 w -(messages,) 3911 5282 w -(free) 4460 5282 w -(of) 4692 5282 w -(byte) 4832 5282 w -(order) 720 5402 w -(problems,) 1016 5402 w -(with) 1539 5402 w -(clear) 1778 5402 w -(semantics) 2044 5402 w -(for) 2562 5402 w -(reading) 2734 5402 w -(and) 3135 5402 w -(writing.) 3348 5402 w -(It) 3782 5402 w -(is) 3881 5402 w -(common) 3994 5402 w -(to) 4448 5402 w -(configure) 4579 5402 w -(or debug devices using shell scripts.) 720 5522 w -(It) 970 5678 w -(is) 1099 5678 w -(the) 1242 5678 w -(universal) 1460 5678 w -(use) 1960 5678 w -(of) 2192 5678 w -(the) 2353 5678 w -(9P) 2571 5678 w -(protocol) 2752 5678 w -(that) 3219 5678 w -(connects) 3473 5678 w -(Plan) 3968 5678 w -(9) 4233 5678 w -10 /LucidaSansUnicode20 f -(\031) 4296 5678 w -10 /LucidaSansUnicode00 f -(s) 4328 5678 w -(components) 4443 5678 w -(together) 720 5798 w -(to) 1167 5798 w -(form) 1300 5798 w -(a) 1567 5798 w -(distributed) 1657 5798 w -(system.) 2223 5798 w -(Rather) 2662 5798 w -(than) 3011 5798 w -(inventing) 3262 5798 w -(a) 3748 5798 w -(unique) 3837 5798 w -(protocol) 4205 5798 w -(for) 4643 5798 w -(each) 4816 5798 w -(service) 720 5918 w -(such) 1110 5918 w -(as) 1390 5918 w -10 /LucidaTypewriter f -(rlogin) 1550 5918 w -10 /LucidaSansUnicode00 f -(,) 1982 5918 w -(FTP,) 2068 5918 w -(TFTP,) 2327 5918 w -(and) 2649 5918 w -(X) 2884 5918 w -(windows,) 3002 5918 w -(Plan) 3509 5918 w -(9) 3765 5918 w -(implements) 3883 5918 w -(services) 4507 5918 w -(in) 4949 5918 w -(terms) 720 6038 w -(of) 1031 6038 w -(operations) 1162 6038 w -(on) 1711 6038 w -(file) 1867 6038 w -(objects,) 2051 6038 w -(and) 2465 6038 w -(then) 2678 6038 w -(uses) 2928 6038 w -(a single, well-documented protocol to) 3181 6038 w -(exchange) 720 6158 w -(information) 1224 6158 w -(between) 1830 6158 w -(computers.) 2276 6158 w -(Unlike) 2894 6158 w -(NFS,) 3236 6158 w -(9P) 3489 6158 w -(treats) 3646 6158 w -(files) 3962 6158 w -(as) 4204 6158 w -(a) 4350 6158 w -(sequence) 4445 6158 w -(of) 4942 6158 w -(bytes) 720 6278 w -(rather) 1018 6278 w -(than) 1349 6278 w -(blocks.) 1604 6278 w -(Also) 2020 6278 w -(unlike) 2269 6278 w -(NFS,) 2604 6278 w -(9P) 2857 6278 w -(is) 3014 6278 w -(stateful:) 3133 6278 w -(clients) 3568 6278 w -(perform) 3922 6278 w -(remote) 4353 6278 w -(proce\255) 4735 6278 w -(dure) 720 6398 w -(calls) 982 6398 w -(to) 1237 6398 w -(establish) 1375 6398 w -(pointers) 1848 6398 w -(to) 2288 6398 w -(objects) 2426 6398 w -(in) 2815 6398 w -(the) 2946 6398 w -(remote) 3141 6398 w -(file) 3525 6398 w -(server.) 3716 6398 w -(These) 4118 6398 w -(pointers) 4447 6398 w -(are) 4888 6398 w -(called) 720 6518 w -(file) 1042 6518 w -(identifiers) 1232 6518 w -(or) 1761 6518 w +(is) 4858 3792 w +(a) 4985 3792 w +(unique) 720 3912 w +(character) 1106 3912 w +(\(typically) 1607 3912 w +(a) 2089 3912 w +(letter\)) 2196 3912 w +(identifying) 2537 3912 w +(the) 3107 3912 w 10 /LucidaSans-Italic f -(fids) 1902 6518 w +(type) 3314 3912 w 10 /LucidaSansUnicode00 f -(.) 2079 6518 w -(All) 2181 6518 w -(operations) 2346 6518 w -(on) 2900 6518 w -(files) 3061 6518 w -(supply) 3301 6518 w -(a) 3659 6518 w -(fid) 3752 6518 w -(to) 3919 6518 w -(identify) 4055 6518 w -(an) 4458 6518 w -(object) 4613 6518 w +(of) 3573 3912 w +(the) 3724 3912 w +(device.) 3932 3912 w +(Simple) 4356 3912 w +(device) 4733 3912 w +(drivers) 720 4032 w +(serve) 1094 4032 w +(a) 1391 4032 w +(single) 1487 4032 w +(level) 1817 4032 w +(directory) 2080 4032 w +(containing) 2552 4032 w +(a) 3102 4032 w +(few) 3197 4032 w +(files.) 3407 4032 w +(As) 3713 4032 w +(an) 3873 4032 w +(example,) 4030 4032 w +(each) 4515 4032 w +(serial) 4779 4032 w +(port is represented by a data and a control file:) 720 4152 w +9 /LucidaTypewriter f +(%) 920 4322 w +(bind) 1050 4322 w +(-a) 1375 4322 w +('#t') 1570 4322 w +(/dev) 1895 4322 w +(%) 920 4432 w +(cd) 1050 4432 w +(/dev) 1245 4432 w +(%) 920 4542 w +(ls) 1050 4542 w +(-l) 1245 4542 w +(eia*) 1440 4542 w +(--rw-rw-rw-) 920 4652 w +(t) 1700 4652 w +(0) 1830 4652 w +(bootes) 1960 4652 w +(bootes) 2415 4652 w +(0) 2870 4652 w +(Feb) 3000 4652 w +(24) 3260 4652 w +(21:14) 3455 4652 w +(eia1) 3845 4652 w +(--rw-rw-rw-) 920 4762 w +(t) 1700 4762 w +(0) 1830 4762 w +(bootes) 1960 4762 w +(bootes) 2415 4762 w +(0) 2870 4762 w +(Feb) 3000 4762 w +(24) 3260 4762 w +(21:14) 3455 4762 w +(eia1ctl) 3845 4762 w +(--rw-rw-rw-) 920 4872 w +(t) 1700 4872 w +(0) 1830 4872 w +(bootes) 1960 4872 w +(bootes) 2415 4872 w +(0) 2870 4872 w +(Feb) 3000 4872 w +(24) 3260 4872 w +(21:14) 3455 4872 w +(eia2) 3845 4872 w +(--rw-rw-rw-) 920 4982 w +(t) 1700 4982 w +(0) 1830 4982 w +(bootes) 1960 4982 w +(bootes) 2415 4982 w +(0) 2870 4982 w +(Feb) 3000 4982 w +(24) 3260 4982 w +(21:14) 3455 4982 w +(eia2ctl) 3845 4982 w +10 /LucidaSansUnicode00 f +(The) 720 5162 w +10 /LucidaTypewriter f +(bind) 943 5162 w +10 /LucidaSansUnicode00 f +(program) 1273 5162 w +(is) 1732 5162 w +(an) 1855 5162 w +(encapsulation) 2015 5162 w +(of) 2731 5162 w +(the) 2872 5162 w +10 /LucidaTypewriter f +(bind) 3070 5162 w +10 /LucidaSansUnicode00 f +(system) 3401 5162 w +(call;) 3784 5162 w +(its) 4023 5162 w +10 /LucidaTypewriter f +(-a) 4183 5162 w +10 /LucidaSansUnicode00 f +(flag) 4370 5162 w +(positions) 4596 5162 w +(the) 720 5282 w +(new) 913 5282 w +(directory) 1146 5282 w +(at) 1615 5282 w +(the) 1745 5282 w +(end) 1938 5282 w +(of) 2157 5282 w +(the) 2292 5282 w +(union.) 2484 5282 w +(The) 2861 5282 w +(data) 3079 5282 w +(files) 3326 5282 w +10 /LucidaTypewriter f +(eia1) 3565 5282 w +10 /LucidaSansUnicode00 f +(and) 3890 5282 w +10 /LucidaTypewriter f +(eia2) 4107 5282 w +10 /LucidaSansUnicode00 f +(may) 4432 5282 w +(be) 4669 5282 w +(read) 4825 5282 w +(and) 720 5402 w +(written) 938 5402 w +(to) 1315 5402 w +(communicate) 1451 5402 w +(over) 2139 5402 w +(the) 2387 5402 w +(serial) 2580 5402 w +(line.) 2879 5402 w +(Instead) 3157 5402 w +(of) 3548 5402 w +(using) 3684 5402 w +(special) 3989 5402 w +(operations) 4362 5402 w +(on) 4917 5402 w +(these) 720 5522 w +(files) 1054 5522 w +(to) 1328 5522 w +(control) 1498 5522 w +(the) 1912 5522 w +(devices,) 2139 5522 w +(commands) 2601 5522 w +(written) 3202 5522 w +(to) 3613 5522 w +(the) 3783 5522 w +(files) 4010 5522 w +10 /LucidaTypewriter f +(eia1ctl) 4284 5522 w +10 /LucidaSansUnicode00 f +(and) 4860 5522 w +10 /LucidaTypewriter f +(eia2ctl) 720 5642 w +10 /LucidaSansUnicode00 f +(control) 1257 5642 w +(the) 1632 5642 w +(corresponding) 1820 5642 w +(device;) 2556 5642 w +(for) 2928 5642 w +(example,) 3100 5642 w +(writing) 3579 5642 w +(the) 3950 5642 w +(text) 4139 5642 w +(string) 4364 5642 w +10 /LucidaTypewriter f +(b1200) 4680 5642 w +10 /LucidaSansUnicode00 f +(to) 720 5762 w +10 /LucidaTypewriter f +(/dev/eia1ctl) 851 5762 w +10 /LucidaSansUnicode00 f +(sets) 1748 5762 w +(the) 1976 5762 w +(speed) 2164 5762 w +(of) 2486 5762 w +(that) 2617 5762 w +(line) 2841 5762 w +(to) 3050 5762 w +(1200) 3181 5762 w +(baud.) 3466 5762 w +(Compare) 3806 5762 w +(this to the UNIX) 4277 5762 w +10 /LucidaTypewriter f +(ioctl) 720 5882 w +10 /LucidaSansUnicode00 f +(system) 1121 5882 w +(call:) 1502 5882 w +(in) 1739 5882 w +(Plan) 1871 5882 w +(9,) 2113 5882 w +(devices) 2249 5882 w +(are) 2649 5882 w +(controlled) 2843 5882 w +(by) 3375 5882 w +(textual) 3532 5882 w +(messages,) 3911 5882 w +(free) 4460 5882 w +(of) 4692 5882 w +(byte) 4832 5882 w +(order) 720 6002 w +(problems,) 1016 6002 w +(with) 1539 6002 w +(clear) 1778 6002 w +(semantics) 2044 6002 w +(for) 2562 6002 w +(reading) 2734 6002 w +(and) 3135 6002 w +(writing.) 3348 6002 w +(It) 3782 6002 w +(is) 3881 6002 w +(common) 3994 6002 w +(to) 4448 6002 w +(configure) 4579 6002 w +(or debug devices using shell scripts.) 720 6122 w +(It) 970 6278 w +(is) 1099 6278 w +(the) 1242 6278 w +(universal) 1460 6278 w +(use) 1960 6278 w +(of) 2192 6278 w +(the) 2353 6278 w +(9P) 2571 6278 w +(protocol) 2752 6278 w +(that) 3219 6278 w +(connects) 3473 6278 w +(Plan) 3968 6278 w +(9) 4233 6278 w +10 /LucidaSansUnicode20 f +(\031) 4296 6278 w +10 /LucidaSansUnicode00 f +(s) 4328 6278 w +(components) 4443 6278 w +(together) 720 6398 w +(to) 1167 6398 w +(form) 1300 6398 w +(a) 1567 6398 w +(distributed) 1657 6398 w +(system.) 2223 6398 w +(Rather) 2662 6398 w +(than) 3011 6398 w +(inventing) 3262 6398 w +(a) 3748 6398 w +(unique) 3837 6398 w +(protocol) 4205 6398 w +(for) 4643 6398 w +(each) 4816 6398 w +(service) 720 6518 w +(such) 1110 6518 w +(as) 1390 6518 w +10 /LucidaTypewriter f +(rlogin) 1550 6518 w +10 /LucidaSansUnicode00 f +(,) 1982 6518 w +(FTP,) 2068 6518 w +(TFTP,) 2327 6518 w +(and) 2649 6518 w +(X) 2884 6518 w +(windows,) 3002 6518 w +(Plan) 3509 6518 w +(9) 3765 6518 w +(implements) 3883 6518 w +(services) 4507 6518 w (in) 4949 6518 w -(the remote file system.) 720 6638 w -(The) 970 6794 w -(9P) 1185 6794 w -(protocol) 1337 6794 w -(defines) 1775 6794 w -(17) 2163 6794 w -(messages,) 2323 6794 w -(providing) 2865 6794 w -(means) 3362 6794 w -(to) 3714 6794 w -(authenticate) 3847 6794 w -(users,) 4481 6794 w -(navi\255) 4809 6794 w -(gate) 720 6914 w -(fids) 972 6914 w -(around) 1194 6914 w -(a) 1580 6914 w -(file) 1677 6914 w -(system) 1869 6914 w -(hierarchy,) 2250 6914 w -(copy) 2772 6914 w -(fids,) 3040 6914 w -(perform) 3293 6914 w -(I/O,) 3726 6914 w -(change) 3959 6914 w -(file) 4348 6914 w -(attributes,) 4540 6914 w -(and) 720 7034 w -(create) 983 7034 w -(and) 1362 7034 w -(delete) 1626 7034 w -(files.) 2007 7034 w -(Its) 2357 7034 w -(complete) 2558 7034 w -(specification) 3088 7034 w -(is) 3783 7034 w -(in) 3947 7034 w -(Section) 4122 7034 w -(5) 4556 7034 w -(of) 4703 7034 w -(the) 4885 7034 w -(Programmer) 720 7154 w -10 /LucidaSansUnicode20 f -(\031) 1318 7154 w +(terms) 720 6638 w +(of) 1031 6638 w +(operations) 1162 6638 w +(on) 1711 6638 w +(file) 1867 6638 w +(objects,) 2051 6638 w +(and) 2465 6638 w +(then) 2678 6638 w +(uses) 2928 6638 w +(a single, well-documented protocol to) 3181 6638 w +(exchange) 720 6758 w +(information) 1224 6758 w +(between) 1830 6758 w +(computers.) 2276 6758 w +(Unlike) 2894 6758 w +(NFS,) 3236 6758 w +(9P) 3489 6758 w +(treats) 3646 6758 w +(files) 3962 6758 w +(as) 4204 6758 w +(a) 4350 6758 w +(sequence) 4445 6758 w +(of) 4942 6758 w +(bytes) 720 6878 w +(rather) 1018 6878 w +(than) 1349 6878 w +(blocks.) 1604 6878 w +(Also) 2020 6878 w +(unlike) 2269 6878 w +(NFS,) 2604 6878 w +(9P) 2857 6878 w +(is) 3014 6878 w +(stateful:) 3133 6878 w +(clients) 3568 6878 w +(perform) 3922 6878 w +(remote) 4353 6878 w +(proce\255) 4735 6878 w +(dure) 720 6998 w +(calls) 982 6998 w +(to) 1237 6998 w +(establish) 1375 6998 w +(pointers) 1848 6998 w +(to) 2288 6998 w +(objects) 2426 6998 w +(in) 2815 6998 w +(the) 2946 6998 w +(remote) 3141 6998 w +(file) 3525 6998 w +(server.) 3716 6998 w +(These) 4118 6998 w +(pointers) 4447 6998 w +(are) 4888 6998 w +(called) 720 7118 w +(file) 1042 7118 w +(identifiers) 1232 7118 w +(or) 1761 7118 w +10 /LucidaSans-Italic f +(fids) 1902 7118 w 10 /LucidaSansUnicode00 f -(s) 1350 7154 w -(Manual) 1438 7154 w -([9man].) 1824 7154 w -(Here) 2264 7154 w -(is) 2528 7154 w -(the) 2645 7154 w -(procedure) 2837 7154 w -(to) 3367 7154 w -(gain) 3501 7154 w -(access) 3745 7154 w -(to) 4096 7154 w -(the) 4230 7154 w -(name) 4421 7154 w -(hierar\255) 4723 7154 w -(chy) 720 7274 w -(supplied) 927 7274 w -(by) 1385 7274 w -(a) 1542 7274 w -(server.) 1639 7274 w -(A) 2042 7274 w -(file) 2153 7274 w -(server) 2346 7274 w -(connection) 2685 7274 w -(is) 3259 7274 w -(established) 3381 7274 w -(via) 3975 7274 w -(a) 4153 7274 w -(pipe) 4250 7274 w -(or) 4503 7274 w -(network) 4648 7274 w +(.) 2079 7118 w +(All) 2181 7118 w +(operations) 2346 7118 w +(on) 2900 7118 w +(files) 3061 7118 w +(supply) 3301 7118 w +(a) 3659 7118 w +(fid) 3752 7118 w +(to) 3919 7118 w +(identify) 4055 7118 w +(an) 4458 7118 w +(object) 4613 7118 w +(in) 4949 7118 w +(the remote file system.) 720 7238 w cleartomark showpage saveobj restore @@ -12230,782 +12163,757 @@ 14 pagesetup 10 /LucidaSansUnicode00 f (\255 14 \255) 2752 480 w -(connection.) 720 840 w -(An) 1361 840 w -(initial) 1537 840 w -10 /LucidaTypewriter f -(session) 1852 840 w -10 /LucidaSansUnicode00 f -(message) 2401 840 w -(performs) 2870 840 w -(a) 3357 840 w -(bilateral) 3456 840 w -(authentication) 3894 840 w -(between) 4633 840 w -(client) 720 960 w -(and) 1024 960 w -(server.) 1244 960 w -(An) 1645 960 w -10 /LucidaTypewriter f -(attach) 1816 960 w -10 /LucidaSansUnicode00 f -(message) 2288 960 w -(then) 2752 960 w -(connects) 3009 960 w -(a) 3480 960 w -(fid) 3575 960 w -(suggested) 3744 960 w -(by) 4285 960 w -(the) 4441 960 w -(client) 4637 960 w -(to) 4942 960 w -(the) 720 1080 w -(root) 915 1080 w -(of) 1155 1080 w -(the) 1292 1080 w -(server) 1486 1080 w -(file) 1822 1080 w -(tree.) 2012 1080 w -(The) 2305 1080 w -10 /LucidaTypewriter f -(attach) 2525 1080 w -10 /LucidaSansUnicode00 f -(message) 2996 1080 w -(includes) 3459 1080 w -(the) 3901 1080 w -(identity) 4095 1080 w -(of) 4499 1080 w -(the) 4636 1080 w -(user) 4830 1080 w -(performing the attach; henceforth all fids derived from the) 720 1200 w -(root) 3603 1200 w -(fid) 3836 1200 w -(will) 3998 1200 w -(have) 4195 1200 w -(permissions) 4453 1200 w -(associated) 720 1320 w -(with) 1267 1320 w -(that) 1510 1320 w -(user.) 1738 1320 w -(Multiple) 2049 1320 w -(users) 2477 1320 w -(may) 2775 1320 w -(share) 3012 1320 w -(the) 3314 1320 w -(connection,) 3506 1320 w -(but) 4107 1320 w -(each) 4306 1320 w -(must) 4567 1320 w -(per\255) 4847 1320 w -(form an attach to establish his or her identity.) 720 1440 w -(The) 970 1596 w -10 /LucidaTypewriter f -(walk) 1186 1596 w -10 /LucidaSansUnicode00 f -(message) 1509 1596 w -(moves) 1969 1596 w -(a) 2318 1596 w -(fid) 2409 1596 w -(through) 2574 1596 w -(a) 2997 1596 w -(single) 3088 1596 w -(level) 3413 1596 w -(of) 3671 1596 w -(the) 3805 1596 w -(file) 3996 1596 w -(system) 4183 1596 w -(hierarchy.) 4559 1596 w -(The) 720 1716 w -10 /LucidaTypewriter f -(clone) 947 1716 w -10 /LucidaSansUnicode00 f -(message) 1353 1716 w -(takes) 1823 1716 w -(an) 2126 1716 w -(established) 2289 1716 w -(fid) 2887 1716 w -(and) 3062 1716 w -(produces) 3288 1716 w -(a) 3782 1716 w -(copy) 3883 1716 w -(that) 4156 1716 w -(points) 4393 1716 w -(to) 4742 1716 w -(the) 4885 1716 w -(same) 720 1836 w -(file) 1009 1836 w -(as) 1194 1836 w -(the) 1334 1836 w -(original.) 1523 1836 w -(Its) 1989 1836 w -(purpose) 2141 1836 w -(is) 2573 1836 w -(to) 2688 1836 w -(enable) 2821 1836 w -(walking) 3177 1836 w -(to) 3584 1836 w -(a) 3717 1836 w -(file) 3807 1836 w -(in) 3993 1836 w -(a) 4119 1836 w -(directory) 4209 1836 w -(without) 4675 1836 w -(losing) 720 1956 w -(the) 1057 1956 w -(fid) 1255 1956 w -(on) 1427 1956 w -(the) 1593 1956 w -(directory.) 1791 1956 w -(The) 2329 1956 w -10 /LucidaTypewriter f -(open) 2553 1956 w -10 /LucidaSansUnicode00 f -(message) 2884 1956 w -(locks) 3351 1956 w -(a) 3644 1956 w -(fid) 3742 1956 w -(to) 3913 1956 w -(a) 4053 1956 w -(specific) 4150 1956 w -(file) 4559 1956 w -(in) 4752 1956 w -(the) 4885 1956 w -(hierarchy,) 720 2076 w -(checks) 1257 2076 w -(access) 1642 2076 w -(permissions,) 2013 2076 w -(and) 2688 2076 w -(prepares) 2924 2076 w -(the) 3406 2076 w -(fid) 3617 2076 w -(for) 3802 2076 w -(I/O.) 3997 2076 w -(The) 4277 2076 w -10 /LucidaTypewriter f -(read) 4515 2076 w -10 /LucidaSansUnicode00 f -(and) 4860 2076 w -10 /LucidaTypewriter f -(write) 720 2196 w -10 /LucidaSansUnicode00 f -(messages) 1114 2196 w -(allow) 1623 2196 w -(I/O) 1908 2196 w -(at) 2102 2196 w -(arbitrary) 2228 2196 w -(offsets) 2676 2196 w -(in) 3039 2196 w -(the) 3163 2196 w -(file;) 3351 2196 w -(the) 3567 2196 w -(maximum) 3755 2196 w -(size) 4274 2196 w -(transferred) 4500 2196 w -(is) 720 2316 w -(defined) 837 2316 w -(by) 1240 2316 w -(the) 1392 2316 w -(protocol.) 1584 2316 w -(The) 2089 2316 w -10 /LucidaTypewriter f -(clunk) 2307 2316 w -10 /LucidaSansUnicode00 f -(message) 2704 2316 w -(indicates) 3165 2316 w -(the) 3635 2316 w -(client) 3828 2316 w -(has) 4130 2316 w -(no) 4336 2316 w -(further) 4497 2316 w -(use) 4871 2316 w -(for) 720 2436 w -(a) 892 2436 w -(fid.) 980 2436 w -(The) 1206 2436 w -10 /LucidaTypewriter f -(remove) 1420 2436 w -10 /LucidaSansUnicode00 f -(message) 1885 2436 w -(behaves) 2342 2436 w -(like) 2770 2436 w -10 /LucidaTypewriter f -(clunk) 2975 2436 w -10 /LucidaSansUnicode00 f -(but) 3368 2436 w -(causes) 3563 2436 w -(the) 3922 2436 w -(file) 4110 2436 w -(associated with) 4294 2436 w -(the fid to be removed and any associated resources on the server to be deallocated.) 720 2556 w -(9P) 970 2712 w -(has) 1126 2712 w -(two) 1332 2712 w -(forms:) 1545 2712 w -(RPC) 1898 2712 w -(messages) 2123 2712 w -(sent) 2636 2712 w -(on) 2880 2712 w -(a) 3042 2712 w -(pipe) 3136 2712 w -(or) 3386 2712 w -(network) 3527 2712 w -(connection) 3958 2712 w -(and) 4529 2712 w -(a) 4748 2712 w -(pro\255) 4842 2712 w -(cedural) 720 2832 w -(interface) 1114 2832 w -(within) 1575 2832 w -(the) 1908 2832 w -(kernel.) 2100 2832 w -(Since) 2503 2832 w -(kernel) 2792 2832 w -(device) 3131 2832 w -(drivers) 3474 2832 w -(are) 3843 2832 w -(directly) 4031 2832 w -(addressable,) 4425 2832 w -(there) 720 2952 w -(is) 1009 2952 w -(no) 1126 2952 w -(need) 1286 2952 w -(to) 1560 2952 w -(pass) 1695 2952 w -(messages) 1952 2952 w -(to) 2464 2952 w -(communicate) 2599 2952 w -(with) 3286 2952 w -(them;) 3528 2952 w -(instead) 3846 2952 w -(each) 4237 2952 w -(9P) 4499 2952 w -(transac\255) 4655 2952 w -(tion) 720 3072 w -(is) 942 3072 w -(implemented) 1055 3072 w -(by) 1725 3072 w -(a) 1873 3072 w -(direct) 1961 3072 w -(procedure) 2271 3072 w -(call.) 2798 3072 w -(For) 3059 3072 w -(each) 3248 3072 w -(fid,) 3505 3072 w -(the) 3699 3072 w -(kernel) 3887 3072 w -(maintains) 4222 3072 w -(a local) 4728 3072 w -(representation) 720 3192 w -(in) 1464 3192 w -(a) 1593 3192 w -(data) 1686 3192 w -(structure) 1934 3192 w -(called) 2410 3192 w -(a) 2731 3192 w -10 /LucidaSans-Italic f -(channel) 2824 3192 w -10 /LucidaSansUnicode00 f -(,) 3203 3192 w -(so) 3273 3192 w -(all) 3423 3192 w -(operations) 3574 3192 w -(on) 4128 3192 w -(files) 4289 3192 w -(performed) 4529 3192 w -(by) 720 3312 w -(the) 879 3312 w -(kernel) 1077 3312 w -(involve) 1422 3312 w -(a) 1806 3312 w -(channel) 1904 3312 w -(connected) 2324 3312 w -(to) 2866 3312 w -(that) 3007 3312 w -(fid.) 3241 3312 w -(The) 3477 3312 w -(simplest) 3701 3312 w -(example) 4153 3312 w -(is) 4609 3312 w -(a) 4732 3312 w -(user) 4830 3312 w -(process) 720 3432 w -10 /LucidaSansUnicode20 f -(\031) 1094 3432 w -10 /LucidaSansUnicode00 f -(s) 1126 3432 w -(file) 1222 3432 w -(descriptors,) 1418 3432 w -(which) 2039 3432 w -(are) 2365 3432 w -(indexes) 2562 3432 w -(into) 2985 3432 w -(an) 3219 3432 w -(array) 3381 3432 w -(of) 3670 3432 w -(channels.) 3813 3432 w -(A) 4350 3432 w -(table) 4464 3432 w -(in) 4749 3432 w -(the) 4885 3432 w -(kernel) 720 3552 w -(provides) 1056 3552 w -(a) 1506 3552 w -(list) 1595 3552 w -(of) 1775 3552 w -(entry) 1907 3552 w -(points) 2189 3552 w -(corresponding) 2525 3552 w -(one) 3261 3552 w -(to) 3473 3552 w -(one) 3604 3552 w -(with) 3816 3552 w -(the) 4054 3552 w -(9P) 4242 3552 w -(messages) 4393 3552 w -(for) 4901 3552 w -(each) 720 3672 w -(device.) 977 3672 w -(A) 1381 3672 w -(system) 1484 3672 w -(call) 1858 3672 w -(such) 2056 3672 w -(as) 2316 3672 w -10 /LucidaTypewriter f -(read) 2456 3672 w -10 /LucidaSansUnicode00 f -(from) 2778 3672 w -(the) 3044 3672 w -(user) 3233 3672 w -(translates) 3477 3672 w -(into) 3985 3672 w -(one) 4208 3672 w -(or) 4421 3672 w -(more) 4557 3672 w -(pro\255) 4842 3672 w -(cedure) 720 3792 w -(calls) 1099 3792 w -(through) 1364 3792 w -(that) 1801 3792 w -(table,) 2042 3792 w -(indexed) 2364 3792 w -(by) 2804 3792 w -(the) 2969 3792 w -(type) 3174 3792 w -(character) 3431 3792 w -(stored) 3929 3792 w -(in) 4287 3792 w -(the) 4427 3792 w -(channel:) 4631 3792 w -10 /LucidaTypewriter f -(procread) 720 3912 w -10 /LucidaSansUnicode00 f -(,) 1296 3912 w -10 /LucidaTypewriter f -(eiaread) 1376 3912 w -10 /LucidaSansUnicode00 f -(,) 1880 3912 w -(etc.) 1960 3912 w -(Each) 2216 3912 w -(call) 2486 3912 w -(takes) 2698 3912 w -(at) 3003 3912 w -(least) 3143 3912 w -(one) 3419 3912 w -(channel) 3646 3912 w -(as) 4071 3912 w -(an) 4225 3912 w -(argument.) 4390 3912 w -(A) 4971 3912 w -(special) 720 4032 w -(kernel) 1102 4032 w -(driver,) 1451 4032 w -(called) 1812 4032 w -(the) 2142 4032 w -10 /LucidaSans-Italic f -(mount) 2344 4032 w -10 /LucidaSansUnicode00 f -(driver,) 2703 4032 w -(translates) 3064 4032 w -(procedure) 3585 4032 w -(calls) 4126 4032 w -(to) 4388 4032 w -(messages,) 4533 4032 w -(that) 720 4152 w -(is,) 959 4152 w -(it) 1119 4152 w -(converts) 1233 4152 w -(local) 1692 4152 w -(procedure) 1965 4152 w -(calls) 2507 4152 w -(to) 2770 4152 w -(remote) 2916 4152 w -(ones.) 3309 4152 w -(In) 3652 4152 w -(effect,) 3792 4152 w -(this) 4147 4152 w -(special) 4375 4152 w -(driver) 4758 4152 w -(becomes) 720 4272 w -(a) 1190 4272 w -(local) 1284 4272 w -(proxy) 1548 4272 w -(for) 1865 4272 w -(the) 2043 4272 w -(files) 2237 4272 w -(served) 2478 4272 w -(by) 2836 4272 w -(a) 2990 4272 w -(remote) 3084 4272 w -(file) 3467 4272 w -(server.) 3657 4272 w -(The) 4057 4272 w -(channel) 4276 4272 w -(pointer) 4691 4272 w -(in the local call is translated to the associated fid in the transmitted message.) 720 4392 w -(The) 970 4548 w -(mount) 1185 4548 w -(driver) 1534 4548 w -(is) 1850 4548 w -(the) 1964 4548 w -(sole) 2153 4548 w -(RPC) 2384 4548 w -(mechanism) 2605 4548 w -(employed) 3191 4548 w -(by) 3698 4548 w -(the) 3847 4548 w -(system.) 4036 4548 w -(The) 4474 4548 w -(seman\255) 4690 4548 w -(tics) 720 4668 w -(of) 923 4668 w -(the) 1056 4668 w -(supplied) 1246 4668 w -(files,) 1697 4668 w -(rather) 1966 4668 w -(than) 2293 4668 w -(the) 2544 4668 w -(operations) 2734 4668 w -(performed) 3285 4668 w -(upon) 3831 4668 w -(them,) 4114 4668 w -(create) 4429 4668 w -(a) 4759 4668 w -(par\255) 4848 4668 w -(ticular) 720 4788 w -(service) 1075 4788 w -(such) 1462 4788 w -(as) 1739 4788 w -(the) 1896 4788 w -10 /LucidaTypewriter f -(cpu) 2103 4788 w -10 /LucidaSansUnicode00 f -(command.) 2371 4788 w -(The) 2965 4788 w -(mount) 3198 4788 w -(driver) 3565 4788 w -(demultiplexes) 3899 4788 w -(protocol) 4636 4788 w -(messages) 720 4908 w -(between) 1231 4908 w -(clients) 1674 4908 w -(sharing) 2025 4908 w -(a) 2423 4908 w -(communication) 2514 4908 w -(channel) 3296 4908 w -(with) 3709 4908 w -(a) 3950 4908 w -(file) 4041 4908 w -(server.) 4228 4908 w -(For) 4625 4908 w -(each) 4816 4908 w -(outgoing) 720 5028 w -(RPC) 1202 5028 w -(message,) 1435 5028 w -(the) 1937 5028 w -(mount) 2138 5028 w -(driver) 2499 5028 w -(allocates) 2827 5028 w -(a) 3297 5028 w -(buffer) 3398 5028 w -(labeled) 3740 5028 w -(by) 4138 5028 w -(a) 4300 5028 w -(small) 4402 5028 w -(unique) 4706 5028 w -(integer,) 720 5148 w -(called) 1128 5148 w -(a) 1444 5148 w -10 /LucidaSans-Italic f -(tag) 1532 5148 w -10 /LucidaSansUnicode00 f -(.) 1692 5148 w -(The) 1789 5148 w -(reply to the RPC is labeled with the same tag, which is used by) 2003 5148 w -(the mount driver to match the reply with the request.) 720 5268 w -(The) 970 5424 w -(kernel) 1209 5424 w -(representation) 1569 5424 w -(of) 2334 5424 w -(the) 2490 5424 w -(name) 2703 5424 w -(space) 3027 5424 w -(is) 3361 5424 w -(called) 3499 5424 w -(the) 3841 5424 w +(The) 970 840 w +(9P) 1185 840 w +(protocol) 1337 840 w +(defines) 1775 840 w +(17) 2163 840 w +(messages,) 2323 840 w +(providing) 2865 840 w +(means) 3362 840 w +(to) 3714 840 w +(authenticate) 3847 840 w +(users,) 4481 840 w +(navi\255) 4809 840 w +(gate) 720 960 w +(fids) 972 960 w +(around) 1194 960 w +(a) 1580 960 w +(file) 1677 960 w +(system) 1869 960 w +(hierarchy,) 2250 960 w +(copy) 2772 960 w +(fids,) 3040 960 w +(perform) 3293 960 w +(I/O,) 3726 960 w +(change) 3959 960 w +(file) 4348 960 w +(attributes,) 4540 960 w +(and) 720 1080 w +(create) 983 1080 w +(and) 1362 1080 w +(delete) 1626 1080 w +(files.) 2007 1080 w +(Its) 2357 1080 w +(complete) 2558 1080 w +(specification) 3088 1080 w +(is) 3783 1080 w +(in) 3947 1080 w +(Section) 4122 1080 w +(5) 4556 1080 w +(of) 4703 1080 w +(the) 4885 1080 w +(Programmer) 720 1200 w +10 /LucidaSansUnicode20 f +(\031) 1318 1200 w +10 /LucidaSansUnicode00 f +(s) 1350 1200 w +(Manual) 1438 1200 w +([9man].) 1824 1200 w +(Here) 2264 1200 w +(is) 2528 1200 w +(the) 2645 1200 w +(procedure) 2837 1200 w +(to) 3367 1200 w +(gain) 3501 1200 w +(access) 3745 1200 w +(to) 4096 1200 w +(the) 4230 1200 w +(name) 4421 1200 w +(hierar\255) 4723 1200 w +(chy) 720 1320 w +(supplied) 927 1320 w +(by) 1385 1320 w +(a) 1542 1320 w +(server.) 1639 1320 w +(A) 2042 1320 w +(file) 2153 1320 w +(server) 2346 1320 w +(connection) 2685 1320 w +(is) 3259 1320 w +(established) 3381 1320 w +(via) 3975 1320 w +(a) 4153 1320 w +(pipe) 4250 1320 w +(or) 4503 1320 w +(network) 4648 1320 w +(connection.) 720 1440 w +(An) 1361 1440 w +(initial) 1537 1440 w +10 /LucidaTypewriter f +(session) 1852 1440 w +10 /LucidaSansUnicode00 f +(message) 2401 1440 w +(performs) 2870 1440 w +(a) 3357 1440 w +(bilateral) 3456 1440 w +(authentication) 3894 1440 w +(between) 4633 1440 w +(client) 720 1560 w +(and) 1024 1560 w +(server.) 1244 1560 w +(An) 1645 1560 w +10 /LucidaTypewriter f +(attach) 1816 1560 w +10 /LucidaSansUnicode00 f +(message) 2288 1560 w +(then) 2752 1560 w +(connects) 3009 1560 w +(a) 3480 1560 w +(fid) 3575 1560 w +(suggested) 3744 1560 w +(by) 4285 1560 w +(the) 4441 1560 w +(client) 4637 1560 w +(to) 4942 1560 w +(the) 720 1680 w +(root) 915 1680 w +(of) 1155 1680 w +(the) 1292 1680 w +(server) 1486 1680 w +(file) 1822 1680 w +(tree.) 2012 1680 w +(The) 2305 1680 w +10 /LucidaTypewriter f +(attach) 2525 1680 w +10 /LucidaSansUnicode00 f +(message) 2996 1680 w +(includes) 3459 1680 w +(the) 3901 1680 w +(identity) 4095 1680 w +(of) 4499 1680 w +(the) 4636 1680 w +(user) 4830 1680 w +(performing the attach; henceforth all fids derived from the) 720 1800 w +(root) 3603 1800 w +(fid) 3836 1800 w +(will) 3998 1800 w +(have) 4195 1800 w +(permissions) 4453 1800 w +(associated) 720 1920 w +(with) 1267 1920 w +(that) 1510 1920 w +(user.) 1738 1920 w +(Multiple) 2049 1920 w +(users) 2477 1920 w +(may) 2775 1920 w +(share) 3012 1920 w +(the) 3314 1920 w +(connection,) 3506 1920 w +(but) 4107 1920 w +(each) 4306 1920 w +(must) 4567 1920 w +(per\255) 4847 1920 w +(form an attach to establish his or her identity.) 720 2040 w +(The) 970 2196 w +10 /LucidaTypewriter f +(walk) 1186 2196 w +10 /LucidaSansUnicode00 f +(message) 1509 2196 w +(moves) 1969 2196 w +(a) 2318 2196 w +(fid) 2409 2196 w +(through) 2574 2196 w +(a) 2997 2196 w +(single) 3088 2196 w +(level) 3413 2196 w +(of) 3671 2196 w +(the) 3805 2196 w +(file) 3996 2196 w +(system) 4183 2196 w +(hierarchy.) 4559 2196 w +(The) 720 2316 w +10 /LucidaTypewriter f +(clone) 947 2316 w +10 /LucidaSansUnicode00 f +(message) 1353 2316 w +(takes) 1823 2316 w +(an) 2126 2316 w +(established) 2289 2316 w +(fid) 2887 2316 w +(and) 3062 2316 w +(produces) 3288 2316 w +(a) 3782 2316 w +(copy) 3883 2316 w +(that) 4156 2316 w +(points) 4393 2316 w +(to) 4742 2316 w +(the) 4885 2316 w +(same) 720 2436 w +(file) 1009 2436 w +(as) 1194 2436 w +(the) 1334 2436 w +(original.) 1523 2436 w +(Its) 1989 2436 w +(purpose) 2141 2436 w +(is) 2573 2436 w +(to) 2688 2436 w +(enable) 2821 2436 w +(walking) 3177 2436 w +(to) 3584 2436 w +(a) 3717 2436 w +(file) 3807 2436 w +(in) 3993 2436 w +(a) 4119 2436 w +(directory) 4209 2436 w +(without) 4675 2436 w +(losing) 720 2556 w +(the) 1057 2556 w +(fid) 1255 2556 w +(on) 1427 2556 w +(the) 1593 2556 w +(directory.) 1791 2556 w +(The) 2329 2556 w +10 /LucidaTypewriter f +(open) 2553 2556 w +10 /LucidaSansUnicode00 f +(message) 2884 2556 w +(locks) 3351 2556 w +(a) 3644 2556 w +(fid) 3742 2556 w +(to) 3913 2556 w +(a) 4053 2556 w +(specific) 4150 2556 w +(file) 4559 2556 w +(in) 4752 2556 w +(the) 4885 2556 w +(hierarchy,) 720 2676 w +(checks) 1257 2676 w +(access) 1642 2676 w +(permissions,) 2013 2676 w +(and) 2688 2676 w +(prepares) 2924 2676 w +(the) 3406 2676 w +(fid) 3617 2676 w +(for) 3802 2676 w +(I/O.) 3997 2676 w +(The) 4277 2676 w +10 /LucidaTypewriter f +(read) 4515 2676 w +10 /LucidaSansUnicode00 f +(and) 4860 2676 w +10 /LucidaTypewriter f +(write) 720 2796 w +10 /LucidaSansUnicode00 f +(messages) 1114 2796 w +(allow) 1623 2796 w +(I/O) 1908 2796 w +(at) 2102 2796 w +(arbitrary) 2228 2796 w +(offsets) 2676 2796 w +(in) 3039 2796 w +(the) 3163 2796 w +(file;) 3351 2796 w +(the) 3567 2796 w +(maximum) 3755 2796 w +(size) 4274 2796 w +(transferred) 4500 2796 w +(is) 720 2916 w +(defined) 837 2916 w +(by) 1240 2916 w +(the) 1392 2916 w +(protocol.) 1584 2916 w +(The) 2089 2916 w +10 /LucidaTypewriter f +(clunk) 2307 2916 w +10 /LucidaSansUnicode00 f +(message) 2704 2916 w +(indicates) 3165 2916 w +(the) 3635 2916 w +(client) 3828 2916 w +(has) 4130 2916 w +(no) 4336 2916 w +(further) 4497 2916 w +(use) 4871 2916 w +(for) 720 3036 w +(a) 892 3036 w +(fid.) 980 3036 w +(The) 1206 3036 w +10 /LucidaTypewriter f +(remove) 1420 3036 w +10 /LucidaSansUnicode00 f +(message) 1885 3036 w +(behaves) 2342 3036 w +(like) 2770 3036 w +10 /LucidaTypewriter f +(clunk) 2975 3036 w +10 /LucidaSansUnicode00 f +(but) 3368 3036 w +(causes) 3563 3036 w +(the) 3922 3036 w +(file) 4110 3036 w +(associated with) 4294 3036 w +(the fid to be removed and any associated resources on the server to be deallocated.) 720 3156 w +(9P) 970 3312 w +(has) 1126 3312 w +(two) 1332 3312 w +(forms:) 1545 3312 w +(RPC) 1898 3312 w +(messages) 2123 3312 w +(sent) 2636 3312 w +(on) 2880 3312 w +(a) 3042 3312 w +(pipe) 3136 3312 w +(or) 3386 3312 w +(network) 3527 3312 w +(connection) 3958 3312 w +(and) 4529 3312 w +(a) 4748 3312 w +(pro\255) 4842 3312 w +(cedural) 720 3432 w +(interface) 1114 3432 w +(within) 1575 3432 w +(the) 1908 3432 w +(kernel.) 2100 3432 w +(Since) 2503 3432 w +(kernel) 2792 3432 w +(device) 3131 3432 w +(drivers) 3474 3432 w +(are) 3843 3432 w +(directly) 4031 3432 w +(addressable,) 4425 3432 w +(there) 720 3552 w +(is) 1009 3552 w +(no) 1126 3552 w +(need) 1286 3552 w +(to) 1560 3552 w +(pass) 1695 3552 w +(messages) 1952 3552 w +(to) 2464 3552 w +(communicate) 2599 3552 w +(with) 3286 3552 w +(them;) 3528 3552 w +(instead) 3846 3552 w +(each) 4237 3552 w +(9P) 4499 3552 w +(transac\255) 4655 3552 w +(tion) 720 3672 w +(is) 942 3672 w +(implemented) 1055 3672 w +(by) 1725 3672 w +(a) 1873 3672 w +(direct) 1961 3672 w +(procedure) 2271 3672 w +(call.) 2798 3672 w +(For) 3059 3672 w +(each) 3248 3672 w +(fid,) 3505 3672 w +(the) 3699 3672 w +(kernel) 3887 3672 w +(maintains) 4222 3672 w +(a local) 4728 3672 w +(representation) 720 3792 w +(in) 1464 3792 w +(a) 1593 3792 w +(data) 1686 3792 w +(structure) 1934 3792 w +(called) 2410 3792 w +(a) 2731 3792 w 10 /LucidaSans-Italic f -(mount) 4055 5424 w -(table) 4426 5424 w +(channel) 2824 3792 w 10 /LucidaSansUnicode00 f -(,) 4668 5424 w -(which) 4759 5424 w -(stores) 720 5544 w -(a) 1050 5544 w -(list of bindings between channels.) 1138 5544 w -(Each entry in the mount table contains a pair) 2862 5544 w -(of) 720 5664 w -(channels:) 857 5664 w -(a) 1356 5664 w +(,) 3203 3792 w +(so) 3273 3792 w +(all) 3423 3792 w +(operations) 3574 3792 w +(on) 4128 3792 w +(files) 4289 3792 w +(performed) 4529 3792 w +(by) 720 3912 w +(the) 879 3912 w +(kernel) 1077 3912 w +(involve) 1422 3912 w +(a) 1806 3912 w +(channel) 1904 3912 w +(connected) 2324 3912 w +(to) 2866 3912 w +(that) 3007 3912 w +(fid.) 3241 3912 w +(The) 3477 3912 w +(simplest) 3701 3912 w +(example) 4153 3912 w +(is) 4609 3912 w +(a) 4732 3912 w +(user) 4830 3912 w +(process) 720 4032 w +10 /LucidaSansUnicode20 f +(\031) 1094 4032 w +10 /LucidaSansUnicode00 f +(s) 1126 4032 w +(file) 1222 4032 w +(descriptors,) 1418 4032 w +(which) 2039 4032 w +(are) 2365 4032 w +(indexes) 2562 4032 w +(into) 2985 4032 w +(an) 3219 4032 w +(array) 3381 4032 w +(of) 3670 4032 w +(channels.) 3813 4032 w +(A) 4350 4032 w +(table) 4464 4032 w +(in) 4749 4032 w +(the) 4885 4032 w +(kernel) 720 4152 w +(provides) 1056 4152 w +(a) 1506 4152 w +(list) 1595 4152 w +(of) 1775 4152 w +(entry) 1907 4152 w +(points) 2189 4152 w +(corresponding) 2525 4152 w +(one) 3261 4152 w +(to) 3473 4152 w +(one) 3604 4152 w +(with) 3816 4152 w +(the) 4054 4152 w +(9P) 4242 4152 w +(messages) 4393 4152 w +(for) 4901 4152 w +(each) 720 4272 w +(device.) 977 4272 w +(A) 1381 4272 w +(system) 1484 4272 w +(call) 1858 4272 w +(such) 2056 4272 w +(as) 2316 4272 w +10 /LucidaTypewriter f +(read) 2456 4272 w +10 /LucidaSansUnicode00 f +(from) 2778 4272 w +(the) 3044 4272 w +(user) 3233 4272 w +(translates) 3477 4272 w +(into) 3985 4272 w +(one) 4208 4272 w +(or) 4421 4272 w +(more) 4557 4272 w +(pro\255) 4842 4272 w +(cedure) 720 4392 w +(calls) 1099 4392 w +(through) 1364 4392 w +(that) 1801 4392 w +(table,) 2042 4392 w +(indexed) 2364 4392 w +(by) 2804 4392 w +(the) 2969 4392 w +(type) 3174 4392 w +(character) 3431 4392 w +(stored) 3929 4392 w +(in) 4287 4392 w +(the) 4427 4392 w +(channel:) 4631 4392 w +10 /LucidaTypewriter f +(procread) 720 4512 w +10 /LucidaSansUnicode00 f +(,) 1296 4512 w +10 /LucidaTypewriter f +(eiaread) 1376 4512 w +10 /LucidaSansUnicode00 f +(,) 1880 4512 w +(etc.) 1960 4512 w +(Each) 2216 4512 w +(call) 2486 4512 w +(takes) 2698 4512 w +(at) 3003 4512 w +(least) 3143 4512 w +(one) 3419 4512 w +(channel) 3646 4512 w +(as) 4071 4512 w +(an) 4225 4512 w +(argument.) 4390 4512 w +(A) 4971 4512 w +(special) 720 4632 w +(kernel) 1102 4632 w +(driver,) 1451 4632 w +(called) 1812 4632 w +(the) 2142 4632 w 10 /LucidaSans-Italic f -(from) 1450 5664 w +(mount) 2344 4632 w 10 /LucidaSansUnicode00 f -(channel) 1725 5664 w -(and) 2141 5664 w -(a) 2360 5664 w +(driver,) 2703 4632 w +(translates) 3064 4632 w +(procedure) 3585 4632 w +(calls) 4126 4632 w +(to) 4388 4632 w +(messages,) 4533 4632 w +(that) 720 4752 w +(is,) 959 4752 w +(it) 1119 4752 w +(converts) 1233 4752 w +(local) 1692 4752 w +(procedure) 1965 4752 w +(calls) 2507 4752 w +(to) 2770 4752 w +(remote) 2916 4752 w +(ones.) 3309 4752 w +(In) 3652 4752 w +(effect,) 3792 4752 w +(this) 4147 4752 w +(special) 4375 4752 w +(driver) 4758 4752 w +(becomes) 720 4872 w +(a) 1190 4872 w +(local) 1284 4872 w +(proxy) 1548 4872 w +(for) 1865 4872 w +(the) 2043 4872 w +(files) 2237 4872 w +(served) 2478 4872 w +(by) 2836 4872 w +(a) 2990 4872 w +(remote) 3084 4872 w +(file) 3467 4872 w +(server.) 3657 4872 w +(The) 4057 4872 w +(channel) 4276 4872 w +(pointer) 4691 4872 w +(in the local call is translated to the associated fid in the transmitted message.) 720 4992 w +(The) 970 5148 w +(mount) 1185 5148 w +(driver) 1534 5148 w +(is) 1850 5148 w +(the) 1964 5148 w +(sole) 2153 5148 w +(RPC) 2384 5148 w +(mechanism) 2605 5148 w +(employed) 3191 5148 w +(by) 3698 5148 w +(the) 3847 5148 w +(system.) 4036 5148 w +(The) 4474 5148 w +(seman\255) 4690 5148 w +(tics) 720 5268 w +(of) 923 5268 w +(the) 1056 5268 w +(supplied) 1246 5268 w +(files,) 1697 5268 w +(rather) 1966 5268 w +(than) 2293 5268 w +(the) 2544 5268 w +(operations) 2734 5268 w +(performed) 3285 5268 w +(upon) 3831 5268 w +(them,) 4114 5268 w +(create) 4429 5268 w +(a) 4759 5268 w +(par\255) 4848 5268 w +(ticular) 720 5388 w +(service) 1075 5388 w +(such) 1462 5388 w +(as) 1739 5388 w +(the) 1896 5388 w +10 /LucidaTypewriter f +(cpu) 2103 5388 w +10 /LucidaSansUnicode00 f +(command.) 2371 5388 w +(The) 2965 5388 w +(mount) 3198 5388 w +(driver) 3565 5388 w +(demultiplexes) 3899 5388 w +(protocol) 4636 5388 w +(messages) 720 5508 w +(between) 1231 5508 w +(clients) 1674 5508 w +(sharing) 2025 5508 w +(a) 2423 5508 w +(communication) 2514 5508 w +(channel) 3296 5508 w +(with) 3709 5508 w +(a) 3950 5508 w +(file) 4041 5508 w +(server.) 4228 5508 w +(For) 4625 5508 w +(each) 4816 5508 w +(outgoing) 720 5628 w +(RPC) 1202 5628 w +(message,) 1435 5628 w +(the) 1937 5628 w +(mount) 2138 5628 w +(driver) 2499 5628 w +(allocates) 2827 5628 w +(a) 3297 5628 w +(buffer) 3398 5628 w +(labeled) 3740 5628 w +(by) 4138 5628 w +(a) 4300 5628 w +(small) 4402 5628 w +(unique) 4706 5628 w +(integer,) 720 5748 w +(called) 1128 5748 w +(a) 1444 5748 w 10 /LucidaSans-Italic f -(to) 2454 5664 w -10 /LucidaSansUnicode00 f -(channel.) 2589 5664 w -(Every) 3070 5664 w -(time) 3365 5664 w -(a) 3620 5664 w -(walk) 3715 5664 w -(succeeds) 3974 5664 w -(in) 4455 5664 w -(moving) 4586 5664 w -(a) 4985 5664 w -(channel) 720 5784 w -(to) 1141 5784 w -(a) 1283 5784 w -(new) 1382 5784 w -(location) 1621 5784 w -(in) 2050 5784 w -(the) 2185 5784 w -(name) 2384 5784 w -(space,) 2694 5784 w -(the) 3046 5784 w -(mount) 3245 5784 w -(table) 3604 5784 w -(is) 3888 5784 w -(consulted) 4012 5784 w -(to) 4528 5784 w -(see) 4670 5784 w -(if) 4876 5784 w -(a) 4985 5784 w -10 /LucidaSansUnicode20 f -(\030) 720 5904 w -10 /LucidaSansUnicode00 f -(from) 752 5904 w -10 /LucidaSansUnicode20 f -(\031) 984 5904 w +(tag) 1532 5748 w 10 /LucidaSansUnicode00 f -(channel) 1058 5904 w -(matches) 1477 5904 w -(the) 1924 5904 w -(new) 2121 5904 w -(name;) 2358 5904 w -(if) 2698 5904 w -(so) 2806 5904 w -(the) 2960 5904 w -10 /LucidaSansUnicode20 f -(\030) 3157 5904 w -10 /LucidaSansUnicode00 f -(to) 3189 5904 w -10 /LucidaSansUnicode20 f -(\031) 3287 5904 w -10 /LucidaSansUnicode00 f -(channel) 3361 5904 w -(is) 3781 5904 w -(cloned) 3904 5904 w -(and) 4269 5904 w -(substituted) 4492 5904 w -(for) 720 6024 w -(the) 893 6024 w -(original.) 1082 6024 w -(Union) 1548 6024 w -(directories) 1865 6024 w -(are) 2414 6024 w -(implemented) 2600 6024 w -(by) 3271 6024 w -(converting) 3420 6024 w -(the) 3967 6024 w -10 /LucidaSansUnicode20 f -(\030) 4156 6024 w -10 /LucidaSansUnicode00 f -(to) 4188 6024 w -10 /LucidaSansUnicode20 f -(\031) 4286 6024 w -10 /LucidaSansUnicode00 f -(channel) 4352 6024 w -(into) 4763 6024 w -(a) 4985 6024 w -(list) 720 6144 w -(of) 903 6144 w -(channels:) 1038 6144 w -(a) 1535 6144 w -(successful) 1627 6144 w -(walk) 2165 6144 w -(to) 2421 6144 w -(a) 2556 6144 w -(union) 2649 6144 w -(directory) 2963 6144 w -(returns) 3432 6144 w -(a) 3820 6144 w -10 /LucidaSansUnicode20 f -(\030) 3913 6144 w -10 /LucidaSansUnicode00 f -(to) 3945 6144 w -10 /LucidaSansUnicode20 f -(\031) 4043 6144 w -10 /LucidaSansUnicode00 f -(channel) 4113 6144 w -(that) 4528 6144 w -(forms) 4757 6144 w -(the) 720 6264 w -(head) 912 6264 w -(of) 1184 6264 w -(a) 1318 6264 w -(list) 1409 6264 w -(of) 1591 6264 w -(channels,) 1725 6264 w -(each) 2221 6264 w -(representing) 2481 6264 w -(a) 3133 6264 w -(component) 3224 6264 w -(directory) 3806 6264 w -(of) 4273 6264 w -(the) 4407 6264 w -(union.) 4598 6264 w -(If) 4974 6264 w -(a) 720 6384 w -(walk) 812 6384 w -(fails) 1068 6384 w -(to) 1307 6384 w -(find) 1443 6384 w -(a) 1672 6384 w -(file) 1765 6384 w -(in) 1954 6384 w -(the) 2083 6384 w -(first) 2276 6384 w -(directory) 2509 6384 w -(of) 2978 6384 w -(the) 3114 6384 w -(union,) 3307 6384 w -(the) 3653 6384 w -(list) 3846 6384 w -(is) 4030 6384 w -(followed,) 4148 6384 w -(the) 4631 6384 w -(next) 4824 6384 w -(component cloned, and walk tried on that directory.) 720 6504 w -(Each file in Plan 9 is uniquely) 970 6660 w -(identified) 2418 6660 w -(by) 2912 6660 w -(a) 3060 6660 w -(set) 3148 6660 w -(of) 3325 6660 w -(integers:) 3456 6660 w -(the) 3915 6660 w -(type) 4103 6660 w -(of) 4344 6660 w -(the) 4475 6660 w -(channel) 4663 6660 w -(\(used) 720 6780 w -(as) 1019 6780 w -(the) 1159 6780 w -(index) 1348 6780 w -(of) 1653 6780 w -(the) 1785 6780 w -(function) 1974 6780 w -(call) 2409 6780 w -(table\),) 2607 6780 w -(the) 2946 6780 w -(server) 3135 6780 w -(or) 3465 6780 w -(device) 3600 6780 w -(number) 3940 6780 w -(distinguishing) 4350 6780 w -(the) 720 6900 w -(server) 908 6900 w -(from) 1238 6900 w -(others) 1503 6900 w -(of) 1844 6900 w -(the) 1975 6900 w -(same) 2163 6900 w -(type) 2452 6900 w -(\(decided) 2694 6900 w -(locally) 3142 6900 w -(by) 3482 6900 w -(the) 3631 6900 w -(driver\),) 3820 6900 w -(and) 4201 6900 w -(a) 4415 6900 w +(.) 1692 5748 w +(The) 1789 5748 w +(reply to the RPC is labeled with the same tag, which is used by) 2003 5748 w +(the mount driver to match the reply with the request.) 720 5868 w +(The) 970 6024 w +(kernel) 1209 6024 w +(representation) 1569 6024 w +(of) 2334 6024 w +(the) 2490 6024 w +(name) 2703 6024 w +(space) 3027 6024 w +(is) 3361 6024 w +(called) 3499 6024 w +(the) 3841 6024 w 10 /LucidaSans-Italic f -(qid) 4504 6900 w +(mount) 4055 6024 w +(table) 4426 6024 w 10 /LucidaSansUnicode00 f -(formed) 4689 6900 w -(from) 720 7020 w -(two) 1001 7020 w -(32-bit) 1225 7020 w -(numbers) 1587 7020 w -(called) 2064 7020 w +(,) 4668 6024 w +(which) 4759 6024 w +(stores) 720 6144 w +(a) 1050 6144 w +(list of bindings between channels.) 1138 6144 w +(Each entry in the mount table contains a pair) 2862 6144 w +(of) 720 6264 w +(channels:) 857 6264 w +(a) 1356 6264 w 10 /LucidaSans-Italic f -(path) 2395 7020 w +(from) 1450 6264 w 10 /LucidaSansUnicode00 f -(and) 2665 7020 w +(channel) 1725 6264 w +(and) 2141 6264 w +(a) 2360 6264 w 10 /LucidaSans-Italic f -(version) 2893 7020 w +(to) 2454 6264 w 10 /LucidaSansUnicode00 f -(.) 3245 7020 w -(The) 3357 7020 w -(path) 3586 7020 w -(is) 3851 7020 w -(a) 3979 7020 w -(unique) 4082 7020 w -(file) 4464 7020 w -(number) 4663 7020 w -(assigned) 720 7140 w -(by) 1188 7140 w -(a) 1342 7140 w -(device) 1436 7140 w -(driver) 1782 7140 w -(or) 2103 7140 w -(file) 2244 7140 w -(server) 2434 7140 w -(when) 2770 7140 w -(a) 3066 7140 w -(file) 3160 7140 w -(is) 3350 7140 w -(created.) 3469 7140 w -(The) 3931 7140 w -(version) 4151 7140 w -(number) 4543 7140 w -(is) 4960 7140 w -(updated) 720 7260 w -(whenever) 1160 7260 w -(the) 1663 7260 w -(file) 1859 7260 w -(is) 2051 7260 w -(modified;) 2172 7260 w -(as) 2675 7260 w -(described) 2821 7260 w -(in) 3334 7260 w -(the) 3465 7260 w -(next) 3660 7260 w -(section,) 3916 7260 w -(it) 4335 7260 w -(can) 4441 7260 w -(be) 4649 7260 w -(used) 4808 7260 w +(channel.) 2589 6264 w +(Every) 3070 6264 w +(time) 3365 6264 w +(a) 3620 6264 w +(walk) 3715 6264 w +(succeeds) 3974 6264 w +(in) 4455 6264 w +(moving) 4586 6264 w +(a) 4985 6264 w +(channel) 720 6384 w +(to) 1141 6384 w +(a) 1283 6384 w +(new) 1382 6384 w +(location) 1621 6384 w +(in) 2050 6384 w +(the) 2185 6384 w +(name) 2384 6384 w +(space,) 2694 6384 w +(the) 3046 6384 w +(mount) 3245 6384 w +(table) 3604 6384 w +(is) 3888 6384 w +(consulted) 4012 6384 w +(to) 4528 6384 w +(see) 4670 6384 w +(if) 4876 6384 w +(a) 4985 6384 w +10 /LucidaSansUnicode20 f +(\030) 720 6504 w +10 /LucidaSansUnicode00 f +(from) 752 6504 w +10 /LucidaSansUnicode20 f +(\031) 984 6504 w +10 /LucidaSansUnicode00 f +(channel) 1058 6504 w +(matches) 1477 6504 w +(the) 1924 6504 w +(new) 2121 6504 w +(name;) 2358 6504 w +(if) 2698 6504 w +(so) 2806 6504 w +(the) 2960 6504 w +10 /LucidaSansUnicode20 f +(\030) 3157 6504 w +10 /LucidaSansUnicode00 f +(to) 3189 6504 w +10 /LucidaSansUnicode20 f +(\031) 3287 6504 w +10 /LucidaSansUnicode00 f +(channel) 3361 6504 w +(is) 3781 6504 w +(cloned) 3904 6504 w +(and) 4269 6504 w +(substituted) 4492 6504 w +(for) 720 6624 w +(the) 893 6624 w +(original.) 1082 6624 w +(Union) 1548 6624 w +(directories) 1865 6624 w +(are) 2414 6624 w +(implemented) 2600 6624 w +(by) 3271 6624 w +(converting) 3420 6624 w +(the) 3967 6624 w +10 /LucidaSansUnicode20 f +(\030) 4156 6624 w +10 /LucidaSansUnicode00 f +(to) 4188 6624 w +10 /LucidaSansUnicode20 f +(\031) 4286 6624 w +10 /LucidaSansUnicode00 f +(channel) 4352 6624 w +(into) 4763 6624 w +(a) 4985 6624 w +(list) 720 6744 w +(of) 903 6744 w +(channels:) 1038 6744 w +(a) 1535 6744 w +(successful) 1627 6744 w +(walk) 2165 6744 w +(to) 2421 6744 w +(a) 2556 6744 w +(union) 2649 6744 w +(directory) 2963 6744 w +(returns) 3432 6744 w +(a) 3820 6744 w +10 /LucidaSansUnicode20 f +(\030) 3913 6744 w +10 /LucidaSansUnicode00 f +(to) 3945 6744 w +10 /LucidaSansUnicode20 f +(\031) 4043 6744 w +10 /LucidaSansUnicode00 f +(channel) 4113 6744 w +(that) 4528 6744 w +(forms) 4757 6744 w +(the) 720 6864 w +(head) 912 6864 w +(of) 1184 6864 w +(a) 1318 6864 w +(list) 1409 6864 w +(of) 1591 6864 w +(channels,) 1725 6864 w +(each) 2221 6864 w +(representing) 2481 6864 w +(a) 3133 6864 w +(component) 3224 6864 w +(directory) 3806 6864 w +(of) 4273 6864 w +(the) 4407 6864 w +(union.) 4598 6864 w +(If) 4974 6864 w +(a) 720 6984 w +(walk) 812 6984 w +(fails) 1068 6984 w +(to) 1307 6984 w +(find) 1443 6984 w +(a) 1672 6984 w +(file) 1765 6984 w +(in) 1954 6984 w +(the) 2083 6984 w +(first) 2276 6984 w +(directory) 2509 6984 w +(of) 2978 6984 w +(the) 3114 6984 w +(union,) 3307 6984 w +(the) 3653 6984 w +(list) 3846 6984 w +(is) 4030 6984 w +(followed,) 4148 6984 w +(the) 4631 6984 w +(next) 4824 6984 w +(component cloned, and walk tried on that directory.) 720 7104 w cleartomark showpage saveobj restore @@ -13016,586 +12924,599 @@ 15 pagesetup 10 /LucidaSansUnicode00 f (\255 15 \255) 2752 480 w -(to maintain cache coherency between clients and servers.) 720 840 w -(The) 970 996 w -(type) 1191 996 w -(and) 1439 996 w -(device) 1660 996 w -(number) 2008 996 w -(are) 2426 996 w -(analogous) 2619 996 w -(to) 3158 996 w -(UNIX) 3297 996 w -(major) 3573 996 w -(and) 3894 996 w -(minor) 4115 996 w -(device) 4442 996 w -(num\255) 4790 996 w -(bers;) 720 1116 w -(the) 998 1116 w -(qid) 1188 1116 w -(is) 1378 1116 w -(analogous) 1493 1116 w -(to) 2026 1116 w -(the) 2159 1116 w -(i-number.) 2349 1116 w -(The) 2912 1116 w -(device) 3128 1116 w -(and) 3470 1116 w -(type) 3685 1116 w -(connect) 3928 1116 w -(the) 4342 1116 w -(channel) 4531 1116 w -(to) 4942 1116 w -(a device driver and the) 720 1236 w -(qid) 1860 1236 w -(identifies) 2048 1236 w -(the) 2530 1236 w -(file) 2718 1236 w -(within) 2902 1236 w -(that) 3231 1236 w -(device.) 3455 1236 w -(If) 3827 1236 w -(the) 3926 1236 w -(file) 4114 1236 w -(recovered) 4298 1236 w -(from) 4808 1236 w -(a) 720 1356 w -(walk) 813 1356 w -(has) 1070 1356 w -(the) 1276 1356 w -(same) 1469 1356 w -(type,) 1762 1356 w -(device,) 2040 1356 w -(and) 2417 1356 w -(qid) 2635 1356 w -(path) 2827 1356 w -(as) 3081 1356 w -(an) 3224 1356 w -(entry) 3378 1356 w -(in) 3663 1356 w -(the) 3791 1356 w -(mount) 3983 1356 w -(table,) 4335 1356 w -(they) 4644 1356 w -(are) 4888 1356 w -(the) 720 1476 w -(same) 910 1476 w -(file) 1200 1476 w -(and) 1387 1476 w -(the) 1603 1476 w -(corresponding) 1794 1476 w -(substitution) 2533 1476 w -(from) 3150 1476 w -(the) 3418 1476 w -(mount) 3609 1476 w -(table) 3960 1476 w -(is) 4236 1476 w -(made.) 4352 1476 w -(This) 4719 1476 w -(is) 4960 1476 w -(how the name space is implemented.) 720 1596 w +(Each file in Plan 9 is uniquely) 970 840 w +(identified) 2418 840 w +(by) 2912 840 w +(a) 3060 840 w +(set) 3148 840 w +(of) 3325 840 w +(integers:) 3456 840 w +(the) 3915 840 w +(type) 4103 840 w +(of) 4344 840 w +(the) 4475 840 w +(channel) 4663 840 w +(\(used) 720 960 w +(as) 1019 960 w +(the) 1159 960 w +(index) 1348 960 w +(of) 1653 960 w +(the) 1785 960 w +(function) 1974 960 w +(call) 2409 960 w +(table\),) 2607 960 w +(the) 2946 960 w +(server) 3135 960 w +(or) 3465 960 w +(device) 3600 960 w +(number) 3940 960 w +(distinguishing) 4350 960 w +(the) 720 1080 w +(server) 908 1080 w +(from) 1238 1080 w +(others) 1503 1080 w +(of) 1844 1080 w +(the) 1975 1080 w +(same) 2163 1080 w +(type) 2452 1080 w +(\(decided) 2694 1080 w +(locally) 3142 1080 w +(by) 3482 1080 w +(the) 3631 1080 w +(driver\),) 3820 1080 w +(and) 4201 1080 w +(a) 4415 1080 w +10 /LucidaSans-Italic f +(qid) 4504 1080 w +10 /LucidaSansUnicode00 f +(formed) 4689 1080 w +(from) 720 1200 w +(two) 1001 1200 w +(32-bit) 1225 1200 w +(numbers) 1587 1200 w +(called) 2064 1200 w +10 /LucidaSans-Italic f +(path) 2395 1200 w +10 /LucidaSansUnicode00 f +(and) 2665 1200 w +10 /LucidaSans-Italic f +(version) 2893 1200 w +10 /LucidaSansUnicode00 f +(.) 3245 1200 w +(The) 3357 1200 w +(path) 3586 1200 w +(is) 3851 1200 w +(a) 3979 1200 w +(unique) 4082 1200 w +(file) 4464 1200 w +(number) 4663 1200 w +(assigned) 720 1320 w +(by) 1188 1320 w +(a) 1342 1320 w +(device) 1436 1320 w +(driver) 1782 1320 w +(or) 2103 1320 w +(file) 2244 1320 w +(server) 2434 1320 w +(when) 2770 1320 w +(a) 3066 1320 w +(file) 3160 1320 w +(is) 3350 1320 w +(created.) 3469 1320 w +(The) 3931 1320 w +(version) 4151 1320 w +(number) 4543 1320 w +(is) 4960 1320 w +(updated) 720 1440 w +(whenever) 1160 1440 w +(the) 1663 1440 w +(file) 1859 1440 w +(is) 2051 1440 w +(modified;) 2172 1440 w +(as) 2675 1440 w +(described) 2821 1440 w +(in) 3334 1440 w +(the) 3465 1440 w +(next) 3660 1440 w +(section,) 3916 1440 w +(it) 4335 1440 w +(can) 4441 1440 w +(be) 4649 1440 w +(used) 4808 1440 w +(to maintain cache coherency between clients and servers.) 720 1560 w +(The) 970 1716 w +(type) 1191 1716 w +(and) 1439 1716 w +(device) 1660 1716 w +(number) 2008 1716 w +(are) 2426 1716 w +(analogous) 2619 1716 w +(to) 3158 1716 w +(UNIX) 3297 1716 w +(major) 3573 1716 w +(and) 3894 1716 w +(minor) 4115 1716 w +(device) 4442 1716 w +(num\255) 4790 1716 w +(bers;) 720 1836 w +(the) 998 1836 w +(qid) 1188 1836 w +(is) 1378 1836 w +(analogous) 1493 1836 w +(to) 2026 1836 w +(the) 2159 1836 w +(i-number.) 2349 1836 w +(The) 2912 1836 w +(device) 3128 1836 w +(and) 3470 1836 w +(type) 3685 1836 w +(connect) 3928 1836 w +(the) 4342 1836 w +(channel) 4531 1836 w +(to) 4942 1836 w +(a device driver and the) 720 1956 w +(qid) 1860 1956 w +(identifies) 2048 1956 w +(the) 2530 1956 w +(file) 2718 1956 w +(within) 2902 1956 w +(that) 3231 1956 w +(device.) 3455 1956 w +(If) 3827 1956 w +(the) 3926 1956 w +(file) 4114 1956 w +(recovered) 4298 1956 w +(from) 4808 1956 w +(a) 720 2076 w +(walk) 813 2076 w +(has) 1070 2076 w +(the) 1276 2076 w +(same) 1469 2076 w +(type,) 1762 2076 w +(device,) 2040 2076 w +(and) 2417 2076 w +(qid) 2635 2076 w +(path) 2827 2076 w +(as) 3081 2076 w +(an) 3224 2076 w +(entry) 3378 2076 w +(in) 3663 2076 w +(the) 3791 2076 w +(mount) 3983 2076 w +(table,) 4335 2076 w +(they) 4644 2076 w +(are) 4888 2076 w +(the) 720 2196 w +(same) 910 2196 w +(file) 1200 2196 w +(and) 1387 2196 w +(the) 1603 2196 w +(corresponding) 1794 2196 w +(substitution) 2533 2196 w +(from) 3150 2196 w +(the) 3418 2196 w +(mount) 3609 2196 w +(table) 3960 2196 w +(is) 4236 2196 w +(made.) 4352 2196 w +(This) 4719 2196 w +(is) 4960 2196 w +(how the name space is implemented.) 720 2316 w 10 /LucidaSans-Demi f -(File Caching) 720 1836 w +(File Caching) 720 2556 w 10 /LucidaSansUnicode00 f -(The) 970 1992 w -(9P) 1201 1992 w -(protocol) 1369 1992 w -(has) 1823 1992 w -(no) 2041 1992 w -(explicit) 2214 1992 w -(support) 2619 1992 w -(for) 3047 1992 w -(caching) 3236 1992 w -(files) 3658 1992 w -(on) 3910 1992 w -(a) 4083 1992 w -(client.) 4188 1992 w -(The) 4566 1992 w -(large) 4797 1992 w -(memory) 720 2112 w -(of) 1151 2112 w -(the) 1284 2112 w -(central) 1474 2112 w -(file) 1840 2112 w -(server) 2026 2112 w -(acts) 2358 2112 w -(as) 2587 2112 w -(a) 2728 2112 w -(shared) 2818 2112 w -(cache) 3181 2112 w -(for) 3491 2112 w -(all) 3665 2112 w -(its) 3813 2112 w -(clients,) 3964 2112 w -(which) 4345 2112 w -(reduces) 4660 2112 w -(the) 720 2232 w -(total) 917 2232 w -(amount) 1179 2232 w -(of) 1592 2232 w -(memory) 1733 2232 w -(needed) 2172 2232 w -(across) 2571 2232 w -(all) 2924 2232 w -(machines) 3080 2232 w -(in) 3582 2232 w -(the) 3716 2232 w -(network.) 3914 2232 w -(Nonetheless,) 4413 2232 w -(there) 720 2352 w -(are) 1005 2352 w -(sound) 1190 2352 w -(reasons) 1522 2352 w -(to) 1932 2352 w -(cache) 2063 2352 w -(files on the client, such as a slow connection to the file) 2371 2352 w -(server.) 720 2472 w -(The) 970 2628 w -(version) 1188 2628 w -(field) 1577 2628 w -(of) 1828 2628 w -(the) 1963 2628 w -(qid) 2155 2628 w -(is) 2347 2628 w -(changed) 2464 2628 w -(whenever) 2912 2628 w -(the) 3411 2628 w -(file) 3603 2628 w -(is) 3791 2628 w -(modified,) 3908 2628 w -(which) 4408 2628 w -(makes) 4727 2628 w -(it) 720 2748 w -(possible) 826 2748 w -(to) 1269 2748 w -(do) 1407 2748 w -(some) 1571 2748 w -(weakly) 1872 2748 w -(coherent) 2239 2748 w -(forms) 2705 2748 w -(of) 3027 2748 w -(caching.) 3164 2748 w -(The) 3639 2748 w -(most) 3859 2748 w -(important) 4140 2748 w -(is) 4657 2748 w -(client) 4776 2748 w -(caching) 720 2868 w -(of) 1135 2868 w -(text) 1276 2868 w -(and) 1510 2868 w -(data) 1733 2868 w -(segments) 1986 2868 w -(of) 2497 2868 w -(executable) 2638 2868 w -(files.) 3207 2868 w -(When) 3516 2868 w -(a) 3825 2868 w -(process) 3923 2868 w -10 /LucidaTypewriter f -(execs) 4340 2868 w -10 /LucidaSansUnicode00 f -(a) 4743 2868 w -(pro\255) 4842 2868 w -(gram,) 720 2988 w -(the) 1043 2988 w -(file) 1238 2988 w -(is) 1429 2988 w -(re-opened) 1549 2988 w -(and) 2105 2988 w -(the) 2325 2988 w -(qid) 2520 2988 w -10 /LucidaSansUnicode20 f -(\031) 2675 2988 w -10 /LucidaSansUnicode00 f -(s) 2707 2988 w -(version) 2798 2988 w -(is) 3189 2988 w -(compared) 3308 2988 w -(with) 3830 2988 w -(that) 4074 2988 w -(in) 4304 2988 w -(the) 4434 2988 w -(cache;) 4628 2988 w -(if) 4974 2988 w -(they) 720 3108 w -(match,) 962 3108 w -(the) 1327 3108 w -(local) 1517 3108 w -(copy) 1777 3108 w -(is) 2039 3108 w -(used.) 2154 3108 w -(The) 2485 3108 w -(same) 2701 3108 w -(method) 2991 3108 w -(can) 3398 3108 w -(be) 3601 3108 w -(used) 3755 3108 w -(to) 4022 3108 w -(build) 4155 3108 w -(a) 4436 3108 w -(local) 4527 3108 w -(cach\255) 4788 3108 w -(ing) 720 3228 w -(file) 922 3228 w -(server.) 1122 3228 w -(This) 1532 3228 w -(user-level) 1786 3228 w -(server) 2325 3228 w -(interposes) 2671 3228 w -(on) 3227 3228 w -(the) 3398 3228 w -(9P) 3601 3228 w -(connection) 3767 3228 w -(to) 4347 3228 w -(the) 4493 3228 w -(remote) 4696 3228 w -(server) 720 3348 w -(and) 1066 3348 w -(monitors) 1295 3348 w -(the) 1779 3348 w -(traffic,) 1983 3348 w -(copying) 2351 3348 w -(data) 2780 3348 w -(to) 3039 3348 w -(a) 3186 3348 w -(local) 3290 3348 w -(disk.) 3564 3348 w -(When) 3878 3348 w -(it) 4193 3348 w -(sees) 4308 3348 w -(a) 4572 3348 w -(read) 4677 3348 w -(of) 4942 3348 w -(known) 720 3468 w -(data,) 1086 3468 w -(it) 1374 3468 w -(answers) 1486 3468 w -(directly,) 1925 3468 w -(while) 2361 3468 w -(writes) 2660 3468 w -(are) 2997 3468 w -(passed) 3195 3468 w -(on) 3580 3468 w -(immediately) 3748 3468 w -10 /LucidaSansUnicode20 f -(\024) 4340 3468 w -10 /LucidaSansUnicode00 f -(the) 4440 3468 w -(cache) 4640 3468 w -(is) 4960 3468 w -(write-through) 720 3588 w -10 /LucidaSansUnicode20 f -(\024) 1405 3588 w -10 /LucidaSansUnicode00 f -(to) 1505 3588 w -(keep) 1637 3588 w -(the) 1904 3588 w -(central) 2093 3588 w -(copy) 2458 3588 w -(up) 2719 3588 w -(to) 2878 3588 w -(date.) 3010 3588 w -(This) 3319 3588 w -(is) 3558 3588 w -(transparent) 3673 3588 w -(to) 4268 3588 w -(processes) 4401 3588 w -(on) 4917 3588 w -(the) 720 3708 w -(terminal) 916 3708 w -(and) 1359 3708 w -(requires) 1580 3708 w -(no) 2020 3708 w -(change) 2184 3708 w -(to) 2573 3708 w -(9P;) 2712 3708 w -(it) 2902 3708 w -(works) 3008 3708 w -(well) 3336 3708 w -(on) 3567 3708 w -(home) 3730 3708 w -(machines) 4042 3708 w -(connected) 4541 3708 w -(over) 720 3828 w -(serial) 980 3828 w -(lines.) 1291 3828 w -(A) 1632 3828 w -(similar) 1751 3828 w -(method) 2128 3828 w -(can) 2550 3828 w -(be) 2768 3828 w -(applied) 2937 3828 w -(to) 3345 3828 w -(build) 3493 3828 w -(a) 3790 3828 w -(general) 3896 3828 w -(client) 4308 3828 w -(cache) 4623 3828 w -(in) 4949 3828 w -(unused local memory, but this has not been done in Plan 9.) 720 3948 w +(The) 970 2712 w +(9P) 1201 2712 w +(protocol) 1369 2712 w +(has) 1823 2712 w +(no) 2041 2712 w +(explicit) 2214 2712 w +(support) 2619 2712 w +(for) 3047 2712 w +(caching) 3236 2712 w +(files) 3658 2712 w +(on) 3910 2712 w +(a) 4083 2712 w +(client.) 4188 2712 w +(The) 4566 2712 w +(large) 4797 2712 w +(memory) 720 2832 w +(of) 1151 2832 w +(the) 1284 2832 w +(central) 1474 2832 w +(file) 1840 2832 w +(server) 2026 2832 w +(acts) 2358 2832 w +(as) 2587 2832 w +(a) 2728 2832 w +(shared) 2818 2832 w +(cache) 3181 2832 w +(for) 3491 2832 w +(all) 3665 2832 w +(its) 3813 2832 w +(clients,) 3964 2832 w +(which) 4345 2832 w +(reduces) 4660 2832 w +(the) 720 2952 w +(total) 917 2952 w +(amount) 1179 2952 w +(of) 1592 2952 w +(memory) 1733 2952 w +(needed) 2172 2952 w +(across) 2571 2952 w +(all) 2924 2952 w +(machines) 3080 2952 w +(in) 3582 2952 w +(the) 3716 2952 w +(network.) 3914 2952 w +(Nonetheless,) 4413 2952 w +(there) 720 3072 w +(are) 1005 3072 w +(sound) 1190 3072 w +(reasons) 1522 3072 w +(to) 1932 3072 w +(cache) 2063 3072 w +(files on the client, such as a slow connection to the file) 2371 3072 w +(server.) 720 3192 w +(The) 970 3348 w +(version) 1188 3348 w +(field) 1577 3348 w +(of) 1828 3348 w +(the) 1963 3348 w +(qid) 2155 3348 w +(is) 2347 3348 w +(changed) 2464 3348 w +(whenever) 2912 3348 w +(the) 3411 3348 w +(file) 3603 3348 w +(is) 3791 3348 w +(modified,) 3908 3348 w +(which) 4408 3348 w +(makes) 4727 3348 w +(it) 720 3468 w +(possible) 826 3468 w +(to) 1269 3468 w +(do) 1407 3468 w +(some) 1571 3468 w +(weakly) 1872 3468 w +(coherent) 2239 3468 w +(forms) 2705 3468 w +(of) 3027 3468 w +(caching.) 3164 3468 w +(The) 3639 3468 w +(most) 3859 3468 w +(important) 4140 3468 w +(is) 4657 3468 w +(client) 4776 3468 w +(caching) 720 3588 w +(of) 1135 3588 w +(text) 1276 3588 w +(and) 1510 3588 w +(data) 1733 3588 w +(segments) 1986 3588 w +(of) 2497 3588 w +(executable) 2638 3588 w +(files.) 3207 3588 w +(When) 3516 3588 w +(a) 3825 3588 w +(process) 3923 3588 w +10 /LucidaTypewriter f +(execs) 4340 3588 w +10 /LucidaSansUnicode00 f +(a) 4743 3588 w +(pro\255) 4842 3588 w +(gram,) 720 3708 w +(the) 1043 3708 w +(file) 1238 3708 w +(is) 1429 3708 w +(re-opened) 1549 3708 w +(and) 2105 3708 w +(the) 2325 3708 w +(qid) 2520 3708 w +10 /LucidaSansUnicode20 f +(\031) 2675 3708 w +10 /LucidaSansUnicode00 f +(s) 2707 3708 w +(version) 2798 3708 w +(is) 3189 3708 w +(compared) 3308 3708 w +(with) 3830 3708 w +(that) 4074 3708 w +(in) 4304 3708 w +(the) 4434 3708 w +(cache;) 4628 3708 w +(if) 4974 3708 w +(they) 720 3828 w +(match,) 962 3828 w +(the) 1327 3828 w +(local) 1517 3828 w +(copy) 1777 3828 w +(is) 2039 3828 w +(used.) 2154 3828 w +(The) 2485 3828 w +(same) 2701 3828 w +(method) 2991 3828 w +(can) 3398 3828 w +(be) 3601 3828 w +(used) 3755 3828 w +(to) 4022 3828 w +(build) 4155 3828 w +(a) 4436 3828 w +(local) 4527 3828 w +(cach\255) 4788 3828 w +(ing) 720 3948 w +(file) 922 3948 w +(server.) 1122 3948 w +(This) 1532 3948 w +(user-level) 1786 3948 w +(server) 2325 3948 w +(interposes) 2671 3948 w +(on) 3227 3948 w +(the) 3398 3948 w +(9P) 3601 3948 w +(connection) 3767 3948 w +(to) 4347 3948 w +(the) 4493 3948 w +(remote) 4696 3948 w +(server) 720 4068 w +(and) 1066 4068 w +(monitors) 1295 4068 w +(the) 1779 4068 w +(traffic,) 1983 4068 w +(copying) 2351 4068 w +(data) 2780 4068 w +(to) 3039 4068 w +(a) 3186 4068 w +(local) 3290 4068 w +(disk.) 3564 4068 w +(When) 3878 4068 w +(it) 4193 4068 w +(sees) 4308 4068 w +(a) 4572 4068 w +(read) 4677 4068 w +(of) 4942 4068 w +(known) 720 4188 w +(data,) 1086 4188 w +(it) 1374 4188 w +(answers) 1486 4188 w +(directly,) 1925 4188 w +(while) 2361 4188 w +(writes) 2660 4188 w +(are) 2997 4188 w +(passed) 3195 4188 w +(on) 3580 4188 w +(immediately) 3748 4188 w +10 /LucidaSansUnicode20 f +(\024) 4340 4188 w +10 /LucidaSansUnicode00 f +(the) 4440 4188 w +(cache) 4640 4188 w +(is) 4960 4188 w +(write-through) 720 4308 w +10 /LucidaSansUnicode20 f +(\024) 1405 4308 w +10 /LucidaSansUnicode00 f +(to) 1505 4308 w +(keep) 1637 4308 w +(the) 1904 4308 w +(central) 2093 4308 w +(copy) 2458 4308 w +(up) 2719 4308 w +(to) 2878 4308 w +(date.) 3010 4308 w +(This) 3319 4308 w +(is) 3558 4308 w +(transparent) 3673 4308 w +(to) 4268 4308 w +(processes) 4401 4308 w +(on) 4917 4308 w +(the) 720 4428 w +(terminal) 916 4428 w +(and) 1359 4428 w +(requires) 1580 4428 w +(no) 2020 4428 w +(change) 2184 4428 w +(to) 2573 4428 w +(9P;) 2712 4428 w +(it) 2902 4428 w +(works) 3008 4428 w +(well) 3336 4428 w +(on) 3567 4428 w +(home) 3730 4428 w +(machines) 4042 4428 w +(connected) 4541 4428 w +(over) 720 4548 w +(serial) 980 4548 w +(lines.) 1291 4548 w +(A) 1632 4548 w +(similar) 1751 4548 w +(method) 2128 4548 w +(can) 2550 4548 w +(be) 2768 4548 w +(applied) 2937 4548 w +(to) 3345 4548 w +(build) 3493 4548 w +(a) 3790 4548 w +(general) 3896 4548 w +(client) 4308 4548 w +(cache) 4623 4548 w +(in) 4949 4548 w +(unused local memory, but this has not been done in Plan 9.) 720 4668 w 10 /LucidaSans-Demi f -(Networks and Communication Devices) 720 4188 w +(Networks and Communication Devices) 720 4908 w 10 /LucidaSansUnicode00 f -(Network) 970 4344 w -(interfaces) 1424 4344 w -(are) 1949 4344 w -(kernel-resident) 2151 4344 w -(file) 2956 4344 w -(systems,) 3157 4344 w -(analogous) 3630 4344 w -(to) 4178 4344 w -(the) 4326 4344 w -(EIA) 4531 4344 w -(device) 4733 4344 w -(described) 720 4464 w -(earlier.) 1237 4464 w -(Call) 1652 4464 w -(setup) 1878 4464 w -(and) 2191 4464 w -(shutdown) 2415 4464 w -(are) 2934 4464 w -(achieved) 3129 4464 w -(by) 3596 4464 w -(writing) 3754 4464 w -(text) 4134 4464 w -(strings) 4368 4464 w -(to) 4744 4464 w -(the) 4885 4464 w -(control) 720 4584 w -(file) 1101 4584 w -(associated) 1292 4584 w -(with) 1841 4584 w -(the) 2086 4584 w -(device;) 2281 4584 w -(information) 2660 4584 w -(is) 3267 4584 w -(sent) 3387 4584 w -(and) 3633 4584 w -(received) 3853 4584 w -(by) 4297 4584 w -(reading) 4452 4584 w -(and) 4860 4584 w -(writing) 720 4704 w -(the) 1098 4704 w -(data) 1294 4704 w -(file.) 1545 4704 w -(The) 1801 4704 w -(structure) 2023 4704 w -(and) 2502 4704 w -(semantics) 2723 4704 w -(of) 3249 4704 w -(the) 3387 4704 w -(devices) 3582 4704 w -(is) 3980 4704 w -(common) 4100 4704 w -(to) 4561 4704 w -(all) 4699 4704 w -(net\255) 4852 4704 w -(works) 720 4824 w -(so,) 1052 4824 w -(other) 1240 4824 w -(than) 1542 4824 w -(a) 1803 4824 w -(file) 1903 4824 w -(name) 2099 4824 w -(substitution,) 2410 4824 w -(the) 3068 4824 w -(same) 3268 4824 w -(procedure) 3568 4824 w -(makes) 4107 4824 w -(a) 4465 4824 w -(call) 4565 4824 w -(using) 4774 4824 w -(TCP over Ethernet as URP over Datakit [Fra80].) 720 4944 w -(This example illustrates the structure of the TCP device:) 970 5100 w +(Network) 970 5064 w +(interfaces) 1424 5064 w +(are) 1949 5064 w +(kernel-resident) 2151 5064 w +(file) 2956 5064 w +(systems,) 3157 5064 w +(analogous) 3630 5064 w +(to) 4178 5064 w +(the) 4326 5064 w +(EIA) 4531 5064 w +(device) 4733 5064 w +(described) 720 5184 w +(earlier.) 1237 5184 w +(Call) 1652 5184 w +(setup) 1878 5184 w +(and) 2191 5184 w +(shutdown) 2415 5184 w +(are) 2934 5184 w +(achieved) 3129 5184 w +(by) 3596 5184 w +(writing) 3754 5184 w +(text) 4134 5184 w +(strings) 4368 5184 w +(to) 4744 5184 w +(the) 4885 5184 w +(control) 720 5304 w +(file) 1101 5304 w +(associated) 1292 5304 w +(with) 1841 5304 w +(the) 2086 5304 w +(device;) 2281 5304 w +(information) 2660 5304 w +(is) 3267 5304 w +(sent) 3387 5304 w +(and) 3633 5304 w +(received) 3853 5304 w +(by) 4297 5304 w +(reading) 4452 5304 w +(and) 4860 5304 w +(writing) 720 5424 w +(the) 1098 5424 w +(data) 1294 5424 w +(file.) 1545 5424 w +(The) 1801 5424 w +(structure) 2023 5424 w +(and) 2502 5424 w +(semantics) 2723 5424 w +(of) 3249 5424 w +(the) 3387 5424 w +(devices) 3582 5424 w +(is) 3980 5424 w +(common) 4100 5424 w +(to) 4561 5424 w +(all) 4699 5424 w +(net\255) 4852 5424 w +(works) 720 5544 w +(so,) 1052 5544 w +(other) 1240 5544 w +(than) 1542 5544 w +(a) 1803 5544 w +(file) 1903 5544 w +(name) 2099 5544 w +(substitution,) 2410 5544 w +(the) 3068 5544 w +(same) 3268 5544 w +(procedure) 3568 5544 w +(makes) 4107 5544 w +(a) 4465 5544 w +(call) 4565 5544 w +(using) 4774 5544 w +(TCP over Ethernet as URP over Datakit [Fra80].) 720 5664 w +(This example illustrates the structure of the TCP device:) 970 5820 w 9 /LucidaTypewriter f -(%) 1008 5270 w -(ls) 1138 5270 w -(-lp) 1333 5270 w -(/net/tcp) 1593 5270 w -(d-r-xr-xr-x) 1008 5380 w -(I) 1788 5380 w -(0) 1918 5380 w -(bootes) 2048 5380 w -(bootes) 2503 5380 w -(0) 2958 5380 w -(Feb) 3088 5380 w -(23) 3348 5380 w -(20:20) 3543 5380 w -(0) 3933 5380 w -(d-r-xr-xr-x) 1008 5490 w -(I) 1788 5490 w -(0) 1918 5490 w -(bootes) 2048 5490 w -(bootes) 2503 5490 w -(0) 2958 5490 w -(Feb) 3088 5490 w -(23) 3348 5490 w -(20:20) 3543 5490 w -(1) 3933 5490 w -(--rw-rw-rw-) 1008 5600 w -(I) 1788 5600 w -(0) 1918 5600 w -(bootes) 2048 5600 w -(bootes) 2503 5600 w -(0) 2958 5600 w -(Feb) 3088 5600 w -(23) 3348 5600 w -(20:20) 3543 5600 w -(clone) 3933 5600 w -(%) 1008 5710 w -(ls) 1138 5710 w -(-lp) 1333 5710 w -(/net/tcp/0) 1593 5710 w -(--rw-rw----) 1008 5820 w -(I) 1788 5820 w -(0) 1918 5820 w -(rob) 2048 5820 w -(bootes) 2503 5820 w -(0) 2958 5820 w -(Feb) 3088 5820 w -(23) 3348 5820 w -(20:20) 3543 5820 w -(ctl) 3933 5820 w -(--rw-rw----) 1008 5930 w -(I) 1788 5930 w -(0) 1918 5930 w -(rob) 2048 5930 w -(bootes) 2503 5930 w -(0) 2958 5930 w -(Feb) 3088 5930 w -(23) 3348 5930 w -(20:20) 3543 5930 w -(data) 3933 5930 w -(--rw-rw----) 1008 6040 w -(I) 1788 6040 w -(0) 1918 6040 w -(rob) 2048 6040 w -(bootes) 2503 6040 w -(0) 2958 6040 w -(Feb) 3088 6040 w -(23) 3348 6040 w -(20:20) 3543 6040 w -(listen) 3933 6040 w -(--r--r--r--) 1008 6150 w -(I) 1788 6150 w -(0) 1918 6150 w -(bootes) 2048 6150 w -(bootes) 2503 6150 w -(0) 2958 6150 w -(Feb) 3088 6150 w -(23) 3348 6150 w -(20:20) 3543 6150 w -(local) 3933 6150 w -(--r--r--r--) 1008 6260 w -(I) 1788 6260 w -(0) 1918 6260 w -(bootes) 2048 6260 w -(bootes) 2503 6260 w -(0) 2958 6260 w -(Feb) 3088 6260 w -(23) 3348 6260 w -(20:20) 3543 6260 w -(remote) 3933 6260 w -(--r--r--r--) 1008 6370 w -(I) 1788 6370 w -(0) 1918 6370 w -(bootes) 2048 6370 w -(bootes) 2503 6370 w -(0) 2958 6370 w -(Feb) 3088 6370 w -(23) 3348 6370 w -(20:20) 3543 6370 w -(status) 3933 6370 w -(%) 1008 6480 w -10 /LucidaSansUnicode00 f -(The) 720 6660 w -(top) 941 6660 w -(directory,) 1142 6660 w -10 /LucidaTypewriter f -(/net/tcp) 1645 6660 w -10 /LucidaSansUnicode00 f -(,) 2221 6660 w -(contains) 2293 6660 w -(a) 2741 6660 w -10 /LucidaTypewriter f -(clone) 2837 6660 w -10 /LucidaSansUnicode00 f -(file) 3238 6660 w -(and) 3430 6660 w -(a) 3651 6660 w -(directory) 3747 6660 w -(for) 4219 6660 w -(each) 4399 6660 w -(connec\255) 4664 6660 w -(tion,) 720 6780 w -(numbered) 976 6780 w -10 /LucidaTypewriter f -(0) 1507 6780 w -10 /LucidaSansUnicode00 f -(to) 1614 6780 w -10 /LucidaSans-Italic f -(n) 1747 6780 w -10 /LucidaSansUnicode00 f -(.) 1809 6780 w -(Each) 1908 6780 w -(connection) 2165 6780 w -(directory) 2732 6780 w -(corresponds) 3198 6780 w -(to) 3834 6780 w -(an) 3967 6780 w -(TCP/IP) 4118 6780 w -(connection.) 4476 6780 w -(Opening) 720 6900 w -10 /LucidaTypewriter f -(clone) 1164 6900 w -10 /LucidaSansUnicode00 f -(reserves an unused connection and) 1556 6900 w -(returns) 3306 6900 w -(its) 3689 6900 w -(control) 3839 6900 w -(file.) 4214 6900 w -(Reading) 4462 6900 w -(the) 4885 6900 w -(control) 720 7020 w -(file returns the textual connection number, so the user process can construct the) 1095 7020 w -(full) 720 7140 w -(name) 939 7140 w -(of) 1267 7140 w -(the) 1427 7140 w -(newly) 1644 7140 w -(allocated) 1982 7140 w -(connection) 2481 7140 w -(directory.) 3076 7140 w -(The) 3634 7140 w -10 /LucidaTypewriter f -(local) 3878 7140 w -10 /LucidaSansUnicode00 f -(,) 4238 7140 w -10 /LucidaTypewriter f -(remote) 4333 7140 w -10 /LucidaSansUnicode00 f -(,) 4765 7140 w -(and) 4860 7140 w -10 /LucidaTypewriter f -(status) 720 7260 w -10 /LucidaSansUnicode00 f -(files) 1194 7260 w -(are) 1438 7260 w -(diagnostic;) 1632 7260 w -(for) 2206 7260 w -(example,) 2387 7260 w -10 /LucidaTypewriter f -(remote) 2873 7260 w -10 /LucidaSansUnicode00 f -(contains) 3346 7260 w -(the) 3795 7260 w -(address) 3991 7260 w -(\(for) 4412 7260 w -(TCP,) 4625 7260 w -(the) 4885 7260 w +(%) 920 5990 w +(ls) 1050 5990 w +(-lp) 1245 5990 w +(/net/tcp) 1505 5990 w +(d-r-xr-xr-x) 920 6100 w +(I) 1700 6100 w +(0) 1830 6100 w +(bootes) 1960 6100 w +(bootes) 2415 6100 w +(0) 2870 6100 w +(Feb) 3000 6100 w +(23) 3260 6100 w +(20:20) 3455 6100 w +(0) 3845 6100 w +(d-r-xr-xr-x) 920 6210 w +(I) 1700 6210 w +(0) 1830 6210 w +(bootes) 1960 6210 w +(bootes) 2415 6210 w +(0) 2870 6210 w +(Feb) 3000 6210 w +(23) 3260 6210 w +(20:20) 3455 6210 w +(1) 3845 6210 w +(--rw-rw-rw-) 920 6320 w +(I) 1700 6320 w +(0) 1830 6320 w +(bootes) 1960 6320 w +(bootes) 2415 6320 w +(0) 2870 6320 w +(Feb) 3000 6320 w +(23) 3260 6320 w +(20:20) 3455 6320 w +(clone) 3845 6320 w +(%) 920 6430 w +(ls) 1050 6430 w +(-lp) 1245 6430 w +(/net/tcp/0) 1505 6430 w +(--rw-rw----) 920 6540 w +(I) 1700 6540 w +(0) 1830 6540 w +(rob) 1960 6540 w +(bootes) 2415 6540 w +(0) 2870 6540 w +(Feb) 3000 6540 w +(23) 3260 6540 w +(20:20) 3455 6540 w +(ctl) 3845 6540 w +(--rw-rw----) 920 6650 w +(I) 1700 6650 w +(0) 1830 6650 w +(rob) 1960 6650 w +(bootes) 2415 6650 w +(0) 2870 6650 w +(Feb) 3000 6650 w +(23) 3260 6650 w +(20:20) 3455 6650 w +(data) 3845 6650 w +(--rw-rw----) 920 6760 w +(I) 1700 6760 w +(0) 1830 6760 w +(rob) 1960 6760 w +(bootes) 2415 6760 w +(0) 2870 6760 w +(Feb) 3000 6760 w +(23) 3260 6760 w +(20:20) 3455 6760 w +(listen) 3845 6760 w +(--r--r--r--) 920 6870 w +(I) 1700 6870 w +(0) 1830 6870 w +(bootes) 1960 6870 w +(bootes) 2415 6870 w +(0) 2870 6870 w +(Feb) 3000 6870 w +(23) 3260 6870 w +(20:20) 3455 6870 w +(local) 3845 6870 w +(--r--r--r--) 920 6980 w +(I) 1700 6980 w +(0) 1830 6980 w +(bootes) 1960 6980 w +(bootes) 2415 6980 w +(0) 2870 6980 w +(Feb) 3000 6980 w +(23) 3260 6980 w +(20:20) 3455 6980 w +(remote) 3845 6980 w +(--r--r--r--) 920 7090 w +(I) 1700 7090 w +(0) 1830 7090 w +(bootes) 1960 7090 w +(bootes) 2415 7090 w +(0) 2870 7090 w +(Feb) 3000 7090 w +(23) 3260 7090 w +(20:20) 3455 7090 w +(status) 3845 7090 w +(%) 920 7200 w cleartomark showpage saveobj restore @@ -13606,574 +13527,547 @@ 16 pagesetup 10 /LucidaSansUnicode00 f (\255 16 \255) 2752 480 w -(IP address and port number\) of the remote side.) 720 840 w -(A) 970 996 w -(call) 1076 996 w -(is) 1277 996 w -(initiated) 1394 996 w -(by) 1828 996 w -(writing) 1980 996 w -(a) 2354 996 w -(connect) 2446 996 w -(message) 2863 996 w -(with) 3325 996 w -(a) 3568 996 w -(network-specific) 3661 996 w -(address) 4516 996 w -(as) 4934 996 w -(its) 720 1116 w -(argument;) 875 1116 w -(for) 1412 1116 w -(example,) 1588 1116 w -(to) 2070 1116 w -(open) 2205 1116 w -(a) 2484 1116 w -(Telnet) 2576 1116 w -(session) 2916 1116 w -(\(port) 3314 1116 w -(23\)) 3586 1116 w -(to) 3782 1116 w -(a) 3917 1116 w -(remote) 4009 1116 w -(machine) 4390 1116 w -(with) 4835 1116 w -(IP address 135.104.9.52, the string is:) 720 1236 w +(The) 720 840 w +(top) 941 840 w +(directory,) 1142 840 w +10 /LucidaTypewriter f +(/net/tcp) 1645 840 w +10 /LucidaSansUnicode00 f +(,) 2221 840 w +(contains) 2293 840 w +(a) 2741 840 w +10 /LucidaTypewriter f +(clone) 2837 840 w +10 /LucidaSansUnicode00 f +(file) 3238 840 w +(and) 3430 840 w +(a) 3651 840 w +(directory) 3747 840 w +(for) 4219 840 w +(each) 4399 840 w +(connec\255) 4664 840 w +(tion,) 720 960 w +(numbered) 976 960 w +10 /LucidaTypewriter f +(0) 1507 960 w +10 /LucidaSansUnicode00 f +(to) 1614 960 w +10 /LucidaSans-Italic f +(n) 1747 960 w +10 /LucidaSansUnicode00 f +(.) 1809 960 w +(Each) 1908 960 w +(connection) 2165 960 w +(directory) 2732 960 w +(corresponds) 3198 960 w +(to) 3834 960 w +(an) 3967 960 w +(TCP/IP) 4118 960 w +(connection.) 4476 960 w +(Opening) 720 1080 w +10 /LucidaTypewriter f +(clone) 1164 1080 w +10 /LucidaSansUnicode00 f +(reserves an unused connection and) 1556 1080 w +(returns) 3306 1080 w +(its) 3689 1080 w +(control) 3839 1080 w +(file.) 4214 1080 w +(Reading) 4462 1080 w +(the) 4885 1080 w +(control) 720 1200 w +(file returns the textual connection number, so the user process can construct the) 1095 1200 w +(full) 720 1320 w +(name) 939 1320 w +(of) 1267 1320 w +(the) 1427 1320 w +(newly) 1644 1320 w +(allocated) 1982 1320 w +(connection) 2481 1320 w +(directory.) 3076 1320 w +(The) 3634 1320 w +10 /LucidaTypewriter f +(local) 3878 1320 w +10 /LucidaSansUnicode00 f +(,) 4238 1320 w +10 /LucidaTypewriter f +(remote) 4333 1320 w +10 /LucidaSansUnicode00 f +(,) 4765 1320 w +(and) 4860 1320 w +10 /LucidaTypewriter f +(status) 720 1440 w +10 /LucidaSansUnicode00 f +(files) 1194 1440 w +(are) 1438 1440 w +(diagnostic;) 1632 1440 w +(for) 2206 1440 w +(example,) 2387 1440 w +10 /LucidaTypewriter f +(remote) 2873 1440 w +10 /LucidaSansUnicode00 f +(contains) 3346 1440 w +(the) 3795 1440 w +(address) 3991 1440 w +(\(for) 4412 1440 w +(TCP,) 4625 1440 w +(the) 4885 1440 w +(IP address and port number\) of the remote side.) 720 1560 w +(A) 970 1716 w +(call) 1076 1716 w +(is) 1277 1716 w +(initiated) 1394 1716 w +(by) 1828 1716 w +(writing) 1980 1716 w +(a) 2354 1716 w +(connect) 2446 1716 w +(message) 2863 1716 w +(with) 3325 1716 w +(a) 3568 1716 w +(network-specific) 3661 1716 w +(address) 4516 1716 w +(as) 4934 1716 w +(its) 720 1836 w +(argument;) 875 1836 w +(for) 1412 1836 w +(example,) 1588 1836 w +(to) 2070 1836 w +(open) 2205 1836 w +(a) 2484 1836 w +(Telnet) 2576 1836 w +(session) 2916 1836 w +(\(port) 3314 1836 w +(23\)) 3586 1836 w +(to) 3782 1836 w +(a) 3917 1836 w +(remote) 4009 1836 w +(machine) 4390 1836 w +(with) 4835 1836 w +(IP address 135.104.9.52, the string is:) 720 1956 w 9 /LucidaTypewriter f -(connect) 1008 1406 w -(135.104.9.52!23) 1528 1406 w +(connect) 920 2126 w +(135.104.9.52!23) 1440 2126 w 10 /LucidaSansUnicode00 f -(The) 720 1586 w -(write) 937 1586 w -(to) 1213 1586 w -(the) 1347 1586 w -(control) 1538 1586 w -(file) 1916 1586 w -(blocks) 2103 1586 w -(until) 2452 1586 w -(the) 2707 1586 w -(connection) 2898 1586 w -(is) 3466 1586 w -(established;) 3582 1586 w -(if) 4203 1586 w -(the) 4306 1586 w -(destination) 4498 1586 w -(is) 720 1706 w -(unreachable,) 859 1706 w -(the) 1541 1706 w -(write) 1754 1706 w -(returns) 2052 1706 w -(an) 2460 1706 w -(error.) 2635 1706 w -(Once) 2997 1706 w -(the) 3302 1706 w -(connection) 3515 1706 w -(is) 4105 1706 w -(established,) 4243 1706 w -(the) 4885 1706 w -10 /LucidaTypewriter f -(telnet) 720 1826 w -10 /LucidaSansUnicode00 f -(application) 1197 1826 w -(reads) 1776 1826 w -(and) 2087 1826 w -(writes) 2312 1826 w -(the) 2648 1826 w -10 /LucidaTypewriter f -(data) 2849 1826 w -10 /LucidaSansUnicode00 f -(file) 3183 1826 w -(to) 3380 1826 w -(talk) 3524 1826 w -(to) 3749 1826 w -(the) 3893 1826 w -(remote) 4094 1826 w -(Telnet) 4484 1826 w -(dae\255) 4833 1826 w -(mon.) 720 1946 w -(On the other end, the Telnet daemon would start by writing) 1032 1946 w +(The) 720 2306 w +(write) 937 2306 w +(to) 1213 2306 w +(the) 1347 2306 w +(control) 1538 2306 w +(file) 1916 2306 w +(blocks) 2103 2306 w +(until) 2452 2306 w +(the) 2707 2306 w +(connection) 2898 2306 w +(is) 3466 2306 w +(established;) 3582 2306 w +(if) 4203 2306 w +(the) 4306 2306 w +(destination) 4498 2306 w +(is) 720 2426 w +(unreachable,) 859 2426 w +(the) 1541 2426 w +(write) 1754 2426 w +(returns) 2052 2426 w +(an) 2460 2426 w +(error.) 2635 2426 w +(Once) 2997 2426 w +(the) 3302 2426 w +(connection) 3515 2426 w +(is) 4105 2426 w +(established,) 4243 2426 w +(the) 4885 2426 w +10 /LucidaTypewriter f +(telnet) 720 2546 w +10 /LucidaSansUnicode00 f +(application) 1197 2546 w +(reads) 1776 2546 w +(and) 2087 2546 w +(writes) 2312 2546 w +(the) 2648 2546 w +10 /LucidaTypewriter f +(data) 2849 2546 w +10 /LucidaSansUnicode00 f +(file) 3183 2546 w +(to) 3380 2546 w +(talk) 3524 2546 w +(to) 3749 2546 w +(the) 3893 2546 w +(remote) 4094 2546 w +(Telnet) 4484 2546 w +(dae\255) 4833 2546 w +(mon.) 720 2666 w +(On the other end, the Telnet daemon would start by writing) 1032 2666 w 9 /LucidaTypewriter f -(announce) 1008 2116 w -(23) 1593 2116 w +(announce) 920 2836 w +(23) 1505 2836 w 10 /LucidaSansUnicode00 f -(to) 720 2296 w -(its) 855 2296 w -(control) 1010 2296 w -(file) 1390 2296 w -(to) 1579 2296 w -(indicate) 1715 2296 w -(its) 2135 2296 w -(willingness) 2290 2296 w -(to) 2865 2296 w -(receive) 3001 2296 w -(calls) 3380 2296 w -(to) 3633 2296 w -(this) 3769 2296 w -(port.) 3986 2296 w -(Such) 4290 2296 w -(a) 4557 2296 w -(daemon) 4650 2296 w -(is called a) 720 2416 w +(to) 720 3016 w +(its) 855 3016 w +(control) 1010 3016 w +(file) 1390 3016 w +(to) 1579 3016 w +(indicate) 1715 3016 w +(its) 2135 3016 w +(willingness) 2290 3016 w +(to) 2865 3016 w +(receive) 3001 3016 w +(calls) 3380 3016 w +(to) 3633 3016 w +(this) 3769 3016 w +(port.) 3986 3016 w +(Such) 4290 3016 w +(a) 4557 3016 w +(daemon) 4650 3016 w +(is called a) 720 3136 w 10 /LucidaSans-Italic f -(listener) 1234 2416 w +(listener) 1234 3136 w 10 /LucidaSansUnicode00 f -(in Plan 9.) 1627 2416 w -(A) 970 2572 w -(uniform) 1083 2572 w -(structure) 1512 2572 w -(for) 1994 2572 w -(network) 2177 2572 w -(devices) 2613 2572 w -(cannot) 3015 2572 w -(hide) 3387 2572 w -(all) 3641 2572 w -(the) 3799 2572 w -(details) 3999 2572 w -(of) 4364 2572 w -(addressing) 4507 2572 w -(and) 720 2692 w -(communication) 943 2692 w -(for) 1732 2692 w -(dissimilar) 1914 2692 w -(networks.) 2427 2692 w -(For) 2977 2692 w -(example,) 3175 2692 w -(Datakit) 3662 2692 w -(uses) 4050 2692 w -(textual,) 4312 2692 w -(hierar\255) 4723 2692 w -(chical) 720 2812 w -(addresses) 1031 2812 w -(unlike) 1552 2812 w -(IP) 1882 2812 w -10 /LucidaSansUnicode20 f -(\031) 1966 2812 w -10 /LucidaSansUnicode00 f -(s) 1998 2812 w -(32-bit) 2083 2812 w -(addresses,) 2430 2812 w -(so) 2983 2812 w -(an) 3129 2812 w -(application) 3280 2812 w -(given) 3848 2812 w -(a) 4144 2812 w -(control) 4234 2812 w -(file) 4611 2812 w -(must) 4797 2812 w -(still) 720 2932 w -(know) 947 2932 w -(what) 1257 2932 w -(network) 1540 2932 w -(it) 1984 2932 w -(represents.) 2102 2932 w -(Rather) 2732 2932 w -(than) 3098 2932 w -(make) 3366 2932 w -(every) 3680 2932 w -(application) 3989 2932 w -(know) 4575 2932 w -(the) 4885 2932 w -(addressing) 720 3052 w -(of) 1300 3052 w -(every) 1445 3052 w -(network,) 1749 3052 w -(Plan) 2220 3052 w -(9) 2468 3052 w -(hides) 2578 3052 w -(these) 2886 3052 w -(details) 3195 3052 w -(in) 3562 3052 w -(a) 3701 3052 w +(in Plan 9.) 1627 3136 w +(A) 970 3292 w +(uniform) 1083 3292 w +(structure) 1512 3292 w +(for) 1994 3292 w +(network) 2177 3292 w +(devices) 2613 3292 w +(cannot) 3015 3292 w +(hide) 3387 3292 w +(all) 3641 3292 w +(the) 3799 3292 w +(details) 3999 3292 w +(of) 4364 3292 w +(addressing) 4507 3292 w +(and) 720 3412 w +(communication) 943 3412 w +(for) 1732 3412 w +(dissimilar) 1914 3412 w +(networks.) 2427 3412 w +(For) 2977 3412 w +(example,) 3175 3412 w +(Datakit) 3662 3412 w +(uses) 4050 3412 w +(textual,) 4312 3412 w +(hierar\255) 4723 3412 w +(chical) 720 3532 w +(addresses) 1031 3532 w +(unlike) 1552 3532 w +(IP) 1882 3532 w +10 /LucidaSansUnicode20 f +(\031) 1966 3532 w +10 /LucidaSansUnicode00 f +(s) 1998 3532 w +(32-bit) 2083 3532 w +(addresses,) 2430 3532 w +(so) 2983 3532 w +(an) 3129 3532 w +(application) 3280 3532 w +(given) 3848 3532 w +(a) 4144 3532 w +(control) 4234 3532 w +(file) 4611 3532 w +(must) 4797 3532 w +(still) 720 3652 w +(know) 947 3652 w +(what) 1257 3652 w +(network) 1540 3652 w +(it) 1984 3652 w +(represents.) 2102 3652 w +(Rather) 2732 3652 w +(than) 3098 3652 w +(make) 3366 3652 w +(every) 3680 3652 w +(application) 3989 3652 w +(know) 4575 3652 w +(the) 4885 3652 w +(addressing) 720 3772 w +(of) 1300 3772 w +(every) 1445 3772 w +(network,) 1749 3772 w +(Plan) 2220 3772 w +(9) 2468 3772 w +(hides) 2578 3772 w +(these) 2886 3772 w +(details) 3195 3772 w +(in) 3562 3772 w +(a) 3701 3772 w 10 /LucidaSans-Italic f -(connection) 3804 3052 w -(server) 4372 3052 w +(connection) 3804 3772 w +(server) 4372 3772 w 10 /LucidaSansUnicode00 f -(,) 4677 3052 w -(called) 4757 3052 w +(,) 4677 3772 w +(called) 4757 3772 w 10 /LucidaTypewriter f -(cs) 720 3172 w +(cs) 720 3892 w 10 /LucidaSansUnicode00 f -(.) 864 3172 w -10 /LucidaTypewriter f -(Cs) 965 3172 w -10 /LucidaSansUnicode00 f -(is) 1146 3172 w -(a) 1263 3172 w -(file) 1355 3172 w -(system) 1543 3172 w -(mounted) 1920 3172 w -(in) 2391 3172 w -(a) 2519 3172 w -(known) 2611 3172 w -(place.) 2968 3172 w -(It) 3323 3172 w -(supplies) 3426 3172 w -(a) 3867 3172 w -(single) 3959 3172 w -(control) 4284 3172 w -(file) 4662 3172 w -(that) 4849 3172 w -(an) 720 3292 w -(application) 885 3292 w -(uses) 1467 3292 w -(to) 1735 3292 w -(discover) 1881 3292 w -(how) 2333 3292 w -(to) 2581 3292 w -(connect) 2728 3292 w -(to) 3157 3292 w -(a) 3304 3292 w -(host.) 3408 3292 w -(The) 3732 3292 w -(application) 3962 3292 w -(writes) 4545 3292 w -(the) 4885 3292 w -(symbolic) 720 3412 w -(address) 1201 3412 w -(and) 1633 3412 w -(service) 1865 3412 w -(name) 2253 3412 w -(for) 2571 3412 w -(the) 2762 3412 w -(connection) 2969 3412 w -(it) 3553 3412 w -(wishes) 3671 3412 w -(to) 4049 3412 w -(make,) 4198 3412 w -(and) 4543 3412 w -(reads) 4774 3412 w -(back) 720 3532 w -(the) 985 3532 w -(name) 1178 3532 w -(of) 1482 3532 w -(the) 1618 3532 w -10 /LucidaTypewriter f -(clone) 1811 3532 w -10 /LucidaSansUnicode00 f -(file) 2209 3532 w -(to) 2398 3532 w -(open) 2534 3532 w -(and) 2814 3532 w -(the) 3032 3532 w -(address) 3225 3532 w -(to) 3644 3532 w -(present) 3781 3532 w -(to) 4186 3532 w -(it.) 4323 3532 w -(If) 4492 3532 w -(there) 4597 3532 w -(are) 4888 3532 w -(multiple) 720 3652 w -(networks) 1163 3652 w -(between) 1651 3652 w -(the) 2103 3652 w -(machines,) 2303 3652 w -10 /LucidaTypewriter f -(cs) 2839 3652 w -10 /LucidaSansUnicode00 f -(presents) 3028 3652 w -(a) 3490 3652 w -(list) 3590 3652 w -(of) 3781 3652 w -(possible) 3924 3652 w -(networks) 4372 3652 w -(and) 4860 3652 w -(addresses) 720 3772 w -(to) 1240 3772 w -(be) 1371 3772 w -(tried) 1523 3772 w -(in) 1782 3772 w -(sequence;) 1906 3772 w -(it) 2428 3772 w -(uses) 2527 3772 w -(heuristics) 2780 3772 w -(to) 3282 3772 w -(decide) 3414 3772 w -(the) 3766 3772 w -(order.) 3955 3772 w -(For) 4315 3772 w -(instance,) 4505 3772 w -(it) 4974 3772 w -(presents the highest-bandwidth choice first.) 720 3892 w -(A) 970 4048 w -(single) 1080 4048 w -(library) 1411 4048 w -(function) 1763 4048 w -(called) 2206 4048 w -10 /LucidaTypewriter f -(dial) 2531 4048 w -10 /LucidaSansUnicode00 f -(talks) 2861 4048 w -(to) 3133 4048 w -10 /LucidaTypewriter f -(cs) 3273 4048 w -10 /LucidaSansUnicode00 f -(to) 3459 4048 w -(establish) 3599 4048 w -(the) 4074 4048 w -(connection.) 4271 4048 w -(An) 4909 4048 w -(application) 720 4168 w -(that) 1293 4168 w -(uses) 1523 4168 w -10 /LucidaTypewriter f -(dial) 1781 4168 w -10 /LucidaSansUnicode00 f -(needs) 2107 4168 w -(no) 2433 4168 w -(changes,) 2594 4168 w -(not) 3063 4168 w -(even) 3261 4168 w -(recompilation,) 3525 4168 w -(to) 4262 4168 w -(adapt) 4398 4168 w -(to) 4709 4168 w -(new) 4845 4168 w -(networks; the interface to) 720 4288 w -10 /LucidaTypewriter f -(cs) 2000 4288 w -10 /LucidaSansUnicode00 f -(hides the details.) 2176 4288 w -(The) 970 4444 w -(uniform) 1185 4444 w -(structure) 1604 4444 w -(for) 2076 4444 w -(networks) 2249 4444 w -(in) 2726 4444 w -(Plan) 2851 4444 w -(9) 3086 4444 w -(makes) 3183 4444 w -(the) 3531 4444 w -10 /LucidaTypewriter f -(import) 3721 4444 w -10 /LucidaSansUnicode00 f -(command) 4188 4444 w -(all) 4701 4444 w -(that) 4849 4444 w -(is needed to construct gateways.) 720 4564 w +(.) 864 3892 w +10 /LucidaTypewriter f +(Cs) 965 3892 w +10 /LucidaSansUnicode00 f +(is) 1146 3892 w +(a) 1263 3892 w +(file) 1355 3892 w +(system) 1543 3892 w +(mounted) 1920 3892 w +(in) 2391 3892 w +(a) 2519 3892 w +(known) 2611 3892 w +(place.) 2968 3892 w +(It) 3323 3892 w +(supplies) 3426 3892 w +(a) 3867 3892 w +(single) 3959 3892 w +(control) 4284 3892 w +(file) 4662 3892 w +(that) 4849 3892 w +(an) 720 4012 w +(application) 885 4012 w +(uses) 1467 4012 w +(to) 1735 4012 w +(discover) 1881 4012 w +(how) 2333 4012 w +(to) 2581 4012 w +(connect) 2728 4012 w +(to) 3157 4012 w +(a) 3304 4012 w +(host.) 3408 4012 w +(The) 3732 4012 w +(application) 3962 4012 w +(writes) 4545 4012 w +(the) 4885 4012 w +(symbolic) 720 4132 w +(address) 1201 4132 w +(and) 1633 4132 w +(service) 1865 4132 w +(name) 2253 4132 w +(for) 2571 4132 w +(the) 2762 4132 w +(connection) 2969 4132 w +(it) 3553 4132 w +(wishes) 3671 4132 w +(to) 4049 4132 w +(make,) 4198 4132 w +(and) 4543 4132 w +(reads) 4774 4132 w +(back) 720 4252 w +(the) 985 4252 w +(name) 1178 4252 w +(of) 1482 4252 w +(the) 1618 4252 w +10 /LucidaTypewriter f +(clone) 1811 4252 w +10 /LucidaSansUnicode00 f +(file) 2209 4252 w +(to) 2398 4252 w +(open) 2534 4252 w +(and) 2814 4252 w +(the) 3032 4252 w +(address) 3225 4252 w +(to) 3644 4252 w +(present) 3781 4252 w +(to) 4186 4252 w +(it.) 4323 4252 w +(If) 4492 4252 w +(there) 4597 4252 w +(are) 4888 4252 w +(multiple) 720 4372 w +(networks) 1163 4372 w +(between) 1651 4372 w +(the) 2103 4372 w +(machines,) 2303 4372 w +10 /LucidaTypewriter f +(cs) 2839 4372 w +10 /LucidaSansUnicode00 f +(presents) 3028 4372 w +(a) 3490 4372 w +(list) 3590 4372 w +(of) 3781 4372 w +(possible) 3924 4372 w +(networks) 4372 4372 w +(and) 4860 4372 w +(addresses) 720 4492 w +(to) 1240 4492 w +(be) 1371 4492 w +(tried) 1523 4492 w +(in) 1782 4492 w +(sequence;) 1906 4492 w +(it) 2428 4492 w +(uses) 2527 4492 w +(heuristics) 2780 4492 w +(to) 3282 4492 w +(decide) 3414 4492 w +(the) 3766 4492 w +(order.) 3955 4492 w +(For) 4315 4492 w +(instance,) 4505 4492 w +(it) 4974 4492 w +(presents the highest-bandwidth choice first.) 720 4612 w +(A) 970 4768 w +(single) 1080 4768 w +(library) 1411 4768 w +(function) 1763 4768 w +(called) 2206 4768 w +10 /LucidaTypewriter f +(dial) 2531 4768 w +10 /LucidaSansUnicode00 f +(talks) 2861 4768 w +(to) 3133 4768 w +10 /LucidaTypewriter f +(cs) 3273 4768 w +10 /LucidaSansUnicode00 f +(to) 3459 4768 w +(establish) 3599 4768 w +(the) 4074 4768 w +(connection.) 4271 4768 w +(An) 4909 4768 w +(application) 720 4888 w +(that) 1293 4888 w +(uses) 1523 4888 w +10 /LucidaTypewriter f +(dial) 1781 4888 w +10 /LucidaSansUnicode00 f +(needs) 2107 4888 w +(no) 2433 4888 w +(changes,) 2594 4888 w +(not) 3063 4888 w +(even) 3261 4888 w +(recompilation,) 3525 4888 w +(to) 4262 4888 w +(adapt) 4398 4888 w +(to) 4709 4888 w +(new) 4845 4888 w +(networks; the interface to) 720 5008 w +10 /LucidaTypewriter f +(cs) 2000 5008 w +10 /LucidaSansUnicode00 f +(hides the details.) 2176 5008 w +(The) 970 5164 w +(uniform) 1185 5164 w +(structure) 1604 5164 w +(for) 2076 5164 w +(networks) 2249 5164 w +(in) 2726 5164 w +(Plan) 2851 5164 w +(9) 3086 5164 w +(makes) 3183 5164 w +(the) 3531 5164 w +10 /LucidaTypewriter f +(import) 3721 5164 w +10 /LucidaSansUnicode00 f +(command) 4188 5164 w +(all) 4701 5164 w +(that) 4849 5164 w +(is needed to construct gateways.) 720 5284 w 10 /LucidaSans-Demi f -(Kernel structure for networks) 720 4804 w +(Kernel structure for networks) 720 5524 w 10 /LucidaSansUnicode00 f -(The) 970 4960 w -(kernel) 1214 4960 w -(plumbing) 1579 4960 w -(used) 2105 4960 w -(to) 2400 4960 w -(build) 2561 4960 w -(Plan) 2870 4960 w -(9) 3134 4960 w -(communications) 3260 4960 w -(channels) 4121 4960 w -(is) 4613 4960 w -(called) 4757 4960 w +(The) 970 5680 w +(kernel) 1214 5680 w +(plumbing) 1579 5680 w +(used) 2105 5680 w +(to) 2400 5680 w +(build) 2561 5680 w +(Plan) 2870 5680 w +(9) 3134 5680 w +(communications) 3260 5680 w +(channels) 4121 5680 w +(is) 4613 5680 w +(called) 4757 5680 w 10 /LucidaSans-Italic f -(streams) 720 5080 w +(streams) 720 5800 w 10 /LucidaSansUnicode00 f -([Rit84][Presotto].) 1155 5080 w -(A) 2049 5080 w -(stream) 2162 5080 w -(is) 2539 5080 w -(a) 2663 5080 w -(bidirectional) 2761 5080 w -(channel) 3409 5080 w -(connecting) 3829 5080 w -(a) 4405 5080 w -(physical) 4503 5080 w -(or) 4938 5080 w -(pseudo-device to a user process.) 720 5200 w -(The user process inserts) 2402 5200 w -(and) 3623 5200 w -(removes) 3836 5200 w -(data) 4279 5200 w -(at) 4522 5200 w -(one) 4647 5200 w -(end) 4859 5200 w -(of) 720 5320 w -(the) 851 5320 w -(stream;) 1039 5320 w -(a) 1437 5320 w -(kernel) 1525 5320 w -(process) 1860 5320 w -(acting) 2267 5320 w -(on) 2596 5320 w -(behalf of a device operates at the other end.) 2752 5320 w -(A) 4971 5320 w -(stream) 720 5440 w -(comprises) 1122 5440 w -(a) 1688 5440 w -(linear) 1813 5440 w -(list) 2155 5440 w -(of) 2371 5440 w +([Rit84][Presotto].) 1155 5800 w +(A) 2049 5800 w +(stream) 2162 5800 w +(is) 2539 5800 w +(a) 2663 5800 w +(bidirectional) 2761 5800 w +(channel) 3409 5800 w +(connecting) 3829 5800 w +(a) 4405 5800 w +(physical) 4503 5800 w +(or) 4938 5800 w +(pseudo-device to a user process.) 720 5920 w +(The user process inserts) 2402 5920 w +(and) 3623 5920 w +(removes) 3836 5920 w +(data) 4279 5920 w +(at) 4522 5920 w +(one) 4647 5920 w +(end) 4859 5920 w +(of) 720 6040 w +(the) 851 6040 w +(stream;) 1039 6040 w +(a) 1437 6040 w +(kernel) 1525 6040 w +(process) 1860 6040 w +(acting) 2267 6040 w +(on) 2596 6040 w +(behalf of a device operates at the other end.) 2752 6040 w +(A) 4971 6040 w +(stream) 720 6160 w +(comprises) 1122 6160 w +(a) 1688 6160 w +(linear) 1813 6160 w +(list) 2155 6160 w +(of) 2371 6160 w 10 /LucidaSans-Italic f -(processing) 2539 5440 w -(modules) 3128 5440 w +(processing) 2539 6160 w +(modules) 3128 6160 w 10 /LucidaSansUnicode00 f -(.) 3532 5440 w -(Each) 3666 5440 w -(module) 3958 5440 w -(has) 4392 5440 w -(both) 4630 5440 w -(an) 4923 5440 w -(upstream) 720 5560 w -(\(toward) 1214 5560 w -(the) 1616 5560 w -(process\)) 1806 5560 w -(and) 2248 5560 w -(downstream) 2463 5560 w -(\(toward) 3094 5560 w -(the) 3496 5560 w -(device\)) 3686 5560 w +(.) 3532 6160 w +(Each) 3666 6160 w +(module) 3958 6160 w +(has) 4392 6160 w +(both) 4630 6160 w +(an) 4923 6160 w +(upstream) 720 6280 w +(\(toward) 1214 6280 w +(the) 1616 6280 w +(process\)) 1806 6280 w +(and) 2248 6280 w +(downstream) 2463 6280 w +(\(toward) 3094 6280 w +(the) 3496 6280 w +(device\)) 3686 6280 w 10 /LucidaSans-Italic f -(put) 4061 5560 w -(routine) 4257 5560 w -10 /LucidaSansUnicode00 f -(.) 4606 5560 w -(Calling) 4705 5560 w -(the) 720 5680 w -(put) 913 5680 w -(routine) 1113 5680 w -(of) 1499 5680 w -(the) 1636 5680 w -(module) 1830 5680 w -(on) 2233 5680 w -(either) 2395 5680 w -(end) 2715 5680 w -(of) 2935 5680 w -(the) 3072 5680 w -(stream) 3266 5680 w -(inserts) 3638 5680 w -(data) 4004 5680 w -(into) 4253 5680 w -(the) 4481 5680 w -(stream.) 4675 5680 w -(Each) 720 5800 w -(module) 984 5800 w -(calls) 1390 5800 w -(the) 1647 5800 w -(succeeding) 1844 5800 w -(one) 2429 5800 w -(to) 2650 5800 w -(send) 2790 5800 w -(data) 3064 5800 w -(up) 3316 5800 w -(or) 3483 5800 w -(down) 3627 5800 w -(the) 3932 5800 w -(stream.) 4129 5800 w -(Like) 4568 5800 w -(UNIX) 4805 5800 w -(streams [Rit84], Plan 9 streams can be dynamically configured.) 720 5920 w -10 /LucidaSans-Demi f -(The IL Protocol) 720 6160 w +(put) 4061 6280 w +(routine) 4257 6280 w 10 /LucidaSansUnicode00 f -(The) 970 6316 w -(9P) 1193 6316 w -(protocol) 1353 6316 w -(must) 1800 6316 w -(run) 2086 6316 w -(above) 2294 6316 w -(a) 2624 6316 w -(reliable) 2722 6316 w -(transport) 3123 6316 w -(protocol) 3614 6316 w -(with) 4061 6316 w -(delimited) 4309 6316 w -(mes\255) 4807 6316 w -(sages.) 720 6436 w -(9P) 1121 6436 w -(has) 1301 6436 w -(no) 1531 6436 w -(mechanism) 1716 6436 w -(to) 2330 6436 w -(recover) 2490 6436 w -(from) 2910 6436 w -(transmission) 3204 6436 w -(errors) 3888 6436 w -(and) 4241 6436 w -(the) 4483 6436 w -(system) 4700 6436 w -(assumes) 720 6556 w -(that) 1175 6556 w -(each) 1403 6556 w -(read) 1664 6556 w -(from) 1916 6556 w -(a) 2185 6556 w -(communication) 2277 6556 w -(channel) 3060 6556 w -(will) 3474 6556 w -(return) 3675 6556 w -(a) 4011 6556 w -(single) 4103 6556 w -(9P) 4429 6556 w -(message;) 4584 6556 w -(it) 720 6676 w -(does) 821 6676 w -(not) 1087 6676 w -(parse) 1282 6676 w -(the) 1583 6676 w -(data) 1773 6676 w -(stream) 2018 6676 w -(to) 2386 6676 w -(discover) 2518 6676 w -(message) 2956 6676 w -(boundaries.) 3414 6676 w -(Pipes) 4055 6676 w -(and) 4343 6676 w -(some) 4557 6676 w -(net\255) 4852 6676 w -(work) 720 6796 w -(protocols) 993 6796 w -(already) 1484 6796 w -(have) 1871 6796 w -(these) 2132 6796 w -(properties) 2430 6796 w -(but) 2964 6796 w -(the) 3162 6796 w -(standard) 3354 6796 w -(IP) 3818 6796 w -(protocols) 3939 6796 w -(do) 4431 6796 w -(not.) 4592 6796 w -(TCP) 4853 6796 w -(does) 720 6916 w -(not) 985 6916 w -(delimit) 1179 6916 w -(messages,) 1549 6916 w -(while) 2090 6916 w -(UDP) 2377 6916 w -([RFC768]) 2610 6916 w -(does) 3085 6916 w -(not) 3350 6916 w -(provide) 3544 6916 w -(reliable) 3943 6916 w -(in-order) 4334 6916 w -(deliv\255) 4778 6916 w -(ery.) 720 7036 w -(We) 970 7192 w -(designed) 1146 7192 w -(a) 1622 7192 w -(new) 1711 7192 w -(protocol,) 1940 7192 w -(called) 2410 7192 w -(IL) 2727 7192 w -(\(Internet) 2844 7192 w -(Link\),) 3292 7192 w -(to) 3594 7192 w -(transmit) 3727 7192 w -(9P) 4167 7192 w -(messages) 4320 7192 w -(over) 4830 7192 w -(IP.) 720 7312 w -(It) 912 7312 w -(is) 1022 7312 w -(a) 1146 7312 w -(connection-based) 1245 7312 w -(protocol) 2167 7312 w -(that) 2615 7312 w -(provides) 2850 7312 w -(reliable) 3310 7312 w -(transmission) 3712 7312 w -(of) 4378 7312 w -(sequenced) 4520 7312 w +(.) 4606 6280 w +(Calling) 4705 6280 w +(the) 720 6400 w +(put) 913 6400 w +(routine) 1113 6400 w +(of) 1499 6400 w +(the) 1636 6400 w +(module) 1830 6400 w +(on) 2233 6400 w +(either) 2395 6400 w +(end) 2715 6400 w +(of) 2935 6400 w +(the) 3072 6400 w +(stream) 3266 6400 w +(inserts) 3638 6400 w +(data) 4004 6400 w +(into) 4253 6400 w +(the) 4481 6400 w +(stream.) 4675 6400 w +(Each) 720 6520 w +(module) 984 6520 w +(calls) 1390 6520 w +(the) 1647 6520 w +(succeeding) 1844 6520 w +(one) 2429 6520 w +(to) 2650 6520 w +(send) 2790 6520 w +(data) 3064 6520 w +(up) 3316 6520 w +(or) 3483 6520 w +(down) 3627 6520 w +(the) 3932 6520 w +(stream.) 4129 6520 w +(Like) 4568 6520 w +(UNIX) 4805 6520 w +(streams [Rit84], Plan 9 streams can be dynamically configured.) 720 6640 w cleartomark showpage saveobj restore @@ -14184,593 +14078,596 @@ 17 pagesetup 10 /LucidaSansUnicode00 f (\255 17 \255) 2752 480 w -(messages) 720 840 w -(between) 1244 840 w -(machines.) 1700 840 w -(Since) 2272 840 w -(a) 2573 840 w -(process) 2677 840 w -(can) 3100 840 w -(have) 3318 840 w -(only) 3593 840 w -(a) 3847 840 w -(single) 3952 840 w -(outstanding) 4291 840 w -(9P) 4922 840 w -(request,) 720 960 w -(there) 1163 960 w -(is) 1460 960 w -(no) 1585 960 w -(need) 1753 960 w -(for) 2035 960 w -(flow) 2218 960 w -(control) 2466 960 w -(in) 2852 960 w -(IL.) 2987 960 w -(Like) 3177 960 w -(TCP,) 3417 960 w -(IL) 3680 960 w -(has) 3806 960 w -(adaptive) 4018 960 w -(timeouts:) 4472 960 w -(it) 4974 960 w -(scales) 720 1080 w -(acknowledge) 1052 1080 w -(and) 1721 1080 w -(retransmission) 1940 1080 w -(times) 2698 1080 w -(to) 3003 1080 w -(match) 3140 1080 w -(the) 3477 1080 w -(network) 3671 1080 w -(speed.) 4102 1080 w -(This) 4494 1080 w -(allows) 4738 1080 w -(the) 720 1200 w -(protocol) 915 1200 w -(to) 1359 1200 w -(perform) 1497 1200 w -(well) 1929 1200 w -(on) 2160 1200 w -(both) 2323 1200 w -(the) 2586 1200 w -(Internet) 2781 1200 w -(and) 3201 1200 w -(on) 3421 1200 w -(local) 3584 1200 w -(Ethernets.) 3848 1200 w -(Also,) 4407 1200 w -(IL) 4688 1200 w -(does) 4809 1200 w -(no) 720 1320 w -(blind) 902 1320 w -(retransmission,) 1207 1320 w -(to) 2017 1320 w -(avoid) 2174 1320 w -(adding) 2494 1320 w -(to) 2888 1320 w -(the) 3046 1320 w -(congestion) 3261 1320 w -(of) 3853 1320 w -(busy) 4011 1320 w -(networks.) 4299 1320 w -(Full) 4866 1320 w -(details are in another paper [PrWi95].) 720 1440 w -(In) 970 1596 w -(Plan) 1102 1596 w -(9,) 1344 1596 w -(the) 1480 1596 w -(implementation) 1676 1596 w -(of) 2479 1596 w -(IL) 2618 1596 w -(is) 2741 1596 w -(smaller) 2862 1596 w -(and) 3257 1596 w -(faster) 3479 1596 w -(than) 3798 1596 w -(TCP.) 4056 1596 w -(IL) 4349 1596 w -(is) 4473 1596 w -(our) 4595 1596 w -(main) 4801 1596 w -(Internet transport protocol.) 720 1716 w 10 /LucidaSans-Demi f -(Overview of authentication) 720 1956 w +(The IL Protocol) 720 840 w 10 /LucidaSansUnicode00 f -(Authentication) 970 2112 w -(establishes) 1728 2112 w -(the) 2317 2112 w -(identity) 2521 2112 w -(of) 2935 2112 w -(a) 3082 2112 w -(user) 3186 2112 w -(accessing) 3445 2112 w -(a) 3962 2112 w -(resource.) 4066 2112 w -(The) 4599 2112 w -(user) 4830 2112 w -(requesting) 720 2232 w -(the) 1276 2232 w -(resource) 1468 2232 w -(is) 1923 2232 w -(called) 2039 2232 w -(the) 2358 2232 w +(The) 970 996 w +(9P) 1193 996 w +(protocol) 1353 996 w +(must) 1800 996 w +(run) 2086 996 w +(above) 2294 996 w +(a) 2624 996 w +(reliable) 2722 996 w +(transport) 3123 996 w +(protocol) 3614 996 w +(with) 4061 996 w +(delimited) 4309 996 w +(mes\255) 4807 996 w +(sages.) 720 1116 w +(9P) 1121 1116 w +(has) 1301 1116 w +(no) 1531 1116 w +(mechanism) 1716 1116 w +(to) 2330 1116 w +(recover) 2490 1116 w +(from) 2910 1116 w +(transmission) 3204 1116 w +(errors) 3888 1116 w +(and) 4241 1116 w +(the) 4483 1116 w +(system) 4700 1116 w +(assumes) 720 1236 w +(that) 1175 1236 w +(each) 1403 1236 w +(read) 1664 1236 w +(from) 1916 1236 w +(a) 2185 1236 w +(communication) 2277 1236 w +(channel) 3060 1236 w +(will) 3474 1236 w +(return) 3675 1236 w +(a) 4011 1236 w +(single) 4103 1236 w +(9P) 4429 1236 w +(message;) 4584 1236 w +(it) 720 1356 w +(does) 821 1356 w +(not) 1087 1356 w +(parse) 1282 1356 w +(the) 1583 1356 w +(data) 1773 1356 w +(stream) 2018 1356 w +(to) 2386 1356 w +(discover) 2518 1356 w +(message) 2956 1356 w +(boundaries.) 3414 1356 w +(Pipes) 4055 1356 w +(and) 4343 1356 w +(some) 4557 1356 w +(net\255) 4852 1356 w +(work) 720 1476 w +(protocols) 993 1476 w +(already) 1484 1476 w +(have) 1871 1476 w +(these) 2132 1476 w +(properties) 2430 1476 w +(but) 2964 1476 w +(the) 3162 1476 w +(standard) 3354 1476 w +(IP) 3818 1476 w +(protocols) 3939 1476 w +(do) 4431 1476 w +(not.) 4592 1476 w +(TCP) 4853 1476 w +(does) 720 1596 w +(not) 985 1596 w +(delimit) 1179 1596 w +(messages,) 1549 1596 w +(while) 2090 1596 w +(UDP) 2377 1596 w +([RFC768]) 2610 1596 w +(does) 3085 1596 w +(not) 3350 1596 w +(provide) 3544 1596 w +(reliable) 3943 1596 w +(in-order) 4334 1596 w +(deliv\255) 4778 1596 w +(ery.) 720 1716 w +(We) 970 1872 w +(designed) 1146 1872 w +(a) 1622 1872 w +(new) 1711 1872 w +(protocol,) 1940 1872 w +(called) 2410 1872 w +(IL) 2727 1872 w +(\(Internet) 2844 1872 w +(Link\),) 3292 1872 w +(to) 3594 1872 w +(transmit) 3727 1872 w +(9P) 4167 1872 w +(messages) 4320 1872 w +(over) 4830 1872 w +(IP.) 720 1992 w +(It) 912 1992 w +(is) 1022 1992 w +(a) 1146 1992 w +(connection-based) 1245 1992 w +(protocol) 2167 1992 w +(that) 2615 1992 w +(provides) 2850 1992 w +(reliable) 3310 1992 w +(transmission) 3712 1992 w +(of) 4378 1992 w +(sequenced) 4520 1992 w +(messages) 720 2112 w +(between) 1244 2112 w +(machines.) 1700 2112 w +(Since) 2272 2112 w +(a) 2573 2112 w +(process) 2677 2112 w +(can) 3100 2112 w +(have) 3318 2112 w +(only) 3593 2112 w +(a) 3847 2112 w +(single) 3952 2112 w +(outstanding) 4291 2112 w +(9P) 4922 2112 w +(request,) 720 2232 w +(there) 1163 2232 w +(is) 1460 2232 w +(no) 1585 2232 w +(need) 1753 2232 w +(for) 2035 2232 w +(flow) 2218 2232 w +(control) 2466 2232 w +(in) 2852 2232 w +(IL.) 2987 2232 w +(Like) 3177 2232 w +(TCP,) 3417 2232 w +(IL) 3680 2232 w +(has) 3806 2232 w +(adaptive) 4018 2232 w +(timeouts:) 4472 2232 w +(it) 4974 2232 w +(scales) 720 2352 w +(acknowledge) 1052 2352 w +(and) 1721 2352 w +(retransmission) 1940 2352 w +(times) 2698 2352 w +(to) 3003 2352 w +(match) 3140 2352 w +(the) 3477 2352 w +(network) 3671 2352 w +(speed.) 4102 2352 w +(This) 4494 2352 w +(allows) 4738 2352 w +(the) 720 2472 w +(protocol) 915 2472 w +(to) 1359 2472 w +(perform) 1497 2472 w +(well) 1929 2472 w +(on) 2160 2472 w +(both) 2323 2472 w +(the) 2586 2472 w +(Internet) 2781 2472 w +(and) 3201 2472 w +(on) 3421 2472 w +(local) 3584 2472 w +(Ethernets.) 3848 2472 w +(Also,) 4407 2472 w +(IL) 4688 2472 w +(does) 4809 2472 w +(no) 720 2592 w +(blind) 902 2592 w +(retransmission,) 1207 2592 w +(to) 2017 2592 w +(avoid) 2174 2592 w +(adding) 2494 2592 w +(to) 2888 2592 w +(the) 3046 2592 w +(congestion) 3261 2592 w +(of) 3853 2592 w +(busy) 4011 2592 w +(networks.) 4299 2592 w +(Full) 4866 2592 w +(details are in another paper [PrWi95].) 720 2712 w +(In) 970 2868 w +(Plan) 1102 2868 w +(9,) 1344 2868 w +(the) 1480 2868 w +(implementation) 1676 2868 w +(of) 2479 2868 w +(IL) 2618 2868 w +(is) 2741 2868 w +(smaller) 2862 2868 w +(and) 3257 2868 w +(faster) 3479 2868 w +(than) 3798 2868 w +(TCP.) 4056 2868 w +(IL) 4349 2868 w +(is) 4473 2868 w +(our) 4595 2868 w +(main) 4801 2868 w +(Internet transport protocol.) 720 2988 w +10 /LucidaSans-Demi f +(Overview of authentication) 720 3228 w +10 /LucidaSansUnicode00 f +(Authentication) 970 3384 w +(establishes) 1728 3384 w +(the) 2317 3384 w +(identity) 2521 3384 w +(of) 2935 3384 w +(a) 3082 3384 w +(user) 3186 3384 w +(accessing) 3445 3384 w +(a) 3962 3384 w +(resource.) 4066 3384 w +(The) 4599 3384 w +(user) 4830 3384 w +(requesting) 720 3504 w +(the) 1276 3504 w +(resource) 1468 3504 w +(is) 1923 3504 w +(called) 2039 3504 w +(the) 2358 3504 w 10 /LucidaSans-Italic f -(client) 2549 2232 w +(client) 2549 3504 w 10 /LucidaSansUnicode00 f -(and) 2846 2232 w -(the) 3062 2232 w -(user) 3253 2232 w -(granting) 3499 2232 w -(access) 3945 2232 w -(to) 4296 2232 w -(the) 4430 2232 w -(resource) 4621 2232 w -(is) 720 2352 w -(called) 836 2352 w -(the) 1155 2352 w +(and) 2846 3504 w +(the) 3062 3504 w +(user) 3253 3504 w +(granting) 3499 3504 w +(access) 3945 3504 w +(to) 4296 3504 w +(the) 4430 3504 w +(resource) 4621 3504 w +(is) 720 3624 w +(called) 836 3624 w +(the) 1155 3624 w 10 /LucidaSans-Italic f -(server) 1346 2352 w +(server) 1346 3624 w 10 /LucidaSansUnicode00 f -(.) 1651 2352 w -(This) 1751 2352 w -(is) 1992 2352 w -(usually) 2108 2352 w -(done) 2484 2352 w -(under) 2762 2352 w -(the) 3083 2352 w -(auspices) 3275 2352 w -(of) 3730 2352 w -(a) 3865 2352 w -(9P) 3957 2352 w -(attach) 4112 2352 w -(message.) 4446 2352 w -(A) 4971 2352 w -(user) 720 2472 w -(may) 975 2472 w -(be) 1220 2472 w -(a) 1384 2472 w -(client) 1484 2472 w -(in) 1793 2472 w -(one) 1929 2472 w -(authentication) 2153 2472 w -(exchange) 2893 2472 w -(and) 3403 2472 w -(a) 3628 2472 w -(server) 3728 2472 w -(in) 4070 2472 w -(another.) 4206 2472 w -(Servers) 4689 2472 w -(always) 720 2592 w -(act) 1077 2592 w -(on) 1258 2592 w -(behalf) 1419 2592 w -(of) 1759 2592 w -(some) 1895 2592 w -(user,) 2194 2592 w -(either) 2474 2592 w -(a) 2793 2592 w -(normal) 2886 2592 w -(client) 3265 2592 w -(or) 3567 2592 w -(some) 3707 2592 w -(administrative) 4007 2592 w -(entity,) 4735 2592 w -(so authentication is defined to be between users, not machines.) 720 2712 w -(Each) 970 2868 w -(Plan) 1225 2868 w -(9) 1459 2868 w -(user) 1555 2868 w -(has) 1798 2868 w -(an) 1999 2868 w -(associated) 2149 2868 w -(DES) 2691 2868 w -([NBS77]) 2908 2868 w -(authentication) 3320 2868 w -(key;) 4049 2868 w -(the) 4281 2868 w -(user) 4470 2868 w -10 /LucidaSansUnicode20 f -(\031) 4680 2868 w -10 /LucidaSansUnicode00 f -(s) 4712 2868 w -(iden\255) 4797 2868 w -(tity) 720 2988 w -(is) 915 2988 w -(verified) 1035 2988 w -(by) 1438 2988 w -(the) 1593 2988 w -(ability) 1788 2988 w -(to) 2122 2988 w -(encrypt) 2260 2988 w -(and) 2662 2988 w -(decrypt) 2882 2988 w -(special) 3285 2988 w -(messages) 3659 2988 w -(called) 4173 2988 w -(challenges.) 4495 2988 w -(Since) 720 3108 w -(knowledge) 1005 3108 w -(of) 1562 3108 w -(a) 1693 3108 w -(user) 1781 3108 w -10 /LucidaSansUnicode20 f -(\031) 1991 3108 w -10 /LucidaSansUnicode00 f -(s) 2023 3108 w -(key) 2107 3108 w -(gives) 2306 3108 w -(access) 2589 3108 w -(to) 2937 3108 w -(that) 3068 3108 w -(user) 3292 3108 w -10 /LucidaSansUnicode20 f -(\031) 3502 3108 w -10 /LucidaSansUnicode00 f -(s) 3534 3108 w -(resources,) 3618 3108 w -(the) 4153 3108 w -(Plan) 4341 3108 w -(9) 4576 3108 w -(authen\255) 4673 3108 w -(tication protocols never transmit a message containing a cleartext key.) 720 3228 w -(Authentication) 970 3384 w -(is) 1718 3384 w -(bilateral:) 1838 3384 w -(at) 2304 3384 w -(the) 2436 3384 w -(end) 2631 3384 w -(of) 2852 3384 w -(the) 2990 3384 w -(authentication) 3185 3384 w -(exchange,) 3920 3384 w -(each) 4457 3384 w -(side) 4721 3384 w -(is) 4960 3384 w -(convinced) 720 3504 w -(of) 1244 3504 w -(the) 1378 3504 w -(other) 1569 3504 w -10 /LucidaSansUnicode20 f -(\031) 1826 3504 w -10 /LucidaSansUnicode00 f -(s) 1858 3504 w -(identity.) 1945 3504 w -(Every) 2410 3504 w -(machine) 2701 3504 w -(begins) 3145 3504 w -(the) 3504 3504 w -(exchange) 3695 3504 w -(with) 4196 3504 w -(a) 4437 3504 w -(DES) 4528 3504 w -(key) 4747 3504 w -(in) 4949 3504 w -(memory.) 720 3624 w -(In) 1216 3624 w -(the) 1343 3624 w -(case) 1535 3624 w -(of) 1785 3624 w -(CPU) 1920 3624 w -(and) 2150 3624 w -(file) 2367 3624 w -(servers,) 2555 3624 w -(the) 2972 3624 w -(key,) 3164 3624 w -(user) 3399 3624 w -(name,) 3646 3624 w -(and) 3981 3624 w -(domain) 4198 3624 w -(name) 4598 3624 w -(for) 4901 3624 w -(the) 720 3744 w -(server) 920 3744 w -(are) 1262 3744 w -(read) 1459 3744 w -(from) 1719 3744 w -(permanent) 1996 3744 w -(storage,) 2566 3744 w -(usually) 3006 3744 w -(non-volatile) 3390 3744 w -(RAM.) 4025 3744 w -(In) 4351 3744 w -(the) 4486 3744 w -(case) 4685 3744 w -(of) 4942 3744 w -(terminals,) 720 3864 w -(the) 1241 3864 w -(key) 1432 3864 w -(is) 1634 3864 w -(derived) 1750 3864 w -(from) 2146 3864 w -(a) 2414 3864 w -(password) 2505 3864 w -(typed) 3003 3864 w -(by) 3310 3864 w -(the) 3461 3864 w -(user) 3652 3864 w -(at) 3898 3864 w -(boot) 4026 3864 w -(time.) 4284 3864 w -(A) 4600 3864 w -(special) 4706 3864 w -(machine,) 720 3984 w -(known) 1197 3984 w -(as) 1553 3984 w -(the) 1695 3984 w +(.) 1651 3624 w +(This) 1751 3624 w +(is) 1992 3624 w +(usually) 2108 3624 w +(done) 2484 3624 w +(under) 2762 3624 w +(the) 3083 3624 w +(auspices) 3275 3624 w +(of) 3730 3624 w +(a) 3865 3624 w +(9P) 3957 3624 w +(attach) 4112 3624 w +(message.) 4446 3624 w +(A) 4971 3624 w +(user) 720 3744 w +(may) 975 3744 w +(be) 1220 3744 w +(a) 1384 3744 w +(client) 1484 3744 w +(in) 1793 3744 w +(one) 1929 3744 w +(authentication) 2153 3744 w +(exchange) 2893 3744 w +(and) 3403 3744 w +(a) 3628 3744 w +(server) 3728 3744 w +(in) 4070 3744 w +(another.) 4206 3744 w +(Servers) 4689 3744 w +(always) 720 3864 w +(act) 1077 3864 w +(on) 1258 3864 w +(behalf) 1419 3864 w +(of) 1759 3864 w +(some) 1895 3864 w +(user,) 2194 3864 w +(either) 2474 3864 w +(a) 2793 3864 w +(normal) 2886 3864 w +(client) 3265 3864 w +(or) 3567 3864 w +(some) 3707 3864 w +(administrative) 4007 3864 w +(entity,) 4735 3864 w +(so authentication is defined to be between users, not machines.) 720 3984 w +(Each) 970 4140 w +(Plan) 1225 4140 w +(9) 1459 4140 w +(user) 1555 4140 w +(has) 1798 4140 w +(an) 1999 4140 w +(associated) 2149 4140 w +(DES) 2691 4140 w +([NBS77]) 2908 4140 w +(authentication) 3320 4140 w +(key;) 4049 4140 w +(the) 4281 4140 w +(user) 4470 4140 w +10 /LucidaSansUnicode20 f +(\031) 4680 4140 w +10 /LucidaSansUnicode00 f +(s) 4712 4140 w +(iden\255) 4797 4140 w +(tity) 720 4260 w +(is) 915 4260 w +(verified) 1035 4260 w +(by) 1438 4260 w +(the) 1593 4260 w +(ability) 1788 4260 w +(to) 2122 4260 w +(encrypt) 2260 4260 w +(and) 2662 4260 w +(decrypt) 2882 4260 w +(special) 3285 4260 w +(messages) 3659 4260 w +(called) 4173 4260 w +(challenges.) 4495 4260 w +(Since) 720 4380 w +(knowledge) 1005 4380 w +(of) 1562 4380 w +(a) 1693 4380 w +(user) 1781 4380 w +10 /LucidaSansUnicode20 f +(\031) 1991 4380 w +10 /LucidaSansUnicode00 f +(s) 2023 4380 w +(key) 2107 4380 w +(gives) 2306 4380 w +(access) 2589 4380 w +(to) 2937 4380 w +(that) 3068 4380 w +(user) 3292 4380 w +10 /LucidaSansUnicode20 f +(\031) 3502 4380 w +10 /LucidaSansUnicode00 f +(s) 3534 4380 w +(resources,) 3618 4380 w +(the) 4153 4380 w +(Plan) 4341 4380 w +(9) 4576 4380 w +(authen\255) 4673 4380 w +(tication protocols never transmit a message containing a cleartext key.) 720 4500 w +(Authentication) 970 4656 w +(is) 1718 4656 w +(bilateral:) 1838 4656 w +(at) 2304 4656 w +(the) 2436 4656 w +(end) 2631 4656 w +(of) 2852 4656 w +(the) 2990 4656 w +(authentication) 3185 4656 w +(exchange,) 3920 4656 w +(each) 4457 4656 w +(side) 4721 4656 w +(is) 4960 4656 w +(convinced) 720 4776 w +(of) 1244 4776 w +(the) 1378 4776 w +(other) 1569 4776 w +10 /LucidaSansUnicode20 f +(\031) 1826 4776 w +10 /LucidaSansUnicode00 f +(s) 1858 4776 w +(identity.) 1945 4776 w +(Every) 2410 4776 w +(machine) 2701 4776 w +(begins) 3145 4776 w +(the) 3504 4776 w +(exchange) 3695 4776 w +(with) 4196 4776 w +(a) 4437 4776 w +(DES) 4528 4776 w +(key) 4747 4776 w +(in) 4949 4776 w +(memory.) 720 4896 w +(In) 1216 4896 w +(the) 1343 4896 w +(case) 1535 4896 w +(of) 1785 4896 w +(CPU) 1920 4896 w +(and) 2150 4896 w +(file) 2367 4896 w +(servers,) 2555 4896 w +(the) 2972 4896 w +(key,) 3164 4896 w +(user) 3399 4896 w +(name,) 3646 4896 w +(and) 3981 4896 w +(domain) 4198 4896 w +(name) 4598 4896 w +(for) 4901 4896 w +(the) 720 5016 w +(server) 920 5016 w +(are) 1262 5016 w +(read) 1459 5016 w +(from) 1719 5016 w +(permanent) 1996 5016 w +(storage,) 2566 5016 w +(usually) 3006 5016 w +(non-volatile) 3390 5016 w +(RAM.) 4025 5016 w +(In) 4351 5016 w +(the) 4486 5016 w +(case) 4685 5016 w +(of) 4942 5016 w +(terminals,) 720 5136 w +(the) 1241 5136 w +(key) 1432 5136 w +(is) 1634 5136 w +(derived) 1750 5136 w +(from) 2146 5136 w +(a) 2414 5136 w +(password) 2505 5136 w +(typed) 3003 5136 w +(by) 3310 5136 w +(the) 3461 5136 w +(user) 3652 5136 w +(at) 3898 5136 w +(boot) 4026 5136 w +(time.) 4284 5136 w +(A) 4600 5136 w +(special) 4706 5136 w +(machine,) 720 5256 w +(known) 1197 5256 w +(as) 1553 5256 w +(the) 1695 5256 w 10 /LucidaSans-Italic f -(authentication) 1886 3984 w -(server) 2624 3984 w +(authentication) 1886 5256 w +(server) 2624 5256 w 10 /LucidaSansUnicode00 f -(,) 2929 3984 w -(maintains) 2997 3984 w -(a) 3506 3984 w -(database) 3597 3984 w -(of) 4068 3984 w -(keys) 4202 3984 w -(for) 4455 3984 w -(all) 4630 3984 w -(users) 4779 3984 w -(in its administrative domain and participates in the authentication protocols.) 720 4104 w -(The) 970 4260 w -(authentication) 1197 4260 w -(protocol) 1938 4260 w -(is) 2388 4260 w -(as) 2515 4260 w -(follows:) 2668 4260 w -(after) 3092 4260 w -(exchanging) 3365 4260 w -(challenges,) 3974 4260 w -(one) 4566 4260 w -(party) 4792 4260 w -(contacts) 720 4380 w -(the) 1166 4380 w -(authentication) 1362 4380 w -(server) 2098 4380 w -(to) 2436 4380 w -(create) 2575 4380 w -(permission-granting) 2912 4380 w +(,) 2929 5256 w +(maintains) 2997 5256 w +(a) 3506 5256 w +(database) 3597 5256 w +(of) 4068 5256 w +(keys) 4202 5256 w +(for) 4455 5256 w +(all) 4630 5256 w +(users) 4779 5256 w +(in its administrative domain and participates in the authentication protocols.) 720 5376 w +(The) 970 5532 w +(authentication) 1197 5532 w +(protocol) 1938 5532 w +(is) 2388 5532 w +(as) 2515 5532 w +(follows:) 2668 5532 w +(after) 3092 5532 w +(exchanging) 3365 5532 w +(challenges,) 3974 5532 w +(one) 4566 5532 w +(party) 4792 5532 w +(contacts) 720 5652 w +(the) 1166 5652 w +(authentication) 1362 5652 w +(server) 2098 5652 w +(to) 2436 5652 w +(create) 2575 5652 w +(permission-granting) 2912 5652 w 10 /LucidaSans-Italic f -(tickets) 3957 4380 w +(tickets) 3957 5652 w 10 /LucidaSansUnicode00 f -(encrypted) 4313 4380 w -(with) 4835 4380 w -(each) 720 4500 w -(party) 983 4500 w -10 /LucidaSansUnicode20 f -(\031) 1231 4500 w -10 /LucidaSansUnicode00 f -(s) 1263 4500 w -(secret) 1353 4500 w -(key) 1685 4500 w -(and) 1891 4500 w -(containing) 2111 4500 w -(a) 2661 4500 w -(new) 2756 4500 w -(conversation) 2991 4500 w -(key.) 3649 4500 w -(Each) 3919 4500 w -(party) 4181 4500 w -(decrypts) 4469 4500 w -(its) 4923 4500 w -(own ticket and uses the conversation key to encrypt the other party) 720 4620 w -10 /LucidaSansUnicode20 f -(\031) 3999 4620 w -10 /LucidaSansUnicode00 f -(s challenge.) 4031 4620 w -(This) 970 4776 w -(structure) 1215 4776 w -(is) 1693 4776 w -(somewhat) 1813 4776 w -(like) 2345 4776 w -(Kerberos) 2557 4776 w -([MBSS87],) 3031 4776 w -(but) 3547 4776 w -(avoids) 3749 4776 w -(its) 4100 4776 w -(reliance) 4258 4776 w -(on) 4678 4776 w -(syn\255) 4842 4776 w -(chronized) 720 4896 w -(clocks.) 1250 4896 w -(Also) 1663 4896 w -(unlike) 1921 4896 w -(Kerberos,) 2265 4896 w -(Plan) 2778 4896 w -(9) 3026 4896 w -(authentication) 3136 4896 w -(supports) 3878 4896 w -(a) 4354 4896 w -10 /LucidaSansUnicode20 f -(\030) 4456 4896 w -10 /LucidaSansUnicode00 f -(speaks) 4488 4896 w -(for) 4869 4896 w -10 /LucidaSansUnicode20 f -(\031) 5008 4896 w -10 /LucidaSansUnicode00 f -(relation) 720 5016 w -([LABW91]) 1130 5016 w -(that) 1628 5016 w -(enables) 1859 5016 w -(one) 2271 5016 w -(user) 2490 5016 w -(to) 2740 5016 w -(have) 2878 5016 w -(the) 3144 5016 w -(authority) 3340 5016 w -(of) 3817 5016 w -(another;) 3956 5016 w -(this) 4403 5016 w -(is) 4623 5016 w -(how) 4744 5016 w -(a) 4985 5016 w -(CPU server runs processes on behalf of its clients.) 720 5136 w -(Plan) 970 5292 w -(9) 1215 5292 w -10 /LucidaSansUnicode20 f -(\031) 1278 5292 w -10 /LucidaSansUnicode00 f -(s) 1310 5292 w -(authentication) 1405 5292 w -(structure) 2144 5292 w -(builds) 2626 5292 w -(secure) 2967 5292 w -(services) 3328 5292 w -(rather) 3759 5292 w -(than) 4095 5292 w -(depending) 4356 5292 w -(on) 4917 5292 w -(firewalls.) 720 5412 w -(Whereas) 1230 5412 w -(firewalls) 1679 5412 w -(require) 2125 5412 w -(special) 2515 5412 w -(code) 2891 5412 w -(for) 3164 5412 w -(every) 3345 5412 w -(service) 3644 5412 w -(penetrating) 4021 5412 w -(the) 4622 5412 w -(wall,) 4818 5412 w -(the) 720 5532 w -(Plan) 909 5532 w -(9) 1144 5532 w -(approach) 1241 5532 w -(permits) 1726 5532 w -(authentication) 2131 5532 w -(to) 2861 5532 w -(be) 2994 5532 w -(done) 3148 5532 w -(in) 3425 5532 w -(a) 3551 5532 w -(single) 3641 5532 w -(place) 3965 5532 w -10 /LucidaSansUnicode20 f -(\024) 4219 5532 w -10 /LucidaSansUnicode00 f -(9P) 4319 5532 w -10 /LucidaSansUnicode20 f -(\024) 4437 5532 w -10 /LucidaSansUnicode00 f -(for) 4537 5532 w -(all) 4711 5532 w -(ser\255) 4859 5532 w -(vices.) 720 5652 w -(For example, the) 1055 5652 w +(encrypted) 4313 5652 w +(with) 4835 5652 w +(each) 720 5772 w +(party) 983 5772 w +10 /LucidaSansUnicode20 f +(\031) 1231 5772 w +10 /LucidaSansUnicode00 f +(s) 1263 5772 w +(secret) 1353 5772 w +(key) 1685 5772 w +(and) 1891 5772 w +(containing) 2111 5772 w +(a) 2661 5772 w +(new) 2756 5772 w +(conversation) 2991 5772 w +(key.) 3649 5772 w +(Each) 3919 5772 w +(party) 4181 5772 w +(decrypts) 4469 5772 w +(its) 4923 5772 w +(own ticket and uses the conversation key to encrypt the other party) 720 5892 w +10 /LucidaSansUnicode20 f +(\031) 3999 5892 w +10 /LucidaSansUnicode00 f +(s challenge.) 4031 5892 w +(This) 970 6048 w +(structure) 1215 6048 w +(is) 1693 6048 w +(somewhat) 1813 6048 w +(like) 2345 6048 w +(Kerberos) 2557 6048 w +([MBSS87],) 3031 6048 w +(but) 3547 6048 w +(avoids) 3749 6048 w +(its) 4100 6048 w +(reliance) 4258 6048 w +(on) 4678 6048 w +(syn\255) 4842 6048 w +(chronized) 720 6168 w +(clocks.) 1250 6168 w +(Also) 1663 6168 w +(unlike) 1921 6168 w +(Kerberos,) 2265 6168 w +(Plan) 2778 6168 w +(9) 3026 6168 w +(authentication) 3136 6168 w +(supports) 3878 6168 w +(a) 4354 6168 w +10 /LucidaSansUnicode20 f +(\030) 4456 6168 w +10 /LucidaSansUnicode00 f +(speaks) 4488 6168 w +(for) 4869 6168 w +10 /LucidaSansUnicode20 f +(\031) 5008 6168 w +10 /LucidaSansUnicode00 f +(relation) 720 6288 w +([LABW91]) 1130 6288 w +(that) 1628 6288 w +(enables) 1859 6288 w +(one) 2271 6288 w +(user) 2490 6288 w +(to) 2740 6288 w +(have) 2878 6288 w +(the) 3144 6288 w +(authority) 3340 6288 w +(of) 3817 6288 w +(another;) 3956 6288 w +(this) 4403 6288 w +(is) 4623 6288 w +(how) 4744 6288 w +(a) 4985 6288 w +(CPU server runs processes on behalf of its clients.) 720 6408 w +(Plan) 970 6564 w +(9) 1215 6564 w +10 /LucidaSansUnicode20 f +(\031) 1278 6564 w +10 /LucidaSansUnicode00 f +(s) 1310 6564 w +(authentication) 1405 6564 w +(structure) 2144 6564 w +(builds) 2626 6564 w +(secure) 2967 6564 w +(services) 3328 6564 w +(rather) 3759 6564 w +(than) 4095 6564 w +(depending) 4356 6564 w +(on) 4917 6564 w +(firewalls.) 720 6684 w +(Whereas) 1230 6684 w +(firewalls) 1679 6684 w +(require) 2125 6684 w +(special) 2515 6684 w +(code) 2891 6684 w +(for) 3164 6684 w +(every) 3345 6684 w +(service) 3644 6684 w +(penetrating) 4021 6684 w +(the) 4622 6684 w +(wall,) 4818 6684 w +(the) 720 6804 w +(Plan) 909 6804 w +(9) 1144 6804 w +(approach) 1241 6804 w +(permits) 1726 6804 w +(authentication) 2131 6804 w +(to) 2861 6804 w +(be) 2994 6804 w +(done) 3148 6804 w +(in) 3425 6804 w +(a) 3551 6804 w +(single) 3641 6804 w +(place) 3965 6804 w +10 /LucidaSansUnicode20 f +(\024) 4219 6804 w +10 /LucidaSansUnicode00 f +(9P) 4319 6804 w +10 /LucidaSansUnicode20 f +(\024) 4437 6804 w +10 /LucidaSansUnicode00 f +(for) 4537 6804 w +(all) 4711 6804 w +(ser\255) 4859 6804 w +(vices.) 720 6924 w +(For example, the) 1055 6924 w 10 /LucidaTypewriter f -(cpu) 1907 5652 w -10 /LucidaSansUnicode00 f -(command works securely across the Internet.) 2155 5652 w -10 /LucidaSans-Demi f -(Authenticating external connections) 720 5892 w +(cpu) 1907 6924 w 10 /LucidaSansUnicode00 f -(The) 970 6048 w -(regular) 1196 6048 w -(Plan) 1587 6048 w -(9) 1833 6048 w -(authentication) 1941 6048 w -(protocol) 2681 6048 w -(is) 3130 6048 w -(not) 3255 6048 w -(suitable) 3460 6048 w -(for) 3887 6048 w -(text-based) 4071 6048 w -(services) 4653 6048 w -(such) 720 6168 w -(as) 983 6168 w -(Telnet) 1126 6168 w -(or) 1466 6168 w -(FTP.) 1605 6168 w -(In) 1877 6168 w -(such) 2004 6168 w -(cases,) 2266 6168 w -(Plan) 2598 6168 w -(9) 2835 6168 w -(users) 2934 6168 w -(authenticate) 3231 6168 w -(with) 3866 6168 w -(hand-held) 4107 6168 w -(DES) 4653 6168 w -(cal\255) 4872 6168 w -(culators) 720 6288 w -(called) 1143 6288 w -10 /LucidaSans-Italic f -(authenticators) 1462 6288 w -10 /LucidaSansUnicode00 f -(.) 2170 6288 w -(The) 2270 6288 w -(authenticator) 2487 6288 w -(holds) 3168 6288 w -(a) 3470 6288 w -(key) 3562 6288 w -(for) 3765 6288 w -(the) 3941 6288 w -(user,) 4133 6288 w -(distinct) 4412 6288 w -(from) 4808 6288 w -(the) 720 6408 w -(user) 910 6408 w -10 /LucidaSansUnicode20 f -(\031) 1120 6408 w -10 /LucidaSansUnicode00 f -(s) 1152 6408 w -(normal) 1238 6408 w -(authentication) 1614 6408 w -(key.) 2344 6408 w -(The) 2609 6408 w -(user) 2825 6408 w -10 /LucidaSansUnicode20 f -(\030) 3070 6408 w -10 /LucidaSansUnicode00 f -(logs) 3102 6408 w -(on) 3340 6408 w -10 /LucidaSansUnicode20 f -(\031) 3463 6408 w -10 /LucidaSansUnicode00 f -(to) 3530 6408 w -(the) 3662 6408 w -(authenticator) 3851 6408 w -(using) 4530 6408 w -(a) 4830 6408 w -(4-) 4919 6408 w -(digit) 720 6528 w -(PIN.) 987 6528 w -(A) 1256 6528 w -(correct) 1373 6528 w -(PIN) 1759 6528 w -(enables) 1965 6528 w -(the) 2385 6528 w -(authenticator) 2588 6528 w -(for) 3281 6528 w -(a) 3468 6528 w -(challenge/response) 3571 6528 w -(exchange) 4575 6528 w -(with) 720 6648 w -(the) 976 6648 w -(server.) 1182 6648 w -(Since) 1594 6648 w -(a) 1897 6648 w -(correct) 2003 6648 w -(challenge/response) 2392 6648 w -(exchange) 3399 6648 w -(is) 3915 6648 w -(valid) 4046 6648 w -(only) 4325 6648 w -(once) 4580 6648 w -(and) 4860 6648 w -(keys are never sent over) 720 6768 w -(the) 1933 6768 w -(network,) 2121 6768 w -(this) 2578 6768 w -(procedure) 2790 6768 w -(is) 3317 6768 w -(not) 3430 6768 w -(susceptible) 3623 6768 w -(to) 4204 6768 w -(replay) 4335 6768 w -(attacks,) 4664 6768 w -(yet is compatible with protocols like Telnet and FTP.) 720 6888 w +(command works securely across the Internet.) 2155 6924 w cleartomark showpage saveobj restore @@ -14782,623 +14679,613 @@ 10 /LucidaSansUnicode00 f (\255 18 \255) 2752 480 w 10 /LucidaSans-Demi f -(Special users) 720 840 w +(Authenticating external connections) 720 840 w 10 /LucidaSansUnicode00 f -(Plan) 970 996 w -(9) 1206 996 w -(has) 1304 996 w -(no) 1507 996 w -(super-user.) 1666 996 w -(Each) 2307 996 w -(server) 2565 996 w -(is) 2898 996 w -(responsible) 3014 996 w -(for) 3612 996 w -(maintaining) 3787 996 w -(its) 4398 996 w -(own) 4551 996 w -(secu\255) 4787 996 w -(rity,) 720 1116 w -(usually) 948 1116 w -(permitting) 1325 1116 w -(access) 1871 1116 w -(only) 2223 1116 w -(from) 2464 1116 w -(the) 2733 1116 w -(console,) 2925 1116 w -(which) 3365 1116 w -(is) 3683 1116 w -(protected) 3800 1116 w -(by) 4302 1116 w -(a) 4454 1116 w -(password.) 4546 1116 w -(For example, file servers have a unique administrative user called) 720 1236 w -10 /LucidaTypewriter f -(adm) 3936 1236 w -10 /LucidaSansUnicode00 f -(,) 4152 1236 w -(with) 4217 1236 w -(special) 4455 1236 w -(priv\255) 4822 1236 w -(ileges) 720 1356 w -(that) 1041 1356 w -(apply) 1270 1356 w -(only) 1570 1356 w -(to) 1812 1356 w -(commands) 1948 1356 w -(typed) 2515 1356 w -(at) 2824 1356 w -(the) 2954 1356 w -(server) 3147 1356 w -10 /LucidaSansUnicode20 f -(\031) 3444 1356 w -10 /LucidaSansUnicode00 f -(s) 3476 1356 w -(physical) 3565 1356 w -(console.) 3995 1356 w -(These) 4468 1356 w -(privi\255) 4793 1356 w -(leges) 720 1476 w -(concern) 1010 1476 w -(the) 1430 1476 w -(day-to-day) 1621 1476 w -(maintenance) 2211 1476 w -(of) 2865 1476 w -(the) 2999 1476 w -(server,) 3190 1476 w -(such) 3555 1476 w -(as) 3817 1476 w -(adding) 3959 1476 w -(new) 4330 1476 w -(users) 4562 1476 w -(and) 4860 1476 w -(configuring) 720 1596 w -(disks) 1331 1596 w -(and) 1636 1596 w -(networks.) 1869 1596 w -(The) 2428 1596 w -(privileges) 2661 1596 w -(do) 3181 1596 w +(The) 970 996 w +(regular) 1196 996 w +(Plan) 1587 996 w +(9) 1833 996 w +(authentication) 1941 996 w +(protocol) 2681 996 w +(is) 3130 996 w +(not) 3255 996 w +(suitable) 3460 996 w +(for) 3887 996 w +(text-based) 4071 996 w +(services) 4653 996 w +(such) 720 1116 w +(as) 983 1116 w +(Telnet) 1126 1116 w +(or) 1466 1116 w +(FTP.) 1605 1116 w +(In) 1877 1116 w +(such) 2004 1116 w +(cases,) 2266 1116 w +(Plan) 2598 1116 w +(9) 2835 1116 w +(users) 2934 1116 w +(authenticate) 3231 1116 w +(with) 3866 1116 w +(hand-held) 4107 1116 w +(DES) 4653 1116 w +(cal\255) 4872 1116 w +(culators) 720 1236 w +(called) 1143 1236 w 10 /LucidaSans-Italic f -(not) 3357 1596 w +(authenticators) 1462 1236 w 10 /LucidaSansUnicode00 f -(include) 3566 1596 w -(the) 3970 1596 w -(ability) 4177 1596 w -(to) 4523 1596 w -(modify,) 4673 1596 w -(examine,) 720 1716 w -(or) 1207 1716 w -(change) 1352 1716 w -(the) 1743 1716 w -(permissions) 1941 1716 w -(of) 2571 1716 w -(any) 2712 1716 w -(files.) 2924 1716 w -(If) 3233 1716 w -(a) 3342 1716 w -(file) 3440 1716 w -(is) 3634 1716 w -(read-protected) 3758 1716 w -(by) 4540 1716 w -(a) 4699 1716 w -(user,) 4798 1716 w -(only that user may grant access to others.) 720 1836 w -(CPU) 970 1992 w -(servers) 1218 1992 w -(have) 1622 1992 w -(an) 1903 1992 w -(equivalent) 2076 1992 w -(user) 2633 1992 w -(name) 2899 1992 w -(that) 3221 1992 w -(allows) 3468 1992 w -(administrative) 3826 1992 w -(access) 4571 1992 w -(to) 4942 1992 w -(resources) 720 2112 w -(on) 1227 2112 w -(that) 1387 2112 w -(server) 1615 2112 w -(such) 1949 2112 w -(as) 2212 2112 w -(the) 2355 2112 w -(control) 2546 2112 w -(files) 2924 2112 w -(of) 3162 2112 w -(user) 3296 2112 w -(processes.) 3542 2112 w -(Such) 4123 2112 w -(permission) 4388 2112 w -(is) 4960 2112 w -(necessary, for example, to) 720 2232 w -(kill) 2038 2232 w -(rogue) 2216 2232 w -(processes,) 2531 2232 w -(but) 3077 2232 w -(does) 3272 2232 w -(not) 3536 2232 w -(extend) 3729 2232 w -(beyond) 4097 2232 w -(that) 4487 2232 w -(server.) 4711 2232 w -(On) 720 2352 w -(the) 893 2352 w -(other) 1081 2352 w -(hand,) 1371 2352 w -(by) 1678 2352 w -(means) 1826 2352 w -(of a key held in protected non-volatile RAM, the identity of) 2176 2352 w -(the) 720 2472 w -(administrative) 932 2472 w -(user) 1678 2472 w -(is) 1945 2472 w -(proven) 2082 2472 w -(to) 2474 2472 w -(the) 2629 2472 w -(authentication) 2841 2472 w -(server.) 3593 2472 w -(This) 4011 2472 w -(allows) 4274 2472 w -(the) 4634 2472 w -(CPU) 4847 2472 w -(server) 720 2592 w -(to) 1063 2592 w -(authenticate) 1206 2592 w -(remote) 1850 2592 w -(users,) 2239 2592 w -(both) 2577 2592 w -(for) 2845 2592 w -(access) 3029 2592 w -(to) 3389 2592 w -(the) 3532 2592 w -(server) 3732 2592 w -(itself) 4074 2592 w -(and) 4358 2592 w -(when) 4583 2592 w -(the) 4885 2592 w -(CPU server is acting as a proxy on their behalf.) 720 2712 w -(Finally,) 970 2868 w -(a) 1351 2868 w -(special) 1445 2868 w -(user) 1818 2868 w -(called) 2067 2868 w -10 /LucidaTypewriter f -(none) 2389 2868 w -10 /LucidaSansUnicode00 f -(has) 2716 2868 w -(no) 2923 2868 w -(password) 3085 2868 w -(and) 3586 2868 w -(is) 3806 2868 w -(always) 3926 2868 w -(allowed) 4285 2868 w -(to) 4695 2868 w -(con\255) 4833 2868 w -(nect;) 720 2988 w -(anyone) 999 2988 w -(may) 1387 2988 w -(claim) 1627 2988 w -(to) 1924 2988 w -(be) 2062 2988 w -10 /LucidaTypewriter f -(none) 2221 2988 w -10 /LucidaSansUnicode00 f -(.) 2509 2988 w -10 /LucidaTypewriter f -(None) 2613 2988 w -10 /LucidaSansUnicode00 f -(has) 2941 2988 w -(restricted) 3149 2988 w -(permissions;) 3651 2988 w -(for) 4310 2988 w -(example,) 4489 2988 w -(it) 4974 2988 w -(is not allowed to examine dump files and can read only world-readable files.) 720 3108 w -(The) 970 3264 w -(idea) 1197 3264 w -(behind) 1446 3264 w -10 /LucidaTypewriter f -(none) 1828 3264 w -10 /LucidaSansUnicode00 f -(is) 2163 3264 w -(analogous) 2290 3264 w -(to) 2835 3264 w -(the) 2980 3264 w -(anonymous) 3182 3264 w -(user) 3788 3264 w -(in) 4045 3264 w -(FTP) 4183 3264 w -(services.) 4402 3264 w -(On) 4900 3264 w -(Plan) 720 3384 w -(9,) 958 3384 w -(guest) 1090 3384 w -(FTP) 1395 3384 w -(servers) 1604 3384 w -(are) 1988 3384 w -(further) 2176 3384 w -(confined) 2548 3384 w -(within) 3005 3384 w -(a) 3337 3384 w -(special) 3428 3384 w -(restricted) 3798 3384 w -(name) 4296 3384 w -(space.) 4598 3384 w -(It) 4974 3384 w -(disconnects) 720 3504 w -(guest) 1349 3504 w -(users) 1672 3504 w -(from) 1988 3504 w -(system) 2275 3504 w -(programs,) 2670 3504 w -(such) 3224 3504 w -(as) 3505 3504 w -(the) 3666 3504 w -(contents) 3876 3504 w -(of) 4348 3504 w -10 /LucidaTypewriter f -(/bin) 4502 3504 w -10 /LucidaSansUnicode00 f -(,) 4790 3504 w -(but) 4878 3504 w -(makes) 720 3624 w -(it) 1073 3624 w -(possible) 1179 3624 w -(to) 1622 3624 w -(make) 1760 3624 w -(local) 2062 3624 w -(files) 2327 3624 w -(available) 2569 3624 w -(to) 3031 3624 w -(guests) 3168 3624 w -(by) 3526 3624 w -(binding) 3680 3624 w -(them) 4089 3624 w -(explicitly) 4376 3624 w -(into) 4851 3624 w -(the) 720 3744 w -(space.) 914 3744 w -(A) 1293 3744 w -(restricted) 1401 3744 w -(name) 1902 3744 w -(space) 2207 3744 w -(is) 2522 3744 w -(more) 2641 3744 w -(secure) 2931 3744 w -(than) 3287 3744 w -(the) 3542 3744 w -(usual) 3736 3744 w -(technique) 4034 3744 w -(of) 4551 3744 w -(export\255) 4688 3744 w -(ing an ad hoc directory tree; the result is a kind of cage around untrusted users.) 720 3864 w +(.) 2170 1236 w +(The) 2270 1236 w +(authenticator) 2487 1236 w +(holds) 3168 1236 w +(a) 3470 1236 w +(key) 3562 1236 w +(for) 3765 1236 w +(the) 3941 1236 w +(user,) 4133 1236 w +(distinct) 4412 1236 w +(from) 4808 1236 w +(the) 720 1356 w +(user) 910 1356 w +10 /LucidaSansUnicode20 f +(\031) 1120 1356 w +10 /LucidaSansUnicode00 f +(s) 1152 1356 w +(normal) 1238 1356 w +(authentication) 1614 1356 w +(key.) 2344 1356 w +(The) 2609 1356 w +(user) 2825 1356 w +10 /LucidaSansUnicode20 f +(\030) 3070 1356 w +10 /LucidaSansUnicode00 f +(logs) 3102 1356 w +(on) 3340 1356 w +10 /LucidaSansUnicode20 f +(\031) 3463 1356 w +10 /LucidaSansUnicode00 f +(to) 3530 1356 w +(the) 3662 1356 w +(authenticator) 3851 1356 w +(using) 4530 1356 w +(a) 4830 1356 w +(4-) 4919 1356 w +(digit) 720 1476 w +(PIN.) 987 1476 w +(A) 1256 1476 w +(correct) 1373 1476 w +(PIN) 1759 1476 w +(enables) 1965 1476 w +(the) 2385 1476 w +(authenticator) 2588 1476 w +(for) 3281 1476 w +(a) 3468 1476 w +(challenge/response) 3571 1476 w +(exchange) 4575 1476 w +(with) 720 1596 w +(the) 976 1596 w +(server.) 1182 1596 w +(Since) 1594 1596 w +(a) 1897 1596 w +(correct) 2003 1596 w +(challenge/response) 2392 1596 w +(exchange) 3399 1596 w +(is) 3915 1596 w +(valid) 4046 1596 w +(only) 4325 1596 w +(once) 4580 1596 w +(and) 4860 1596 w +(keys are never sent over) 720 1716 w +(the) 1933 1716 w +(network,) 2121 1716 w +(this) 2578 1716 w +(procedure) 2790 1716 w +(is) 3317 1716 w +(not) 3430 1716 w +(susceptible) 3623 1716 w +(to) 4204 1716 w +(replay) 4335 1716 w +(attacks,) 4664 1716 w +(yet is compatible with protocols like Telnet and FTP.) 720 1836 w +10 /LucidaSans-Demi f +(Special users) 720 2076 w +10 /LucidaSansUnicode00 f +(Plan) 970 2232 w +(9) 1206 2232 w +(has) 1304 2232 w +(no) 1507 2232 w +(super-user.) 1666 2232 w +(Each) 2307 2232 w +(server) 2565 2232 w +(is) 2898 2232 w +(responsible) 3014 2232 w +(for) 3612 2232 w +(maintaining) 3787 2232 w +(its) 4398 2232 w +(own) 4551 2232 w +(secu\255) 4787 2232 w +(rity,) 720 2352 w +(usually) 948 2352 w +(permitting) 1325 2352 w +(access) 1871 2352 w +(only) 2223 2352 w +(from) 2464 2352 w +(the) 2733 2352 w +(console,) 2925 2352 w +(which) 3365 2352 w +(is) 3683 2352 w +(protected) 3800 2352 w +(by) 4302 2352 w +(a) 4454 2352 w +(password.) 4546 2352 w +(For example, file servers have a unique administrative user called) 720 2472 w +10 /LucidaTypewriter f +(adm) 3936 2472 w +10 /LucidaSansUnicode00 f +(,) 4152 2472 w +(with) 4217 2472 w +(special) 4455 2472 w +(priv\255) 4822 2472 w +(ileges) 720 2592 w +(that) 1041 2592 w +(apply) 1270 2592 w +(only) 1570 2592 w +(to) 1812 2592 w +(commands) 1948 2592 w +(typed) 2515 2592 w +(at) 2824 2592 w +(the) 2954 2592 w +(server) 3147 2592 w +10 /LucidaSansUnicode20 f +(\031) 3444 2592 w +10 /LucidaSansUnicode00 f +(s) 3476 2592 w +(physical) 3565 2592 w +(console.) 3995 2592 w +(These) 4468 2592 w +(privi\255) 4793 2592 w +(leges) 720 2712 w +(concern) 1010 2712 w +(the) 1430 2712 w +(day-to-day) 1621 2712 w +(maintenance) 2211 2712 w +(of) 2865 2712 w +(the) 2999 2712 w +(server,) 3190 2712 w +(such) 3555 2712 w +(as) 3817 2712 w +(adding) 3959 2712 w +(new) 4330 2712 w +(users) 4562 2712 w +(and) 4860 2712 w +(configuring) 720 2832 w +(disks) 1331 2832 w +(and) 1636 2832 w +(networks.) 1869 2832 w +(The) 2428 2832 w +(privileges) 2661 2832 w +(do) 3181 2832 w +10 /LucidaSans-Italic f +(not) 3357 2832 w +10 /LucidaSansUnicode00 f +(include) 3566 2832 w +(the) 3970 2832 w +(ability) 4177 2832 w +(to) 4523 2832 w +(modify,) 4673 2832 w +(examine,) 720 2952 w +(or) 1207 2952 w +(change) 1352 2952 w +(the) 1743 2952 w +(permissions) 1941 2952 w +(of) 2571 2952 w +(any) 2712 2952 w +(files.) 2924 2952 w +(If) 3233 2952 w +(a) 3342 2952 w +(file) 3440 2952 w +(is) 3634 2952 w +(read-protected) 3758 2952 w +(by) 4540 2952 w +(a) 4699 2952 w +(user,) 4798 2952 w +(only that user may grant access to others.) 720 3072 w +(CPU) 970 3228 w +(servers) 1218 3228 w +(have) 1622 3228 w +(an) 1903 3228 w +(equivalent) 2076 3228 w +(user) 2633 3228 w +(name) 2899 3228 w +(that) 3221 3228 w +(allows) 3468 3228 w +(administrative) 3826 3228 w +(access) 4571 3228 w +(to) 4942 3228 w +(resources) 720 3348 w +(on) 1227 3348 w +(that) 1387 3348 w +(server) 1615 3348 w +(such) 1949 3348 w +(as) 2212 3348 w +(the) 2355 3348 w +(control) 2546 3348 w +(files) 2924 3348 w +(of) 3162 3348 w +(user) 3296 3348 w +(processes.) 3542 3348 w +(Such) 4123 3348 w +(permission) 4388 3348 w +(is) 4960 3348 w +(necessary, for example, to) 720 3468 w +(kill) 2038 3468 w +(rogue) 2216 3468 w +(processes,) 2531 3468 w +(but) 3077 3468 w +(does) 3272 3468 w +(not) 3536 3468 w +(extend) 3729 3468 w +(beyond) 4097 3468 w +(that) 4487 3468 w +(server.) 4711 3468 w +(On) 720 3588 w +(the) 893 3588 w +(other) 1081 3588 w +(hand,) 1371 3588 w +(by) 1678 3588 w +(means) 1826 3588 w +(of a key held in protected non-volatile RAM, the identity of) 2176 3588 w +(the) 720 3708 w +(administrative) 932 3708 w +(user) 1678 3708 w +(is) 1945 3708 w +(proven) 2082 3708 w +(to) 2474 3708 w +(the) 2629 3708 w +(authentication) 2841 3708 w +(server.) 3593 3708 w +(This) 4011 3708 w +(allows) 4274 3708 w +(the) 4634 3708 w +(CPU) 4847 3708 w +(server) 720 3828 w +(to) 1063 3828 w +(authenticate) 1206 3828 w +(remote) 1850 3828 w +(users,) 2239 3828 w +(both) 2577 3828 w +(for) 2845 3828 w +(access) 3029 3828 w +(to) 3389 3828 w +(the) 3532 3828 w +(server) 3732 3828 w +(itself) 4074 3828 w +(and) 4358 3828 w +(when) 4583 3828 w +(the) 4885 3828 w +(CPU server is acting as a proxy on their behalf.) 720 3948 w +(Finally,) 970 4104 w +(a) 1351 4104 w +(special) 1445 4104 w +(user) 1818 4104 w +(called) 2067 4104 w +10 /LucidaTypewriter f +(none) 2389 4104 w +10 /LucidaSansUnicode00 f +(has) 2716 4104 w +(no) 2923 4104 w +(password) 3085 4104 w +(and) 3586 4104 w +(is) 3806 4104 w +(always) 3926 4104 w +(allowed) 4285 4104 w +(to) 4695 4104 w +(con\255) 4833 4104 w +(nect;) 720 4224 w +(anyone) 999 4224 w +(may) 1387 4224 w +(claim) 1627 4224 w +(to) 1924 4224 w +(be) 2062 4224 w +10 /LucidaTypewriter f +(none) 2221 4224 w +10 /LucidaSansUnicode00 f +(.) 2509 4224 w +10 /LucidaTypewriter f +(None) 2613 4224 w +10 /LucidaSansUnicode00 f +(has) 2941 4224 w +(restricted) 3149 4224 w +(permissions;) 3651 4224 w +(for) 4310 4224 w +(example,) 4489 4224 w +(it) 4974 4224 w +(is not allowed to examine dump files and can read only world-readable files.) 720 4344 w +(The) 970 4500 w +(idea) 1197 4500 w +(behind) 1446 4500 w +10 /LucidaTypewriter f +(none) 1828 4500 w +10 /LucidaSansUnicode00 f +(is) 2163 4500 w +(analogous) 2290 4500 w +(to) 2835 4500 w +(the) 2980 4500 w +(anonymous) 3182 4500 w +(user) 3788 4500 w +(in) 4045 4500 w +(FTP) 4183 4500 w +(services.) 4402 4500 w +(On) 4900 4500 w +(Plan) 720 4620 w +(9,) 958 4620 w +(guest) 1090 4620 w +(FTP) 1395 4620 w +(servers) 1604 4620 w +(are) 1988 4620 w +(further) 2176 4620 w +(confined) 2548 4620 w +(within) 3005 4620 w +(a) 3337 4620 w +(special) 3428 4620 w +(restricted) 3798 4620 w +(name) 4296 4620 w +(space.) 4598 4620 w +(It) 4974 4620 w +(disconnects) 720 4740 w +(guest) 1349 4740 w +(users) 1672 4740 w +(from) 1988 4740 w +(system) 2275 4740 w +(programs,) 2670 4740 w +(such) 3224 4740 w +(as) 3505 4740 w +(the) 3666 4740 w +(contents) 3876 4740 w +(of) 4348 4740 w +10 /LucidaTypewriter f +(/bin) 4502 4740 w +10 /LucidaSansUnicode00 f +(,) 4790 4740 w +(but) 4878 4740 w +(makes) 720 4860 w +(it) 1073 4860 w +(possible) 1179 4860 w +(to) 1622 4860 w +(make) 1760 4860 w +(local) 2062 4860 w +(files) 2327 4860 w +(available) 2569 4860 w +(to) 3031 4860 w +(guests) 3168 4860 w +(by) 3526 4860 w +(binding) 3680 4860 w +(them) 4089 4860 w +(explicitly) 4376 4860 w +(into) 4851 4860 w +(the) 720 4980 w +(space.) 914 4980 w +(A) 1293 4980 w +(restricted) 1401 4980 w +(name) 1902 4980 w +(space) 2207 4980 w +(is) 2522 4980 w +(more) 2641 4980 w +(secure) 2931 4980 w +(than) 3287 4980 w +(the) 3542 4980 w +(usual) 3736 4980 w +(technique) 4034 4980 w +(of) 4551 4980 w +(export\255) 4688 4980 w +(ing an ad hoc directory tree; the result is a kind of cage around untrusted users.) 720 5100 w 10 /LucidaSans-Demi f -(The cpu command and proxied authentication) 720 4104 w +(The cpu command and proxied authentication) 720 5340 w 10 /LucidaSansUnicode00 f -(When) 970 4260 w -(a) 1278 4260 w -(call) 1375 4260 w -(is) 1581 4260 w -(made) 1703 4260 w -(to) 2013 4260 w -(a) 2154 4260 w -(CPU) 2252 4260 w -(server) 2488 4260 w -(for) 2828 4260 w -(a) 3010 4260 w -(user,) 3108 4260 w -(say) 3393 4260 w -(Peter,) 3594 4260 w -(the) 3914 4260 w -(intent) 4112 4260 w -(is) 4438 4260 w -(that) 4561 4260 w -(Peter) 4795 4260 w -(wishes) 720 4380 w -(to) 1092 4380 w -(run) 1236 4380 w -(processes) 1447 4380 w -(with) 1973 4380 w -(his) 2223 4380 w -(own) 2410 4380 w -(authority.) 2655 4380 w -(To) 3200 4380 w -(implement) 3369 4380 w -(this) 3932 4380 w -(property,) 4156 4380 w -(the) 4647 4380 w -(CPU) 4847 4380 w -(server does) 720 4500 w -(the) 1313 4500 w -(following) 1501 4500 w -(when) 1981 4500 w -(the) 2271 4500 w -(call) 2459 4500 w -(is) 2656 4500 w -(received.) 2769 4500 w -(First,) 3270 4500 w -(the) 3547 4500 w -(listener) 3735 4500 w -(forks) 4129 4500 w -(off) 4410 4500 w -(a) 4578 4500 w -(process) 4666 4500 w -(to) 720 4620 w -(handle) 853 4620 w -(the) 1215 4620 w -(call.) 1405 4620 w -(This) 1668 4620 w -(process) 1908 4620 w -(changes) 2317 4620 w -(to) 2751 4620 w -(the) 2884 4620 w -(user) 3074 4620 w -10 /LucidaTypewriter f -(none) 3319 4620 w -10 /LucidaSansUnicode00 f -(to) 3642 4620 w -(avoid) 3775 4620 w -(giving) 4070 4620 w -(away) 4401 4620 w -(permis\255) 4674 4620 w -(sions) 720 4740 w -(if) 1019 4740 w -(it) 1130 4740 w -(is) 1241 4740 w -(compromised.) 1366 4740 w -(It) 2137 4740 w -(then) 2248 4740 w -(performs) 2511 4740 w -(the) 3000 4740 w -(authentication) 3201 4740 w -(protocol) 3942 4740 w -(to) 4392 4740 w -(verify) 4536 4740 w -(that) 4849 4740 w -(the) 720 4860 w -(calling) 914 4860 w -(user) 1270 4860 w -(really) 1519 4860 w -(is) 1820 4860 w -(Peter,) 1938 4860 w -(and) 2253 4860 w -(to) 2471 4860 w -(prove) 2607 4860 w -(to) 2918 4860 w -(Peter) 3054 4860 w -(that) 3337 4860 w -(the) 3566 4860 w -(machine) 3759 4860 w -(is) 4205 4860 w -(itself) 4323 4860 w -(trustwor\255) 4600 4860 w -(thy.) 720 4980 w -(Finally,) 971 4980 w -(it) 1350 4980 w -(reattaches) 1453 4980 w -(to) 1991 4980 w -(all) 2126 4980 w -(relevant) 2276 4980 w -(file) 2701 4980 w -(servers) 2889 4980 w -(using) 3274 4980 w -(the) 3577 4980 w -(authentication) 3769 4980 w -(protocol) 4501 4980 w -(to) 4942 4980 w -(identify) 720 5100 w -(itself) 1123 5100 w -(as) 1400 5100 w -(Peter.) 1543 5100 w -(In) 1889 5100 w -(this) 2017 5100 w -(case,) 2233 5100 w -(the) 2515 5100 w -(CPU) 2707 5100 w -(server) 2937 5100 w -(is) 3271 5100 w -(a) 3388 5100 w -(client) 3480 5100 w -(of) 3781 5100 w -(the) 3916 5100 w -(file) 4108 5100 w -(server) 4296 5100 w -(and) 4630 5100 w -(per\255) 4847 5100 w -(forms) 720 5220 w -(the) 1039 5220 w -(client) 1230 5220 w -(portion) 1530 5220 w -(of) 1920 5220 w -(the) 2054 5220 w -(authentication) 2245 5220 w -(exchange) 2976 5220 w -(on) 3477 5220 w -(behalf) 3636 5220 w -(of) 3974 5220 w -(Peter.) 4109 5220 w -(The) 4455 5220 w -(authen\255) 4673 5220 w -(tication) 720 5340 w -(server) 1127 5340 w -(will) 1469 5340 w -(give) 1678 5340 w -(the) 1922 5340 w -(process) 2122 5340 w -(tickets) 2541 5340 w -(to) 2905 5340 w -(accomplish) 3048 5340 w -(this) 3638 5340 w -(only) 3862 5340 w -(if) 4111 5340 w -(the) 4222 5340 w -(CPU) 4422 5340 w -(server) 4660 5340 w +(When) 970 5496 w +(a) 1278 5496 w +(call) 1375 5496 w +(is) 1581 5496 w +(made) 1703 5496 w +(to) 2013 5496 w +(a) 2154 5496 w +(CPU) 2252 5496 w +(server) 2488 5496 w +(for) 2828 5496 w +(a) 3010 5496 w +(user,) 3108 5496 w +(say) 3393 5496 w +(Peter,) 3594 5496 w +(the) 3914 5496 w +(intent) 4112 5496 w +(is) 4438 5496 w +(that) 4561 5496 w +(Peter) 4795 5496 w +(wishes) 720 5616 w +(to) 1092 5616 w +(run) 1236 5616 w +(processes) 1447 5616 w +(with) 1973 5616 w +(his) 2223 5616 w +(own) 2410 5616 w +(authority.) 2655 5616 w +(To) 3200 5616 w +(implement) 3369 5616 w +(this) 3932 5616 w +(property,) 4156 5616 w +(the) 4647 5616 w +(CPU) 4847 5616 w +(server does) 720 5736 w +(the) 1313 5736 w +(following) 1501 5736 w +(when) 1981 5736 w +(the) 2271 5736 w +(call) 2459 5736 w +(is) 2656 5736 w +(received.) 2769 5736 w +(First,) 3270 5736 w +(the) 3547 5736 w +(listener) 3735 5736 w +(forks) 4129 5736 w +(off) 4410 5736 w +(a) 4578 5736 w +(process) 4666 5736 w +(to) 720 5856 w +(handle) 853 5856 w +(the) 1215 5856 w +(call.) 1405 5856 w +(This) 1668 5856 w +(process) 1908 5856 w +(changes) 2317 5856 w +(to) 2751 5856 w +(the) 2884 5856 w +(user) 3074 5856 w +10 /LucidaTypewriter f +(none) 3319 5856 w +10 /LucidaSansUnicode00 f +(to) 3642 5856 w +(avoid) 3775 5856 w +(giving) 4070 5856 w +(away) 4401 5856 w +(permis\255) 4674 5856 w +(sions) 720 5976 w +(if) 1019 5976 w +(it) 1130 5976 w +(is) 1241 5976 w +(compromised.) 1366 5976 w +(It) 2137 5976 w +(then) 2248 5976 w +(performs) 2511 5976 w +(the) 3000 5976 w +(authentication) 3201 5976 w +(protocol) 3942 5976 w +(to) 4392 5976 w +(verify) 4536 5976 w +(that) 4849 5976 w +(the) 720 6096 w +(calling) 914 6096 w +(user) 1270 6096 w +(really) 1519 6096 w +(is) 1820 6096 w +(Peter,) 1938 6096 w +(and) 2253 6096 w +(to) 2471 6096 w +(prove) 2607 6096 w +(to) 2918 6096 w +(Peter) 3054 6096 w +(that) 3337 6096 w +(the) 3566 6096 w +(machine) 3759 6096 w +(is) 4205 6096 w +(itself) 4323 6096 w +(trustwor\255) 4600 6096 w +(thy.) 720 6216 w +(Finally,) 971 6216 w +(it) 1350 6216 w +(reattaches) 1453 6216 w +(to) 1991 6216 w +(all) 2126 6216 w +(relevant) 2276 6216 w +(file) 2701 6216 w +(servers) 2889 6216 w +(using) 3274 6216 w +(the) 3577 6216 w +(authentication) 3769 6216 w +(protocol) 4501 6216 w +(to) 4942 6216 w +(identify) 720 6336 w +(itself) 1123 6336 w +(as) 1400 6336 w +(Peter.) 1543 6336 w +(In) 1889 6336 w +(this) 2017 6336 w +(case,) 2233 6336 w +(the) 2515 6336 w +(CPU) 2707 6336 w +(server) 2937 6336 w +(is) 3271 6336 w +(a) 3388 6336 w +(client) 3480 6336 w +(of) 3781 6336 w +(the) 3916 6336 w +(file) 4108 6336 w +(server) 4296 6336 w +(and) 4630 6336 w +(per\255) 4847 6336 w +(forms) 720 6456 w +(the) 1039 6456 w +(client) 1230 6456 w +(portion) 1530 6456 w +(of) 1920 6456 w +(the) 2054 6456 w +(authentication) 2245 6456 w +(exchange) 2976 6456 w +(on) 3477 6456 w +(behalf) 3636 6456 w +(of) 3974 6456 w +(Peter.) 4109 6456 w +(The) 4455 6456 w +(authen\255) 4673 6456 w +(tication) 720 6576 w +(server) 1127 6576 w +(will) 1469 6576 w +(give) 1678 6576 w +(the) 1922 6576 w +(process) 2122 6576 w +(tickets) 2541 6576 w +(to) 2905 6576 w +(accomplish) 3048 6576 w +(this) 3638 6576 w +(only) 3862 6576 w +(if) 4111 6576 w +(the) 4222 6576 w +(CPU) 4422 6576 w +(server) 4660 6576 w 10 /LucidaSansUnicode20 f -(\031) 4957 5340 w +(\031) 4957 6576 w 10 /LucidaSansUnicode00 f -(s) 4989 5340 w -(administrative user name is allowed to) 720 5460 w +(s) 4989 6576 w +(administrative user name is allowed to) 720 6696 w 10 /LucidaSans-Italic f -(speak for) 2625 5460 w +(speak for) 2625 6696 w 10 /LucidaSansUnicode00 f -(Peter.) 3114 5460 w -(The) 970 5616 w +(Peter.) 3114 6696 w +(The) 970 6852 w 10 /LucidaSans-Italic f -(speaks for) 1183 5616 w +(speaks for) 1183 6852 w 10 /LucidaSansUnicode00 f -(relation [LABW91] is kept in a table on the authentication server.) 1721 5616 w -(To) 4916 5616 w -(simplify) 720 5736 w -(the) 1136 5736 w -(management) 1324 5736 w -(of) 1988 5736 w -(users) 2119 5736 w -(computing) 2413 5736 w -(in) 2966 5736 w -(different) 3090 5736 w -(authentication domains, it also) 3541 5736 w -(contains) 720 5856 w -(mappings) 1172 5856 w -(between) 1694 5856 w -(user) 2145 5856 w -(names) 2399 5856 w -(in) 2761 5856 w -(different) 2897 5856 w -(domains,) 3360 5856 w -(for) 3851 5856 w -(example) 4035 5856 w -(saying) 4493 5856 w -(that) 4849 5856 w -(user) 720 5976 w +(relation [LABW91] is kept in a table on the authentication server.) 1721 6852 w +(To) 4916 6852 w +(simplify) 720 6972 w +(the) 1136 6972 w +(management) 1324 6972 w +(of) 1988 6972 w +(users) 2119 6972 w +(computing) 2413 6972 w +(in) 2966 6972 w +(different) 3090 6972 w +(authentication domains, it also) 3541 6972 w +(contains) 720 7092 w +(mappings) 1172 7092 w +(between) 1694 7092 w +(user) 2145 7092 w +(names) 2399 7092 w +(in) 2761 7092 w +(different) 2897 7092 w +(domains,) 3360 7092 w +(for) 3851 7092 w +(example) 4035 7092 w +(saying) 4493 7092 w +(that) 4849 7092 w +(user) 720 7212 w 10 /LucidaTypewriter f -(rtm) 962 5976 w +(rtm) 962 7212 w 10 /LucidaSansUnicode00 f -(in one domain is the same person as user) 1210 5976 w +(in one domain is the same person as user) 1210 7212 w 10 /LucidaTypewriter f -(rtmorris) 3271 5976 w -10 /LucidaSansUnicode00 f -(in another.) 3879 5976 w -10 /LucidaSans-Demi f -(File Permissions) 720 6216 w +(rtmorris) 3271 7212 w 10 /LucidaSansUnicode00 f -(One) 970 6372 w -(of) 1201 6372 w -(the) 1334 6372 w -(advantages) 1524 6372 w -(of) 2108 6372 w -(constructing) 2242 6372 w -(services) 2884 6372 w -(as) 3307 6372 w -(file) 3449 6372 w -(systems) 3636 6372 w -(is) 4063 6372 w -(that) 4179 6372 w -(the) 4406 6372 w -(solutions) 4597 6372 w -(to) 720 6492 w -(ownership) 856 6492 w -(and) 1396 6492 w -(permission) 1614 6492 w -(problems) 2188 6492 w -(fall) 2683 6492 w -(out) 2870 6492 w -(naturally.) 3067 6492 w -(As) 3590 6492 w -(in) 3747 6492 w -(UNIX,) 3875 6492 w -(each) 4179 6492 w -(file) 4440 6492 w -(or) 4628 6492 w -(direc\255) 4767 6492 w -(tory) 720 6612 w -(has) 952 6612 w -(separate) 1161 6612 w -(read,) 1616 6612 w -(write,) 1905 6612 w -(and) 2219 6612 w -(execute/search) 2441 6612 w -(permissions) 3231 6612 w -(for) 3860 6612 w -(the) 4041 6612 w -(file) 4238 6612 w -10 /LucidaSansUnicode20 f -(\031) 4389 6612 w -10 /LucidaSansUnicode00 f -(s) 4421 6612 w -(owner,) 4514 6612 w -(the) 4885 6612 w -(file) 720 6732 w -10 /LucidaSansUnicode20 f -(\031) 871 6732 w -10 /LucidaSansUnicode00 f -(s group, and anyone else.) 903 6732 w -(The idea of group is unusual: any user name is potentially) 2219 6732 w -(a) 720 6852 w -(group) 816 6852 w -(name.) 1146 6852 w -(A) 1517 6852 w -(group) 1627 6852 w -(is) 1957 6852 w -(just) 2078 6852 w -(a) 2299 6852 w -(user) 2395 6852 w -(with) 2646 6852 w -(a) 2893 6852 w -(list) 2990 6852 w -(of) 3178 6852 w -(other) 3318 6852 w -(users) 3617 6852 w -(in) 3920 6852 w -(the) 4053 6852 w -(group.) 4250 6852 w -(Conven\255) 4645 6852 w -(tions) 720 6972 w -(make) 994 6972 w -(the) 1290 6972 w -(distinction:) 1479 6972 w -(most) 2056 6972 w -(people) 2332 6972 w -(have) 2694 6972 w -(user) 2953 6972 w -(names) 3197 6972 w -(without) 3548 6972 w -(group) 3947 6972 w -(members,) 4269 6972 w -(while) 4787 6972 w -(groups) 720 7092 w -(have) 1093 7092 w -(long) 1352 7092 w -(lists) 1600 7092 w -(of) 1831 7092 w -(attached) 1963 7092 w -(names.) 2413 7092 w -(For) 2828 7092 w -(example,) 3018 7092 w -(the) 3497 7092 w -10 /LucidaTypewriter f -(sys) 3686 7092 w -10 /LucidaSansUnicode00 f -(group) 3936 7092 w -(traditionally) 4259 7092 w -(has) 4872 7092 w -(all) 720 7212 w -(the) 879 7212 w -(system) 1079 7212 w -(programmers,) 1464 7212 w -(and) 2198 7212 w -(system) 2423 7212 w -(files) 2808 7212 w -(are) 3055 7212 w -(accessible) 3252 7212 w -(by) 3789 7212 w -(group) 3949 7212 w -10 /LucidaTypewriter f -(sys) 4283 7212 w -10 /LucidaSansUnicode00 f -(.) 4499 7212 w -(Consider) 4608 7212 w +(in another.) 3879 7212 w cleartomark showpage saveobj restore @@ -15409,510 +15296,564 @@ 19 pagesetup 10 /LucidaSansUnicode00 f (\255 19 \255) 2752 480 w -(the following two lines of a user database stored on a server:) 720 840 w +10 /LucidaSans-Demi f +(File Permissions) 720 840 w +10 /LucidaSansUnicode00 f +(One) 970 996 w +(of) 1201 996 w +(the) 1334 996 w +(advantages) 1524 996 w +(of) 2108 996 w +(constructing) 2242 996 w +(services) 2884 996 w +(as) 3307 996 w +(file) 3449 996 w +(systems) 3636 996 w +(is) 4063 996 w +(that) 4179 996 w +(the) 4406 996 w +(solutions) 4597 996 w +(to) 720 1116 w +(ownership) 856 1116 w +(and) 1396 1116 w +(permission) 1614 1116 w +(problems) 2188 1116 w +(fall) 2683 1116 w +(out) 2870 1116 w +(naturally.) 3067 1116 w +(As) 3590 1116 w +(in) 3747 1116 w +(UNIX,) 3875 1116 w +(each) 4179 1116 w +(file) 4440 1116 w +(or) 4628 1116 w +(direc\255) 4767 1116 w +(tory) 720 1236 w +(has) 952 1236 w +(separate) 1161 1236 w +(read,) 1616 1236 w +(write,) 1905 1236 w +(and) 2219 1236 w +(execute/search) 2441 1236 w +(permissions) 3231 1236 w +(for) 3860 1236 w +(the) 4041 1236 w +(file) 4238 1236 w +10 /LucidaSansUnicode20 f +(\031) 4389 1236 w +10 /LucidaSansUnicode00 f +(s) 4421 1236 w +(owner,) 4514 1236 w +(the) 4885 1236 w +(file) 720 1356 w +10 /LucidaSansUnicode20 f +(\031) 871 1356 w +10 /LucidaSansUnicode00 f +(s group, and anyone else.) 903 1356 w +(The idea of group is unusual: any user name is potentially) 2219 1356 w +(a) 720 1476 w +(group) 816 1476 w +(name.) 1146 1476 w +(A) 1517 1476 w +(group) 1627 1476 w +(is) 1957 1476 w +(just) 2078 1476 w +(a) 2299 1476 w +(user) 2395 1476 w +(with) 2646 1476 w +(a) 2893 1476 w +(list) 2990 1476 w +(of) 3178 1476 w +(other) 3318 1476 w +(users) 3617 1476 w +(in) 3920 1476 w +(the) 4053 1476 w +(group.) 4250 1476 w +(Conven\255) 4645 1476 w +(tions) 720 1596 w +(make) 994 1596 w +(the) 1290 1596 w +(distinction:) 1479 1596 w +(most) 2056 1596 w +(people) 2332 1596 w +(have) 2694 1596 w +(user) 2953 1596 w +(names) 3197 1596 w +(without) 3548 1596 w +(group) 3947 1596 w +(members,) 4269 1596 w +(while) 4787 1596 w +(groups) 720 1716 w +(have) 1093 1716 w +(long) 1352 1716 w +(lists) 1600 1716 w +(of) 1831 1716 w +(attached) 1963 1716 w +(names.) 2413 1716 w +(For) 2828 1716 w +(example,) 3018 1716 w +(the) 3497 1716 w +10 /LucidaTypewriter f +(sys) 3686 1716 w +10 /LucidaSansUnicode00 f +(group) 3936 1716 w +(traditionally) 4259 1716 w +(has) 4872 1716 w +(all) 720 1836 w +(the) 879 1836 w +(system) 1079 1836 w +(programmers,) 1464 1836 w +(and) 2198 1836 w +(system) 2423 1836 w +(files) 2808 1836 w +(are) 3055 1836 w +(accessible) 3252 1836 w +(by) 3789 1836 w +(group) 3949 1836 w +10 /LucidaTypewriter f +(sys) 4283 1836 w +10 /LucidaSansUnicode00 f +(.) 4499 1836 w +(Consider) 4608 1836 w +(the following two lines of a user database stored on a server:) 720 1956 w 9 /LucidaTypewriter f -(pjw:pjw:) 1008 1010 w -(sys::pjw,ken,philw,presotto) 1008 1120 w +(pjw:pjw:) 920 2126 w +(sys::pjw,ken,philw,presotto) 920 2236 w 10 /LucidaSansUnicode00 f -(The) 720 1300 w -(first) 937 1300 w -(establishes) 1168 1300 w -(user) 1744 1300 w -10 /LucidaTypewriter f -(pjw) 1990 1300 w -10 /LucidaSansUnicode00 f -(as) 2242 1300 w -(a) 2384 1300 w -(regular) 2475 1300 w -(user.) 2857 1300 w -(The) 3167 1300 w -(second) 3384 1300 w -(establishes) 3765 1300 w -(user) 4342 1300 w -10 /LucidaTypewriter f -(sys) 4589 1300 w -10 /LucidaSansUnicode00 f -(as) 4842 1300 w -(a) 4985 1300 w -(group) 720 1420 w -(and) 1045 1420 w -(lists) 1261 1420 w -(four) 1494 1420 w -(users) 1731 1420 w -(who) 2028 1420 w -(are) 2264 1420 w +(The) 720 2416 w +(first) 937 2416 w +(establishes) 1168 2416 w +(user) 1744 2416 w +10 /LucidaTypewriter f +(pjw) 1990 2416 w +10 /LucidaSansUnicode00 f +(as) 2242 2416 w +(a) 2384 2416 w +(regular) 2475 2416 w +(user.) 2857 2416 w +(The) 3167 2416 w +(second) 3384 2416 w +(establishes) 3765 2416 w +(user) 4342 2416 w +10 /LucidaTypewriter f +(sys) 4589 2416 w +10 /LucidaSansUnicode00 f +(as) 4842 2416 w +(a) 4985 2416 w +(group) 720 2536 w +(and) 1045 2536 w +(lists) 1261 2536 w +(four) 1494 2536 w +(users) 1731 2536 w +(who) 2028 2536 w +(are) 2264 2536 w 10 /LucidaSans-Italic f -(members) 2452 1420 w +(members) 2452 2536 w 10 /LucidaSansUnicode00 f -(of) 2938 1420 w -(that) 3072 1420 w -(group.) 3299 1420 w -(The) 3688 1420 w -(empty) 3905 1420 w -(colon-separated) 4241 1420 w -(field) 720 1540 w -(is) 972 1540 w -(space) 1090 1540 w -(for) 1404 1540 w -(a) 1581 1540 w -(user) 1674 1540 w -(to) 1922 1540 w -(be) 2058 1540 w -(named) 2215 1540 w -(as) 2582 1540 w -(the) 2726 1540 w +(of) 2938 2536 w +(that) 3072 2536 w +(group.) 3299 2536 w +(The) 3688 2536 w +(empty) 3905 2536 w +(colon-separated) 4241 2536 w +(field) 720 2656 w +(is) 972 2656 w +(space) 1090 2656 w +(for) 1404 2656 w +(a) 1581 2656 w +(user) 1674 2656 w +(to) 1922 2656 w +(be) 2058 2656 w +(named) 2215 2656 w +(as) 2582 2656 w +(the) 2726 2656 w 10 /LucidaSans-Italic f -(group) 2919 1540 w -(leader) 3246 1540 w +(group) 2919 2656 w +(leader) 3246 2656 w 10 /LucidaSansUnicode00 f -(.) 3551 1540 w -(If) 3653 1540 w -(a) 3757 1540 w -(group) 3850 1540 w -(has) 4177 1540 w -(a) 4384 1540 w -(leader,) 4478 1540 w -(that) 4849 1540 w -(user) 720 1660 w -(has) 972 1660 w -(special) 1182 1660 w -(permissions) 1558 1660 w -(for) 2187 1660 w -(the) 2368 1660 w -(group,) 2565 1660 w -(such) 2928 1660 w -(as) 3196 1660 w -(freedom) 3344 1660 w -(to) 3793 1660 w -(change) 3932 1660 w -(the) 4321 1660 w -(group) 4517 1660 w -(per\255) 4847 1660 w -(missions) 720 1780 w -(of) 1189 1780 w -(files) 1329 1780 w -(in) 1573 1780 w -(that) 1706 1780 w -(group.) 1939 1780 w -(If) 2334 1780 w -(no) 2442 1780 w -(leader) 2607 1780 w -(is) 2949 1780 w -(specified,) 3071 1780 w -(each) 3580 1780 w -(member) 3846 1780 w -(of) 4290 1780 w -(the) 4430 1780 w -(group) 4628 1780 w -(is) 4960 1780 w -(considered) 720 1900 w -(equal,) 1294 1900 w -(as) 1631 1900 w -(if) 1777 1900 w -(each) 1883 1900 w -(were) 2147 1900 w -(the) 2417 1900 w -(leader.) 2612 1900 w -(In) 3016 1900 w -(our) 3147 1900 w -(example,) 3351 1900 w -(only) 3836 1900 w -10 /LucidaTypewriter f -(pjw) 4080 1900 w -10 /LucidaSansUnicode00 f -(can) 4336 1900 w -(add) 4544 1900 w -(mem\255) 4765 1900 w -(bers to his group, but all of) 720 2020 w -10 /LucidaTypewriter f -(sys) 2089 2020 w -10 /LucidaSansUnicode20 f -(\031) 2305 2020 w -10 /LucidaSansUnicode00 f -(s members are equal partners in that group.) 2337 2020 w -(Regular files are owned by the user that creates them.) 970 2176 w -(The group name is inherited) 3661 2176 w -(from) 720 2296 w -(the) 1002 2296 w -(directory) 1207 2296 w -(holding) 1688 2296 w -(the) 2106 2296 w -(new) 2311 2296 w -(file.) 2556 2296 w -(Device) 2821 2296 w -(files) 3190 2296 w -(are) 3442 2296 w -(treated) 3644 2296 w -(specially:) 4038 2296 w -(the) 4534 2296 w -(kernel) 4738 2296 w -(may) 720 2416 w -(arrange) 960 2416 w -(the) 1372 2416 w -(ownership) 1567 2416 w -(and) 2109 2416 w -(permissions) 2329 2416 w -(of) 2956 2416 w -(a) 3094 2416 w -(file) 3189 2416 w -(appropriate) 3381 2416 w -(to) 3986 2416 w -(the) 4125 2416 w -(user) 4321 2416 w -(accessing) 4572 2416 w -(the file.) 720 2536 w -(A) 970 2692 w -(good) 1076 2692 w -(example) 1360 2692 w -(of) 1810 2692 w -(the) 1945 2692 w -(generality) 2137 2692 w -(this) 2654 2692 w -(offers) 2871 2692 w -(is) 3192 2692 w -(process) 3310 2692 w -(files,) 3722 2692 w -(which) 3994 2692 w -(are) 4313 2692 w -(owned) 4503 2692 w -(and) 4860 2692 w -(read-protected) 720 2812 w -(by) 1506 2812 w -(the) 1669 2812 w -(owner) 1872 2812 w -(of) 2217 2812 w -(the) 2363 2812 w -(process.) 2566 2812 w -(If) 3052 2812 w -(the) 3166 2812 w -(owner) 3369 2812 w -(wants) 3714 2812 w -(to) 4044 2812 w -(let) 4190 2812 w -(someone) 4360 2812 w -(else) 4848 2812 w -(access) 720 2932 w -(the) 1080 2932 w -(memory) 1280 2932 w -(of) 1721 2932 w -(a) 1864 2932 w -(process,) 1964 2932 w -(for) 2415 2932 w -(example) 2599 2932 w -(to) 3057 2932 w -(let) 3200 2932 w -(the) 3367 2932 w -(author) 3567 2932 w -(of) 3930 2932 w -(a) 4073 2932 w -(program) 4173 2932 w -(debug) 4634 2932 w -(a) 4985 2932 w -(broken image, the standard) 720 3052 w -10 /LucidaTypewriter f -(chmod) 2098 3052 w -10 /LucidaSansUnicode00 f -(command applied to the process files does the job.) 2490 3052 w -(Another) 970 3208 w -(unusual) 1402 3208 w -(application) 1829 3208 w -(of) 2407 3208 w -(file) 2549 3208 w -(permissions) 2744 3208 w -(is) 3375 3208 w -(the) 3499 3208 w -(dump) 3698 3208 w -(file) 4023 3208 w -(system,) 4218 3208 w -(which) 4634 3208 w -(is) 4960 3208 w -(not) 720 3328 w -(only) 913 3328 w -(served) 1150 3328 w -(by) 1502 3328 w -(the) 1650 3328 w -(same) 1838 3328 w -(file) 2126 3328 w -(server) 2310 3328 w -(as) 2640 3328 w -(the) 2779 3328 w -(original) 2967 3328 w -(data,) 3368 3328 w -(but represented by the same) 3643 3328 w -(user) 720 3448 w -(database.) 968 3448 w -(Files) 1505 3448 w -(in) 1762 3448 w -(the) 1891 3448 w -(dump) 2085 3448 w -(are) 2405 3448 w -(therefore) 2596 3448 w -(given) 3082 3448 w -(identical) 3382 3448 w -(protection) 3832 3448 w -(as) 4369 3448 w -(files) 4514 3448 w -(in) 4755 3448 w -(the) 4885 3448 w -(regular) 720 3568 w -(file) 1102 3568 w -(system;) 1288 3568 w -(if) 1695 3568 w -(a) 1796 3568 w -(file) 1886 3568 w -(is) 2072 3568 w -(owned) 2187 3568 w -(by) 2541 3568 w -10 /LucidaTypewriter f -(pjw) 2691 3568 w -10 /LucidaSansUnicode00 f -(and) 2942 3568 w -(read-protected,) 3157 3568 w -(once) 3962 3568 w -(it) 4227 3568 w -(is) 4328 3568 w -(in) 4443 3568 w -(the) 4569 3568 w -(dump) 4759 3568 w -(file) 720 3688 w -(system) 911 3688 w -(it) 1291 3688 w -(is) 1397 3688 w -(still) 1517 3688 w -(owned) 1733 3688 w -(by) 2093 3688 w -10 /LucidaTypewriter f -(pjw) 2249 3688 w -10 /LucidaSansUnicode00 f -(and) 2506 3688 w -(read-protected.) 2727 3688 w -(Also,) 3570 3688 w -(since) 3853 3688 w -(the) 4143 3688 w -(dump) 4339 3688 w -(file) 4661 3688 w -(sys\255) 4853 3688 w -(tem) 720 3808 w -(is) 947 3808 w -(immutable,) 1068 3808 w -(the) 1658 3808 w -(file) 1854 3808 w -(cannot) 2046 3808 w -(be) 2415 3808 w -(changed;) 2575 3808 w -(it) 3059 3808 w -(is) 3166 3808 w -(read-protected) 3287 3808 w -(forever.) 4066 3808 w -(Drawbacks) 4514 3808 w -(are) 720 3928 w -(that) 915 3928 w -(if) 1149 3928 w -(the) 1258 3928 w -(file) 1456 3928 w -(is) 1650 3928 w -(readable) 1773 3928 w -(but) 2234 3928 w -(should) 2439 3928 w -(have) 2810 3928 w -(been) 3078 3928 w -(read-protected,) 3358 3928 w -(it) 4172 3928 w -(is) 4282 3928 w -(readable) 4406 3928 w -(for\255) 4868 3928 w -(ever, and that user names are hard to re-use.) 720 4048 w +(.) 3551 2656 w +(If) 3653 2656 w +(a) 3757 2656 w +(group) 3850 2656 w +(has) 4177 2656 w +(a) 4384 2656 w +(leader,) 4478 2656 w +(that) 4849 2656 w +(user) 720 2776 w +(has) 972 2776 w +(special) 1182 2776 w +(permissions) 1558 2776 w +(for) 2187 2776 w +(the) 2368 2776 w +(group,) 2565 2776 w +(such) 2928 2776 w +(as) 3196 2776 w +(freedom) 3344 2776 w +(to) 3793 2776 w +(change) 3932 2776 w +(the) 4321 2776 w +(group) 4517 2776 w +(per\255) 4847 2776 w +(missions) 720 2896 w +(of) 1189 2896 w +(files) 1329 2896 w +(in) 1573 2896 w +(that) 1706 2896 w +(group.) 1939 2896 w +(If) 2334 2896 w +(no) 2442 2896 w +(leader) 2607 2896 w +(is) 2949 2896 w +(specified,) 3071 2896 w +(each) 3580 2896 w +(member) 3846 2896 w +(of) 4290 2896 w +(the) 4430 2896 w +(group) 4628 2896 w +(is) 4960 2896 w +(considered) 720 3016 w +(equal,) 1294 3016 w +(as) 1631 3016 w +(if) 1777 3016 w +(each) 1883 3016 w +(were) 2147 3016 w +(the) 2417 3016 w +(leader.) 2612 3016 w +(In) 3016 3016 w +(our) 3147 3016 w +(example,) 3351 3016 w +(only) 3836 3016 w +10 /LucidaTypewriter f +(pjw) 4080 3016 w +10 /LucidaSansUnicode00 f +(can) 4336 3016 w +(add) 4544 3016 w +(mem\255) 4765 3016 w +(bers to his group, but all of) 720 3136 w +10 /LucidaTypewriter f +(sys) 2089 3136 w +10 /LucidaSansUnicode20 f +(\031) 2305 3136 w +10 /LucidaSansUnicode00 f +(s members are equal partners in that group.) 2337 3136 w +(Regular files are owned by the user that creates them.) 970 3292 w +(The group name is inherited) 3661 3292 w +(from) 720 3412 w +(the) 1002 3412 w +(directory) 1207 3412 w +(holding) 1688 3412 w +(the) 2106 3412 w +(new) 2311 3412 w +(file.) 2556 3412 w +(Device) 2821 3412 w +(files) 3190 3412 w +(are) 3442 3412 w +(treated) 3644 3412 w +(specially:) 4038 3412 w +(the) 4534 3412 w +(kernel) 4738 3412 w +(may) 720 3532 w +(arrange) 960 3532 w +(the) 1372 3532 w +(ownership) 1567 3532 w +(and) 2109 3532 w +(permissions) 2329 3532 w +(of) 2956 3532 w +(a) 3094 3532 w +(file) 3189 3532 w +(appropriate) 3381 3532 w +(to) 3986 3532 w +(the) 4125 3532 w +(user) 4321 3532 w +(accessing) 4572 3532 w +(the file.) 720 3652 w +(A) 970 3808 w +(good) 1076 3808 w +(example) 1360 3808 w +(of) 1810 3808 w +(the) 1945 3808 w +(generality) 2137 3808 w +(this) 2654 3808 w +(offers) 2871 3808 w +(is) 3192 3808 w +(process) 3310 3808 w +(files,) 3722 3808 w +(which) 3994 3808 w +(are) 4313 3808 w +(owned) 4503 3808 w +(and) 4860 3808 w +(read-protected) 720 3928 w +(by) 1506 3928 w +(the) 1669 3928 w +(owner) 1872 3928 w +(of) 2217 3928 w +(the) 2363 3928 w +(process.) 2566 3928 w +(If) 3052 3928 w +(the) 3166 3928 w +(owner) 3369 3928 w +(wants) 3714 3928 w +(to) 4044 3928 w +(let) 4190 3928 w +(someone) 4360 3928 w +(else) 4848 3928 w +(access) 720 4048 w +(the) 1080 4048 w +(memory) 1280 4048 w +(of) 1721 4048 w +(a) 1864 4048 w +(process,) 1964 4048 w +(for) 2415 4048 w +(example) 2599 4048 w +(to) 3057 4048 w +(let) 3200 4048 w +(the) 3367 4048 w +(author) 3567 4048 w +(of) 3930 4048 w +(a) 4073 4048 w +(program) 4173 4048 w +(debug) 4634 4048 w +(a) 4985 4048 w +(broken image, the standard) 720 4168 w +10 /LucidaTypewriter f +(chmod) 2098 4168 w +10 /LucidaSansUnicode00 f +(command applied to the process files does the job.) 2490 4168 w +(Another) 970 4324 w +(unusual) 1402 4324 w +(application) 1829 4324 w +(of) 2407 4324 w +(file) 2549 4324 w +(permissions) 2744 4324 w +(is) 3375 4324 w +(the) 3499 4324 w +(dump) 3698 4324 w +(file) 4023 4324 w +(system,) 4218 4324 w +(which) 4634 4324 w +(is) 4960 4324 w +(not) 720 4444 w +(only) 913 4444 w +(served) 1150 4444 w +(by) 1502 4444 w +(the) 1650 4444 w +(same) 1838 4444 w +(file) 2126 4444 w +(server) 2310 4444 w +(as) 2640 4444 w +(the) 2779 4444 w +(original) 2967 4444 w +(data,) 3368 4444 w +(but represented by the same) 3643 4444 w +(user) 720 4564 w +(database.) 968 4564 w +(Files) 1505 4564 w +(in) 1762 4564 w +(the) 1891 4564 w +(dump) 2085 4564 w +(are) 2405 4564 w +(therefore) 2596 4564 w +(given) 3082 4564 w +(identical) 3382 4564 w +(protection) 3832 4564 w +(as) 4369 4564 w +(files) 4514 4564 w +(in) 4755 4564 w +(the) 4885 4564 w +(regular) 720 4684 w +(file) 1102 4684 w +(system;) 1288 4684 w +(if) 1695 4684 w +(a) 1796 4684 w +(file) 1886 4684 w +(is) 2072 4684 w +(owned) 2187 4684 w +(by) 2541 4684 w +10 /LucidaTypewriter f +(pjw) 2691 4684 w +10 /LucidaSansUnicode00 f +(and) 2942 4684 w +(read-protected,) 3157 4684 w +(once) 3962 4684 w +(it) 4227 4684 w +(is) 4328 4684 w +(in) 4443 4684 w +(the) 4569 4684 w +(dump) 4759 4684 w +(file) 720 4804 w +(system) 911 4804 w +(it) 1291 4804 w +(is) 1397 4804 w +(still) 1517 4804 w +(owned) 1733 4804 w +(by) 2093 4804 w +10 /LucidaTypewriter f +(pjw) 2249 4804 w +10 /LucidaSansUnicode00 f +(and) 2506 4804 w +(read-protected.) 2727 4804 w +(Also,) 3570 4804 w +(since) 3853 4804 w +(the) 4143 4804 w +(dump) 4339 4804 w +(file) 4661 4804 w +(sys\255) 4853 4804 w +(tem) 720 4924 w +(is) 947 4924 w +(immutable,) 1068 4924 w +(the) 1658 4924 w +(file) 1854 4924 w +(cannot) 2046 4924 w +(be) 2415 4924 w +(changed;) 2575 4924 w +(it) 3059 4924 w +(is) 3166 4924 w +(read-protected) 3287 4924 w +(forever.) 4066 4924 w +(Drawbacks) 4514 4924 w +(are) 720 5044 w +(that) 915 5044 w +(if) 1149 5044 w +(the) 1258 5044 w +(file) 1456 5044 w +(is) 1650 5044 w +(readable) 1773 5044 w +(but) 2234 5044 w +(should) 2439 5044 w +(have) 2810 5044 w +(been) 3078 5044 w +(read-protected,) 3358 5044 w +(it) 4172 5044 w +(is) 4282 5044 w +(readable) 4406 5044 w +(for\255) 4868 5044 w +(ever, and that user names are hard to re-use.) 720 5164 w 10 /LucidaSans-Demi f -(Performance) 720 4288 w -10 /LucidaSansUnicode00 f -(As) 970 4444 w -(a) 1137 4444 w -(simple) 1239 4444 w -(measure) 1607 4444 w -(of) 2069 4444 w -(the) 2215 4444 w -(performance) 2418 4444 w -(of) 3082 4444 w -(the) 3228 4444 w -(Plan) 3431 4444 w -(9) 3680 4444 w -(kernel,) 3791 4444 w -(we) 4173 4444 w -(compared) 4354 4444 w -(the) 4885 4444 w -(time) 720 4564 w -(to) 976 4564 w -(do) 1115 4564 w -(some) 1280 4564 w -(simple) 1582 4564 w -(operations) 1944 4564 w -(on) 2501 4564 w -(Plan) 2664 4564 w -(9) 2905 4564 w -(and) 3008 4564 w -(on) 3228 4564 w -(SGI) 3391 4564 w -10 /LucidaSansUnicode20 f -(\031) 3546 4564 w -10 /LucidaSansUnicode00 f -(s) 3578 4564 w -(IRIX) 3669 4564 w -(Release) 3893 4564 w -(5.3) 4299 4564 w -(running) 4497 4564 w -(on) 4917 4564 w -(an) 720 4684 w -(SGI) 886 4684 w -(Challenge) 1090 4684 w -(M) 1620 4684 w -(with) 1756 4684 w -(a) 2011 4684 w -(100MHz) 2116 4684 w -(MIPS) 2572 4684 w -(R4400) 2846 4684 w -(and) 3211 4684 w -(a) 3441 4684 w -(1-megabyte) 3546 4684 w -(secondary) 4191 4684 w -(cache.) 4733 4684 w -(The test program was written in Alef, compiled with the same compiler, and run on iden\255) 720 4804 w -(tical hardware, so the only variables are the operating system and libraries.) 720 4924 w -(The) 970 5080 w -(program) 1208 5080 w -(tests) 1681 5080 w -(the) 1970 5080 w -(time) 2182 5080 w -(to) 2455 5080 w -(do) 2611 5080 w -(a) 2793 5080 w -(context) 2906 5080 w -(switch) 3329 5080 w -(\() 3694 5080 w -10 /LucidaTypewriter f -(rendezvous) 3727 5080 w -10 /LucidaSansUnicode00 f -(on) 4505 5080 w -(Plan) 4686 5080 w -(9,) 4945 5080 w -10 /LucidaTypewriter f -(blockproc) 720 5200 w -10 /LucidaSansUnicode00 f -(on) 1410 5200 w -(IRIX\);) 1575 5200 w -(a) 1866 5200 w -(trivial) 1963 5200 w -(system) 2277 5200 w -(call) 2659 5200 w -(\() 2865 5200 w -10 /LucidaTypewriter f -(rfork\(0\)) 2898 5200 w -10 /LucidaSansUnicode00 f -(and) 3516 5200 w -10 /LucidaTypewriter f -(nap\(0\)) 3738 5200 w -10 /LucidaSansUnicode00 f -(\);) 4170 5200 w -(and) 4277 5200 w -(lightweight) 4498 5200 w -(fork) 720 5320 w -(\() 965 5320 w -10 /LucidaTypewriter f -(rfork\(RFPROC\)) 998 5320 w -10 /LucidaSansUnicode00 f -(and) 1982 5320 w -10 /LucidaTypewriter f -(sproc\(PR_SFDS|PR_SADDR\)) 2210 5320 w -10 /LucidaSansUnicode00 f -(\).) 3866 5320 w -(It) 4011 5320 w -(also) 4126 5320 w -(measures) 4371 5320 w -(the) 4885 5320 w -(time) 720 5440 w -(to) 968 5440 w -(send) 1099 5440 w -(a) 1364 5440 w -(byte) 1452 5440 w -(on) 1693 5440 w -(a) 1849 5440 w -(pipe) 1937 5440 w -(from) 2181 5440 w -(one) 2446 5440 w -(process) 2658 5440 w -(to) 3065 5440 w -(another) 3196 5440 w -(and) 3603 5440 w -(the) 3816 5440 w -(throughput) 4004 5440 w -(on) 4586 5440 w -(a pipe) 4742 5440 w -(between two processes.) 720 5560 w -(The results appear in Table 1.) 1943 5560 w -10 /S f -(_) 1733 5640 w -(_____________________________________________) 1777 5640 w -10 /LucidaSansUnicode00 f -(Test) 2052 5760 w -(Plan 9) 2818 5760 w -(IRIX) 3598 5760 w -10 /S f -(_) 1733 5780 w -(_____________________________________________) 1777 5780 w -10 /LucidaSansUnicode00 f -(Context switch) 1783 5900 w -(39 \265s) 2868 5900 w -(150 \265s) 3529 5900 w -(System call) 1783 6020 w -(6 \265s) 2931 6020 w -(36 \265s) 3592 6020 w -(Light fork) 1783 6140 w -(1300 \265s) 2742 6140 w -(2200 \265s) 3466 6140 w -(Pipe latency) 1783 6260 w -(110 \265s) 2805 6260 w -(200 \265s) 3529 6260 w -(Pipe bandwidth) 1783 6380 w -(11678 KB/s) 2679 6380 w -(14545 KB/s) 3403 6380 w -10 /S f -(_) 1733 6400 w -(_____________________________________________) 1777 6400 w -(\347) 1733 6400 w -(\347) 1733 6340 w -(\347) 1733 6240 w -(\347) 1733 6140 w -(\347) 1733 6040 w -(\347) 1733 5940 w -(\347) 1733 5840 w -(\347) 1733 5740 w -(\347) 4027 6400 w -(\347) 4027 6340 w -(\347) 4027 6240 w -(\347) 4027 6140 w -(\347) 4027 6040 w -(\347) 4027 5940 w -(\347) 4027 5840 w -(\347) 4027 5740 w -10 /LucidaSans-Italic f -(Table 1.) 2025 6580 w -(Performance comparison.) 2482 6580 w +(Performance) 720 5404 w 10 /LucidaSansUnicode00 f -(Although) 720 6736 w -(the) 1203 6736 w -(Plan) 1397 6736 w -(9) 1637 6736 w -(times) 1739 6736 w -(are) 2044 6736 w -(not) 2235 6736 w -(spectacular,) 2434 6736 w -(they) 3056 6736 w -(show) 3302 6736 w -(that) 3592 6736 w -(the) 3822 6736 w -(kernel) 4016 6736 w -(is) 4357 6736 w -(competitive) 4476 6736 w -(with commercial systems.) 720 6856 w +(As) 970 5560 w +(a) 1137 5560 w +(simple) 1239 5560 w +(measure) 1607 5560 w +(of) 2069 5560 w +(the) 2215 5560 w +(performance) 2418 5560 w +(of) 3082 5560 w +(the) 3228 5560 w +(Plan) 3431 5560 w +(9) 3680 5560 w +(kernel,) 3791 5560 w +(we) 4173 5560 w +(compared) 4354 5560 w +(the) 4885 5560 w +(time) 720 5680 w +(to) 976 5680 w +(do) 1115 5680 w +(some) 1280 5680 w +(simple) 1582 5680 w +(operations) 1944 5680 w +(on) 2501 5680 w +(Plan) 2664 5680 w +(9) 2905 5680 w +(and) 3008 5680 w +(on) 3228 5680 w +(SGI) 3391 5680 w +10 /LucidaSansUnicode20 f +(\031) 3546 5680 w +10 /LucidaSansUnicode00 f +(s) 3578 5680 w +(IRIX) 3669 5680 w +(Release) 3893 5680 w +(5.3) 4299 5680 w +(running) 4497 5680 w +(on) 4917 5680 w +(an) 720 5800 w +(SGI) 886 5800 w +(Challenge) 1090 5800 w +(M) 1620 5800 w +(with) 1756 5800 w +(a) 2011 5800 w +(100MHz) 2116 5800 w +(MIPS) 2572 5800 w +(R4400) 2846 5800 w +(and) 3211 5800 w +(a) 3441 5800 w +(1-megabyte) 3546 5800 w +(secondary) 4191 5800 w +(cache.) 4733 5800 w +(The test program was written in Alef, compiled with the same compiler, and run on iden\255) 720 5920 w +(tical hardware, so the only variables are the operating system and libraries.) 720 6040 w +(The) 970 6196 w +(program) 1208 6196 w +(tests) 1681 6196 w +(the) 1970 6196 w +(time) 2182 6196 w +(to) 2455 6196 w +(do) 2611 6196 w +(a) 2793 6196 w +(context) 2906 6196 w +(switch) 3329 6196 w +(\() 3694 6196 w +10 /LucidaTypewriter f +(rendezvous) 3727 6196 w +10 /LucidaSansUnicode00 f +(on) 4505 6196 w +(Plan) 4686 6196 w +(9,) 4945 6196 w +10 /LucidaTypewriter f +(blockproc) 720 6316 w +10 /LucidaSansUnicode00 f +(on) 1410 6316 w +(IRIX\);) 1575 6316 w +(a) 1866 6316 w +(trivial) 1963 6316 w +(system) 2277 6316 w +(call) 2659 6316 w +(\() 2865 6316 w +10 /LucidaTypewriter f +(rfork\(0\)) 2898 6316 w +10 /LucidaSansUnicode00 f +(and) 3516 6316 w +10 /LucidaTypewriter f +(nap\(0\)) 3738 6316 w +10 /LucidaSansUnicode00 f +(\);) 4170 6316 w +(and) 4277 6316 w +(lightweight) 4498 6316 w +(fork) 720 6436 w +(\() 965 6436 w +10 /LucidaTypewriter f +(rfork\(RFPROC\)) 998 6436 w +10 /LucidaSansUnicode00 f +(and) 1982 6436 w +10 /LucidaTypewriter f +(sproc\(PR_SFDS|PR_SADDR\)) 2210 6436 w +10 /LucidaSansUnicode00 f +(\).) 3866 6436 w +(It) 4011 6436 w +(also) 4126 6436 w +(measures) 4371 6436 w +(the) 4885 6436 w +(time) 720 6556 w +(to) 968 6556 w +(send) 1099 6556 w +(a) 1364 6556 w +(byte) 1452 6556 w +(on) 1693 6556 w +(a) 1849 6556 w +(pipe) 1937 6556 w +(from) 2181 6556 w +(one) 2446 6556 w +(process) 2658 6556 w +(to) 3065 6556 w +(another) 3196 6556 w +(and) 3603 6556 w +(the) 3816 6556 w +(throughput) 4004 6556 w +(on) 4586 6556 w +(a pipe) 4742 6556 w +(between two processes.) 720 6676 w +(The results appear in Table 1.) 1943 6676 w cleartomark showpage saveobj restore @@ -15923,699 +15864,623 @@ 20 pagesetup 10 /LucidaSansUnicode00 f (\255 20 \255) 2752 480 w -10 /LucidaSans-Demi f -(Discussion) 720 840 w +10 /S f +(_) 1733 800 w +(_____________________________________________) 1777 800 w 10 /LucidaSansUnicode00 f -(Plan) 970 996 w -(9) 1213 996 w -(has) 1318 996 w -(a) 1528 996 w -(relatively) 1625 996 w -(conventional) 2103 996 w -(kernel;) 2762 996 w -(the) 3138 996 w -(system) 3336 996 w -10 /LucidaSansUnicode20 f -(\031) 3676 996 w -10 /LucidaSansUnicode00 f -(s) 3708 996 w -(novelty) 3802 996 w -(lies) 4194 996 w -(in) 4402 996 w -(the) 4536 996 w -(pieces) 4734 996 w -(outside) 720 1116 w -(the) 1123 1116 w -(kernel) 1322 1116 w -(and) 1668 1116 w -(the) 1892 1116 w -(way) 2090 1116 w -(they) 2317 1116 w -(interact.) 2567 1116 w -(When) 3042 1116 w -(building) 3351 1116 w -(Plan) 3793 1116 w -(9,) 4037 1116 w -(we) 4175 1116 w -(considered) 4351 1116 w -(all) 4927 1116 w -(aspects) 720 1236 w -(of) 1134 1236 w -(the) 1282 1236 w -(system) 1487 1236 w -(together,) 1877 1236 w -(solving) 2371 1236 w -(problems) 2767 1236 w -(where) 3275 1236 w -(the) 3618 1236 w -(solution) 3824 1236 w -(fit) 4267 1236 w -(best.) 4421 1236 w -(Some\255) 4743 1236 w -(times) 720 1356 w -(the) 1022 1356 w -(solution) 1213 1356 w -(spanned) 1641 1356 w -(many) 2089 1356 w -(components.) 2387 1356 w -(An) 3083 1356 w -(example) 3249 1356 w -(is) 3697 1356 w -(the) 3812 1356 w -(problem) 4002 1356 w -(of) 4443 1356 w -(heteroge\255) 4576 1356 w -(neous) 720 1476 w -(instruction) 1067 1476 w -(architectures,) 1645 1476 w -(which) 2362 1476 w -(is) 2699 1476 w -(addressed) 2835 1476 w -(by) 3390 1476 w -(the) 3561 1476 w -(compilers) 3772 1476 w -(\(different) 4302 1476 w -(code) 4809 1476 w -(characters,) 720 1596 w -(portable) 1301 1596 w -(object) 1755 1596 w -(code\),) 2102 1596 w -(the) 2447 1596 w -(environment) 2651 1596 w -(\() 3311 1596 w -10 /LucidaTypewriter f -($cputype) 3344 1596 w +(Test) 2052 920 w +(Plan 9) 2818 920 w +(IRIX) 3598 920 w +10 /S f +(_) 1733 940 w +(_____________________________________________) 1777 940 w 10 /LucidaSansUnicode00 f -(and) 3968 1596 w -10 /LucidaTypewriter f -($objtype) 4196 1596 w +(Context switch) 1783 1060 w +(39 \265s) 2868 1060 w +(150 \265s) 3529 1060 w +(System call) 1783 1180 w +(6 \265s) 2931 1180 w +(36 \265s) 3592 1180 w +(Light fork) 1783 1300 w +(1300 \265s) 2742 1300 w +(2200 \265s) 3466 1300 w +(Pipe latency) 1783 1420 w +(110 \265s) 2805 1420 w +(200 \265s) 3529 1420 w +(Pipe bandwidth) 1783 1540 w +(11678 KB/s) 2679 1540 w +(14545 KB/s) 3403 1540 w +10 /S f +(_) 1733 1560 w +(_____________________________________________) 1777 1560 w +(\347) 1733 1560 w +(\347) 1733 1500 w +(\347) 1733 1400 w +(\347) 1733 1300 w +(\347) 1733 1200 w +(\347) 1733 1100 w +(\347) 1733 1000 w +(\347) 1733 900 w +(\347) 4027 1560 w +(\347) 4027 1500 w +(\347) 4027 1400 w +(\347) 4027 1300 w +(\347) 4027 1200 w +(\347) 4027 1100 w +(\347) 4027 1000 w +(\347) 4027 900 w +10 /LucidaSans-Italic f +(Table 1.) 2025 1740 w +(Performance comparison.) 2482 1740 w 10 /LucidaSansUnicode00 f -(\),) 4772 1596 w -(the) 4885 1596 w -(name) 720 1716 w -(space) 1029 1716 w -(\(binding) 1348 1716 w -(in) 1794 1716 w -10 /LucidaTypewriter f -(/bin) 1928 1716 w -10 /LucidaSansUnicode00 f -(\),) 2216 1716 w -(and) 2324 1716 w -(other) 2547 1716 w -(components.) 2847 1716 w -(Sometimes) 3551 1716 w -(many) 4124 1716 w -(issues) 4430 1716 w -(could) 4774 1716 w -(be) 720 1836 w -(solved) 879 1836 w -(in) 1231 1836 w -(a) 1362 1836 w -(single) 1457 1836 w -(place.) 1786 1836 w -(The) 2144 1836 w -(best) 2365 1836 w -(example) 2612 1836 w -(is) 3065 1836 w -(9P,) 3185 1836 w -(which) 3375 1836 w -(centralizes) 3696 1836 w -(naming,) 4259 1836 w -(access,) 4693 1836 w -(and) 720 1956 w -(authentication.) 942 1956 w -(9P) 1743 1956 w -(is) 1903 1956 w -(really) 2025 1956 w -(the) 2329 1956 w -(core) 2526 1956 w -(of) 2777 1956 w -(the) 2917 1956 w -(system;) 3114 1956 w -(it) 3528 1956 w -(is) 3636 1956 w -(fair) 3758 1956 w -(to) 3962 1956 w -(say) 4102 1956 w -(that) 4302 1956 w -(the) 4535 1956 w -(Plan) 4733 1956 w -(9) 4977 1956 w -(kernel is primarily a 9P multiplexer.) 720 2076 w -(Plan) 970 2232 w -(9) 1212 2232 w -10 /LucidaSansUnicode20 f -(\031) 1275 2232 w +(Although) 720 1896 w +(the) 1203 1896 w +(Plan) 1397 1896 w +(9) 1637 1896 w +(times) 1739 1896 w +(are) 2044 1896 w +(not) 2235 1896 w +(spectacular,) 2434 1896 w +(they) 3056 1896 w +(show) 3302 1896 w +(that) 3592 1896 w +(the) 3822 1896 w +(kernel) 4016 1896 w +(is) 4357 1896 w +(competitive) 4476 1896 w +(with commercial systems.) 720 2016 w +10 /LucidaSans-Demi f +(Discussion) 720 2256 w 10 /LucidaSansUnicode00 f -(s) 1307 2232 w -(focus) 1399 2232 w -(on) 1702 2232 w -(files) 1866 2232 w -(and) 2109 2232 w -(naming) 2330 2232 w -(is) 2735 2232 w -(central) 2857 2232 w -(to) 3230 2232 w -(its) 3370 2232 w -(expressiveness.) 3529 2232 w -(Particularly) 4371 2232 w -(in) 4949 2232 w -(distributed) 720 2352 w -(computing,) 1288 2352 w -(the) 1877 2352 w -(way) 2068 2352 w -(things) 2288 2352 w -(are) 2627 2352 w -(named) 2815 2352 w -(has) 3180 2352 w -(profound) 3384 2352 w -(influence) 3870 2352 w -(on) 4350 2352 w -(the) 4509 2352 w -(system) 4700 2352 w -([Nee89].) 720 2472 w -(The) 1199 2472 w -(combination) 1417 2472 w -(of) 2057 2472 w -(local) 2192 2472 w -(name) 2454 2472 w -(spaces) 2757 2472 w -(and) 3122 2472 w -(global) 3340 2472 w -(conventions) 3677 2472 w -(to) 4299 2472 w -(interconnect) 4435 2472 w -(networked) 720 2592 w -(resources) 1273 2592 w -(avoids) 1785 2592 w -(the) 2138 2592 w -(difficulty) 2335 2592 w -(of) 2803 2592 w -(maintaining) 2943 2592 w -(a) 3560 2592 w -(global) 3657 2592 w -(uniform) 3998 2592 w -(name) 4425 2592 w -(space,) 4732 2592 w -(while) 720 2712 w -(naming) 1011 2712 w -(everything) 1412 2712 w -(like) 1959 2712 w -(a) 2169 2712 w -(file) 2262 2712 w -(makes) 2451 2712 w -(the) 2803 2712 w -(system) 2997 2712 w -(easy) 3376 2712 w -(to) 3629 2712 w -(understand,) 3766 2712 w -(even) 4389 2712 w -(for) 4654 2712 w -(nov\255) 4832 2712 w -(ices.) 720 2832 w -(Consider) 1005 2832 w -(the) 1471 2832 w -(dump) 1659 2832 w -(file) 1973 2832 w -(system,) 2157 2832 w -(which) 2562 2832 w -(is) 2876 2832 w -(trivial) 2989 2832 w -(to) 3294 2832 w -(use) 3425 2832 w -(for) 3627 2832 w -(anyone) 3799 2832 w -(familiar) 4180 2832 w -(with) 4581 2832 w -(hier\255) 4819 2832 w -(archical) 720 2952 w -(file) 1138 2952 w -(systems.) 1334 2952 w -(At) 1834 2952 w -(a) 1985 2952 w -(deeper) 2085 2952 w -(level,) 2465 2952 w -(building) 2764 2952 w -(all) 3209 2952 w -(the) 3368 2952 w -(resources) 3569 2952 w -(above) 4085 2952 w -(a) 4418 2952 w -(single) 4519 2952 w -(uni\255) 4854 2952 w -(form) 720 3072 w -(interface) 998 3072 w -(makes) 1468 3072 w -(interoperability) 1827 3072 w -(easy.) 2613 3072 w -(Once) 2937 3072 w -(a) 3230 3072 w -(resource) 3331 3072 w -(exports) 3795 3072 w -(a) 4210 3072 w -(9P) 4310 3072 w -(interface,) 4473 3072 w -(it) 4974 3072 w -(can) 720 3192 w -(combine) 931 3192 w -(transparently) 1390 3192 w -(with) 2075 3192 w -(any) 2324 3192 w -(other) 2537 3192 w -(part) 2838 3192 w -(of) 3078 3192 w -(the) 3220 3192 w -(system) 3419 3192 w -(to) 3803 3192 w -(build) 3945 3192 w -(unusual) 4235 3192 w -(applica\255) 4662 3192 w -(tions;) 720 3312 w -(the) 1043 3312 w -(details) 1249 3312 w -(are) 1620 3312 w -(hidden.) 1823 3312 w -(This) 2272 3312 w -(may) 2527 3312 w -(sound) 2777 3312 w -(object-oriented,) 3126 3312 w -(but) 3969 3312 w -(there) 4181 3312 w -(are) 4483 3312 w -(distinc\255) 4685 3312 w -(tions.) 720 3432 w -(First,) 1064 3432 w -(9P) 1348 3432 w -(defines) 1506 3432 w -(a) 1900 3432 w -(fixed) 1995 3432 w -(set) 2281 3432 w -(of) 2465 3432 w -10 /LucidaSansUnicode20 f -(\030) 2603 3432 w -10 /LucidaSansUnicode00 f -(methods) 2635 3432 w -10 /LucidaSansUnicode20 f -(\031) 3058 3432 w -10 /LucidaSansUnicode00 f -(;) 3090 3432 w -(it) 3162 3432 w -(is) 3268 3432 w -(not) 3388 3432 w -(an) 3588 3432 w -(extensible) 3746 3432 w -(protocol.) 4287 3432 w -(More) 4796 3432 w -(important,) 720 3552 w -(files) 1296 3552 w -(are) 1563 3552 w -(well-defined) 1780 3552 w -(and) 2460 3552 w -(well-understood) 2705 3552 w -(and) 3576 3552 w -(come) 3821 3552 w -(prepackaged) 4147 3552 w -(with) 4835 3552 w -(familiar) 720 3672 w -(methods) 1127 3672 w -(of) 1589 3672 w -(access,) 1726 3672 w -(protection,) 2112 3672 w -(naming,) 2681 3672 w -(and) 3115 3672 w -(networking.) 3334 3672 w -(Objects,) 3982 3672 w -(despite) 4420 3672 w -(their) 4815 3672 w -(generality,) 720 3792 w -(do) 1266 3792 w -(not) 1425 3792 w -(come) 1620 3792 w -(with) 1916 3792 w -(these) 2156 3792 w -(attributes) 2453 3792 w -(defined.) 2956 3792 w -(By) 3421 3792 w -(reducing) 3566 3792 w -10 /LucidaSansUnicode20 f -(\030) 4027 3792 w -10 /LucidaSansUnicode00 f -(object) 4059 3792 w -10 /LucidaSansUnicode20 f -(\031) 4357 3792 w -10 /LucidaSansUnicode00 f -(to) 4424 3792 w -10 /LucidaSansUnicode20 f -(\030) 4557 3792 w -10 /LucidaSansUnicode00 f -(file) 4589 3792 w -10 /LucidaSansUnicode20 f -(\031) 4740 3792 w -10 /LucidaSansUnicode00 f -(,) 4772 3792 w -(Plan) 4839 3792 w -(9 gets some technology for free.) 720 3912 w -(Nonetheless,) 970 4068 w -(it) 1635 4068 w -(is) 1739 4068 w -(possible) 1857 4068 w -(to) 2299 4068 w -(push) 2436 4068 w -(the) 2713 4068 w -(idea) 2907 4068 w -(of) 3149 4068 w -(file-based) 3286 4068 w -(computing) 3822 4068 w -(too) 4381 4068 w -(far.) 4579 4068 w -(Con\255) 4815 4068 w -(verting) 720 4188 w -(every) 1096 4188 w -(resource) 1390 4188 w -(in) 1846 4188 w -(the) 1974 4188 w -(system) 2166 4188 w -(into) 2543 4188 w -(a) 2769 4188 w -(file) 2861 4188 w -(system) 3049 4188 w -(is) 3425 4188 w -(a) 3541 4188 w -(kind) 3632 4188 w -(of) 3880 4188 w -(metaphor,) 4014 4188 w -(and) 4550 4188 w -(meta\255) 4766 4188 w -(phors) 720 4308 w -(can) 1036 4308 w -(be) 1242 4308 w -(abused.) 1399 4308 w -(A) 1851 4308 w -(good) 1958 4308 w -(example) 2243 4308 w -(of) 2694 4308 w -(restraint) 2830 4308 w -(is) 3277 4308 w -10 /LucidaTypewriter f -(/proc) 3395 4308 w -10 /LucidaSansUnicode00 f -(,) 3755 4308 w -(which) 3825 4308 w -(is) 4144 4308 w -(only) 4262 4308 w -(a) 4504 4308 w -(view) 4597 4308 w -(of) 4849 4308 w -(a) 4985 4308 w -(process,) 720 4428 w -(not) 1172 4428 w -(a) 1378 4428 w -(representation.) 1479 4428 w -(To) 2296 4428 w -(run) 2465 4428 w -(processes,) 2675 4428 w -(the) 3233 4428 w -(usual) 3433 4428 w -10 /LucidaTypewriter f -(fork) 3737 4428 w -10 /LucidaSansUnicode00 f -(and) 4070 4428 w -10 /LucidaTypewriter f -(exec) 4295 4428 w -10 /LucidaSansUnicode00 f -(calls) 4628 4428 w -(are) 4888 4428 w -(still necessary, rather than doing something like) 720 4548 w +(Plan) 970 2412 w +(9) 1213 2412 w +(has) 1318 2412 w +(a) 1528 2412 w +(relatively) 1625 2412 w +(conventional) 2103 2412 w +(kernel;) 2762 2412 w +(the) 3138 2412 w +(system) 3336 2412 w +10 /LucidaSansUnicode20 f +(\031) 3676 2412 w +10 /LucidaSansUnicode00 f +(s) 3708 2412 w +(novelty) 3802 2412 w +(lies) 4194 2412 w +(in) 4402 2412 w +(the) 4536 2412 w +(pieces) 4734 2412 w +(outside) 720 2532 w +(the) 1123 2532 w +(kernel) 1322 2532 w +(and) 1668 2532 w +(the) 1892 2532 w +(way) 2090 2532 w +(they) 2317 2532 w +(interact.) 2567 2532 w +(When) 3042 2532 w +(building) 3351 2532 w +(Plan) 3793 2532 w +(9,) 4037 2532 w +(we) 4175 2532 w +(considered) 4351 2532 w +(all) 4927 2532 w +(aspects) 720 2652 w +(of) 1134 2652 w +(the) 1282 2652 w +(system) 1487 2652 w +(together,) 1877 2652 w +(solving) 2371 2652 w +(problems) 2767 2652 w +(where) 3275 2652 w +(the) 3618 2652 w +(solution) 3824 2652 w +(fit) 4267 2652 w +(best.) 4421 2652 w +(Some\255) 4743 2652 w +(times) 720 2772 w +(the) 1022 2772 w +(solution) 1213 2772 w +(spanned) 1641 2772 w +(many) 2089 2772 w +(components.) 2387 2772 w +(An) 3083 2772 w +(example) 3249 2772 w +(is) 3697 2772 w +(the) 3812 2772 w +(problem) 4002 2772 w +(of) 4443 2772 w +(heteroge\255) 4576 2772 w +(neous) 720 2892 w +(instruction) 1067 2892 w +(architectures,) 1645 2892 w +(which) 2362 2892 w +(is) 2699 2892 w +(addressed) 2835 2892 w +(by) 3390 2892 w +(the) 3561 2892 w +(compilers) 3772 2892 w +(\(different) 4302 2892 w +(code) 4809 2892 w +(characters,) 720 3012 w +(portable) 1301 3012 w +(object) 1755 3012 w +(code\),) 2102 3012 w +(the) 2447 3012 w +(environment) 2651 3012 w +(\() 3311 3012 w +10 /LucidaTypewriter f +($cputype) 3344 3012 w +10 /LucidaSansUnicode00 f +(and) 3968 3012 w +10 /LucidaTypewriter f +($objtype) 4196 3012 w +10 /LucidaSansUnicode00 f +(\),) 4772 3012 w +(the) 4885 3012 w +(name) 720 3132 w +(space) 1029 3132 w +(\(binding) 1348 3132 w +(in) 1794 3132 w +10 /LucidaTypewriter f +(/bin) 1928 3132 w +10 /LucidaSansUnicode00 f +(\),) 2216 3132 w +(and) 2324 3132 w +(other) 2547 3132 w +(components.) 2847 3132 w +(Sometimes) 3551 3132 w +(many) 4124 3132 w +(issues) 4430 3132 w +(could) 4774 3132 w +(be) 720 3252 w +(solved) 879 3252 w +(in) 1231 3252 w +(a) 1362 3252 w +(single) 1457 3252 w +(place.) 1786 3252 w +(The) 2144 3252 w +(best) 2365 3252 w +(example) 2612 3252 w +(is) 3065 3252 w +(9P,) 3185 3252 w +(which) 3375 3252 w +(centralizes) 3696 3252 w +(naming,) 4259 3252 w +(access,) 4693 3252 w +(and) 720 3372 w +(authentication.) 942 3372 w +(9P) 1743 3372 w +(is) 1903 3372 w +(really) 2025 3372 w +(the) 2329 3372 w +(core) 2526 3372 w +(of) 2777 3372 w +(the) 2917 3372 w +(system;) 3114 3372 w +(it) 3528 3372 w +(is) 3636 3372 w +(fair) 3758 3372 w +(to) 3962 3372 w +(say) 4102 3372 w +(that) 4302 3372 w +(the) 4535 3372 w +(Plan) 4733 3372 w +(9) 4977 3372 w +(kernel is primarily a 9P multiplexer.) 720 3492 w +(Plan) 970 3648 w +(9) 1212 3648 w +10 /LucidaSansUnicode20 f +(\031) 1275 3648 w +10 /LucidaSansUnicode00 f +(s) 1307 3648 w +(focus) 1399 3648 w +(on) 1702 3648 w +(files) 1866 3648 w +(and) 2109 3648 w +(naming) 2330 3648 w +(is) 2735 3648 w +(central) 2857 3648 w +(to) 3230 3648 w +(its) 3370 3648 w +(expressiveness.) 3529 3648 w +(Particularly) 4371 3648 w +(in) 4949 3648 w +(distributed) 720 3768 w +(computing,) 1288 3768 w +(the) 1877 3768 w +(way) 2068 3768 w +(things) 2288 3768 w +(are) 2627 3768 w +(named) 2815 3768 w +(has) 3180 3768 w +(profound) 3384 3768 w +(influence) 3870 3768 w +(on) 4350 3768 w +(the) 4509 3768 w +(system) 4700 3768 w +([Nee89].) 720 3888 w +(The) 1199 3888 w +(combination) 1417 3888 w +(of) 2057 3888 w +(local) 2192 3888 w +(name) 2454 3888 w +(spaces) 2757 3888 w +(and) 3122 3888 w +(global) 3340 3888 w +(conventions) 3677 3888 w +(to) 4299 3888 w +(interconnect) 4435 3888 w +(networked) 720 4008 w +(resources) 1273 4008 w +(avoids) 1785 4008 w +(the) 2138 4008 w +(difficulty) 2335 4008 w +(of) 2803 4008 w +(maintaining) 2943 4008 w +(a) 3560 4008 w +(global) 3657 4008 w +(uniform) 3998 4008 w +(name) 4425 4008 w +(space,) 4732 4008 w +(while) 720 4128 w +(naming) 1011 4128 w +(everything) 1412 4128 w +(like) 1959 4128 w +(a) 2169 4128 w +(file) 2262 4128 w +(makes) 2451 4128 w +(the) 2803 4128 w +(system) 2997 4128 w +(easy) 3376 4128 w +(to) 3629 4128 w +(understand,) 3766 4128 w +(even) 4389 4128 w +(for) 4654 4128 w +(nov\255) 4832 4128 w +(ices.) 720 4248 w +(Consider) 1005 4248 w +(the) 1471 4248 w +(dump) 1659 4248 w +(file) 1973 4248 w +(system,) 2157 4248 w +(which) 2562 4248 w +(is) 2876 4248 w +(trivial) 2989 4248 w +(to) 3294 4248 w +(use) 3425 4248 w +(for) 3627 4248 w +(anyone) 3799 4248 w +(familiar) 4180 4248 w +(with) 4581 4248 w +(hier\255) 4819 4248 w +(archical) 720 4368 w +(file) 1138 4368 w +(systems.) 1334 4368 w +(At) 1834 4368 w +(a) 1985 4368 w +(deeper) 2085 4368 w +(level,) 2465 4368 w +(building) 2764 4368 w +(all) 3209 4368 w +(the) 3368 4368 w +(resources) 3569 4368 w +(above) 4085 4368 w +(a) 4418 4368 w +(single) 4519 4368 w +(uni\255) 4854 4368 w +(form) 720 4488 w +(interface) 998 4488 w +(makes) 1468 4488 w +(interoperability) 1827 4488 w +(easy.) 2613 4488 w +(Once) 2937 4488 w +(a) 3230 4488 w +(resource) 3331 4488 w +(exports) 3795 4488 w +(a) 4210 4488 w +(9P) 4310 4488 w +(interface,) 4473 4488 w +(it) 4974 4488 w +(can) 720 4608 w +(combine) 931 4608 w +(transparently) 1390 4608 w +(with) 2075 4608 w +(any) 2324 4608 w +(other) 2537 4608 w +(part) 2838 4608 w +(of) 3078 4608 w +(the) 3220 4608 w +(system) 3419 4608 w +(to) 3803 4608 w +(build) 3945 4608 w +(unusual) 4235 4608 w +(applica\255) 4662 4608 w +(tions;) 720 4728 w +(the) 1043 4728 w +(details) 1249 4728 w +(are) 1620 4728 w +(hidden.) 1823 4728 w +(This) 2272 4728 w +(may) 2527 4728 w +(sound) 2777 4728 w +(object-oriented,) 3126 4728 w +(but) 3969 4728 w +(there) 4181 4728 w +(are) 4483 4728 w +(distinc\255) 4685 4728 w +(tions.) 720 4848 w +(First,) 1064 4848 w +(9P) 1348 4848 w +(defines) 1506 4848 w +(a) 1900 4848 w +(fixed) 1995 4848 w +(set) 2281 4848 w +(of) 2465 4848 w +10 /LucidaSansUnicode20 f +(\030) 2603 4848 w +10 /LucidaSansUnicode00 f +(methods) 2635 4848 w +10 /LucidaSansUnicode20 f +(\031) 3058 4848 w +10 /LucidaSansUnicode00 f +(;) 3090 4848 w +(it) 3162 4848 w +(is) 3268 4848 w +(not) 3388 4848 w +(an) 3588 4848 w +(extensible) 3746 4848 w +(protocol.) 4287 4848 w +(More) 4796 4848 w +(important,) 720 4968 w +(files) 1296 4968 w +(are) 1563 4968 w +(well-defined) 1780 4968 w +(and) 2460 4968 w +(well-understood) 2705 4968 w +(and) 3576 4968 w +(come) 3821 4968 w +(prepackaged) 4147 4968 w +(with) 4835 4968 w +(familiar) 720 5088 w +(methods) 1127 5088 w +(of) 1589 5088 w +(access,) 1726 5088 w +(protection,) 2112 5088 w +(naming,) 2681 5088 w +(and) 3115 5088 w +(networking.) 3334 5088 w +(Objects,) 3982 5088 w +(despite) 4420 5088 w +(their) 4815 5088 w +(generality,) 720 5208 w +(do) 1266 5208 w +(not) 1425 5208 w +(come) 1620 5208 w +(with) 1916 5208 w +(these) 2156 5208 w +(attributes) 2453 5208 w +(defined.) 2956 5208 w +(By) 3421 5208 w +(reducing) 3566 5208 w +10 /LucidaSansUnicode20 f +(\030) 4027 5208 w +10 /LucidaSansUnicode00 f +(object) 4059 5208 w +10 /LucidaSansUnicode20 f +(\031) 4357 5208 w +10 /LucidaSansUnicode00 f +(to) 4424 5208 w +10 /LucidaSansUnicode20 f +(\030) 4557 5208 w +10 /LucidaSansUnicode00 f +(file) 4589 5208 w +10 /LucidaSansUnicode20 f +(\031) 4740 5208 w +10 /LucidaSansUnicode00 f +(,) 4772 5208 w +(Plan) 4839 5208 w +(9 gets some technology for free.) 720 5328 w +(Nonetheless,) 970 5484 w +(it) 1635 5484 w +(is) 1739 5484 w +(possible) 1857 5484 w +(to) 2299 5484 w +(push) 2436 5484 w +(the) 2713 5484 w +(idea) 2907 5484 w +(of) 3149 5484 w +(file-based) 3286 5484 w +(computing) 3822 5484 w +(too) 4381 5484 w +(far.) 4579 5484 w +(Con\255) 4815 5484 w +(verting) 720 5604 w +(every) 1096 5604 w +(resource) 1390 5604 w +(in) 1846 5604 w +(the) 1974 5604 w +(system) 2166 5604 w +(into) 2543 5604 w +(a) 2769 5604 w +(file) 2861 5604 w +(system) 3049 5604 w +(is) 3425 5604 w +(a) 3541 5604 w +(kind) 3632 5604 w +(of) 3880 5604 w +(metaphor,) 4014 5604 w +(and) 4550 5604 w +(meta\255) 4766 5604 w +(phors) 720 5724 w +(can) 1036 5724 w +(be) 1242 5724 w +(abused.) 1399 5724 w +(A) 1851 5724 w +(good) 1958 5724 w +(example) 2243 5724 w +(of) 2694 5724 w +(restraint) 2830 5724 w +(is) 3277 5724 w +10 /LucidaTypewriter f +(/proc) 3395 5724 w +10 /LucidaSansUnicode00 f +(,) 3755 5724 w +(which) 3825 5724 w +(is) 4144 5724 w +(only) 4262 5724 w +(a) 4504 5724 w +(view) 4597 5724 w +(of) 4849 5724 w +(a) 4985 5724 w +(process,) 720 5844 w +(not) 1172 5844 w +(a) 1378 5844 w +(representation.) 1479 5844 w +(To) 2296 5844 w +(run) 2465 5844 w +(processes,) 2675 5844 w +(the) 3233 5844 w +(usual) 3433 5844 w +10 /LucidaTypewriter f +(fork) 3737 5844 w +10 /LucidaSansUnicode00 f +(and) 4070 5844 w +10 /LucidaTypewriter f +(exec) 4295 5844 w +10 /LucidaSansUnicode00 f +(calls) 4628 5844 w +(are) 4888 5844 w +(still necessary, rather than doing something like) 720 5964 w 9 /LucidaTypewriter f -(cp) 1008 4718 w -(/bin/date) 1203 4718 w -(/proc/clone/mem) 1853 4718 w -10 /LucidaSansUnicode00 f -(The) 720 4898 w -(problem) 940 4898 w -(with) 1385 4898 w -(such) 1629 4898 w -(examples) 1894 4898 w -(is) 2397 4898 w -(that) 2516 4898 w -(they) 2746 4898 w -(require) 2992 4898 w -(the) 3379 4898 w -(server) 3574 4898 w -(to) 3911 4898 w -(do) 4049 4898 w -(things) 4213 4898 w -(not) 4556 4898 w -(under) 4756 4898 w -(its) 720 5018 w -(control.) 884 5018 w -(The) 1337 5018 w -(ability) 1565 5018 w -(to) 1906 5018 w -(assign) 2051 5018 w -(meaning) 2408 5018 w -(to) 2874 5018 w -(a) 3019 5018 w -(command) 3121 5018 w -(like) 3646 5018 w -(this) 3865 5018 w -(does) 4090 5018 w -(not) 4367 5018 w -(imply) 4573 5018 w -(the) 4885 5018 w -(meaning will fall naturally out of) 720 5138 w -(the) 2326 5138 w -(structure) 2514 5138 w -(of) 2985 5138 w -(answering) 3116 5138 w -(the) 3644 5138 w -(9P) 3832 5138 w -(requests) 3983 5138 w -(it) 4433 5138 w -(generates.) 4532 5138 w -(As) 720 5258 w -(a) 886 5258 w -(related) 987 5258 w -(example,) 1370 5258 w -(Plan) 1861 5258 w -(9) 2108 5258 w -(does) 2217 5258 w -(not) 2494 5258 w -(put) 2700 5258 w -(machine) 2907 5258 w -10 /LucidaSansUnicode20 f -(\031) 3315 5258 w -10 /LucidaSansUnicode00 f -(s) 3347 5258 w -(network) 3443 5258 w -(names) 3880 5258 w -(in) 4242 5258 w -(the) 4378 5258 w -(file) 4578 5258 w -(name) 4774 5258 w -(space.) 720 5378 w -(The) 1096 5378 w -(network) 1313 5378 w -(interfaces) 1741 5378 w -(provide) 2252 5378 w -(a) 2653 5378 w -(very) 2744 5378 w -(different) 2982 5378 w -(model) 3437 5378 w -(of) 3776 5378 w -(naming,) 3911 5378 w -(because) 4343 5378 w -(using) 4774 5378 w -10 /LucidaTypewriter f -(open) 720 5498 w -10 /LucidaSansUnicode00 f -(,) 1008 5498 w -10 /LucidaTypewriter f -(create) 1087 5498 w -10 /LucidaSansUnicode00 f -(,) 1519 5498 w -10 /LucidaTypewriter f -(read) 1598 5498 w -10 /LucidaSansUnicode00 f -(,) 1886 5498 w -(and) 1965 5498 w -10 /LucidaTypewriter f -(write) 2192 5498 w -10 /LucidaSansUnicode00 f -(on) 2599 5498 w -(such) 2769 5498 w -(files) 3042 5498 w -(would) 3291 5498 w -(not) 3629 5498 w -(offer) 3835 5498 w -(a) 4113 5498 w -(suitable) 4214 5498 w -(place) 4642 5498 w -(to) 4942 5498 w -(encode all the details of call setup for an arbitrary network.) 720 5618 w -(This) 3667 5618 w -(does) 3905 5618 w -(not) 4169 5618 w -(mean) 4362 5618 w -(that) 4661 5618 w -(the) 4885 5618 w -(network) 720 5738 w -(interface) 1147 5738 w -(cannot) 1606 5738 w -(be) 1969 5738 w -(file-like,) 2123 5738 w -(just) 2571 5738 w -(that) 2786 5738 w -(it) 3012 5738 w -(must) 3113 5738 w -(have) 3390 5738 w -(a) 3649 5738 w -(more) 3738 5738 w -(tightly) 4023 5738 w -(defined) 4365 5738 w -(struc\255) 4765 5738 w -(ture.) 720 5858 w -(What) 970 6014 w -(would) 1243 6014 w -(we) 1568 6014 w -(do) 1735 6014 w -(differently) 1893 6014 w -(next) 2426 6014 w -(time?) 2676 6014 w -(Some) 2999 6014 w -(elements) 3297 6014 w -(of) 3771 6014 w -(the) 3903 6014 w -(implementation) 4092 6014 w -(are) 4888 6014 w -(unsatisfactory.) 720 6134 w -(Using) 1501 6134 w -(streams) 1810 6134 w -(to) 2229 6134 w -(implement) 2362 6134 w -(network) 2915 6134 w -(interfaces) 3342 6134 w -(in) 3852 6134 w -(the) 3978 6134 w -(kernel) 4168 6134 w -(allows) 4505 6134 w -(pro\255) 4842 6134 w -(tocols) 720 6254 w -(to) 1052 6254 w -(be) 1192 6254 w -(connected) 1353 6254 w -(together) 1894 6254 w -(dynamically,) 2348 6254 w -(such) 2992 6254 w -(as) 3260 6254 w -(to) 3409 6254 w -(attach) 3550 6254 w -(the) 3890 6254 w -(same) 4088 6254 w -(TTY) 4386 6254 w -(driver) 4617 6254 w -(to) 4942 6254 w -(TCP,) 720 6374 w -(URP,) 983 6374 w -(and) 1246 6374 w -(IL) 1470 6374 w -(connections,) 1596 6374 w -(but) 2255 6374 w -(Plan) 2461 6374 w -(9) 2706 6374 w -(makes) 2812 6374 w -(no) 3168 6374 w -(use) 3334 6374 w -(of) 3546 6374 w -(this) 3687 6374 w -(configurability.) 3909 6374 w -(\(It) 4715 6374 w -(was) 4857 6374 w -(exploited,) 720 6494 w -(however,) 1265 6494 w -(in) 1760 6494 w -(the) 1909 6494 w -(research) 2123 6494 w -(UNIX) 2595 6494 w -(system) 2889 6494 w -(for) 3288 6494 w -(which) 3486 6494 w -(streams) 3826 6494 w -(were) 4269 6494 w -(invented.\)) 4558 6494 w -(Replacing streams by static I/O queues would simplify the code and make it faster.) 720 6614 w -(Although) 970 6770 w -(the) 1453 6770 w -(main) 1647 6770 w -(Plan) 1925 6770 w -(9) 2165 6770 w -(kernel) 2267 6770 w -(is) 2609 6770 w -(portable) 2729 6770 w -(across) 3174 6770 w -(many) 3524 6770 w -(machines,) 3826 6770 w -(the) 4357 6770 w -(file) 4552 6770 w -(server) 4743 6770 w -(is) 720 6890 w -(implemented) 834 6890 w -(separately.) 1505 6890 w -(This) 2098 6890 w -(has) 2337 6890 w -(caused) 2539 6890 w -(several) 2910 6890 w -(problems:) 3283 6890 w -(drivers) 3805 6890 w -(that) 4171 6890 w -(must) 4395 6890 w -(be) 4671 6890 w -(writ\255) 4823 6890 w -(ten) 720 7010 w -(twice,) 910 7010 w -(bugs) 1227 7010 w -(that) 1501 7010 w -(must) 1728 7010 w -(be) 2007 7010 w -(fixed) 2162 7010 w -(twice,) 2444 7010 w -(and) 2762 7010 w -(weaker) 2978 7010 w -(portability) 3357 7010 w -(of) 3889 7010 w -(the) 4023 7010 w -(file) 4214 7010 w -(system) 4401 7010 w -(code.) 4777 7010 w -(The) 720 7130 w -(solution) 935 7130 w -(is) 1360 7130 w -(easy:) 1473 7130 w -(the) 1752 7130 w -(file) 1940 7130 w -(server) 2124 7130 w -(kernel) 2454 7130 w -(should) 2789 7130 w -(be) 3150 7130 w -(maintained) 3302 7130 w -(as) 3876 7130 w -(a) 4015 7130 w -(variant) 4103 7130 w -(of) 4467 7130 w -(the) 4598 7130 w -(regu\255) 4786 7130 w -(lar) 720 7250 w -(operating) 885 7250 w -(system,) 1391 7250 w -(with) 1803 7250 w -(no) 2048 7250 w -(user) 2212 7250 w -(processes) 2463 7250 w -(and) 2985 7250 w -(special) 3206 7250 w -(compiled-in) 3581 7250 w -(kernel) 4216 7250 w -(processes) 4559 7250 w +(cp) 920 6134 w +(/bin/date) 1115 6134 w +(/proc/clone/mem) 1765 6134 w +10 /LucidaSansUnicode00 f +(The) 720 6314 w +(problem) 940 6314 w +(with) 1385 6314 w +(such) 1629 6314 w +(examples) 1894 6314 w +(is) 2397 6314 w +(that) 2516 6314 w +(they) 2746 6314 w +(require) 2992 6314 w +(the) 3379 6314 w +(server) 3574 6314 w +(to) 3911 6314 w +(do) 4049 6314 w +(things) 4213 6314 w +(not) 4556 6314 w +(under) 4756 6314 w +(its) 720 6434 w +(control.) 884 6434 w +(The) 1337 6434 w +(ability) 1565 6434 w +(to) 1906 6434 w +(assign) 2051 6434 w +(meaning) 2408 6434 w +(to) 2874 6434 w +(a) 3019 6434 w +(command) 3121 6434 w +(like) 3646 6434 w +(this) 3865 6434 w +(does) 4090 6434 w +(not) 4367 6434 w +(imply) 4573 6434 w +(the) 4885 6434 w +(meaning will fall naturally out of) 720 6554 w +(the) 2326 6554 w +(structure) 2514 6554 w +(of) 2985 6554 w +(answering) 3116 6554 w +(the) 3644 6554 w +(9P) 3832 6554 w +(requests) 3983 6554 w +(it) 4433 6554 w +(generates.) 4532 6554 w +(As) 720 6674 w +(a) 886 6674 w +(related) 987 6674 w +(example,) 1370 6674 w +(Plan) 1861 6674 w +(9) 2108 6674 w +(does) 2217 6674 w +(not) 2494 6674 w +(put) 2700 6674 w +(machine) 2907 6674 w +10 /LucidaSansUnicode20 f +(\031) 3315 6674 w +10 /LucidaSansUnicode00 f +(s) 3347 6674 w +(network) 3443 6674 w +(names) 3880 6674 w +(in) 4242 6674 w +(the) 4378 6674 w +(file) 4578 6674 w +(name) 4774 6674 w +(space.) 720 6794 w +(The) 1096 6794 w +(network) 1313 6794 w +(interfaces) 1741 6794 w +(provide) 2252 6794 w +(a) 2653 6794 w +(very) 2744 6794 w +(different) 2982 6794 w +(model) 3437 6794 w +(of) 3776 6794 w +(naming,) 3911 6794 w +(because) 4343 6794 w +(using) 4774 6794 w +10 /LucidaTypewriter f +(open) 720 6914 w +10 /LucidaSansUnicode00 f +(,) 1008 6914 w +10 /LucidaTypewriter f +(create) 1087 6914 w +10 /LucidaSansUnicode00 f +(,) 1519 6914 w +10 /LucidaTypewriter f +(read) 1598 6914 w +10 /LucidaSansUnicode00 f +(,) 1886 6914 w +(and) 1965 6914 w +10 /LucidaTypewriter f +(write) 2192 6914 w +10 /LucidaSansUnicode00 f +(on) 2599 6914 w +(such) 2769 6914 w +(files) 3042 6914 w +(would) 3291 6914 w +(not) 3629 6914 w +(offer) 3835 6914 w +(a) 4113 6914 w +(suitable) 4214 6914 w +(place) 4642 6914 w +(to) 4942 6914 w +(encode all the details of call setup for an arbitrary network.) 720 7034 w +(This) 3667 7034 w +(does) 3905 7034 w +(not) 4169 7034 w +(mean) 4362 7034 w +(that) 4661 7034 w +(the) 4885 7034 w +(network) 720 7154 w +(interface) 1147 7154 w +(cannot) 1606 7154 w +(be) 1969 7154 w +(file-like,) 2123 7154 w +(just) 2571 7154 w +(that) 2786 7154 w +(it) 3012 7154 w +(must) 3113 7154 w +(have) 3390 7154 w +(a) 3649 7154 w +(more) 3738 7154 w +(tightly) 4023 7154 w +(defined) 4365 7154 w +(struc\255) 4765 7154 w +(ture.) 720 7274 w cleartomark showpage saveobj restore @@ -16626,1285 +16491,1426 @@ 21 pagesetup 10 /LucidaSansUnicode00 f (\255 21 \255) 2752 480 w -(to) 720 840 w -(implement) 852 840 w -(file) 1404 840 w -(service.) 1589 840 w -(Another) 2023 840 w -(improvement) 2444 840 w -(to) 3120 840 w -(the) 3251 840 w -(file) 3439 840 w -(system) 3623 840 w -(would) 3996 840 w -(be) 4321 840 w -(a) 4473 840 w -(change) 4561 840 w -(of) 4942 840 w -(internal) 720 960 w -(structure.) 1136 960 w -(The) 1683 960 w -(WORM) 1909 960 w -(jukebox) 2267 960 w -(is) 2703 960 w -(the) 2828 960 w -(least) 3028 960 w -(reliable) 3301 960 w -(piece) 3704 960 w -(of) 4005 960 w -(the) 4149 960 w -(hardware,) 4350 960 w -(but) 4878 960 w -(because) 720 1080 w -(it) 1159 1080 w -(holds) 1270 1080 w -(the) 1581 1080 w -(metadata) 1781 1080 w -(of) 2277 1080 w -(the) 2420 1080 w -(file) 2620 1080 w -(system,) 2815 1080 w -(it) 3231 1080 w -(must) 3341 1080 w -(be) 3628 1080 w -(present) 3791 1080 w -(in) 4201 1080 w -(order) 4336 1080 w -(to) 4642 1080 w -(serve) 4784 1080 w -(files.) 720 1200 w -(The) 1024 1200 w -(system) 1243 1200 w -(could) 1621 1200 w -(be) 1925 1200 w -(restructured) 2082 1200 w -(so) 2719 1200 w -(the) 2870 1200 w -(WORM) 3064 1200 w -(is) 3416 1200 w -(a) 3535 1200 w -(backup) 3629 1200 w -(device) 4020 1200 w -(only,) 4366 1200 w -(with) 4641 1200 w -(the) 4885 1200 w -(file) 720 1320 w -(system) 922 1320 w -(proper) 1313 1320 w -(residing) 1689 1320 w -(on) 2133 1320 w -(magnetic) 2307 1320 w -(disks.) 2803 1320 w -(This) 3170 1320 w -(would) 3426 1320 w -(require) 3768 1320 w -(no) 4166 1320 w -(change) 4339 1320 w -(to) 4737 1320 w -(the) 4885 1320 w -(external interface.) 720 1440 w +(What) 970 840 w +(would) 1243 840 w +(we) 1568 840 w +(do) 1735 840 w +(differently) 1893 840 w +(next) 2426 840 w +(time?) 2676 840 w +(Some) 2999 840 w +(elements) 3297 840 w +(of) 3771 840 w +(the) 3903 840 w +(implementation) 4092 840 w +(are) 4888 840 w +(unsatisfactory.) 720 960 w +(Using) 1501 960 w +(streams) 1810 960 w +(to) 2229 960 w +(implement) 2362 960 w +(network) 2915 960 w +(interfaces) 3342 960 w +(in) 3852 960 w +(the) 3978 960 w +(kernel) 4168 960 w +(allows) 4505 960 w +(pro\255) 4842 960 w +(tocols) 720 1080 w +(to) 1052 1080 w +(be) 1192 1080 w +(connected) 1353 1080 w +(together) 1894 1080 w +(dynamically,) 2348 1080 w +(such) 2992 1080 w +(as) 3260 1080 w +(to) 3409 1080 w +(attach) 3550 1080 w +(the) 3890 1080 w +(same) 4088 1080 w +(TTY) 4386 1080 w +(driver) 4617 1080 w +(to) 4942 1080 w +(TCP,) 720 1200 w +(URP,) 983 1200 w +(and) 1246 1200 w +(IL) 1470 1200 w +(connections,) 1596 1200 w +(but) 2255 1200 w +(Plan) 2461 1200 w +(9) 2706 1200 w +(makes) 2812 1200 w +(no) 3168 1200 w +(use) 3334 1200 w +(of) 3546 1200 w +(this) 3687 1200 w +(configurability.) 3909 1200 w +(\(It) 4715 1200 w +(was) 4857 1200 w +(exploited,) 720 1320 w +(however,) 1265 1320 w +(in) 1760 1320 w +(the) 1909 1320 w +(research) 2123 1320 w +(UNIX) 2595 1320 w +(system) 2889 1320 w +(for) 3288 1320 w +(which) 3486 1320 w +(streams) 3826 1320 w +(were) 4269 1320 w +(invented.\)) 4558 1320 w +(Replacing streams by static I/O queues would simplify the code and make it faster.) 720 1440 w (Although) 970 1596 w -(Plan) 1461 1596 w -(9) 1709 1596 w -(has) 1819 1596 w -(per-process) 2034 1596 w -(name) 2673 1596 w -(spaces,) 2986 1596 w -(it) 3392 1596 w -(has) 3505 1596 w -(no) 3721 1596 w -(mechanism) 3892 1596 w -(to) 4492 1596 w -(give) 4638 1596 w -(the) 4885 1596 w -(description) 720 1716 w -(of) 1304 1716 w -(a) 1443 1716 w -(process) 1539 1716 w -10 /LucidaSansUnicode20 f -(\031) 1913 1716 w -10 /LucidaSansUnicode00 f -(s) 1945 1716 w -(name) 2037 1716 w -(space) 2344 1716 w -(to) 2661 1716 w -(another) 2800 1716 w -(process) 3215 1716 w -(except) 3630 1716 w -(by) 3995 1716 w -(direct) 4151 1716 w -(inheritance.) 4468 1716 w -(The) 720 1836 w -10 /LucidaTypewriter f -(cpu) 960 1836 w -10 /LucidaSansUnicode00 f -(command,) 1235 1836 w -(for) 1804 1836 w -(example,) 2002 1836 w -(cannot) 2506 1836 w -(in) 2893 1836 w -(general) 3043 1836 w -(reproduce) 3463 1836 w -(the) 4016 1836 w -(terminal) 4230 1836 w -10 /LucidaSansUnicode20 f -(\031) 4632 1836 w -10 /LucidaSansUnicode00 f -(s) 4664 1836 w -(name) 4774 1836 w -(space;) 720 1956 w -(it) 1065 1956 w -(can) 1168 1956 w -(only) 1373 1956 w -(re-interpret) 1614 1956 w -(the) 2228 1956 w -(user) 2420 1956 w -10 /LucidaSansUnicode20 f -(\031) 2630 1956 w -10 /LucidaSansUnicode00 f -(s) 2662 1956 w -(login) 2749 1956 w -(profile) 3028 1956 w -(and) 3380 1956 w -(make) 3596 1956 w -(substitutions) 3894 1956 w -(for) 4562 1956 w -(things) 4737 1956 w -(like) 720 2076 w -(the) 928 2076 w -(name) 1119 2076 w -(of) 1422 2076 w -(the) 1557 2076 w -(binary) 1749 2076 w -(directory) 2088 2076 w -(to) 2556 2076 w -(load.) 2691 2076 w -(This) 3000 2076 w -(misses) 3242 2076 w -(any) 3610 2076 w -(local) 3816 2076 w -(modifications) 4078 2076 w -(made) 4773 2076 w -(before) 720 2196 w -(running) 1068 2196 w -10 /LucidaTypewriter f -(cpu) 1482 2196 w -10 /LucidaSansUnicode00 f -(.) 1698 2196 w -(It) 1796 2196 w -(should) 1895 2196 w -(instead) 2256 2196 w -(be) 2642 2196 w -(possible) 2794 2196 w -(to) 3230 2196 w -(capture) 3361 2196 w -(the) 3759 2196 w -(terminal) 3947 2196 w -10 /LucidaSansUnicode20 f -(\031) 4349 2196 w -10 /LucidaSansUnicode00 f -(s) 4381 2196 w -(name) 4465 2196 w -(space) 4764 2196 w -(and transmit its description to a remote process.) 720 2316 w -(Despite) 970 2472 w -(these) 1385 2472 w -(problems,) 1695 2472 w -(Plan) 2232 2472 w -(9) 2481 2472 w -(works) 2592 2472 w -(well.) 2928 2472 w -(It) 3231 2472 w -(has) 3345 2472 w -(matured) 3562 2472 w -(into) 4018 2472 w -(the) 4256 2472 w -(system) 4460 2472 w -(that) 4849 2472 w -(supports) 720 2592 w -(our) 1182 2592 w -(research,) 1379 2592 w -(rather) 1857 2592 w -(than) 2182 2592 w -(being) 2431 2592 w -(the) 2736 2592 w -(subject) 2924 2592 w -(of the research itself.) 3307 2592 w -(Experimental) 4404 2592 w -(new) 720 2712 w -(work) 964 2712 w -(includes) 1250 2712 w -(developing) 1702 2712 w -(interfaces) 2284 2712 w -(to) 2808 2712 w -(faster) 2955 2712 w -(networks,) 3282 2712 w -(file) 3807 2712 w -(caching) 4008 2712 w -(in) 4430 2712 w -(the) 4571 2712 w -(client) 4776 2712 w -(kernel,) 720 2832 w -(encapsulating) 1106 2832 w -(and) 1832 2832 w -(exporting) 2064 2832 w -(name) 2588 2832 w -(spaces,) 2905 2832 w -(and) 3315 2832 w -(the) 3546 2832 w -(ability) 3752 2832 w -(to) 4097 2832 w -(re-establish) 4246 2832 w -(the) 4885 2832 w -(client) 720 2952 w -(state) 1020 2952 w -(after) 1292 2952 w -(a) 1554 2952 w -(server) 1645 2952 w -(crash.) 1978 2952 w -(Attention) 2338 2952 w -(is) 2824 2952 w -(now) 2940 2952 w -(focusing) 3176 2952 w -(on) 3627 2952 w -(using) 3787 2952 w -(the) 4090 2952 w -(system) 4282 2952 w -(to) 4659 2952 w -(build) 4794 2952 w -(distributed applications.) 720 3072 w -(One) 970 3228 w -(reason) 1207 3228 w -(for) 1574 3228 w -(Plan) 1754 3228 w -(9) 1996 3228 w -10 /LucidaSansUnicode20 f -(\031) 2059 3228 w -10 /LucidaSansUnicode00 f -(s) 2091 3228 w -(success) 2183 3228 w -(is) 2597 3228 w -(that) 2718 3228 w -(we) 2951 3228 w -(use) 3126 3228 w -(it) 3337 3228 w -(for) 3445 3228 w -(our) 3626 3228 w -(daily) 3832 3228 w -(work,) 4102 3228 w -(not) 4413 3228 w -(just) 4615 3228 w -(as) 4837 3228 w -(a) 4985 3228 w -(research) 720 3348 w -(tool.) 1173 3348 w -(Active) 1464 3348 w -(use) 1797 3348 w -(forces) 2005 3348 w -(us) 2341 3348 w -(to) 2493 3348 w -(address) 2630 3348 w -(shortcomings) 3049 3348 w -(as) 3749 3348 w -(they) 3894 3348 w -(arise) 4140 3348 w -(and) 4411 3348 w -(to) 4630 3348 w -(adapt) 4767 3348 w -(the) 720 3468 w -(system) 911 3468 w -(to) 1287 3468 w -(solve) 1421 3468 w -(our) 1706 3468 w -(problems.) 1907 3468 w -(Through) 2465 3468 w -(this) 2915 3468 w -(process,) 3131 3468 w -(Plan) 3574 3468 w -(9) 3812 3468 w -(has) 3912 3468 w -(become) 4117 3468 w -(a) 4534 3468 w -(comfort\255) 4626 3468 w -(able,) 720 3588 w -(productive) 1011 3588 w -(programming) 1581 3588 w -(environment,) 2298 3588 w -(as) 2996 3588 w -(well) 3157 3588 w -(as) 3403 3588 w -(a) 3564 3588 w -(vehicle) 3674 3588 w -(for) 4064 3588 w -(further) 4258 3588 w -(systems) 4649 3588 w -(research.) 720 3708 w +(the) 1453 1596 w +(main) 1647 1596 w +(Plan) 1925 1596 w +(9) 2165 1596 w +(kernel) 2267 1596 w +(is) 2609 1596 w +(portable) 2729 1596 w +(across) 3174 1596 w +(many) 3524 1596 w +(machines,) 3826 1596 w +(the) 4357 1596 w +(file) 4552 1596 w +(server) 4743 1596 w +(is) 720 1716 w +(implemented) 834 1716 w +(separately.) 1505 1716 w +(This) 2098 1716 w +(has) 2337 1716 w +(caused) 2539 1716 w +(several) 2910 1716 w +(problems:) 3283 1716 w +(drivers) 3805 1716 w +(that) 4171 1716 w +(must) 4395 1716 w +(be) 4671 1716 w +(writ\255) 4823 1716 w +(ten) 720 1836 w +(twice,) 910 1836 w +(bugs) 1227 1836 w +(that) 1501 1836 w +(must) 1728 1836 w +(be) 2007 1836 w +(fixed) 2162 1836 w +(twice,) 2444 1836 w +(and) 2762 1836 w +(weaker) 2978 1836 w +(portability) 3357 1836 w +(of) 3889 1836 w +(the) 4023 1836 w +(file) 4214 1836 w +(system) 4401 1836 w +(code.) 4777 1836 w +(The) 720 1956 w +(solution) 935 1956 w +(is) 1360 1956 w +(easy:) 1473 1956 w +(the) 1752 1956 w +(file) 1940 1956 w +(server) 2124 1956 w +(kernel) 2454 1956 w +(should) 2789 1956 w +(be) 3150 1956 w +(maintained) 3302 1956 w +(as) 3876 1956 w +(a) 4015 1956 w +(variant) 4103 1956 w +(of) 4467 1956 w +(the) 4598 1956 w +(regu\255) 4786 1956 w +(lar) 720 2076 w +(operating) 885 2076 w +(system,) 1391 2076 w +(with) 1803 2076 w +(no) 2048 2076 w +(user) 2212 2076 w +(processes) 2463 2076 w +(and) 2985 2076 w +(special) 3206 2076 w +(compiled-in) 3581 2076 w +(kernel) 4216 2076 w +(processes) 4559 2076 w +(to) 720 2196 w +(implement) 852 2196 w +(file) 1404 2196 w +(service.) 1589 2196 w +(Another) 2023 2196 w +(improvement) 2444 2196 w +(to) 3120 2196 w +(the) 3251 2196 w +(file) 3439 2196 w +(system) 3623 2196 w +(would) 3996 2196 w +(be) 4321 2196 w +(a) 4473 2196 w +(change) 4561 2196 w +(of) 4942 2196 w +(internal) 720 2316 w +(structure.) 1136 2316 w +(The) 1683 2316 w +(WORM) 1909 2316 w +(jukebox) 2267 2316 w +(is) 2703 2316 w +(the) 2828 2316 w +(least) 3028 2316 w +(reliable) 3301 2316 w +(piece) 3704 2316 w +(of) 4005 2316 w +(the) 4149 2316 w +(hardware,) 4350 2316 w +(but) 4878 2316 w +(because) 720 2436 w +(it) 1159 2436 w +(holds) 1270 2436 w +(the) 1581 2436 w +(metadata) 1781 2436 w +(of) 2277 2436 w +(the) 2420 2436 w +(file) 2620 2436 w +(system,) 2815 2436 w +(it) 3231 2436 w +(must) 3341 2436 w +(be) 3628 2436 w +(present) 3791 2436 w +(in) 4201 2436 w +(order) 4336 2436 w +(to) 4642 2436 w +(serve) 4784 2436 w +(files.) 720 2556 w +(The) 1024 2556 w +(system) 1243 2556 w +(could) 1621 2556 w +(be) 1925 2556 w +(restructured) 2082 2556 w +(so) 2719 2556 w +(the) 2870 2556 w +(WORM) 3064 2556 w +(is) 3416 2556 w +(a) 3535 2556 w +(backup) 3629 2556 w +(device) 4020 2556 w +(only,) 4366 2556 w +(with) 4641 2556 w +(the) 4885 2556 w +(file) 720 2676 w +(system) 922 2676 w +(proper) 1313 2676 w +(residing) 1689 2676 w +(on) 2133 2676 w +(magnetic) 2307 2676 w +(disks.) 2803 2676 w +(This) 3170 2676 w +(would) 3426 2676 w +(require) 3768 2676 w +(no) 4166 2676 w +(change) 4339 2676 w +(to) 4737 2676 w +(the) 4885 2676 w +(external interface.) 720 2796 w +(Although) 970 2952 w +(Plan) 1461 2952 w +(9) 1709 2952 w +(has) 1819 2952 w +(per-process) 2034 2952 w +(name) 2673 2952 w +(spaces,) 2986 2952 w +(it) 3392 2952 w +(has) 3505 2952 w +(no) 3721 2952 w +(mechanism) 3892 2952 w +(to) 4492 2952 w +(give) 4638 2952 w +(the) 4885 2952 w +(description) 720 3072 w +(of) 1304 3072 w +(a) 1443 3072 w +(process) 1539 3072 w +10 /LucidaSansUnicode20 f +(\031) 1913 3072 w +10 /LucidaSansUnicode00 f +(s) 1945 3072 w +(name) 2037 3072 w +(space) 2344 3072 w +(to) 2661 3072 w +(another) 2800 3072 w +(process) 3215 3072 w +(except) 3630 3072 w +(by) 3995 3072 w +(direct) 4151 3072 w +(inheritance.) 4468 3072 w +(The) 720 3192 w +10 /LucidaTypewriter f +(cpu) 960 3192 w +10 /LucidaSansUnicode00 f +(command,) 1235 3192 w +(for) 1804 3192 w +(example,) 2002 3192 w +(cannot) 2506 3192 w +(in) 2893 3192 w +(general) 3043 3192 w +(reproduce) 3463 3192 w +(the) 4016 3192 w +(terminal) 4230 3192 w +10 /LucidaSansUnicode20 f +(\031) 4632 3192 w +10 /LucidaSansUnicode00 f +(s) 4664 3192 w +(name) 4774 3192 w +(space;) 720 3312 w +(it) 1065 3312 w +(can) 1168 3312 w +(only) 1373 3312 w +(re-interpret) 1614 3312 w +(the) 2228 3312 w +(user) 2420 3312 w +10 /LucidaSansUnicode20 f +(\031) 2630 3312 w +10 /LucidaSansUnicode00 f +(s) 2662 3312 w +(login) 2749 3312 w +(profile) 3028 3312 w +(and) 3380 3312 w +(make) 3596 3312 w +(substitutions) 3894 3312 w +(for) 4562 3312 w +(things) 4737 3312 w +(like) 720 3432 w +(the) 928 3432 w +(name) 1119 3432 w +(of) 1422 3432 w +(the) 1557 3432 w +(binary) 1749 3432 w +(directory) 2088 3432 w +(to) 2556 3432 w +(load.) 2691 3432 w +(This) 3000 3432 w +(misses) 3242 3432 w +(any) 3610 3432 w +(local) 3816 3432 w +(modifications) 4078 3432 w +(made) 4773 3432 w +(before) 720 3552 w +(running) 1068 3552 w +10 /LucidaTypewriter f +(cpu) 1482 3552 w +10 /LucidaSansUnicode00 f +(.) 1698 3552 w +(It) 1796 3552 w +(should) 1895 3552 w +(instead) 2256 3552 w +(be) 2642 3552 w +(possible) 2794 3552 w +(to) 3230 3552 w +(capture) 3361 3552 w +(the) 3759 3552 w +(terminal) 3947 3552 w +10 /LucidaSansUnicode20 f +(\031) 4349 3552 w +10 /LucidaSansUnicode00 f +(s) 4381 3552 w +(name) 4465 3552 w +(space) 4764 3552 w +(and transmit its description to a remote process.) 720 3672 w +(Despite) 970 3828 w +(these) 1385 3828 w +(problems,) 1695 3828 w +(Plan) 2232 3828 w +(9) 2481 3828 w +(works) 2592 3828 w +(well.) 2928 3828 w +(It) 3231 3828 w +(has) 3345 3828 w +(matured) 3562 3828 w +(into) 4018 3828 w +(the) 4256 3828 w +(system) 4460 3828 w +(that) 4849 3828 w +(supports) 720 3948 w +(our) 1182 3948 w +(research,) 1379 3948 w +(rather) 1857 3948 w +(than) 2182 3948 w +(being) 2431 3948 w +(the) 2736 3948 w +(subject) 2924 3948 w +(of the research itself.) 3307 3948 w +(Experimental) 4404 3948 w +(new) 720 4068 w +(work) 964 4068 w +(includes) 1250 4068 w +(developing) 1702 4068 w +(interfaces) 2284 4068 w +(to) 2808 4068 w +(faster) 2955 4068 w +(networks,) 3282 4068 w +(file) 3807 4068 w +(caching) 4008 4068 w +(in) 4430 4068 w +(the) 4571 4068 w +(client) 4776 4068 w +(kernel,) 720 4188 w +(encapsulating) 1106 4188 w +(and) 1832 4188 w +(exporting) 2064 4188 w +(name) 2588 4188 w +(spaces,) 2905 4188 w +(and) 3315 4188 w +(the) 3546 4188 w +(ability) 3752 4188 w +(to) 4097 4188 w +(re-establish) 4246 4188 w +(the) 4885 4188 w +(client) 720 4308 w +(state) 1020 4308 w +(after) 1292 4308 w +(a) 1554 4308 w +(server) 1645 4308 w +(crash.) 1978 4308 w +(Attention) 2338 4308 w +(is) 2824 4308 w +(now) 2940 4308 w +(focusing) 3176 4308 w +(on) 3627 4308 w +(using) 3787 4308 w +(the) 4090 4308 w +(system) 4282 4308 w +(to) 4659 4308 w +(build) 4794 4308 w +(distributed applications.) 720 4428 w +(One) 970 4584 w +(reason) 1207 4584 w +(for) 1574 4584 w +(Plan) 1754 4584 w +(9) 1996 4584 w +10 /LucidaSansUnicode20 f +(\031) 2059 4584 w +10 /LucidaSansUnicode00 f +(s) 2091 4584 w +(success) 2183 4584 w +(is) 2597 4584 w +(that) 2718 4584 w +(we) 2951 4584 w +(use) 3126 4584 w +(it) 3337 4584 w +(for) 3445 4584 w +(our) 3626 4584 w +(daily) 3832 4584 w +(work,) 4102 4584 w +(not) 4413 4584 w +(just) 4615 4584 w +(as) 4837 4584 w +(a) 4985 4584 w +(research) 720 4704 w +(tool.) 1173 4704 w +(Active) 1464 4704 w +(use) 1797 4704 w +(forces) 2005 4704 w +(us) 2341 4704 w +(to) 2493 4704 w +(address) 2630 4704 w +(shortcomings) 3049 4704 w +(as) 3749 4704 w +(they) 3894 4704 w +(arise) 4140 4704 w +(and) 4411 4704 w +(to) 4630 4704 w +(adapt) 4767 4704 w +(the) 720 4824 w +(system) 911 4824 w +(to) 1287 4824 w +(solve) 1421 4824 w +(our) 1706 4824 w +(problems.) 1907 4824 w +(Through) 2465 4824 w +(this) 2915 4824 w +(process,) 3131 4824 w +(Plan) 3574 4824 w +(9) 3812 4824 w +(has) 3912 4824 w +(become) 4117 4824 w +(a) 4534 4824 w +(comfort\255) 4626 4824 w +(able,) 720 4944 w +(productive) 1011 4944 w +(programming) 1581 4944 w +(environment,) 2298 4944 w +(as) 2996 4944 w +(well) 3157 4944 w +(as) 3403 4944 w +(a) 3564 4944 w +(vehicle) 3674 4944 w +(for) 4064 4944 w +(further) 4258 4944 w +(systems) 4649 4944 w +(research.) 720 5064 w 10 /LucidaSans-Demi f -(References) 720 3948 w +(References) 720 5304 w 9 /LucidaSansUnicode00 f -([9man]) 720 4084 w +([9man]) 720 5440 w 9 /LucidaSans-Italic f -(Plan) 1125 4084 w -(9) 1343 4084 w -(Programmer's) 1429 4084 w -(Manual,) 2089 4084 w -(Volume) 2470 4084 w -(1,) 2826 4084 w -9 /LucidaSansUnicode00 f -(AT&T) 2941 4084 w -(Bell) 3209 4084 w -(Laboratories,) 3392 4084 w -(Murray) 3994 4084 w -(Hill,) 4327 4084 w -(NJ,) 4530 4084 w -(1995.) 4683 4084 w -([ANSIC]) 720 4220 w +(Plan) 1125 5440 w +(9) 1343 5440 w +(Programmer's) 1429 5440 w +(Manual,) 2089 5440 w +(Volume) 2470 5440 w +(1,) 2826 5440 w +9 /LucidaSansUnicode00 f +(AT&T) 2941 5440 w +(Bell) 3209 5440 w +(Laboratories,) 3392 5440 w +(Murray) 3994 5440 w +(Hill,) 4327 5440 w +(NJ,) 4530 5440 w +(1995.) 4683 5440 w +([ANSIC]) 720 5576 w 9 /LucidaSans-Italic f -(American) 1125 4220 w -(National) 1573 4220 w -(Standard) 1972 4220 w -(for) 2404 4220 w -(Information) 2561 4220 w -(Systems) 3106 4220 w +(American) 1125 5576 w +(National) 1573 5576 w +(Standard) 1972 5576 w +(for) 2404 5576 w +(Information) 2561 5576 w +(Systems) 3106 5576 w 9 /LucidaSansUnicode20 f -(\023) 3489 4220 w +(\023) 3489 5576 w 9 /LucidaSans-Italic f -(Programming) 3563 4220 w -(Language) 4197 4220 w -(C) 4657 4220 w -9 /LucidaSansUnicode00 f -(,) 4718 4220 w -(Amer\255) 4777 4220 w -(ican) 1125 4320 w -(National) 1332 4320 w -(Standards) 1724 4320 w -(Institute,) 2188 4320 w -(Inc.,) 2605 4320 w -(New) 2820 4320 w -(York,) 3035 4320 w -(1990.) 3293 4320 w -([Duff90]) 720 4456 w -(Tom) 1125 4456 w -(Duff,) 1350 4456 w -9 /LucidaSansUnicode20 f -(\030\030) 1598 4456 w -9 /LucidaSansUnicode00 f -(Rc) 1656 4456 w -(-) 1788 4456 w -(A) 1869 4456 w -(Shell) 1960 4456 w -(for) 2196 4456 w -(Plan) 2350 4456 w -(9) 2561 4456 w -(and) 2647 4456 w -(UNIX) 2839 4456 w -(systems) 3080 4456 w +(Programming) 3563 5576 w +(Language) 4197 5576 w +(C) 4657 5576 w +9 /LucidaSansUnicode00 f +(,) 4718 5576 w +(Amer\255) 4777 5576 w +(ican) 1125 5676 w +(National) 1332 5676 w +(Standards) 1724 5676 w +(Institute,) 2188 5676 w +(Inc.,) 2605 5676 w +(New) 2820 5676 w +(York,) 3035 5676 w +(1990.) 3293 5676 w +([Duff90]) 720 5812 w +(Tom) 1125 5812 w +(Duff,) 1350 5812 w +9 /LucidaSansUnicode20 f +(\030\030) 1598 5812 w +9 /LucidaSansUnicode00 f +(Rc) 1656 5812 w +(-) 1788 5812 w +(A) 1869 5812 w +(Shell) 1960 5812 w +(for) 2196 5812 w +(Plan) 2350 5812 w +(9) 2561 5812 w +(and) 2647 5812 w +(UNIX) 2839 5812 w +(systems) 3080 5812 w 9 /LucidaSansUnicode20 f -(\031\031) 3432 4456 w +(\031\031) 3432 5812 w 9 /LucidaSansUnicode00 f -(,) 3490 4456 w +(,) 3490 5812 w 9 /LucidaSans-Italic f -(Proc.) 3548 4456 w -(of) 3797 4456 w -(the) 3912 4456 w -(Summer) 4080 4456 w -(1990) 4475 4456 w -(UKUUG) 4733 4456 w -(Conf.,) 1125 4556 w -9 /LucidaSansUnicode00 f -(London,) 1414 4556 w -(July,) 1799 4556 w -(1990,) 2014 4556 w -(pp.) 2300 4556 w -(21-33,) 2472 4556 w -(reprinted,) 2810 4556 w -(in) 3271 4556 w -(a) 3382 4556 w -(different) 3461 4556 w -(form,) 3865 4556 w -(in) 4132 4556 w -(this) 4243 4556 w -(volume.) 4433 4556 w -([Fra80]) 720 4692 w -(A.G.) 1125 4692 w -(Fraser,) 1346 4692 w -9 /LucidaSansUnicode20 f -(\030\030) 1680 4692 w -9 /LucidaSansUnicode00 f -(Datakit) 1738 4692 w -9 /LucidaSansUnicode20 f -(\023) 2086 4692 w -9 /LucidaSansUnicode00 f -(A) 2167 4692 w -(Modular) 2265 4692 w -(Network) 2659 4692 w -(for) 3058 4692 w -(Synchronous) 3220 4692 w -(and) 3816 4692 w -(Asynchronous) 4016 4692 w -(Traffic) 4671 4692 w +(Proc.) 3548 5812 w +(of) 3797 5812 w +(the) 3912 5812 w +(Summer) 4080 5812 w +(1990) 4475 5812 w +(UKUUG) 4733 5812 w +(Conf.,) 1125 5912 w +9 /LucidaSansUnicode00 f +(London,) 1414 5912 w +(July,) 1799 5912 w +(1990,) 2014 5912 w +(pp.) 2300 5912 w +(21-33,) 2472 5912 w +(reprinted,) 2810 5912 w +(in) 3271 5912 w +(a) 3382 5912 w +(different) 3461 5912 w +(form,) 3865 5912 w +(in) 4132 5912 w +(this) 4243 5912 w +(volume.) 4433 5912 w +([Fra80]) 720 6048 w +(A.G.) 1125 6048 w +(Fraser,) 1346 6048 w +9 /LucidaSansUnicode20 f +(\030\030) 1680 6048 w +9 /LucidaSansUnicode00 f +(Datakit) 1738 6048 w +9 /LucidaSansUnicode20 f +(\023) 2086 6048 w +9 /LucidaSansUnicode00 f +(A) 2167 6048 w +(Modular) 2265 6048 w +(Network) 2659 6048 w +(for) 3058 6048 w +(Synchronous) 3220 6048 w +(and) 3816 6048 w +(Asynchronous) 4016 6048 w +(Traffic) 4671 6048 w 9 /LucidaSansUnicode20 f -(\031\031) 4953 4692 w +(\031\031) 4953 6048 w 9 /LucidaSansUnicode00 f -(,) 5011 4692 w +(,) 5011 6048 w 9 /LucidaSans-Italic f -(Proc.) 1125 4792 w -(Int.) 1374 4792 w -(Conf.) 1548 4792 w -(on) 1808 4792 w -(Commun.,) 1944 4792 w -9 /LucidaSansUnicode00 f -(June) 2423 4792 w -(1980,) 2642 4792 w -(Boston,) 2928 4792 w -(MA.) 3283 4792 w -([FSSUTF]) 720 4928 w +(Proc.) 1125 6148 w +(Int.) 1374 6148 w +(Conf.) 1548 6148 w +(on) 1808 6148 w +(Commun.,) 1944 6148 w +9 /LucidaSansUnicode00 f +(June) 2423 6148 w +(1980,) 2642 6148 w +(Boston,) 2928 6148 w +(MA.) 3283 6148 w +([FSSUTF]) 720 6284 w 9 /LucidaSans-Italic f -(File) 1125 4928 w -(System) 1374 4928 w -(Safe) 1784 4928 w -(UCS) 2071 4928 w -(Transformation) 2344 4928 w -(Format) 3132 4928 w -(\(FSS-UTF\),) 3549 4928 w -9 /LucidaSansUnicode00 f -(X/Open) 4112 4928 w -(Preliminary) 4551 4928 w -(Specification,) 1125 5028 w -(1993.) 1755 5028 w -(ISO) 2088 5028 w -(designation) 2280 5028 w -(is) 2838 5028 w -(ISO/IEC) 2957 5028 w -(JTC1/SC2/WG2) 3334 5028 w -(N) 4048 5028 w -(1036,) 4162 5028 w -(dated) 4466 5028 w -(1994-) 4760 5028 w -(08-01.) 1125 5128 w -([ISO10646]) 720 5264 w -(ISO/IEC) 1250 5264 w -(DIS) 1620 5264 w -(10646-1:1993) 1803 5264 w +(File) 1125 6284 w +(System) 1374 6284 w +(Safe) 1784 6284 w +(UCS) 2071 6284 w +(Transformation) 2344 6284 w +(Format) 3132 6284 w +(\(FSS-UTF\),) 3549 6284 w +9 /LucidaSansUnicode00 f +(X/Open) 4112 6284 w +(Preliminary) 4551 6284 w +(Specification,) 1125 6384 w +(1993.) 1755 6384 w +(ISO) 2088 6384 w +(designation) 2280 6384 w +(is) 2838 6384 w +(ISO/IEC) 2957 6384 w +(JTC1/SC2/WG2) 3334 6384 w +(N) 4048 6384 w +(1036,) 4162 6384 w +(dated) 4466 6384 w +(1994-) 4760 6384 w +(08-01.) 1125 6484 w +([ISO10646]) 720 6620 w +(ISO/IEC) 1250 6620 w +(DIS) 1620 6620 w +(10646-1:1993) 1803 6620 w 9 /LucidaSans-Italic f -(Information) 2494 5264 w -(technology) 3050 5264 w +(Information) 2494 6620 w +(technology) 3050 6620 w 9 /LucidaSansUnicode20 f -(\023) 3562 5264 w +(\023) 3562 6620 w 9 /LucidaSans-Italic f -(Universal) 3647 5264 w -(Multiple-Octet) 4096 5264 w -(Coded) 4770 5264 w -(Character) 1125 5364 w -(Set) 1594 5364 w -(\(UCS\)) 1755 5364 w +(Universal) 3647 6620 w +(Multiple-Octet) 4096 6620 w +(Coded) 4770 6620 w +(Character) 1125 6720 w +(Set) 1594 6720 w +(\(UCS\)) 1755 6720 w 9 /LucidaSansUnicode20 f -(\024) 2017 5364 w +(\024) 2017 6720 w 9 /LucidaSans-Italic f -(Part) 2136 5364 w -(1:) 2349 5364 w -(Architecture) 2464 5364 w -(and) 3033 5364 w -(Basic) 3228 5364 w -(Multilingual) 3480 5364 w -(Plane.) 4026 5364 w -9 /LucidaSansUnicode00 f -([Kill84]) 720 5500 w -(T.J.) 1125 5500 w -(Killian,) 1300 5500 w -9 /LucidaSansUnicode20 f -(\030\030) 1630 5500 w -9 /LucidaSansUnicode00 f -(Processes) 1688 5500 w -(as) 2146 5500 w -(Files) 2274 5500 w +(Part) 2136 6720 w +(1:) 2349 6720 w +(Architecture) 2464 6720 w +(and) 3033 6720 w +(Basic) 3228 6720 w +(Multilingual) 3480 6720 w +(Plane.) 4026 6720 w +9 /LucidaSansUnicode00 f +([Kill84]) 720 6856 w +(T.J.) 1125 6856 w +(Killian,) 1300 6856 w +9 /LucidaSansUnicode20 f +(\030\030) 1630 6856 w +9 /LucidaSansUnicode00 f +(Processes) 1688 6856 w +(as) 2146 6856 w +(Files) 2274 6856 w 9 /LucidaSansUnicode20 f -(\031\031) 2471 5500 w +(\031\031) 2471 6856 w 9 /LucidaSansUnicode00 f -(,) 2529 5500 w +(,) 2529 6856 w 9 /LucidaSans-Italic f -(USENIX) 2590 5500 w -(Summer) 2933 5500 w -(1984) 3330 5500 w -(Conf.) 3590 5500 w -(Proc.,) 3854 5500 w -9 /LucidaSansUnicode00 f -(June) 4136 5500 w -(1984,) 4359 5500 w -(Salt) 4649 5500 w -(Lake) 4840 5500 w -(City,) 1125 5600 w -(UT.) 1351 5600 w -([LABW91]) 720 5736 w -(Butler) 1163 5736 w -(Lampson,) 1447 5736 w -(Mart\355n) 1902 5736 w -(Abadi,) 2211 5736 w -(Michael) 2522 5736 w -(Burrows,) 2883 5736 w -(and) 3294 5736 w -(Edward) 3488 5736 w -(Wobber,) 3838 5736 w -9 /LucidaSansUnicode20 f -(\030\030) 4231 5736 w -9 /LucidaSansUnicode00 f -(Authentication) 4289 5736 w -(in) 4958 5736 w -(Distributed) 1125 5836 w -(Systems:) 1660 5836 w -(Theory) 2090 5836 w -(and) 2438 5836 w -(Practice) 2647 5836 w +(USENIX) 2590 6856 w +(Summer) 2933 6856 w +(1984) 3330 6856 w +(Conf.) 3590 6856 w +(Proc.,) 3854 6856 w +9 /LucidaSansUnicode00 f +(June) 4136 6856 w +(1984,) 4359 6856 w +(Salt) 4649 6856 w +(Lake) 4840 6856 w +(City,) 1125 6956 w +(UT.) 1351 6956 w +([LABW91]) 720 7092 w +(Butler) 1163 7092 w +(Lampson,) 1447 7092 w +(Mart\355n) 1902 7092 w +(Abadi,) 2211 7092 w +(Michael) 2522 7092 w +(Burrows,) 2883 7092 w +(and) 3294 7092 w +(Edward) 3488 7092 w +(Wobber,) 3838 7092 w +9 /LucidaSansUnicode20 f +(\030\030) 4231 7092 w +9 /LucidaSansUnicode00 f +(Authentication) 4289 7092 w +(in) 4958 7092 w +(Distributed) 1125 7192 w +(Systems:) 1660 7192 w +(Theory) 2090 7192 w +(and) 2438 7192 w +(Practice) 2647 7192 w 9 /LucidaSansUnicode20 f -(\031\031) 2985 5836 w +(\031\031) 2985 7192 w 9 /LucidaSansUnicode00 f -(,) 3043 5836 w +(,) 3043 7192 w 9 /LucidaSans-Italic f -(Proc.) 3118 5836 w -(13th) 3384 5836 w -(ACM) 3634 5836 w -(Symp.) 3878 5836 w -(on) 4191 5836 w -(Op.) 4343 5836 w -(Sys.) 4542 5836 w -(Princ.,) 4760 5836 w -9 /LucidaSansUnicode00 f -(Asilomar,) 1125 5936 w -(1991,) 1569 5936 w -(pp.) 1855 5936 w -(165-182.) 2027 5936 w -([MBSS87]) 720 6072 w -(S.) 1153 6072 w -(P.) 1263 6072 w -(Miller,) 1374 6072 w -(B.) 1677 6072 w -(C.) 1790 6072 w -(Neumann,) 1914 6072 w -(J.) 2395 6072 w -(I.) 2485 6072 w -(Schiller,) 2573 6072 w -(and) 2951 6072 w -(J.) 3147 6072 w -(H.) 3237 6072 w -(Saltzer,) 3366 6072 w -9 /LucidaSansUnicode20 f -(\030\030) 3724 6072 w -9 /LucidaSansUnicode00 f -(Kerberos) 3782 6072 w -(Authentication) 4206 6072 w -(and) 4877 6072 w -(Authorization) 1125 6172 w -(System) 1750 6172 w -9 /LucidaSansUnicode20 f -(\031\031) 2059 6172 w -9 /LucidaSansUnicode00 f -(,) 2117 6172 w -(Massachusetts) 2175 6172 w -(Institute) 2839 6172 w -(of) 3227 6172 w -(Technology,) 3344 6172 w -(1987.) 3906 6172 w -([NBS77]) 720 6308 w -(National) 1125 6308 w -(Bureau) 1556 6308 w -(of) 1926 6308 w -(Standards) 2083 6308 w -(\(U.S.\),) 2587 6308 w +(Proc.) 3118 7192 w +(13th) 3384 7192 w +(ACM) 3634 7192 w +(Symp.) 3878 7192 w +(on) 4191 7192 w +(Op.) 4343 7192 w +(Sys.) 4542 7192 w +(Princ.,) 4760 7192 w +9 /LucidaSansUnicode00 f +(Asilomar,) 1125 7292 w +(1991,) 1569 7292 w +(pp.) 1855 7292 w +(165-182.) 2027 7292 w +cleartomark +showpage +saveobj restore +%%EndPage: 21 21 +%%Page: 22 22 +/saveobj save def +mark +22 pagesetup +9 /LucidaSansUnicode00 f +(\255 22 \255) 2764 470 w +([MBSS87]) 720 820 w +(S.) 1153 820 w +(P.) 1263 820 w +(Miller,) 1374 820 w +(B.) 1677 820 w +(C.) 1790 820 w +(Neumann,) 1914 820 w +(J.) 2395 820 w +(I.) 2485 820 w +(Schiller,) 2573 820 w +(and) 2951 820 w +(J.) 3147 820 w +(H.) 3237 820 w +(Saltzer,) 3366 820 w +9 /LucidaSansUnicode20 f +(\030\030) 3724 820 w +9 /LucidaSansUnicode00 f +(Kerberos) 3782 820 w +(Authentication) 4206 820 w +(and) 4877 820 w +(Authorization) 1125 920 w +(System) 1750 920 w +9 /LucidaSansUnicode20 f +(\031\031) 2059 920 w +9 /LucidaSansUnicode00 f +(,) 2117 920 w +(Massachusetts) 2175 920 w +(Institute) 2839 920 w +(of) 3227 920 w +(Technology,) 3344 920 w +(1987.) 3906 920 w +([NBS77]) 720 1056 w +(National) 1125 1056 w +(Bureau) 1556 1056 w +(of) 1926 1056 w +(Standards) 2083 1056 w +(\(U.S.\),) 2587 1056 w 9 /LucidaSans-Italic f -(Federal) 2914 6308 w -(Information) 3307 6308 w -(Processing) 3892 6308 w -(Standard) 4425 6308 w -(46,) 4897 6308 w -9 /LucidaSansUnicode00 f -(National) 1125 6408 w -(Technical) 1517 6408 w -(Information) 1959 6408 w -(Service,) 2499 6408 w -(Springfield,) 2862 6408 w -(VA,) 3393 6408 w -(1977.) 3572 6408 w -([Nee89]) 720 6544 w -(R.) 1125 6544 w -(Needham,) 1240 6544 w +(Federal) 2914 1056 w +(Information) 3307 1056 w +(Processing) 3892 1056 w +(Standard) 4425 1056 w +(46,) 4897 1056 w +9 /LucidaSansUnicode00 f +(National) 1125 1156 w +(Technical) 1517 1156 w +(Information) 1959 1156 w +(Service,) 2499 1156 w +(Springfield,) 2862 1156 w +(VA,) 3393 1156 w +(1977.) 3572 1156 w +([Nee89]) 720 1292 w +(R.) 1125 1292 w +(Needham,) 1240 1292 w 9 /LucidaSansUnicode20 f -(\030\030) 1712 6544 w +(\030\030) 1712 1292 w 9 /LucidaSansUnicode00 f -(Names) 1770 6544 w +(Names) 1770 1292 w 9 /LucidaSansUnicode20 f -(\031\031) 2067 6544 w +(\031\031) 2067 1292 w 9 /LucidaSansUnicode00 f -(,) 2125 6544 w -(in) 2183 6544 w +(,) 2125 1292 w +(in) 2183 1292 w 9 /LucidaSans-Italic f -(Distributed) 2294 6544 w -(systems,) 2811 6544 w +(Distributed) 2294 1292 w +(systems,) 2811 1292 w 9 /LucidaSansUnicode00 f -(S.) 3217 6544 w -(Mullender,) 3324 6544 w -(ed.,) 3817 6544 w -(Addison) 4011 6544 w -(Wesley,) 4399 6544 w -(1989) 4753 6544 w -([NeHe82]) 720 6680 w -(R.M.) 1196 6680 w -(Needham) 1456 6680 w -(and) 1939 6680 w -(A.J.) 2171 6680 w -(Herbert,) 2388 6680 w +(S.) 3217 1292 w +(Mullender,) 3324 1292 w +(ed.,) 3817 1292 w +(Addison) 4011 1292 w +(Wesley,) 4399 1292 w +(1989) 4753 1292 w +([NeHe82]) 720 1428 w +(R.M.) 1196 1428 w +(Needham) 1456 1428 w +(and) 1939 1428 w +(A.J.) 2171 1428 w +(Herbert,) 2388 1428 w 9 /LucidaSans-Italic f -(The) 2817 6680 w -(Cambridge) 3046 6680 w -(Distributed) 3597 6680 w -(Computing) 4154 6680 w -(System,) 4701 6680 w -9 /LucidaSansUnicode00 f -(Addison-Wesley,) 1125 6780 w -(London,) 1890 6780 w -(1982) 2275 6780 w -([Neu92]) 720 6916 w -(B.) 1125 6916 w -(Clifford) 1248 6916 w -(Neuman,) 1619 6916 w -9 /LucidaSansUnicode20 f -(\030\030) 2053 6916 w -9 /LucidaSansUnicode00 f -(The) 2111 6916 w -(Prospero) 2316 6916 w -(File) 2745 6916 w -(System) 2938 6916 w +(The) 2817 1428 w +(Cambridge) 3046 1428 w +(Distributed) 3597 1428 w +(Computing) 4154 1428 w +(System,) 4701 1428 w +9 /LucidaSansUnicode00 f +(Addison-Wesley,) 1125 1528 w +(London,) 1890 1528 w +(1982) 2275 1528 w +([Neu92]) 720 1664 w +(B.) 1125 1664 w +(Clifford) 1248 1664 w +(Neuman,) 1619 1664 w +9 /LucidaSansUnicode20 f +(\030\030) 2053 1664 w +9 /LucidaSansUnicode00 f +(The) 2111 1664 w +(Prospero) 2316 1664 w +(File) 2745 1664 w +(System) 2938 1664 w 9 /LucidaSansUnicode20 f -(\031\031) 3247 6916 w +(\031\031) 3247 1664 w 9 /LucidaSansUnicode00 f -(,) 3305 6916 w +(,) 3305 1664 w 9 /LucidaSans-Italic f -(USENIX) 3376 6916 w -(File) 3729 6916 w -(Systems) 3920 6916 w -(Workshop) 4316 6916 w -(Proc.,) 4791 6916 w -9 /LucidaSansUnicode00 f -(Ann) 1125 7016 w -(Arbor,) 1328 7016 w -(1992,) 1634 7016 w -(pp.) 1920 7016 w -(13-28.) 2092 7016 w -([OCDNW88]) 720 7152 w -(John) 1282 7152 w -(Ousterhout,) 1522 7152 w -(Andrew) 2088 7152 w -(Cherenson,) 2464 7152 w -(Fred) 3006 7152 w -(Douglis,) 3244 7152 w -(Mike) 3651 7152 w -(Nelson,) 3901 7152 w -(and) 4275 7152 w -(Brent) 4483 7152 w -(Welch,) 4756 7152 w -9 /LucidaSansUnicode20 f -(\030\030) 1125 7252 w -9 /LucidaSansUnicode00 f -(The) 1183 7252 w -(Sprite) 1375 7252 w -(Network) 1656 7252 w -(Operating) 2048 7252 w -(System) 2512 7252 w +(USENIX) 3376 1664 w +(File) 3729 1664 w +(Systems) 3920 1664 w +(Workshop) 4316 1664 w +(Proc.,) 4791 1664 w +9 /LucidaSansUnicode00 f +(Ann) 1125 1764 w +(Arbor,) 1328 1764 w +(1992,) 1634 1764 w +(pp.) 1920 1764 w +(13-28.) 2092 1764 w +([OCDNW88]) 720 1900 w +(John) 1282 1900 w +(Ousterhout,) 1522 1900 w +(Andrew) 2088 1900 w +(Cherenson,) 2464 1900 w +(Fred) 3006 1900 w +(Douglis,) 3244 1900 w +(Mike) 3651 1900 w +(Nelson,) 3901 1900 w +(and) 4275 1900 w +(Brent) 4483 1900 w +(Welch,) 4756 1900 w +9 /LucidaSansUnicode20 f +(\030\030) 1125 2000 w +9 /LucidaSansUnicode00 f +(The) 1183 2000 w +(Sprite) 1375 2000 w +(Network) 1656 2000 w +(Operating) 2048 2000 w +(System) 2512 2000 w 9 /LucidaSansUnicode20 f -(\031\031) 2821 7252 w +(\031\031) 2821 2000 w 9 /LucidaSansUnicode00 f -(,) 2879 7252 w +(,) 2879 2000 w 9 /LucidaSans-Italic f -(IEEE) 2937 7252 w -(Computer,) 3142 7252 w -9 /LucidaSansUnicode00 f -(21\(2\),) 3632 7252 w -(23-38,) 3921 7252 w -(Feb.) 4259 7252 w -(1988.) 4473 7252 w -cleartomark -showpage -saveobj restore -%%EndPage: 21 21 -%%Page: 22 22 -/saveobj save def -mark -22 pagesetup +(IEEE) 2937 2000 w +(Computer,) 3142 2000 w 9 /LucidaSansUnicode00 f -(\255 22 \255) 2764 470 w -([Pike87]) 720 820 w -(Rob) 1125 820 w -(Pike,) 1323 820 w -9 /LucidaSansUnicode20 f -(\030\030) 1559 820 w -9 /LucidaSansUnicode00 f -(The) 1617 820 w -(Text) 1809 820 w -(Editor) 2033 820 w +(21\(2\),) 3632 2000 w +(23-38,) 3921 2000 w +(Feb.) 4259 2000 w +(1988.) 4473 2000 w +([Pike87]) 720 2136 w +(Rob) 1125 2136 w +(Pike,) 1323 2136 w +9 /LucidaSansUnicode20 f +(\030\030) 1559 2136 w +9 /LucidaSansUnicode00 f +(The) 1617 2136 w +(Text) 1809 2136 w +(Editor) 2033 2136 w 9 /LucidaTypewriter f -(sam) 2320 820 w +(sam) 2320 2136 w 9 /LucidaSansUnicode20 f -(\031\031) 2515 820 w +(\031\031) 2515 2136 w 9 /LucidaSansUnicode00 f -(,) 2573 820 w +(,) 2573 2136 w 9 /LucidaSans-Italic f -(Software) 2632 820 w -(-) 3047 820 w -(Practice) 3134 820 w -(and) 3512 820 w -(Experience,) 3708 820 w +(Software) 2632 2136 w +(-) 3047 2136 w +(Practice) 3134 2136 w +(and) 3512 2136 w +(Experience,) 3708 2136 w 9 /LucidaSansUnicode00 f -(Nov) 4235 820 w -(1987,) 4434 820 w +(Nov) 4235 2136 w +(1987,) 4434 2136 w 9 /LucidaSans-Demi f -(17) 4721 820 w +(17) 4721 2136 w 9 /LucidaSansUnicode00 f -(\(11\),) 4837 820 w -(pp.) 1125 920 w -(813-845;) 1297 920 w -(reprinted) 1749 920 w -(in) 2181 920 w -(this) 2292 920 w -(volume.) 2482 920 w -([Pike91]) 720 1056 w -(Rob) 1125 1056 w -(Pike,) 1325 1056 w -9 /LucidaSansUnicode20 f -(\030\030) 1563 1056 w -9 /LucidaSansUnicode00 f -(8\275,) 1621 1056 w -(the) 1810 1056 w -(Plan) 1980 1056 w -(9) 2193 1056 w -(Window) 2282 1056 w -(System) 2654 1056 w +(\(11\),) 4837 2136 w +(pp.) 1125 2236 w +(813-845;) 1297 2236 w +(reprinted) 1749 2236 w +(in) 2181 2236 w +(this) 2292 2236 w +(volume.) 2482 2236 w +([Pike91]) 720 2372 w +(Rob) 1125 2372 w +(Pike,) 1325 2372 w +9 /LucidaSansUnicode20 f +(\030\030) 1563 2372 w +9 /LucidaSansUnicode00 f +(8\275,) 1621 2372 w +(the) 1810 2372 w +(Plan) 1980 2372 w +(9) 2193 2372 w +(Window) 2282 2372 w +(System) 2654 2372 w 9 /LucidaSansUnicode20 f -(\031\031) 2963 1056 w +(\031\031) 2963 2372 w 9 /LucidaSansUnicode00 f -(,) 3021 1056 w +(,) 3021 2372 w 9 /LucidaSans-Italic f -(USENIX) 3082 1056 w -(Summer) 3425 1056 w -(Conf.) 3822 1056 w -(Proc.,) 4085 1056 w -9 /LucidaSansUnicode00 f -(Nashville,) 4366 1056 w -(June,) 4821 1056 w -(1991,) 1125 1156 w -(pp.) 1411 1156 w -(257-265,) 1583 1156 w -(reprinted) 2035 1156 w -(in) 2467 1156 w -(this) 2578 1156 w -(volume.) 2768 1156 w -([Pike93]) 720 1292 w -(Rob) 1125 1292 w -(Pike) 1344 1292 w -(and) 1572 1292 w -(Ken) 1785 1292 w -(Thompson,) 2000 1292 w -9 /LucidaSansUnicode20 f -(\030\030) 2545 1292 w -9 /LucidaSansUnicode00 f -(Hello) 2603 1292 w -(World) 2877 1292 w -(or) 3179 1292 w +(USENIX) 3082 2372 w +(Summer) 3425 2372 w +(Conf.) 3822 2372 w +(Proc.,) 4085 2372 w +9 /LucidaSansUnicode00 f +(Nashville,) 4366 2372 w +(June,) 4821 2372 w +(1991,) 1125 2472 w +(pp.) 1411 2472 w +(257-265,) 1583 2472 w +(reprinted) 2035 2472 w +(in) 2467 2472 w +(this) 2578 2472 w +(volume.) 2768 2472 w +([Pike93]) 720 2608 w +(Rob) 1125 2608 w +(Pike) 1344 2608 w +(and) 1572 2608 w +(Ken) 1785 2608 w +(Thompson,) 2000 2608 w +9 /LucidaSansUnicode20 f +(\030\030) 2545 2608 w +9 /LucidaSansUnicode00 f +(Hello) 2603 2608 w +(World) 2877 2608 w +(or) 3179 2608 w 9 /LucidaSansUnicode03 f -(\232\261\273\267\274\255\301\261) 3321 1292 w -(\272\314\303\274\265) 3830 1292 w +(\232\261\273\267\274\255\301\261) 3321 2608 w +(\272\314\303\274\265) 3830 2608 w 9 /LucidaSansUnicode00 f -(or) 4150 1292 w - save 4265 1292 m +(or) 4150 2608 w + save 4265 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} imagemask restore - save 4360 1292 m + save 4360 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} imagemask restore - save 4455 1292 m + save 4455 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} imagemask restore - save 4550 1292 m + save 4550 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} imagemask restore - save 4645 1292 m + save 4645 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} imagemask restore - save 4763 1292 m + save 4763 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} imagemask restore - save 4858 1292 m + save 4858 2608 m currentpoint translate 10 10 scale ptsize dup scale 24 24 true [24 0 0 -24 0 22] {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} imagemask restore 9 /LucidaSansUnicode20 f -(\031\031) 4953 1292 w +(\031\031) 4953 2608 w 9 /LucidaSansUnicode00 f -(,) 5011 1292 w +(,) 5011 2608 w 9 /LucidaSans-Italic f -(USENIX) 1125 1392 w -(Winter) 1465 1392 w -(Conf.) 1781 1392 w -(Proc.,) 2041 1392 w -9 /LucidaSansUnicode00 f -(San) 2319 1392 w -(Diego,) 2503 1392 w -(1993,) 2816 1392 w -(pp.) 3102 1392 w -(43-50,) 3274 1392 w -(reprinted) 3612 1392 w -(in) 4044 1392 w -(this) 4155 1392 w -(volume.) 4345 1392 w -([Pike94]) 720 1528 w -(Rob) 1125 1528 w -(Pike,) 1332 1528 w -9 /LucidaSansUnicode20 f -(\030\030) 1577 1528 w -9 /LucidaSansUnicode00 f -(Acme:) 1635 1528 w -(A) 1945 1528 w -(User) 2046 1528 w -(Interface) 2280 1528 w -(for) 2700 1528 w -(Programmers) 2864 1528 w +(USENIX) 1125 2708 w +(Winter) 1465 2708 w +(Conf.) 1781 2708 w +(Proc.,) 2041 2708 w +9 /LucidaSansUnicode00 f +(San) 2319 2708 w +(Diego,) 2503 2708 w +(1993,) 2816 2708 w +(pp.) 3102 2708 w +(43-50,) 3274 2708 w +(reprinted) 3612 2708 w +(in) 4044 2708 w +(this) 4155 2708 w +(volume.) 4345 2708 w +([Pike94]) 720 2844 w +(Rob) 1125 2844 w +(Pike,) 1332 2844 w +9 /LucidaSansUnicode20 f +(\030\030) 1577 2844 w +9 /LucidaSansUnicode00 f +(Acme:) 1635 2844 w +(A) 1945 2844 w +(User) 2046 2844 w +(Interface) 2280 2844 w +(for) 2700 2844 w +(Programmers) 2864 2844 w 9 /LucidaSansUnicode20 f -(\031\031) 3450 1528 w +(\031\031) 3450 2844 w 9 /LucidaSansUnicode00 f -(,) 3508 1528 w +(,) 3508 2844 w 9 /LucidaSans-Italic f -(USENIX) 3576 1528 w -(Proc.) 3926 1528 w -(of) 4185 1528 w -(the) 4309 1528 w -(Winter) 4486 1528 w -(1994) 4812 1528 w -(Conf.,) 1125 1628 w -9 /LucidaSansUnicode00 f -(San) 1414 1628 w -(Francisco,) 1598 1628 w -(CA,) 2067 1628 w -([Pike95]) 720 1764 w -(Rob) 1125 1764 w -(Pike,) 1325 1764 w -9 /LucidaSansUnicode20 f -(\030\030) 1563 1764 w -9 /LucidaSansUnicode00 f -(How) 1621 1764 w -(to) 1844 1764 w -(Use) 1964 1764 w -(the) 2154 1764 w -(Plan) 2325 1764 w -(9) 2539 1764 w -(C) 2628 1764 w -(Compiler) 2722 1764 w +(USENIX) 3576 2844 w +(Proc.) 3926 2844 w +(of) 4185 2844 w +(the) 4309 2844 w +(Winter) 4486 2844 w +(1994) 4812 2844 w +(Conf.,) 1125 2944 w +9 /LucidaSansUnicode00 f +(San) 1414 2944 w +(Francisco,) 1598 2944 w +(CA,) 2067 2944 w +([Pike95]) 720 3080 w +(Rob) 1125 3080 w +(Pike,) 1325 3080 w +9 /LucidaSansUnicode20 f +(\030\030) 1563 3080 w +9 /LucidaSansUnicode00 f +(How) 1621 3080 w +(to) 1844 3080 w +(Use) 1964 3080 w +(the) 2154 3080 w +(Plan) 2325 3080 w +(9) 2539 3080 w +(C) 2628 3080 w +(Compiler) 2722 3080 w 9 /LucidaSansUnicode20 f -(\031\031) 3119 1764 w +(\031\031) 3119 3080 w 9 /LucidaSansUnicode00 f -(,) 3177 1764 w +(,) 3177 3080 w 9 /LucidaSans-Italic f -(Plan) 3238 1764 w -(9) 3459 1764 w -(Programmer's) 3548 1764 w -(Manual,) 4211 1764 w -(Volume) 4595 1764 w -(2,) 4954 1764 w -9 /LucidaSansUnicode00 f -(AT&T) 1125 1864 w -(Bell) 1393 1864 w -(Laboratories,) 1576 1864 w -(Murray) 2178 1864 w -(Hill,) 2511 1864 w -(NJ,) 2714 1864 w -(1995.) 2867 1864 w -([POSIX]) 720 2000 w +(Plan) 3238 3080 w +(9) 3459 3080 w +(Programmer's) 3548 3080 w +(Manual,) 4211 3080 w +(Volume) 4595 3080 w +(2,) 4954 3080 w +9 /LucidaSansUnicode00 f +(AT&T) 1125 3180 w +(Bell) 1393 3180 w +(Laboratories,) 1576 3180 w +(Murray) 2178 3180 w +(Hill,) 2511 3180 w +(NJ,) 2714 3180 w +(1995.) 2867 3180 w +([POSIX]) 720 3316 w 9 /LucidaSans-Italic f -(Information) 1125 2000 w -(Technology) 1693 2000 w +(Information) 1125 3316 w +(Technology) 1693 3316 w 9 /LucidaSansUnicode20 f -(\024) 2187 2000 w +(\024) 2187 3316 w 9 /LucidaSans-Italic f -(Portable) 2277 2000 w -(Operating) 2693 2000 w -(System) 3187 2000 w -(Interface) 3549 2000 w -(\(POSIX\)) 3990 2000 w -(Part) 4356 2000 w -(1:) 4592 2000 w -(System) 4730 2000 w -(Application) 1125 2100 w -(Program) 1645 2100 w -(Interface) 2057 2100 w -(\(API\)) 2475 2100 w -([C) 2704 2100 w -(Language],) 2824 2100 w -9 /LucidaSansUnicode00 f -(IEEE,) 3342 2100 w -(New) 3573 2100 w -(York,) 3788 2100 w -(1990.) 4046 2100 w -([PPTTW93]) 720 2236 w -(Rob) 1215 2236 w -(Pike,) 1414 2236 w -(Dave) 1652 2236 w -(Presotto,) 1898 2236 w -(Ken) 2317 2236 w -(Thompson,) 2513 2236 w -(Howard) 3039 2236 w -(Trickey,) 3405 2236 w -(and) 3780 2236 w -(Phil) 3974 2236 w -(Winterbottom,) 4163 2236 w -9 /LucidaSansUnicode20 f -(\030\030) 4819 2236 w -9 /LucidaSansUnicode00 f -(The) 4877 2236 w -(Use) 1125 2336 w -(of) 1325 2336 w -(Name) 1455 2336 w -(Spaces) 1748 2336 w -(in) 2088 2336 w -(Plan) 2212 2336 w -(9) 2436 2336 w +(Portable) 2277 3316 w +(Operating) 2693 3316 w +(System) 3187 3316 w +(Interface) 3549 3316 w +(\(POSIX\)) 3990 3316 w +(Part) 4356 3316 w +(1:) 4592 3316 w +(System) 4730 3316 w +(Application) 1125 3416 w +(Program) 1645 3416 w +(Interface) 2057 3416 w +(\(API\)) 2475 3416 w +([C) 2704 3416 w +(Language],) 2824 3416 w +9 /LucidaSansUnicode00 f +(IEEE,) 3342 3416 w +(New) 3573 3416 w +(York,) 3788 3416 w +(1990.) 4046 3416 w +([PPTTW93]) 720 3552 w +(Rob) 1215 3552 w +(Pike,) 1414 3552 w +(Dave) 1652 3552 w +(Presotto,) 1898 3552 w +(Ken) 2317 3552 w +(Thompson,) 2513 3552 w +(Howard) 3039 3552 w +(Trickey,) 3405 3552 w +(and) 3780 3552 w +(Phil) 3974 3552 w +(Winterbottom,) 4163 3552 w +9 /LucidaSansUnicode20 f +(\030\030) 4819 3552 w +9 /LucidaSansUnicode00 f +(The) 4877 3552 w +(Use) 1125 3652 w +(of) 1325 3652 w +(Name) 1455 3652 w +(Spaces) 1748 3652 w +(in) 2088 3652 w +(Plan) 2212 3652 w +(9) 2436 3652 w 9 /LucidaSansUnicode20 f -(\031\031) 2493 2336 w +(\031\031) 2493 3652 w 9 /LucidaSansUnicode00 f -(,) 2551 2336 w +(,) 2551 3652 w 9 /LucidaSans-Italic f -(Op.) 2622 2336 w -(Sys.) 2818 2336 w -(Rev.,) 3033 2336 w -9 /LucidaSansUnicode00 f -(Vol.) 3287 2336 w -(27,) 3497 2336 w -(No.) 3681 2336 w -(2,) 3873 2336 w -(April) 4000 2336 w -(1993,) 4249 2336 w -(pp.) 4547 2336 w -(72-76,) 4731 2336 w -(reprinted) 1125 2436 w -(in) 1557 2436 w -(this) 1668 2436 w -(volume.) 1858 2436 w -([Presotto]Dave) 720 2572 w -(Presotto,) 1391 2572 w -9 /LucidaSansUnicode20 f -(\030\030) 1816 2572 w -9 /LucidaSansUnicode00 f -(Multiprocessor) 1874 2572 w -(Streams) 2558 2572 w -(for) 2944 2572 w -(Plan) 3106 2572 w -(9) 3326 2572 w +(Op.) 2622 3652 w +(Sys.) 2818 3652 w +(Rev.,) 3033 3652 w +9 /LucidaSansUnicode00 f +(Vol.) 3287 3652 w +(27,) 3497 3652 w +(No.) 3681 3652 w +(2,) 3873 3652 w +(April) 4000 3652 w +(1993,) 4249 3652 w +(pp.) 4547 3652 w +(72-76,) 4731 3652 w +(reprinted) 1125 3752 w +(in) 1557 3752 w +(this) 1668 3752 w +(volume.) 1858 3752 w +([Presotto]Dave) 720 3888 w +(Presotto,) 1391 3888 w +9 /LucidaSansUnicode20 f +(\030\030) 1816 3888 w +9 /LucidaSansUnicode00 f +(Multiprocessor) 1874 3888 w +(Streams) 2558 3888 w +(for) 2944 3888 w +(Plan) 3106 3888 w +(9) 3326 3888 w 9 /LucidaSansUnicode20 f -(\031\031) 3383 2572 w +(\031\031) 3383 3888 w 9 /LucidaSansUnicode00 f -(,) 3441 2572 w +(,) 3441 3888 w 9 /LucidaSans-Italic f -(UKUUG) 3508 2572 w -(Summer) 3853 2572 w -(1990) 4256 2572 w -(Conf.) 4522 2572 w -(Proc.,) 4791 2572 w -9 /LucidaSansUnicode00 f -(July) 1125 2672 w -(1990,) 1311 2672 w -(pp.) 1597 2672 w -(11-19.) 1769 2672 w -([PrWi93]) 720 2808 w -(Dave) 1125 2808 w -(Presotto) 1372 2808 w -(and) 1763 2808 w -(Phil) 1958 2808 w -(Winterbottom,) 2148 2808 w -9 /LucidaSansUnicode20 f -(\030\030) 2806 2808 w -9 /LucidaSansUnicode00 f -(The) 2864 2808 w -(Organization) 3060 2808 w -(of) 3659 2808 w -(Networks) 3780 2808 w -(in) 4222 2808 w -(Plan) 4337 2808 w -(9) 4552 2808 w +(UKUUG) 3508 3888 w +(Summer) 3853 3888 w +(1990) 4256 3888 w +(Conf.) 4522 3888 w +(Proc.,) 4791 3888 w +9 /LucidaSansUnicode00 f +(July) 1125 3988 w +(1990,) 1311 3988 w +(pp.) 1597 3988 w +(11-19.) 1769 3988 w +([PrWi93]) 720 4124 w +(Dave) 1125 4124 w +(Presotto) 1372 4124 w +(and) 1763 4124 w +(Phil) 1958 4124 w +(Winterbottom,) 2148 4124 w +9 /LucidaSansUnicode20 f +(\030\030) 2806 4124 w +9 /LucidaSansUnicode00 f +(The) 2864 4124 w +(Organization) 3060 4124 w +(of) 3659 4124 w +(Networks) 3780 4124 w +(in) 4222 4124 w +(Plan) 4337 4124 w +(9) 4552 4124 w 9 /LucidaSansUnicode20 f -(\031\031) 4609 2808 w +(\031\031) 4609 4124 w 9 /LucidaSansUnicode00 f -(,) 4667 2808 w +(,) 4667 4124 w 9 /LucidaSans-Italic f -(USENIX) 4729 2808 w -(Proc.) 1125 2908 w -(of) 1374 2908 w -(the) 1488 2908 w -(Winter) 1655 2908 w -(1993) 1971 2908 w -(Conf.,) 2228 2908 w -9 /LucidaSansUnicode00 f -(San) 2517 2908 w -(Diego,) 2701 2908 w -(CA,) 3014 2908 w -(pp.) 3196 2908 w -(43-50,) 3368 2908 w -(reprinted) 3706 2908 w -(in) 4138 2908 w -(this) 4249 2908 w -(volume.) 4439 2908 w -([PrWi95]) 720 3044 w -(Dave) 1125 3044 w -(Presotto) 1378 3044 w -(and) 1775 3044 w -(Phil) 1977 3044 w -(Winterbottom,) 2174 3044 w -9 /LucidaSansUnicode20 f -(\030\030) 2838 3044 w -9 /LucidaSansUnicode00 f -(The) 2896 3044 w -(IL) 3098 3044 w -(Protocol) 3211 3044 w +(USENIX) 4729 4124 w +(Proc.) 1125 4224 w +(of) 1374 4224 w +(the) 1488 4224 w +(Winter) 1655 4224 w +(1993) 1971 4224 w +(Conf.,) 2228 4224 w +9 /LucidaSansUnicode00 f +(San) 2517 4224 w +(Diego,) 2701 4224 w +(CA,) 3014 4224 w +(pp.) 3196 4224 w +(43-50,) 3368 4224 w +(reprinted) 3706 4224 w +(in) 4138 4224 w +(this) 4249 4224 w +(volume.) 4439 4224 w +([PrWi95]) 720 4360 w +(Dave) 1125 4360 w +(Presotto) 1378 4360 w +(and) 1775 4360 w +(Phil) 1977 4360 w +(Winterbottom,) 2174 4360 w +9 /LucidaSansUnicode20 f +(\030\030) 2838 4360 w +9 /LucidaSansUnicode00 f +(The) 2896 4360 w +(IL) 3098 4360 w +(Protocol) 3211 4360 w 9 /LucidaSansUnicode20 f -(\031\031) 3568 3044 w +(\031\031) 3568 4360 w 9 /LucidaSansUnicode00 f -(,) 3626 3044 w +(,) 3626 4360 w 9 /LucidaSans-Italic f -(Plan) 3694 3044 w -(9) 3922 3044 w -(Programmer's) 4018 3044 w -(Manual,) 4688 3044 w -(Volume) 1125 3144 w -(2,) 1481 3144 w -9 /LucidaSansUnicode00 f -(AT&T) 1596 3144 w -(Bell) 1864 3144 w -(Laboratories,) 2047 3144 w -(Murray) 2649 3144 w -(Hill,) 2982 3144 w -(NJ,) 3185 3144 w -(1995.) 3338 3144 w -([RFC768]) 720 3280 w -(J.) 1198 3280 w -(Postel,) 1335 3280 w -(RFC768,) 1704 3280 w +(Plan) 3694 4360 w +(9) 3922 4360 w +(Programmer's) 4018 4360 w +(Manual,) 4688 4360 w +(Volume) 1125 4460 w +(2,) 1481 4460 w +9 /LucidaSansUnicode00 f +(AT&T) 1596 4460 w +(Bell) 1864 4460 w +(Laboratories,) 2047 4460 w +(Murray) 2649 4460 w +(Hill,) 2982 4460 w +(NJ,) 3185 4460 w +(1995.) 3338 4460 w +([RFC768]) 720 4596 w +(J.) 1198 4596 w +(Postel,) 1335 4596 w +(RFC768,) 1704 4596 w 9 /LucidaSans-Italic f -(User) 2152 3280 w -(Datagram) 2429 3280 w -(Protocol,) 2957 3280 w -(DARPA) 3419 3280 w -(Internet) 3799 3280 w -(Program) 4224 3280 w -(Protocol) 4687 3280 w -(Specification,) 1125 3380 w -9 /LucidaSansUnicode00 f -(August) 1734 3380 w -(1980.) 2072 3380 w -([RFC793]) 720 3516 w -(RFC793,) 1152 3516 w +(User) 2152 4596 w +(Datagram) 2429 4596 w +(Protocol,) 2957 4596 w +(DARPA) 3419 4596 w +(Internet) 3799 4596 w +(Program) 4224 4596 w +(Protocol) 4687 4596 w +(Specification,) 1125 4696 w +9 /LucidaSansUnicode00 f +(August) 1734 4696 w +(1980.) 2072 4696 w +([RFC793]) 720 4832 w +(RFC793,) 1152 4832 w 9 /LucidaSans-Italic f -(Transmission) 1553 3516 w -(Control) 2171 3516 w -(Protocol,) 2527 3516 w -(DARPA) 2943 3516 w -(Internet) 3277 3516 w -(Program) 3656 3516 w -(Protocol) 4073 3516 w -(Specification,) 4460 3516 w -9 /LucidaSansUnicode00 f -(September) 1125 3616 w -(1981.) 1621 3616 w -([Rao91]) 720 3752 w -(Herman) 1125 3752 w -(Chung-Hwa) 1500 3752 w -(Rao,) 2055 3752 w +(Transmission) 1553 4832 w +(Control) 2171 4832 w +(Protocol,) 2527 4832 w +(DARPA) 2943 4832 w +(Internet) 3277 4832 w +(Program) 3656 4832 w +(Protocol) 4073 4832 w +(Specification,) 4460 4832 w +9 /LucidaSansUnicode00 f +(September) 1125 4932 w +(1981.) 1621 4932 w +([Rao91]) 720 5068 w +(Herman) 1125 5068 w +(Chung-Hwa) 1500 5068 w +(Rao,) 2055 5068 w 9 /LucidaSans-Italic f -(The) 2277 3752 w -(Jade) 2468 3752 w -(File) 2694 3752 w -(System,) 2874 3752 w -9 /LucidaSansUnicode00 f -(\(Ph.) 3244 3752 w -(D.) 3440 3752 w -(Dissertation\),) 3568 3752 w -(Dept.) 4184 3752 w -(of) 4452 3752 w -(Comp.) 4571 3752 w -(Sci,) 4890 3752 w -(University) 1125 3852 w -(of) 1584 3852 w -(Arizona,) 1701 3852 w -(TR) 2096 3852 w -(91-18.) 2239 3852 w -([Rit84]) 720 3988 w -(D.M.) 1125 3988 w -(Ritchie,) 1397 3988 w -9 /LucidaSansUnicode20 f -(\030\030) 1789 3988 w -9 /LucidaSansUnicode00 f -(A) 1847 3988 w -(Stream) 1978 3988 w -(Input-Output) 2351 3988 w -(System) 3006 3988 w +(The) 2277 5068 w +(Jade) 2468 5068 w +(File) 2694 5068 w +(System,) 2874 5068 w +9 /LucidaSansUnicode00 f +(\(Ph.) 3244 5068 w +(D.) 3440 5068 w +(Dissertation\),) 3568 5068 w +(Dept.) 4184 5068 w +(of) 4452 5068 w +(Comp.) 4571 5068 w +(Sci,) 4890 5068 w +(University) 1125 5168 w +(of) 1584 5168 w +(Arizona,) 1701 5168 w +(TR) 2096 5168 w +(91-18.) 2239 5168 w +([Rit84]) 720 5304 w +(D.M.) 1125 5304 w +(Ritchie,) 1397 5304 w +9 /LucidaSansUnicode20 f +(\030\030) 1789 5304 w +9 /LucidaSansUnicode00 f +(A) 1847 5304 w +(Stream) 1978 5304 w +(Input-Output) 2351 5304 w +(System) 3006 5304 w 9 /LucidaSansUnicode20 f -(\031\031) 3315 3988 w +(\031\031) 3315 5304 w 9 /LucidaSansUnicode00 f -(,) 3373 3988 w +(,) 3373 5304 w 9 /LucidaSans-Italic f -(AT&T) 3472 3988 w -(Bell) 3779 3988 w -(Laboratories) 4002 3988 w -(Technical) 4627 3988 w -(Journal,) 1125 4088 w +(AT&T) 3472 5304 w +(Bell) 3779 5304 w +(Laboratories) 4002 5304 w +(Technical) 4627 5304 w +(Journal,) 1125 5404 w 9 /LucidaSans-Demi f -(63) 1507 4088 w +(63) 1507 5404 w 9 /LucidaSansUnicode00 f -(\(8\),) 1623 4088 w -(October,) 1798 4088 w -(1984.) 2204 4088 w -([Tric95]) 720 4224 w -(Howard) 1125 4224 w -(Trickey,) 1499 4224 w +(\(8\),) 1623 5404 w +(October,) 1798 5404 w +(1984.) 2204 5404 w +([Tric95]) 720 5540 w +(Howard) 1125 5540 w +(Trickey,) 1499 5540 w 9 /LucidaSansUnicode20 f -(\030\030) 1882 4224 w +(\030\030) 1882 5540 w 9 /LucidaSansUnicode00 f -(APE) 1940 4224 w +(APE) 1940 5540 w 9 /LucidaSansUnicode20 f -(\024) 2140 4224 w +(\024) 2140 5540 w 9 /LucidaSansUnicode00 f -(The) 2269 4224 w -(ANSI/POSIX) 2471 4224 w -(Environment) 3015 4224 w +(The) 2269 5540 w +(ANSI/POSIX) 2471 5540 w +(Environment) 3015 5540 w 9 /LucidaSansUnicode20 f -(\031\031) 3564 4224 w +(\031\031) 3564 5540 w 9 /LucidaSansUnicode00 f -(,) 3622 4224 w +(,) 3622 5540 w 9 /LucidaSans-Italic f -(Plan) 3691 4224 w -(9) 3920 4224 w -(Programmer's) 4017 4224 w -(Manual,) 4688 4224 w -(Volume) 1125 4324 w -(2,) 1481 4324 w -9 /LucidaSansUnicode00 f -(AT&T) 1596 4324 w -(Bell) 1864 4324 w -(Laboratories,) 2047 4324 w -(Murray) 2649 4324 w -(Hill,) 2982 4324 w -(NJ,) 3185 4324 w -(1995.) 3338 4324 w -([Unicode]) 720 4460 w +(Plan) 3691 5540 w +(9) 3920 5540 w +(Programmer's) 4017 5540 w +(Manual,) 4688 5540 w +(Volume) 1125 5640 w +(2,) 1481 5640 w +9 /LucidaSansUnicode00 f +(AT&T) 1596 5640 w +(Bell) 1864 5640 w +(Laboratories,) 2047 5640 w +(Murray) 2649 5640 w +(Hill,) 2982 5640 w +(NJ,) 3185 5640 w +(1995.) 3338 5640 w +([Unicode]) 720 5776 w 9 /LucidaSans-Italic f -(The) 1132 4460 w -(Unicode) 1349 4460 w -(Standard,) 1749 4460 w -(Worldwide) 2239 4460 w -(Character) 2751 4460 w -(Encoding,) 3249 4460 w -(Version) 3730 4460 w -(1.0,) 4118 4460 w -(Volume) 4348 4460 w -(1,) 4733 4460 w -9 /LucidaSansUnicode00 f -(The) 4877 4460 w -(Unicode) 1125 4560 w -(Consortium,) 1506 4560 w -(Addison) 2074 4560 w -(Wesley,) 2462 4560 w -(New) 2816 4560 w -(York,) 3031 4560 w -(1991.) 3289 4560 w -([UNIX85]) 720 4696 w +(The) 1132 5776 w +(Unicode) 1349 5776 w +(Standard,) 1749 5776 w +(Worldwide) 2239 5776 w +(Character) 2751 5776 w +(Encoding,) 3249 5776 w +(Version) 3730 5776 w +(1.0,) 4118 5776 w +(Volume) 4348 5776 w +(1,) 4733 5776 w +9 /LucidaSansUnicode00 f +(The) 4877 5776 w +(Unicode) 1125 5876 w +(Consortium,) 1506 5876 w +(Addison) 2074 5876 w +(Wesley,) 2462 5876 w +(New) 2816 5876 w +(York,) 3031 5876 w +(1991.) 3289 5876 w +([UNIX85]) 720 6012 w 9 /LucidaSans-Italic f -(UNIX) 1125 4696 w -(Time-Sharing) 1391 4696 w -(System) 2058 4696 w -(Programmer's) 2423 4696 w -(Manual,) 3109 4696 w -(Research) 3516 4696 w -(Version,) 3967 4696 w -(Eighth) 4381 4696 w -(Edition,) 4713 4696 w -(Volume) 1125 4796 w -(1.) 1481 4796 w -9 /LucidaSansUnicode00 f -(AT&T) 1625 4796 w -(Bell) 1893 4796 w -(Laboratories,) 2076 4796 w -(Murray) 2678 4796 w -(Hill,) 3011 4796 w -(NJ,) 3214 4796 w -(1985.) 3367 4796 w -([Welc94]) 720 4932 w -(Brent) 1125 4932 w -(Welch,) 1408 4932 w -9 /LucidaSansUnicode20 f -(\030\030) 1747 4932 w -9 /LucidaSansUnicode00 f -(A) 1805 4932 w -(Comparison) 1922 4932 w -(of) 2505 4932 w -(Three) 2648 4932 w -(Distributed) 2954 4932 w -(File) 3499 4932 w -(System) 3706 4932 w -(Architectures:) 4071 4932 w -(Vnode,) 4734 4932 w -(Sprite,) 1125 5032 w -(and) 1435 5032 w -(Plan) 1627 5032 w -(9) 1838 5032 w +(UNIX) 1125 6012 w +(Time-Sharing) 1391 6012 w +(System) 2058 6012 w +(Programmer's) 2423 6012 w +(Manual,) 3109 6012 w +(Research) 3516 6012 w +(Version,) 3967 6012 w +(Eighth) 4381 6012 w +(Edition,) 4713 6012 w +(Volume) 1125 6112 w +(1.) 1481 6112 w +9 /LucidaSansUnicode00 f +(AT&T) 1625 6112 w +(Bell) 1893 6112 w +(Laboratories,) 2076 6112 w +(Murray) 2678 6112 w +(Hill,) 3011 6112 w +(NJ,) 3214 6112 w +(1985.) 3367 6112 w +([Welc94]) 720 6248 w +(Brent) 1125 6248 w +(Welch,) 1408 6248 w +9 /LucidaSansUnicode20 f +(\030\030) 1747 6248 w +9 /LucidaSansUnicode00 f +(A) 1805 6248 w +(Comparison) 1922 6248 w +(of) 2505 6248 w +(Three) 2648 6248 w +(Distributed) 2954 6248 w +(File) 3499 6248 w +(System) 3706 6248 w +(Architectures:) 4071 6248 w +(Vnode,) 4734 6248 w +(Sprite,) 1125 6348 w +(and) 1435 6348 w +(Plan) 1627 6348 w +(9) 1838 6348 w 9 /LucidaSansUnicode20 f -(\031\031) 1895 5032 w +(\031\031) 1895 6348 w 9 /LucidaSansUnicode00 f -(,) 1953 5032 w +(,) 1953 6348 w 9 /LucidaSans-Italic f -(Computing) 2011 5032 w -(Systems,) 2518 5032 w +(Computing) 2011 6348 w +(Systems,) 2518 6348 w 9 /LucidaSansUnicode00 f -(7\(2\),) 2930 5032 w -(pp.) 3162 5032 w -(175-199,) 3334 5032 w -(Spring,) 3786 5032 w -(1994.) 4125 5032 w -([Wint95]) 720 5168 w -(Phil) 1125 5168 w -(Winterbottom,) 1329 5168 w -9 /LucidaSansUnicode20 f -(\030\030) 2000 5168 w -9 /LucidaSansUnicode00 f -(Alef) 2058 5168 w -(Language) 2276 5168 w -(Reference) 2745 5168 w -(Manual) 3221 5168 w +(7\(2\),) 2930 6348 w +(pp.) 3162 6348 w +(175-199,) 3334 6348 w +(Spring,) 3786 6348 w +(1994.) 4125 6348 w +([Wint95]) 720 6484 w +(Phil) 1125 6484 w +(Winterbottom,) 1329 6484 w +9 /LucidaSansUnicode20 f +(\030\030) 2000 6484 w +9 /LucidaSansUnicode00 f +(Alef) 2058 6484 w +(Language) 2276 6484 w +(Reference) 2745 6484 w +(Manual) 3221 6484 w 9 /LucidaSansUnicode20 f -(\031\031) 3536 5168 w +(\031\031) 3536 6484 w 9 /LucidaSansUnicode00 f -(,) 3594 5168 w +(,) 3594 6484 w 9 /LucidaSans-Italic f -(Plan) 3670 5168 w -(9) 3906 5168 w -(Programmer's) 4010 5168 w -(Manual,) 4688 5168 w -(Volume) 1125 5268 w -(2,) 1481 5268 w -9 /LucidaSansUnicode00 f -(AT&T) 1596 5268 w -(Bell) 1864 5268 w -(Laboratories,) 2047 5268 w -(Murray) 2649 5268 w -(Hill,) 2982 5268 w -(NJ,) 3185 5268 w -(1995.) 3338 5268 w +(Plan) 3670 6484 w +(9) 3906 6484 w +(Programmer's) 4010 6484 w +(Manual,) 4688 6484 w +(Volume) 1125 6584 w +(2,) 1481 6584 w +9 /LucidaSansUnicode00 f +(AT&T) 1596 6584 w +(Bell) 1864 6584 w +(Laboratories,) 2047 6584 w +(Murray) 2649 6584 w +(Hill,) 2982 6584 w +(NJ,) 3185 6584 w +(1995.) 3338 6584 w cleartomark showpage saveobj restore --- /sys/doc/port.ms Thu Feb 21 23:07:07 2013 +++ /sys/doc/port.ms Mon Jul 22 21:35:50 2013 @@ -219,6 +219,28 @@ for more information. . .SH +The Routerboard 450G operating system +.PP +This is a CPU kernel that runs on the Mikrotik Routerboard RB450G, +which contains a MIPS 24K CPU +(the Atheros 7161), which implements the MIPS32R2 architecture. +It has 256MB of RAM and a serial port. +The CPU lacks the 64-bit instructions of previous MIPS systems (e.g., +SGI Challenge and Carrera). +There is no hardware floating-point, so we emulate the instructions. +Only the first of the five Gigabit Ethernet ports is currently supported; +the other four are connected via an internal switch. +To avoid a bug in the CPU (erratum 48), we run the caches write-through, +rather than write-back, and compiled +.CW /mips +with a +.I vl +modified to emit enough NOPs to avoid three consecutive store instructions +(see +.CW /sys/src/cmd/vl/noop.c +to enable this). +. +.SH The PowerPC operating system .PP We have a version of the system that runs on the PowerPC @@ -235,6 +257,7 @@ .PP We have ports to the Xilinx Virtex 4 and 5 FPGAs which use PowerPC 405 and 440 processors, respectively. +. .SH The Marvell Kirkwood operating system .PP --- /sys/doc/port.ps Thu Mar 14 01:16:12 2013 +++ /sys/doc/port.ps Mon Jul 22 21:35:50 2013 @@ -3127,2298 +3127,3 @@ 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndResource -%!PS-Adobe-2.0 -%%Version: 0.1 -%%Creator: troff, Plan 9 edition -%%Pages: (atend) -%%EndComments -% -% Version 3.3.2 prologue for troff files. -% - -/#copies 1 store -/aspectratio 1 def -/formsperpage 1 def -/landscape false def -/linewidth .3 def -/magnification 1 def -/margin 0 def -/orientation 0 def -/resolution 720 def -/rotation 1 def -/xoffset 0 def -/yoffset 0 def - -/roundpage true def -/useclippath true def -/pagebbox [0 0 612 792] def - -/R /Times-Roman def -/I /Times-Italic def -/B /Times-Bold def -/BI /Times-BoldItalic def -/H /Helvetica def -/HI /Helvetica-Oblique def -/HB /Helvetica-Bold def -/HX /Helvetica-BoldOblique def -/CW /Courier def -/CO /Courier def -/CI /Courier-Oblique def -/CB /Courier-Bold def -/CX /Courier-BoldOblique def -/PA /Palatino-Roman def -/PI /Palatino-Italic def -/PB /Palatino-Bold def -/PX /Palatino-BoldItalic def -/Hr /Helvetica-Narrow def -/Hi /Helvetica-Narrow-Oblique def -/Hb /Helvetica-Narrow-Bold def -/Hx /Helvetica-Narrow-BoldOblique def -/KR /Bookman-Light def -/KI /Bookman-LightItalic def -/KB /Bookman-Demi def -/KX /Bookman-DemiItalic def -/AR /AvantGarde-Book def -/AI /AvantGarde-BookOblique def -/AB /AvantGarde-Demi def -/AX /AvantGarde-DemiOblique def -/NR /NewCenturySchlbk-Roman def -/NI /NewCenturySchlbk-Italic def -/NB /NewCenturySchlbk-Bold def -/NX /NewCenturySchlbk-BoldItalic def -/ZD /ZapfDingbats def -/ZI /ZapfChancery-MediumItalic def -/S /S def -/S1 /S1 def -/GR /Symbol def - -/inch {72 mul} bind def -/min {2 copy gt {exch} if pop} bind def - -/setup { - counttomark 2 idiv {def} repeat pop - - landscape {/orientation 90 orientation add def} if - /scaling 72 resolution div def - linewidth setlinewidth - 1 setlinecap - - pagedimensions - xcenter ycenter translate - orientation rotation mul rotate - width 2 div neg height 2 div translate - xoffset inch yoffset inch neg translate - margin 2 div dup neg translate - magnification dup aspectratio mul scale - scaling scaling scale - - addmetrics - 0 0 moveto -} def - -/pagedimensions { - useclippath userdict /gotpagebbox known not and { - /pagebbox [clippath pathbbox newpath] def - roundpage currentdict /roundpagebbox known and {roundpagebbox} if - } if - pagebbox aload pop - 4 -1 roll exch 4 1 roll 4 copy - landscape {4 2 roll} if - sub /width exch def - sub /height exch def - add 2 div /xcenter exch def - add 2 div /ycenter exch def - userdict /gotpagebbox true put -} def - -/addmetrics { - /Symbol /S null Sdefs cf - /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf -} def - -/pagesetup { - /page exch def - currentdict /pagedict known currentdict page known and { - page load pagedict exch get cvx exec - } if -} def - -/decodingdefs [ - {counttomark 2 idiv {y moveto show} repeat} - {neg /y exch def counttomark 2 idiv {y moveto show} repeat} - {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} - {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} - {counttomark 2 idiv {y moveto show} repeat} - {neg setfunnytext} -] def - -/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def - -/w {neg moveto show} bind def -/m {neg dup /y exch def moveto} bind def -/done {/lastpage where {pop lastpage} if} def - -/f { - dup /font exch def findfont exch - dup /ptsize exch def scaling div dup /size exch def scalefont setfont - linewidth ptsize mul scaling 10 mul div setlinewidth - /spacewidth ( ) stringwidth pop def -} bind def - -/changefont { - /fontheight exch def - /fontslant exch def - currentfont [ - 1 0 - fontheight ptsize div fontslant sin mul fontslant cos div - fontheight ptsize div - 0 0 - ] makefont setfont -} bind def - -/sf {f} bind def - -/cf { - dup length 2 idiv - /entries exch def - /chtab exch def - /newencoding exch def - /newfont exch def - - findfont dup length 1 add dict - /newdict exch def - {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall - - newencoding type /arraytype eq {newdict /Encoding newencoding put} if - - newdict /Metrics entries dict put - newdict /Metrics get - begin - chtab aload pop - 1 1 entries {pop def} for - newfont newdict definefont pop - end -} bind def - -% -% A few arrays used to adjust reference points and character widths in some -% of the printer resident fonts. If square roots are too high try changing -% the lines describing /radical and /radicalex to, -% -% /radical [0 -75 550 0] -% /radicalex [-50 -75 500 0] -% -% Move braceleftbt a bit - default PostScript character is off a bit. -% - -/Sdefs [ - /bracketlefttp [201 500] - /bracketleftbt [201 500] - /bracketrighttp [-81 380] - /bracketrightbt [-83 380] - /braceleftbt [203 490] - /bracketrightex [220 -125 500 0] - /radical [0 0 550 0] - /radicalex [-50 0 500 0] - /parenleftex [-20 -170 0 0] - /integral [100 -50 500 0] - /infinity [10 -75 730 0] -] def - -/S1defs [ - /underscore [0 80 500 0] - /endash [7 90 650 0] -] def -% -% Tries to round clipping path dimensions, as stored in array pagebbox, so they -% match one of the known sizes in the papersizes array. Lower left coordinates -% are always set to 0. -% - -/roundpagebbox { - 7 dict begin - /papersizes [8.5 inch 11 inch 14 inch 17 inch] def - - /mappapersize { - /val exch def - /slop .5 inch def - /diff slop def - /j 0 def - 0 1 papersizes length 1 sub { - /i exch def - papersizes i get val sub abs - dup diff le {/diff exch def /j i def} {pop} ifelse - } for - diff slop lt {papersizes j get} {val} ifelse - } def - - pagebbox 0 0 put - pagebbox 1 0 put - pagebbox dup 2 get mappapersize 2 exch put - pagebbox dup 3 get mappapersize 3 exch put - end -} bind def - -%%EndProlog -%%BeginSetup -mark -% -% Encoding vector and redefinition of findfont for the ISO Latin1 standard. -% The 18 characters missing from ROM based fonts on older printers are noted -% below. -% - -/ISOLatin1Encoding [ - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /space - /exclam - /quotedbl - /numbersign - /dollar - /percent - /ampersand - /quoteright - /parenleft - /parenright - /asterisk - /plus - /comma - /minus - /period - /slash - /zero - /one - /two - /three - /four - /five - /six - /seven - /eight - /nine - /colon - /semicolon - /less - /equal - /greater - /question - /at - /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 - /bracketleft - /backslash - /bracketright - /asciicircum - /underscore - /quoteleft - /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 - /braceleft - /bar - /braceright - /asciitilde - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /.notdef - /dotlessi - /grave - /acute - /circumflex - /tilde - /macron - /breve - /dotaccent - /dieresis - /.notdef - /ring - /cedilla - /.notdef - /hungarumlaut - /ogonek - /caron - /space - /exclamdown - /cent - /sterling - /currency - /yen - /brokenbar % missing - /section - /dieresis - /copyright - /ordfeminine - /guillemotleft - /logicalnot - /hyphen - /registered - /macron - /degree % missing - /plusminus % missing - /twosuperior % missing - /threesuperior % missing - /acute - /mu % missing - /paragraph - /periodcentered - /cedilla - /onesuperior % missing - /ordmasculine - /guillemotright - /onequarter % missing - /onehalf % missing - /threequarters % missing - /questiondown - /Agrave - /Aacute - /Acircumflex - /Atilde - /Adieresis - /Aring - /AE - /Ccedilla - /Egrave - /Eacute - /Ecircumflex - /Edieresis - /Igrave - /Iacute - /Icircumflex - /Idieresis - /Eth % missing - /Ntilde - /Ograve - /Oacute - /Ocircumflex - /Otilde - /Odieresis - /multiply % missing - /Oslash - /Ugrave - /Uacute - /Ucircumflex - /Udieresis - /Yacute % missing - /Thorn % missing - /germandbls - /agrave - /aacute - /acircumflex - /atilde - /adieresis - /aring - /ae - /ccedilla - /egrave - /eacute - /ecircumflex - /edieresis - /igrave - /iacute - /icircumflex - /idieresis - /eth % missing - /ntilde - /ograve - /oacute - /ocircumflex - /otilde - /odieresis - /divide % missing - /oslash - /ugrave - /uacute - /ucircumflex - /udieresis - /yacute % missing - /thorn % missing - /ydieresis -] def - -/NewFontDirectory FontDirectory maxlength dict def - -% -% Apparently no guarantee findfont is defined in systemdict so the obvious -% -% systemdict /findfont get exec -% -% can generate an error. So far the only exception is a VT600 (version 48.0). -% - -userdict /@RealFindfont known not { - userdict begin - /@RealFindfont systemdict begin /findfont load end def - end -} if - -/findfont { - dup NewFontDirectory exch known not { - dup - %dup systemdict /findfont get exec % not always in systemdict - dup userdict /@RealFindfont get exec - dup /Encoding get StandardEncoding eq { - dup length dict begin - {1 index /FID ne {def}{pop pop} ifelse} forall - /Encoding ISOLatin1Encoding def - currentdict - end - /DummyFontName exch definefont - } if - NewFontDirectory 3 1 roll put - } if - NewFontDirectory exch get -} bind def - -%%Patch from lp -%%EndPatch from lp - -setup -%%EndSetup -%%Page: 1 1 -/saveobj save def -mark -1 pagesetup -12 /LucidaSans-Demi f -(The) 2328 1230 w -(Various Ports) 2599 1230 w -10 /LucidaSansUnicode00 f -(This) 970 1836 w -(document) 1229 1836 w -(collects) 1768 1836 w -(comments) 2187 1836 w -(about) 2745 1836 w -(the) 3077 1836 w -(various) 3286 1836 w -(architectures) 3691 1836 w -(supported) 4374 1836 w -(by) 4925 1836 w -(Plan) 720 1956 w -(9.) 975 1956 w -(The) 1156 1956 w -(system) 1391 1956 w -(tries) 1785 1956 w -(to) 2053 1956 w -(hide) 2205 1956 w -(most) 2469 1956 w -(of) 2765 1956 w -(the) 2916 1956 w -(differences) 3124 1956 w -(between) 3716 1956 w -(machines,) 4176 1956 w -(so) 4720 1956 w -(the) 4885 1956 w -(machines) 720 2076 w -(as) 1219 2076 w -(seen) 1366 2076 w -(by) 1632 2076 w -(a) 1788 2076 w -(Plan) 1884 2076 w -(9) 2126 2076 w -(user) 2230 2076 w -(look) 2481 2076 w -(different) 2731 2076 w -(from) 3190 2076 w -(how) 3463 2076 w -(they) 3704 2076 w -(are) 3952 2076 w -(perceived) 4145 2076 w -(through) 4653 2076 w -(commercial) 720 2196 w -(software.) 1324 2196 w -(Also,) 1848 2196 w -(because) 2135 2196 w -(we) 2574 2196 w -(are) 2752 2196 w -(a) 2948 2196 w -(small) 3047 2196 w -(group,) 3348 2196 w -(we) 3713 2196 w -(couldn) 3890 2196 w -10 /LucidaSansUnicode20 f -(\031) 4218 2196 w -10 /LucidaSansUnicode00 f -(t) 4250 2196 w -(do) 4331 2196 w -(everything:) 4499 2196 w -(exploit) 720 2316 w -(every) 1111 2316 w -(optimization,) 1423 2316 w -(support) 2123 2316 w -(every) 2556 2316 w -(model,) 2868 2316 w -(drive) 3257 2316 w -(every) 3554 2316 w -(device.) 3867 2316 w -(This) 4294 2316 w -(document) 4555 2316 w -(records) 720 2436 w -(what) 1123 2436 w -(we) 1393 2436 w -10 /LucidaSans-Italic f -(have) 1565 2436 w -10 /LucidaSansUnicode00 f -(done.) 1834 2436 w -(The) 2178 2436 w -(first) 2397 2436 w -(section) 2630 2436 w -(discusses) 3015 2436 w -(the) 3518 2436 w -(compiler/assembler/loader) 3711 2436 w -(suite) 720 2556 w -(for) 996 2556 w -(each) 1176 2556 w -(machine.) 1441 2556 w -(The) 1954 2556 w -(second) 2176 2556 w -(talks) 2561 2556 w -(about) 2832 2556 w -(the) 3151 2556 w -(operating) 3348 2556 w -(system) 3856 2556 w -(implemented) 4238 2556 w -(on) 4917 2556 w -(each of the various machines.) 720 2676 w -10 /LucidaSans-Demi f -(The MIPS compiler) 720 2916 w -10 /LucidaSansUnicode00 f -(This) 970 3072 w -(compiler) 1216 3072 w -(generates) 1680 3072 w -(code) 2197 3072 w -(for) 2469 3072 w -(the) 2650 3072 w -(R2000,) 2847 3072 w -(R3000,) 3236 3072 w -(and) 3625 3072 w -(R4000) 3847 3072 w -(machines) 4204 3072 w -(config\255) 4705 3072 w -(ured) 720 3192 w -(to) 1021 3192 w -(be) 1198 3192 w -(big-endians.) 1396 3192 w -(The) 2129 3192 w -(compiler) 2389 3192 w -(generates) 2891 3192 w -(no) 3446 3192 w -(R4000-specific) 3648 3192 w -(instructions) 4467 3192 w -(although) 720 3312 w -(the) 1188 3312 w -(assembler) 1381 3312 w -(and) 1914 3312 w -(loader) 2132 3312 w -(support) 2475 3312 w -(the) 2891 3312 w -(new) 3084 3312 w -(user-mode) 3317 3312 w -(instructions.) 3896 3312 w -(There) 4571 3312 w -(are) 4888 3312 w -(options) 720 3432 w -(to) 1126 3432 w -(generate) 1266 3432 w -(code) 1733 3432 w -(for) 2006 3432 w -(little-endian) 2186 3432 w -(machines.) 2829 3432 w -(Considering) 3393 3432 w -(its) 4019 3432 w -(speed,) 4177 3432 w -(the) 4539 3432 w -(Plan) 4735 3432 w -(9) 4977 3432 w -(compiler) 720 3552 w -(generates) 1197 3552 w -(good) 1727 3552 w -(code,) 2028 3552 w -(but) 2345 3552 w -(the) 2561 3552 w -(commercial) 2770 3552 w -(MIPS) 3383 3552 w -(compiler) 3661 3552 w -(with) 4139 3552 w -(all) 4399 3552 w -(the) 4567 3552 w -(stops) 4777 3552 w -(pulled) 720 3672 w -(out) 1073 3672 w -(consistently) 1284 3672 w -(beats) 1913 3672 w -(it) 2226 3672 w -(by) 2343 3672 w -(20%) 2509 3672 w -(or) 2752 3672 w -(so,) 2904 3672 w -(sometimes) 3098 3672 w -(more.) 3675 3672 w -(Since) 4040 3672 w -(ours) 4342 3672 w -(compiles) 4607 3672 w -(about) 720 3792 w -(10) 1033 3792 w -(times) 1194 3792 w -(faster) 1495 3792 w -(and) 1807 3792 w -(we) 2022 3792 w -(spend) 2190 3792 w -(most) 2520 3792 w -(of) 2797 3792 w -(our) 2930 3792 w -(time) 3130 3792 w -(compiling) 3381 3792 w -(anyway,) 3896 3792 w -(we) 4317 3792 w -(are) 4486 3792 w -(content) 4674 3792 w -(with the tradeoff.) 720 3912 w -(The) 970 4068 w -(compiler) 1190 4068 w -(is) 1652 4068 w -(solid:) 1771 4068 w -(we) 2075 4068 w -10 /LucidaSansUnicode20 f -(\031) 2208 4068 w -10 /LucidaSansUnicode00 f -(ve) 2240 4068 w -(used) 2387 4068 w -(it) 2658 4068 w -(for) 2763 4068 w -(several) 2941 4068 w -(big) 3320 4068 w -(projects) 3513 4068 w -(and,) 3942 4068 w -(of) 4193 4068 w -(course,) 4330 4068 w -(all) 4723 4068 w -(our) 4876 4068 w -(applications) 720 4188 w -(run) 1345 4188 w -(under) 1550 4188 w -(it.) 1874 4188 w -(The) 2044 4188 w -(behavior) 2264 4188 w -(of) 2722 4188 w -(floating-point) 2859 4188 w -(programs) 3580 4188 w -(is) 4086 4188 w -(much) 4205 4188 w -(like) 4512 4188 w -(on) 4723 4188 w -(the) 4885 4188 w -(68040:) 720 4308 w -(the) 1101 4308 w -(operating) 1290 4308 w -(system) 1790 4308 w -(emulates) 2164 4308 w -(where) 2637 4308 w -(necessary) 2963 4308 w -(to) 3472 4308 w -(get) 3604 4308 w -(past) 3793 4308 w -(non-trapping) 4033 4308 w -(under\255) 4723 4308 w -(flow) 720 4428 w -(and) 963 4428 w -(overflow,) 1182 4428 w -(but) 1666 4428 w -(does) 1866 4428 w -(not) 2135 4428 w -(handle) 2333 4428 w -(gradual) 2698 4428 w -(underflow) 3103 4428 w -(or) 3629 4428 w -(denormalized) 3769 4428 w -(numbers) 4472 4428 w -(or) 4938 4428 w -(not-a-numbers.) 720 4548 w -10 /LucidaSans-Demi f -(The SPARC compiler) 720 4788 w -10 /LucidaSansUnicode00 f -(The) 970 4944 w -(SPARC) 1195 4944 w -(compiler) 1550 4944 w -(is) 2018 4944 w -(also) 2143 4944 w -(solid) 2384 4944 w -(and) 2662 4944 w -(fast,) 2887 4944 w -(although) 3144 4944 w -(we) 3619 4944 w -(haven) 3797 4944 w -10 /LucidaSansUnicode20 f -(\031) 4084 4944 w -10 /LucidaSansUnicode00 f -(t) 4116 4944 w -(used) 4198 4944 w -(it) 4475 4944 w -(for) 4586 4944 w -(a) 4770 4944 w -(few) 4870 4944 w -(years,) 720 5064 w -(due) 1041 5064 w -(to) 1256 5064 w -(a) 1388 5064 w -(lack) 1477 5064 w -(of) 1704 5064 w -(current) 1836 5064 w -(hardware.) 2220 5064 w -(We) 2768 5064 w -(have) 2944 5064 w -(seen) 3203 5064 w -(it) 3462 5064 w -(do) 3562 5064 w -(much) 3719 5064 w -(better) 4020 5064 w -(than) 4343 5064 w -(GCC) 4592 5064 w -(with) 4835 5064 w -(all the optimizations, but on average it is probably about the same.) 720 5184 w -(We) 970 5340 w -(used) 1152 5340 w -(to) 1424 5340 w -(run) 1562 5340 w -(some) 1767 5340 w -(old) 2069 5340 w -(SPARC) 2263 5340 w -(machines) 2614 5340 w -(with) 3114 5340 w -(no) 3360 5340 w -(multiply) 3524 5340 w -(or) 3959 5340 w -(divide) 4102 5340 w -(instructions,) 4435 5340 w -(so) 720 5460 w -(the) 868 5460 w -(compiler) 1059 5460 w -(does) 1518 5460 w -(not) 1785 5460 w -(produce) 1981 5460 w -(them) 2414 5460 w -(by) 2698 5460 w -(default.) 2849 5460 w -(Instead) 3288 5460 w -(it) 3676 5460 w -(calls) 3777 5460 w -(internal) 4027 5460 w -(subroutines.) 4433 5460 w -(A) 720 5580 w -(loader) 824 5580 w -(flag,) 1164 5580 w -10 /LucidaTypewriter f -(-M) 1414 5580 w -10 /LucidaSansUnicode00 f -(,) 1558 5580 w -(causes) 1625 5580 w -(the) 1986 5580 w -(instructions) 2176 5580 w -(to) 2785 5580 w -(be) 2919 5580 w -(emitted.) 3074 5580 w -(The) 3545 5580 w -(operating) 3762 5580 w -(system) 4264 5580 w -(has) 4640 5580 w -(trap) 4844 5580 w -(code) 720 5700 w -(to) 985 5700 w -(emulate) 1117 5700 w -(them) 1539 5700 w -(if) 1821 5700 w -(necessary,) 1921 5700 w -(but) 2462 5700 w -(the) 2657 5700 w -(traps) 2845 5700 w -(are) 3125 5700 w -(slower) 3310 5700 w -(than) 3658 5700 w -(emulating) 3907 5700 w -(them) 4425 5700 w -(in) 4706 5700 w -(user) 4830 5700 w -(mode.) 720 5820 w -(In) 1106 5820 w -(any) 1246 5820 w -(modern) 1464 5820 w -(lab,) 1889 5820 w -(in) 2117 5820 w -(which) 2257 5820 w -(SPARCS) 2587 5820 w -(have) 3000 5820 w -(the) 3275 5820 w -(instructions,) 3480 5820 w -(it) 4135 5820 w -(would) 4251 5820 w -(be) 4593 5820 w -(worth) 4762 5820 w -(enabling the) 720 5940 w -10 /LucidaTypewriter f -(-M) 1357 5940 w -10 /LucidaSansUnicode00 f -(flag by default.) 1533 5940 w -(The floating point story is the same as on the MIPS.) 970 6096 w -10 /LucidaSans-Demi f -(The Intel i386 compiler) 720 6336 w -10 /LucidaSansUnicode00 f -(This) 970 6492 w -(is) 1218 6492 w -(really) 1341 6492 w -(an) 1646 6492 w -10 /LucidaSans-Italic f -(x) 1806 6492 w -10 /LucidaSansUnicode00 f -(86) 1860 6492 w -(compiler,) 2030 6492 w -(for) 2529 6492 w -10 /LucidaSans-Italic f -(x) 2712 6492 w -10 /LucidaSansUnicode00 f -(>2.) 2766 6492 w -(It) 3017 6492 w -(works) 3127 6492 w -(only) 3459 6492 w -(if) 3707 6492 w -(the) 3817 6492 w -(machine) 4016 6492 w -(is) 4468 6492 w -(in) 4592 6492 w -(32-bit) 4727 6492 w -(protected) 720 6612 w -(mode.) 1225 6612 w -(It) 1602 6612 w -(is) 1708 6612 w -(solid) 1828 6612 w -(and) 2101 6612 w -(generates) 2321 6612 w -(tolerable) 2837 6612 w -(code;) 3304 6612 w -(it) 3607 6612 w -(is) 3713 6612 w -(our) 3833 6612 w -(main) 4037 6612 w -(compiler) 4316 6612 w -(these) 4778 6612 w -(days.) 720 6732 w -(Floating) 970 6888 w -(point) 1407 6888 w -(is) 1707 6888 w -(well-behaved,) 1835 6888 w -(but) 2571 6888 w -(the) 2781 6888 w -(compiler) 2984 6888 w -(assumes) 3456 6888 w -(i387-compatible) 3924 6888 w -(hard\255) 4786 6888 w -(ware) 720 7008 w -(to) 987 7008 w -(execute) 1122 7008 w -(the) 1538 7008 w -(instructions.) 1730 7008 w -(With) 2404 7008 w -(387) 2655 7008 w -(hardware,) 2881 7008 w -(the) 3400 7008 w -(system) 3592 7008 w -(does) 3969 7008 w -(the) 4237 7008 w -(full) 4429 7008 w -(IEEE) 4623 7008 w -(754) 4851 7008 w -(job,) 720 7128 w -(just) 939 7128 w -(like) 1152 7128 w -(the) 1358 7128 w -(MC68881.) 1547 7128 w -(By) 2115 7128 w -(default,) 2259 7128 w -(the) 2664 7128 w -(libraries) 2853 7128 w -(don) 3281 7128 w -10 /LucidaSansUnicode20 f -(\031) 3467 7128 w -10 /LucidaSansUnicode00 f -(t) 3499 7128 w -(use) 3570 7128 w -(the) 3773 7128 w -(387) 3962 7128 w -(built-ins) 4185 7128 w -(for) 4639 7128 w -(tran\255) 4812 7128 w -(scendentals.) 720 7248 w -(If you want them, build the code in) 1389 7248 w -10 /LucidaTypewriter f -(/sys/src/libc/386/387) 3120 7248 w -10 /LucidaSansUnicode00 f -(.) 4632 7248 w -cleartomark -showpage -saveobj restore -%%EndPage: 1 1 -%%Page: 2 2 -/saveobj save def -mark -2 pagesetup -10 /LucidaSansUnicode00 f -(\255 2 \255) 2783 480 w -10 /LucidaSans-Demi f -(The AMD64 compiler) 720 840 w -10 /LucidaSansUnicode00 f -(The) 970 996 w -(AMD64) 1186 996 w -(compiler) 1577 996 w -(has) 2035 996 w -(been) 2239 996 w -(used) 2512 996 w -(to) 2780 996 w -(build) 2914 996 w -(64-bit) 3196 996 w -(variants) 3545 996 w -(of) 3963 996 w -(Plan) 4097 996 w -(9.) 4334 996 w -(It) 4497 996 w -(seems) 4599 996 w -(to) 4942 996 w -(be reasonably solid.) 720 1116 w -10 /LucidaSans-Demi f -(The PowerPC compiler) 720 1356 w -10 /LucidaSansUnicode00 f -(The) 970 1512 w -(PowerPC) 1193 1512 w -(compiler) 1649 1512 w -(supports) 2114 1512 w -(the) 2586 1512 w -(32-bit) 2784 1512 w -(PowerPC) 3140 1512 w -(architecture) 3597 1512 w -(only;) 4218 1512 w -(it) 4497 1512 w -(does) 4606 1512 w -(not) 4880 1512 w -(support) 720 1632 w -(either) 1151 1632 w -(the) 1485 1632 w -(64-bit) 1693 1632 w -(extensions) 2058 1632 w -(or) 2636 1632 w -(the) 2790 1632 w -(POWER) 2997 1632 w -(compatibility) 3385 1632 w -(instructions.) 4065 1632 w -(It) 4754 1632 w -(has) 4872 1632 w -(been) 720 1752 w -(used) 990 1752 w -(for) 1255 1752 w -(production) 1427 1752 w -(operating) 1990 1752 w -(system) 2489 1752 w -(work) 2862 1752 w -(on) 3132 1752 w -(the) 3288 1752 w -(603,) 3476 1752 w -(603e,) 3730 1752 w -(604e,) 4040 1752 w -(821,) 4350 1752 w -(823,) 4605 1752 w -(and) 4860 1752 w -(860,) 720 1872 w -(and) 1000 1872 w -(experimental) 1239 1872 w -(work) 1936 1872 w -(on) 2232 1872 w -(the) 2414 1872 w -(405,) 2628 1872 w -(440) 2908 1872 w -(and) 3155 1872 w -(450.) 3393 1872 w -(On) 3704 1872 w -(the) 3902 1872 w -(8xx) 4115 1872 w -(floating-point) 4358 1872 w -(instructions) 720 1992 w -(must) 1342 1992 w -(be) 1634 1992 w -(emulated.) 1802 1992 w -(Instruction) 2366 1992 w -(scheduling) 2937 1992 w -(is) 3513 1992 w -(not) 3642 1992 w -(implemented;) 3851 1992 w -(otherwise) 4570 1992 w -(the) 720 2112 w -(code) 920 2112 w -(generated) 1196 2112 w -(is) 1729 2112 w -(similar) 1853 2112 w -(to) 2224 2112 w -(that) 2366 2112 w -(for) 2601 2112 w -(the) 2784 2112 w -(other) 2983 2112 w -(load-store) 3284 2112 w -(architectures.) 3840 2112 w -(The) 4577 2112 w -(com\255) 4802 2112 w -(piler) 720 2232 w -(makes) 982 2232 w -(little) 1339 2232 w -(or) 1600 2232 w -(no) 1746 2232 w -(use) 1914 2232 w -(of) 2128 2232 w -(unusual) 2271 2232 w -(PowerPC) 2699 2232 w -(features) 3158 2232 w -(such) 3598 2232 w -(as) 3869 2232 w -(the) 4020 2232 w -(counter) 4220 2232 w -(register,) 4635 2232 w -(several) 720 2352 w -(condition) 1119 2352 w -(code) 1633 2352 w -(registers,) 1923 2352 w -(and) 2438 2352 w -(multiply-accumulate) 2677 2352 w -(instructions,) 3739 2352 w -(but) 4403 2352 w -(they) 4623 2352 w -(are) 4888 2352 w -(sometimes used by assembly language routines in the libraries.) 720 2472 w -10 /LucidaSans-Demi f -(The PowerPC64 compiler) 720 2712 w -10 /LucidaSansUnicode00 f -(The) 970 2868 w -(PowerPC64) 1204 2868 w -(compiler) 1797 2868 w -(supports) 2273 2868 w -(the) 2755 2868 w -(64-bit) 2963 2868 w -(PowerPC) 3330 2868 w -(architecture) 3798 2868 w -(only.) 4430 2868 w -(It) 4752 2868 w -(has) 4872 2868 w -(been lightly used on IBM) 720 2988 w -10 /LucidaSansUnicode20 f -(\031) 1913 2988 w -10 /LucidaSansUnicode00 f -(s Blue Gene machines.) 1945 2988 w -10 /LucidaSans-Demi f -(The ARM compiler) 720 3228 w -10 /LucidaSansUnicode00 f -(The) 970 3384 w -(ARM) 1194 3384 w -(compiler) 1455 3384 w -(is) 1921 3384 w -(fairly) 2044 3384 w -(solid;) 2330 3384 w -(it) 2638 3384 w -(has) 2747 3384 w -(been) 2958 3384 w -(used) 3238 3384 w -(for) 3513 3384 w -(some) 3695 3384 w -(production) 4000 3384 w -(operating) 4574 3384 w -(system) 720 3504 w -(work) 1103 3504 w -(including) 1383 3504 w -(Inferno) 1875 3504 w -(and) 2266 3504 w -(the) 2489 3504 w -(Plan) 2687 3504 w -(9) 2931 3504 w -(kernel) 3037 3504 w -(for) 3382 3504 w -(the) 3564 3504 w -(iPAQ,) 3762 3504 w -(which) 4068 3504 w -(uses) 4392 3504 w -(a) 4655 3504 w -(Stron\255) 4752 3504 w -(gArm) 720 3624 w -(SA1,) 1023 3624 w -(and) 1279 3624 w -(the) 1497 3624 w -(Sheevaplug,) 1691 3624 w -(Guruplug,) 2313 3624 w -(Dreamplug,) 2837 3624 w -(Gumstix) 3444 3624 w -(Overo,) 3888 3624 w -(Compulab) 4247 3624 w -(Trim\255) 4781 3624 w -(slice) 720 3744 w -(and) 986 3744 w -(others.) 1216 3744 w -(The) 1638 3744 w -(compiler) 1869 3744 w -(supports) 2342 3744 w -(the) 2820 3744 w -(ARMv4) 3024 3744 w -(and) 3406 3744 w -(later) 3635 3744 w -(32-bit) 3902 3744 w -(architectures;) 4264 3744 w -(it) 4974 3744 w -(does) 720 3864 w -(not) 984 3864 w -(support) 1177 3864 w -(the) 1588 3864 w -(Thumb) 1776 3864 w -(instruction) 2152 3864 w -(sets.) 2707 3864 w -(It) 2999 3864 w -(has) 3098 3864 w -(been) 3299 3864 w -(used) 3569 3864 w -(on) 3834 3864 w -(ARM7500FE,) 3990 3864 w -(ARM926) 4633 3864 w -(and) 720 3984 w -(Cortex-A8) 946 3984 w -(and) 1507 3984 w -(-A9) 1733 3984 w -(processors) 1969 3984 w -(and) 2542 3984 w -(the) 2768 3984 w -(Strongarm) 2969 3984 w -(SA1) 3521 3984 w -(core) 3753 3984 w -(machines.) 4008 3984 w -(The) 4576 3984 w -(com\255) 4802 3984 w -(piler) 720 4104 w -(generates) 978 4104 w -(instructions) 1494 4104 w -(for) 2107 4104 w -(ARM) 2286 4104 w -(7500) 2545 4104 w -(FPA) 2838 4104 w -(floating-point) 3057 4104 w -(coprocessor) 3780 4104 w -(1) 4409 4104 w -(by) 4513 4104 w -(default,) 4669 4104 w -(but) 720 4224 w -10 /LucidaTypewriter f -(5l) 914 4224 w -(-f) 1090 4224 w -10 /LucidaSansUnicode00 f -(instead generates VFP instructions for coprocessors 10 and 11.) 1266 4224 w -10 /LucidaSans-Demi f -(The IBM PC operating system) 720 4464 w -10 /LucidaSansUnicode00 f -(The) 970 4620 w -(PC) 1196 4620 w -(version) 1365 4620 w -(of) 1762 4620 w -(Plan) 1905 4620 w -(9) 2151 4620 w -(can) 2259 4620 w -(boot) 2473 4620 w -(via) 2741 4620 w -(PXE) 2923 4620 w -(or) 3141 4620 w -(directly) 3289 4620 w -(from) 3693 4620 w -(a) 3971 4620 w -(disk) 4072 4620 w -(created) 4319 4620 w -(by) 4724 4620 w -(the) 4885 4620 w -10 /LucidaTypewriter f -(format) 720 4740 w -10 /LucidaSansUnicode00 f -(command;) 1192 4740 w -(see) 1742 4740 w -10 /LucidaSans-Italic f -(prep) 1945 4740 w -10 /LucidaSansUnicode00 f -(\(8\).) 2168 4740 w -(Plan) 2401 4740 w -(9) 2642 4740 w -(runs) 2745 4740 w -(in) 3001 4740 w -(32-bit) 3132 4740 w -(mode) 3485 4740 w -10 /LucidaSansUnicode20 f -(\024) 3758 4740 w -10 /LucidaSansUnicode00 f -(which) 3858 4740 w -(requires) 4178 4740 w -(a) 4616 4740 w -(386) 4710 4740 w -(or) 4938 4740 w -(later) 720 4860 w -(model) 977 4860 w -(x86) 1318 4860 w -(processor) 1544 4860 w -10 /LucidaSansUnicode20 f -(\024) 2020 4860 w -10 /LucidaSansUnicode00 f -(and) 2120 4860 w -(has) 2339 4860 w -(an) 2546 4860 w -(interrupt-driven) 2702 4860 w -(I/O) 3530 4860 w -(system,) 3730 4860 w -(so) 4142 4860 w -(it) 4294 4860 w -(does) 4400 4860 w -(not) 4671 4860 w -(use) 4871 4860 w -(the) 720 4980 w -(BIOS) 917 4980 w -(\(except) 1178 4980 w -(for) 1577 4980 w -(a) 1758 4980 w -(small) 1855 4980 w -(portion) 2154 4980 w -(of) 2550 4980 w -(the) 2689 4980 w -(boot) 2885 4980 w -(program) 3148 4980 w -(and) 3605 4980 w -(floppy) 3826 4980 w -(boot) 4172 4980 w -(block\).) 4435 4980 w -(This) 4835 4980 w -(helps) 720 5100 w -(performance) 1023 5100 w -(but) 1681 5100 w -(limits) 1885 5100 w -(the) 2195 5100 w -(set) 2392 5100 w -(of) 2578 5100 w -(I/O) 2719 5100 w -(devices) 2922 5100 w -(that) 3323 5100 w -(it) 3557 5100 w -(can) 3666 5100 w -(support) 3877 5100 w -(without) 4298 5100 w -(special) 4706 5100 w -(code.) 720 5220 w -(Plan) 970 5376 w -(9) 1230 5376 w -(supports) 1352 5376 w -(the) 1840 5376 w -(ISA,) 2054 5376 w -(EISA,) 2297 5376 w -(and) 2594 5376 w -(PCI) 2833 5376 w -(buses) 3045 5376 w -(as) 3387 5376 w -(well) 3552 5376 w -(as) 3803 5376 w -(PCMCIA) 3969 5376 w -(and) 4406 5376 w -(PC) 4646 5376 w -(card) 4830 5376 w -(devices.) 720 5496 w -(It) 1175 5496 w -(is) 1274 5496 w -(infeasible) 1387 5496 w -(to) 1887 5496 w -(list) 2018 5496 w -(all the supported machines, because the PC-clone market\255) 2197 5496 w -(place) 720 5616 w -(is) 1012 5616 w -(too) 1130 5616 w -(volatile) 1327 5616 w -(and) 1713 5616 w -(there) 1931 5616 w -(is) 2221 5616 w -(no) 2339 5616 w -(guarantee) 2500 5616 w -(that) 3024 5616 w -(the) 3253 5616 w -(machine) 3446 5616 w -(you) 3893 5616 w -(buy) 4107 5616 w -(today) 4323 5616 w -(will) 4630 5616 w -(con\255) 4833 5616 w -(tain) 720 5736 w -(the) 941 5736 w -(same) 1134 5736 w -(components) 1427 5736 w -(as) 2062 5736 w -(the) 2206 5736 w -(one) 2399 5736 w -(you) 2615 5736 w -(bought) 2827 5736 w -(yesterday.) 3211 5736 w -(\(For) 3775 5736 w -(our) 4001 5736 w -(lab,) 4202 5736 w -(we) 4418 5736 w -(buy) 4588 5736 w -(com\255) 4802 5736 w -(ponents) 720 5856 w -(and) 1171 5856 w -(assemble) 1410 5856 w -(the) 1923 5856 w -(machines) 2137 5856 w -(ourselves) 2655 5856 w -(in) 3173 5856 w -(an) 3324 5856 w -(attempt) 3501 5856 w -(to) 3939 5856 w -(lessen) 4097 5856 w -(this) 4462 5856 w -(effect.\)) 4701 5856 w -(IDE/ATA,) 720 5976 w -(SATA) 1199 5976 w -(and) 1489 5976 w -(SCSI) 1704 5976 w -(disks) 1945 5976 w -(are) 2232 5976 w -(supported.) 2419 5976 w -(CD-ROMs) 3015 5976 w -(are) 3530 5976 w -(supported) 3717 5976 w -(two) 4249 5976 w -(ways,) 4458 5976 w -(either) 4759 5976 w -(on) 720 6096 w -(the) 894 6096 w -(SCSI) 1100 6096 w -(bus,) 1357 6096 w -(or) 1616 6096 w -(as) 1769 6096 w -(ATA\(PI\)) 1926 6096 w -(devices.) 2328 6096 w -(The) 2801 6096 w -(SCSI) 3033 6096 w -(adapter) 3290 6096 w -(must) 3711 6096 w -(be) 4005 6096 w -(a) 4175 6096 w -(member) 4281 6096 w -(of) 4735 6096 w -(the) 4885 6096 w -(Mylex Multimaster \(old Buslogic BT-*\) series or the Symbios 53C8XX series.) 720 6216 w -(Supported) 970 6372 w -(Ethernet) 1513 6372 w -(cards) 1962 6372 w -(include) 2267 6372 w -(the) 2663 6372 w -(AMD79C790,) 2862 6372 w -(3COM) 3552 6372 w -(Etherlink) 3892 6372 w -(III) 4364 6372 w -(and) 4495 6372 w -(3C589) 4719 6372 w -(series,) 720 6492 w -(Lucent) 1070 6492 w -(Wavelan) 1425 6492 w -(and) 1854 6492 w -(compatibles,) 2068 6492 w -(NE2000,) 2722 6492 w -(WD8003,) 3168 6492 w -(WD8013,) 3647 6492 w -(Realtek) 4126 6492 w -(8139,) 4514 6492 w -(SMC) 4831 6492 w -(Elite) 720 6612 w -(and) 959 6612 w -(Elite) 1173 6612 w -(Ultra,) 1412 6612 w -(Linksys) 1709 6612 w -(Combo) 2099 6612 w -(EthernetCard) 2480 6612 w -(and) 3148 6612 w -(EtherFast) 3363 6612 w -(10/100,) 3845 6612 w -(and) 4280 6612 w -(a) 4495 6612 w -(variety) 4585 6612 w -(of) 4942 6612 w -(controllers) 720 6732 w -(based) 1275 6732 w -(on) 1599 6732 w -(the) 1758 6732 w -(Intel) 1949 6732 w -(i8255[789]) 2198 6732 w -(and) 2770 6732 w -(Digital) 2986 6732 w -(\(now) 3338 6732 w -(Intel\)) 3607 6732 w -(21114x) 3888 6732 w -(chips.) 4299 6732 w -(We) 4654 6732 w -(sup\255) 4831 6732 w -(port) 720 6852 w -(Gigabit) 962 6852 w -(Ethernet) 1349 6852 w -(via) 1794 6852 w -(Realtek) 1970 6852 w -(8110S/8169S,) 2364 6852 w -(and) 3101 6852 w -(Intel) 3321 6852 w -(8254[013467],) 3574 6852 w -(8256[36],) 4343 6852 w -(and) 4860 6852 w -(8257[1-79]) 720 6972 w -(controllers.) 1355 6972 w -(We) 2008 6972 w -(support) 2220 6972 w -(10-Gigabit) 2668 6972 w -(Ethernet) 3269 6972 w -(via) 3744 6972 w -(Intel) 3950 6972 w -10 /LucidaSansUnicode20 f -(\031) 4163 6972 w -10 /LucidaSansUnicode00 f -(s) 4195 6972 w -(8259[89],) 4315 6972 w -(and) 4860 6972 w -(Myricom) 720 7092 w -10 /LucidaSansUnicode20 f -(\031) 1133 7092 w -10 /LucidaSansUnicode00 f -(s) 1165 7092 w -(10g-pcie-8a.) 1260 7092 w -(We) 1989 7092 w -(mostly) 2175 7092 w -(use) 2542 7092 w -(Intel) 2756 7092 w -(and) 3014 7092 w -(Realtek) 3239 7092 w -(gigabit) 3638 7092 w -(controllers,) 4020 7092 w -(so) 4616 7092 w -(those) 4773 7092 w -(drivers may be more robust.) 720 7212 w -cleartomark -showpage -saveobj restore -%%EndPage: 2 2 -%%Page: 3 3 -/saveobj save def -mark -3 pagesetup -10 /LucidaSansUnicode00 f -(\255 3 \255) 2783 480 w -(There) 970 840 w -(must) 1288 840 w -(be) 1571 840 w -(an) 1731 840 w -(explicit) 1889 840 w -(Plan) 2285 840 w -(9) 2527 840 w -(driver) 2631 840 w -(for) 2954 840 w -(peripherals;) 3134 840 w -(it) 3753 840 w -(cannot) 3860 840 w -(use) 4229 840 w -(DOS) 4439 840 w -(or) 4687 840 w -(Win\255) 4830 840 w -(dows) 720 960 w -(drivers.) 1015 960 w -(Plan) 1455 960 w -(9) 1699 960 w -(cannot) 1805 960 w -(exploit) 2176 960 w -(special) 2555 960 w -(hardware-related) 2932 960 w -(features) 3819 960 w -(that) 4256 960 w -(fall) 4489 960 w -(outside) 4681 960 w -(of) 720 1080 w -(the) 858 1080 w -(IBM) 1053 1080 w -(PC) 1266 1080 w -(model,) 1430 1080 w -(such) 1805 1080 w -(as) 2072 1080 w -(power) 2219 1080 w -(management,) 2558 1080 w -(unless) 3262 1080 w -(architecture-dependent) 3614 1080 w -(code) 4809 1080 w -(is added to the kernel.) 720 1200 w -(For more details see) 1879 1200 w -10 /LucidaSans-Italic f -(plan9.ini) 2897 1200 w -10 /LucidaSansUnicode00 f -(\(8\).) 3325 1200 w -(Over) 970 1356 w -(the) 1237 1356 w -(years,) 1432 1356 w -(Plan) 1759 1356 w -(9) 2000 1356 w -(has) 2103 1356 w -(run) 2311 1356 w -(on) 2516 1356 w -(a) 2679 1356 w -(number) 2774 1356 w -(of) 3191 1356 w -(VGA) 3329 1356 w -(cards.) 3575 1356 w -(Recent) 3940 1356 w -(changes) 4306 1356 w -(to) 4746 1356 w -(the) 4885 1356 w -(graphics) 720 1476 w -(system) 1177 1476 w -(have) 1560 1476 w -(not) 1828 1476 w -(been) 2031 1476 w -(tested) 2310 1476 w -(on) 2652 1476 w -(most) 2817 1476 w -(of) 3101 1476 w -(the) 3241 1476 w -(older) 3438 1476 w -(cards;) 3730 1476 w -(some) 4065 1476 w -(effort) 4368 1476 w -(may) 4679 1476 w -(be) 4921 1476 w -(needed) 720 1596 w -(to) 1109 1596 w -(get) 1240 1596 w -(them) 1428 1596 w -(working) 1709 1596 w -(again.) 2133 1596 w -(In) 2494 1596 w -(our) 2619 1596 w -(lab,) 2817 1596 w -(most) 3030 1596 w -(of) 3306 1596 w -(our) 3438 1596 w -(machines) 3636 1596 w -(use) 4129 1596 w -(the) 4332 1596 w -(ATI) 4521 1596 w -(or) 4716 1596 w -(Nvi\255) 4852 1596 w -(dia) 720 1716 w -(chips,) 908 1716 w -(so) 1237 1716 w -(such) 1389 1716 w -(devices) 1655 1716 w -(are) 2053 1716 w -(probably) 2245 1716 w -(the) 2712 1716 w -(most) 2907 1716 w -(reliable.) 3189 1716 w -(The) 3651 1716 w -(system) 3872 1716 w -(requires) 4252 1716 w -(a) 4691 1716 w -(hard\255) 4786 1716 w -(ware) 720 1836 w -(cursor.) 1097 1836 w -(For) 1616 1836 w -(more) 1920 1836 w -(details) 2319 1836 w -(see) 2787 1836 w -10 /LucidaSans-Italic f -(vgadb) 3098 1836 w -10 /LucidaSansUnicode00 f -(\(6\)) 3396 1836 w -(and) 3673 1836 w -10 /LucidaSans-Italic f -(vga) 4001 1836 w -10 /LucidaSansUnicode00 f -(\(8\).) 4177 1836 w -(The) 4518 1836 w -(wiki) 4847 1836 w -(\() 720 1956 w -10 /LucidaTypewriter f -(http://plan9.bell-labs.com/wiki/plan9) 753 1956 w -10 /LucidaSansUnicode00 f -(\)) 3417 1956 w -(contains) 3517 1956 w -(the) 3992 1956 w -(definitive) 4214 1956 w -(list) 4730 1956 w -(of) 4942 1956 w -(cards that are known to work; see the ) 720 2076 w -10 /LucidaSansUnicode20 f -(\030\030) 2585 2076 w -10 /LucidaSansUnicode00 f -(supported PC hardware) 2649 2076 w -10 /LucidaSansUnicode20 f -(\031\031) 3784 2076 w -10 /LucidaSansUnicode00 f -(page.) 3880 2076 w -(For) 970 2232 w -(audio,) 1161 2232 w -(Plan) 1498 2232 w -(9) 1734 2232 w -(supports) 1832 2232 w -(the) 2296 2232 w -(Sound) 2486 2232 w -(Blaster) 2823 2232 w -(16) 3185 2232 w -(and) 3346 2232 w -(compatibles.) 3561 2232 w -(\(Note) 4248 2232 w -(that) 4544 2232 w -(audio) 4770 2232 w -(doesn) 720 2352 w -10 /LucidaSansUnicode20 f -(\031) 1013 2352 w -10 /LucidaSansUnicode00 f -(t) 1045 2352 w -(work) 1122 2352 w -(under) 1399 2352 w -(Plan) 1723 2352 w -(9) 1964 2352 w -(with) 2067 2352 w -(8-bit) 2312 2352 w -(Sound) 2602 2352 w -(Blasters.\)) 2944 2352 w -(There) 3459 2352 w -(is) 3777 2352 w -(also) 3897 2352 w -(user-level) 4133 2352 w -(support) 4662 2352 w -(for USB audio devices; see) 720 2472 w -10 /LucidaSans-Italic f -(usb) 2023 2472 w -10 /LucidaSansUnicode00 f -(\(4\).) 2195 2472 w -(Finally,) 970 2628 w -(it) 1352 2628 w -10 /LucidaSansUnicode20 f -(\031) 1418 2628 w -10 /LucidaSansUnicode00 f -(s) 1450 2628 w -(important) 1541 2628 w -(to) 2059 2628 w -(have) 2197 2628 w -(a) 2462 2628 w -(three-button) 2557 2628 w -(mouse) 3230 2628 w -(with) 3594 2628 w -(Plan) 3840 2628 w -(9.) 4082 2628 w -(The) 4250 2628 w -(system) 4472 2628 w -(cur\255) 4853 2628 w -(rently) 720 2748 w -(works) 1053 2748 w -(only) 1397 2748 w -(with) 1656 2748 w -(mice) 1916 2748 w -(on) 2200 2748 w -(the) 2378 2748 w -(PS/2) 2588 2748 w -(port) 2868 2748 w -(or) 3125 2748 w -(USB.) 3282 2748 w -(Serial) 3582 2748 w -(mouse) 3901 2748 w -(support) 4279 2748 w -(should) 4712 2748 w -(return before long.) 720 2868 w -(Once) 970 3024 w -(you) 1255 3024 w -(have) 1468 3024 w -(Plan) 1731 3024 w -(9) 1970 3024 w -(installed) 2071 3024 w -(\(see) 2520 3024 w -(the) 2754 3024 w -(wiki) 2947 3024 w -10 /LucidaSansUnicode20 f -(\031) 3140 3024 w -10 /LucidaSansUnicode00 f -(s) 3172 3024 w -(installation) 3261 3024 w -(document\),) 3836 3024 w -(use) 4425 3024 w -(PXE) 4633 3024 w -(or) 4844 3024 w -(a) 4985 3024 w -(boot) 720 3144 w -(disk) 986 3144 w -(to) 1231 3144 w -(load) 1373 3144 w -(the) 1625 3144 w -(system.) 1824 3144 w -(See) 2272 3144 w -10 /LucidaSans-Italic f -(booting) 2482 3144 w -10 /LucidaSansUnicode00 f -(\(8\),) 2847 3144 w -10 /LucidaSans-Italic f -(9boot) 3052 3144 w -10 /LucidaSansUnicode00 f -(\(8\),) 3328 3144 w -(and) 3533 3144 w -10 /LucidaSans-Italic f -(prep) 3757 3144 w -10 /LucidaSansUnicode00 f -(\(8\)) 3980 3144 w -(for) 4153 3144 w -(more) 4335 3144 w -(informa\255) 4629 3144 w -(tion.) 720 3264 w -10 /LucidaSans-Demi f -(The PowerPC operating system) 720 3504 w -10 /LucidaSansUnicode00 f -(We) 970 3660 w -(have) 1168 3660 w -(a) 1449 3660 w -(version) 1560 3660 w -(of) 1968 3660 w -(the) 2122 3660 w -(system) 2334 3660 w -(that) 2731 3660 w -(runs) 2979 3660 w -(on) 3252 3660 w -(the) 3432 3660 w -(PowerPC) 3644 3660 w -(on) 4115 3660 w -(a) 4295 3660 w -(home-grown) 4407 3660 w -(machine) 720 3780 w -(called) 1165 3780 w -(Viaduct.) 1485 3780 w -(The) 1948 3780 w -(Viaduct) 2166 3780 w -(minibrick) 2565 3780 w -(is) 3057 3780 w -(a) 3174 3780 w -(small) 3266 3780 w -(\(12x9x3) 3559 3780 w -(cm\)) 4002 3780 w -(low-cost) 4215 3780 w -(embed\255) 4676 3780 w -(ded) 720 3900 w -(computer) 944 3900 w -(consisting) 1450 3900 w -(of) 1987 3900 w -(a) 2128 3900 w -(50Mhz) 2226 3900 w -(MPC850,) 2600 3900 w -(16MB) 3074 3900 w -(sdram,) 3387 3900 w -(2MB) 3765 3900 w -(flash,) 4015 3900 w -(and) 4324 3900 w -(two) 4547 3900 w -(10Mb) 4765 3900 w -(Ethernet) 720 4020 w -(ports.) 1178 4020 w -(It) 1548 4020 w -(is) 1666 4020 w -(designed) 1798 4020 w -(for) 2292 4020 w -(home/SOHO) 2483 4020 w -(networking) 3144 4020 w -(applications) 3741 4020 w -(such) 4378 4020 w -(as) 4656 4020 w -(VPN,) 4814 4020 w -(firewalls, NAT, etc.) 720 4140 w -(The) 970 4296 w -(kernel) 1184 4296 w -(has) 1519 4296 w -(also) 1720 4296 w -(been) 1949 4296 w -(ported) 2219 4296 w -(to) 2573 4296 w -(the) 2704 4296 w -(Motorola) 2892 4296 w -(MTX) 3357 4296 w -(embedded) 3603 4296 w -(motherboard;) 4150 4296 w -(that) 4849 4296 w -(port) 720 4416 w -(is) 973 4416 w -(included) 1104 4416 w -(in) 1570 4416 w -(the) 1712 4416 w -(distribution.) 1918 4416 w -(The) 2596 4416 w -(port) 2827 4416 w -(only) 3079 4416 w -(works) 3333 4416 w -(with) 3671 4416 w -(a) 3926 4416 w -(604e) 4031 4416 w -(processor) 4326 4416 w -(\(the) 4852 4416 w -(603e is substantially different\) and at present only a single CPU is permitted.) 720 4536 w -(We) 970 4692 w -(have) 1149 4692 w -(ports) 1411 4692 w -(to) 1702 4692 w -(the) 1838 4692 w -(Xilinx) 2031 4692 w -(Virtex) 2342 4692 w -(4) 2669 4692 w -(and) 2770 4692 w -(5) 2988 4692 w -(FPGAs) 3089 4692 w -(which) 3428 4692 w -(use) 3747 4692 w -(PowerPC) 3954 4692 w -(405) 4406 4692 w -(and) 4633 4692 w -(440) 4851 4692 w -(processors, respectively.) 720 4812 w -10 /LucidaSans-Demi f -(The Marvell Kirkwood operating system) 720 5052 w -10 /LucidaSansUnicode00 f -(This) 970 5208 w -(is) 1222 5208 w -(an) 1349 5208 w -(ARM) 1513 5208 w -(kernel) 1778 5208 w -(for) 2127 5208 w -(the) 2314 5208 w -(ARM926EJ-S) 2517 5208 w -(processor) 3169 5208 w -(and) 3693 5208 w -(it) 3921 5208 w -(emulates) 4035 5208 w -(ARM) 4522 5208 w -(7500) 4788 5208 w -(floating-point) 720 5328 w -(and) 1456 5328 w -(CAS) 1690 5328 w -(\(compare-and-swap\)) 1936 5328 w -(instructions.) 3018 5328 w -(It) 3709 5328 w -(is) 3829 5328 w -(known) 3963 5328 w -(to) 4337 5328 w -(run) 4489 5328 w -(on) 4708 5328 w -(the) 4885 5328 w -(Sheevaplug,) 720 5448 w -(Guruplug,) 1344 5448 w -(Dreamplug) 1870 5448 w -(and) 2447 5448 w -(Openrd-client) 2668 5448 w -(boards.) 3395 5448 w -(It) 3835 5448 w -(is) 3943 5448 w -(derived) 4065 5448 w -(from) 4467 5448 w -(a) 4741 5448 w -(port) 4838 5448 w -(of) 720 5568 w -(native) 854 5568 w -(Inferno) 1181 5568 w -(to) 1565 5568 w -(the) 1699 5568 w -(Sheevaplug) 1889 5568 w -(by) 2475 5568 w -(Salva) 2625 5568 w -(Peir) 2905 5568 w - save 3086 5568 m - currentpoint translate 10 10 scale ptsize dup scale - 16 24 true [16 0 0 -16 0 22] - {<0000000000000000000000000000000004001c00380040003c006600c300c300c300c300c30066003c00000000000000>} - imagemask restore -(and) 3182 5568 w -(Mechiel) 3397 5568 w -(Lukkien.) 3801 5568 w -(There) 4278 5568 w -(are) 4591 5568 w -(many) 4778 5568 w -(features) 720 5688 w -(of) 1149 5688 w -(the) 1281 5688 w -(Kirkwood) 1470 5688 w -(system-on-a-chip) 1959 5688 w -(that) 2890 5688 w -(it) 3115 5688 w -(does) 3215 5688 w -(not) 3480 5688 w -(exploit.) 3674 5688 w -(There) 4109 5688 w -(are) 4422 5688 w -(currently) 4609 5688 w -(drivers) 720 5808 w -(for) 1102 5808 w -(up) 1290 5808 w -(to) 1464 5808 w -(two) 1611 5808 w -(Gigabit) 1834 5808 w -(Ethernet) 2229 5808 w -(interfaces,) 2682 5808 w -(USB) 3237 5808 w -(and) 3466 5808 w -(the) 3694 5808 w -(console) 3897 5808 w -(serial) 4316 5808 w -(port;) 4625 5808 w -(we) 4907 5808 w -(hope to add crypto acceleration, and a video driver for the Openrd-client.) 720 5928 w -10 /LucidaSans-Demi f -(The Marvell PXA168 operating system) 720 6168 w -10 /LucidaSansUnicode00 f -(This) 970 6324 w -(is) 1243 6324 w -(an) 1391 6324 w -(ARM) 1577 6324 w -(kernel) 1864 6324 w -(for) 2235 6324 w -(the) 2443 6324 w -(ARM-v5-architecture) 2667 6324 w -(processor) 3763 6324 w -(in) 4308 6324 w -(the) 4468 6324 w -(Marvell) 4692 6324 w -(PXA168) 720 6444 w -(system-on-a-chip) 1190 6444 w -(and) 2180 6444 w -(it) 2453 6444 w -(emulates) 2612 6444 w -(ARM) 3144 6444 w -(7500) 3455 6444 w -(floating-point) 3800 6444 w -(and) 4575 6444 w -(CAS) 4848 6444 w -(\(compare-and-swap\)) 720 6564 w -(instructions.) 1793 6564 w -(It) 2475 6564 w -(is) 2586 6564 w -(known) 2711 6564 w -(to) 3076 6564 w -(run) 3219 6564 w -(on) 3429 6564 w -(the) 3598 6564 w -(Guruplug) 3799 6564 w -(Display.) 4298 6564 w -(There) 4762 6564 w -(are) 720 6684 w -(many) 907 6684 w -(features) 1204 6684 w -(of) 1634 6684 w -(the) 1767 6684 w -(system-on-a-chip) 1957 6684 w -(that) 2889 6684 w -(it) 3115 6684 w -(does) 3216 6684 w -(not) 3482 6684 w -(exploit.) 3677 6684 w -(There) 4111 6684 w -(are) 4423 6684 w -(currently) 4609 6684 w -(drivers) 720 6804 w -(for) 1091 6804 w -(a) 1268 6804 w -(Fast) 1361 6804 w -(Ethernet) 1596 6804 w -(interface,) 2039 6804 w -(and) 2533 6804 w -(the) 2751 6804 w -(console) 2944 6804 w -(serial) 3353 6804 w -(port;) 3652 6804 w -(we) 3925 6804 w -(hope) 4097 6804 w -(to) 4378 6804 w -(add) 4515 6804 w -(crypto) 4735 6804 w -(acceleration, and a video driver.) 720 6924 w -cleartomark -showpage -saveobj restore -%%EndPage: 3 3 -%%Page: 4 4 -/saveobj save def -mark -4 pagesetup -10 /LucidaSansUnicode00 f -(\255 4 \255) 2783 480 w -10 /LucidaSans-Demi f -(The TI OMAP35 operating system) 720 840 w -10 /LucidaSansUnicode00 f -(This) 970 996 w -(is) 1229 996 w -(an) 1363 996 w -(ARM) 1534 996 w -(kernel) 1806 996 w -(for) 2162 996 w -(the) 2355 996 w -(Cortex-A8) 2564 996 w -(processor) 3134 996 w -(and) 3665 996 w -(it) 3900 996 w -(emulates) 4021 996 w -(ARM) 4515 996 w -(7500) 4788 996 w -(floating-point) 720 1116 w -(and) 1456 1116 w -(CAS) 1690 1116 w -(\(compare-and-swap\)) 1936 1116 w -(instructions.) 3018 1116 w -(It) 3709 1116 w -(is) 3829 1116 w -(known) 3963 1116 w -(to) 4337 1116 w -(run) 4489 1116 w -(on) 4708 1116 w -(the) 4885 1116 w -(IGEPv2) 720 1236 w -(board) 1097 1236 w -(and) 1432 1236 w -(the) 1664 1236 w -(Gumstix) 1871 1236 w -(Overo,) 2328 1236 w -(and) 2700 1236 w -(might) 2932 1236 w -(eventually) 3267 1236 w -(run) 3809 1236 w -(on) 4026 1236 w -(the) 4201 1236 w -(Beagleboard,) 4409 1236 w -(once) 720 1356 w -(USB) 996 1356 w -(is) 1223 1356 w -(working.) 1349 1356 w -(There) 1849 1356 w -(are) 2173 1356 w -(many) 2371 1356 w -(features) 2679 1356 w -(of) 3120 1356 w -(the) 3263 1356 w -(OMAP) 3463 1356 w -(system-on-a-chip) 3796 1356 w -(that) 4738 1356 w -(it) 4974 1356 w -(does) 720 1476 w -(not) 989 1476 w -(exploit.) 1187 1476 w -(Initially,) 1625 1476 w -(there) 2046 1476 w -(are) 2336 1476 w -(drivers) 2526 1476 w -(for) 2897 1476 w -(the) 3074 1476 w -(SMSC) 3267 1476 w -(9221) 3568 1476 w -(100Mb/s) 3858 1476 w -(Ethernet) 4338 1476 w -(inter\255) 4782 1476 w -(face) 720 1596 w -(in) 966 1596 w -(the) 1104 1596 w -(IGEPv2) 1306 1596 w -(and) 1678 1596 w -(Overo,) 1905 1596 w -(and) 2272 1596 w -(the) 2499 1596 w -(console) 2701 1596 w -(serial) 3119 1596 w -(port;) 3427 1596 w -(we) 3708 1596 w -(hope) 3888 1596 w -(to) 4176 1596 w -(add) 4320 1596 w -(USB,) 4547 1596 w -(flash) 4806 1596 w -(memory and video drivers.) 720 1716 w -10 /LucidaSans-Demi f -(The Nvidia Tegra2 operating system) 720 1956 w -10 /LucidaSansUnicode00 f -(This) 970 2112 w -(is) 1230 2112 w -(an) 1365 2112 w -(ARM) 1537 2112 w -(kernel) 1810 2112 w -(for) 2167 2112 w -(the) 2361 2112 w -(dual) 2571 2112 w -(Cortex-A9) 2835 2112 w -(processors) 3405 2112 w -(in) 3987 2112 w -(the) 4133 2112 w -(Nvidia) 4343 2112 w -(Tegra2) 4700 2112 w -(system-on-a-chip) 720 2232 w -(and) 1669 2232 w -(it) 1901 2232 w -(emulates) 2019 2232 w -(ARM) 2510 2232 w -(7500) 2780 2232 w -(floating-point) 3084 2232 w -(and) 3817 2232 w -(CAS) 4048 2232 w -(\(compare-and-) 4291 2232 w -(swap\)) 720 2352 w -(instructions,) 1037 2352 w -(but) 1681 2352 w -(the) 1882 2352 w -(hardware) 2076 2352 w -(includes) 2565 2352 w -(VFP3) 3007 2352 w -(floating-point.) 3283 2352 w -(It) 4068 2352 w -(runs) 4173 2352 w -(on) 4428 2352 w -(the) 4590 2352 w -(Com\255) 4784 2352 w -(pulab) 720 2472 w -(Trimslice.) 1047 2472 w -(There) 1608 2472 w -(are) 1941 2472 w -(many) 2148 2472 w -(features) 2465 2472 w -(of) 2915 2472 w -(the) 3068 2472 w -(system-on-a-chip) 3278 2472 w -(that) 4230 2472 w -(it) 4475 2472 w -(does) 4595 2472 w -(not) 4880 2472 w -(exploit.) 720 2592 w -(Initially,) 1156 2592 w -(there) 1575 2592 w -(are) 1863 2592 w -(drivers) 2051 2592 w -(for) 2420 2592 w -(the) 2596 2592 w -(Ethernet) 2788 2592 w -(interface) 3230 2592 w -(and) 3691 2592 w -(the) 3908 2592 w -(console) 4100 2592 w -(serial) 4508 2592 w -(port;) 4806 2592 w -(we hope to add USB, flash memory and video drivers.) 720 2712 w -10 /LucidaSans-Demi f -(The Broadcom 2835 operating system) 720 2952 w -10 /LucidaSansUnicode00 f -(This) 970 3108 w -(consists) 1209 3108 w -(of) 1636 3108 w -(terminal) 1768 3108 w -(and) 2204 3108 w -(CPU) 2418 3108 w -(kernels) 2645 3108 w -(for) 3033 3108 w -(the) 3207 3108 w -(ARM1176) 3397 3108 w -(processor) 3902 3108 w -(in) 4413 3108 w -(the) 4539 3108 w -(Broad\255) 4729 3108 w -(com) 720 3228 w -(2835) 973 3228 w -(system-on-a-chip.) 1273 3228 w -(The) 2282 3228 w -(hardware) 2511 3228 w -(includes) 3009 3228 w -(VFP2) 3460 3228 w -(floating-point.) 3745 3228 w -(It) 4539 3228 w -(runs) 4653 3228 w -(on) 4917 3228 w -(the Raspberry Pi Models A and B.) 720 3348 w -cleartomark -showpage -saveobj restore -%%EndPage: 4 4 -%%Trailer -done -%%Pages: 4 --- /sys/include/tos.h Sat Aug 7 20:46:58 2004 +++ /sys/include/tos.h Mon Jul 22 21:23:03 2013 @@ -18,6 +18,8 @@ vlong pcycles; /* cycles spent in process (kernel + user) */ ulong pid; /* might as well put the pid here */ ulong clock; + /* scratch space for kernel use (e.g., mips fp delay-slot execution) */ + ulong kscr[4]; /* top of stack is here */ }; --- /sys/src/cmd/lp/lpsend.rc Sat Mar 18 02:56:55 2000 +++ /sys/src/cmd/lp/lpsend.rc Mon Jul 22 22:09:40 2013 @@ -1,18 +1,13 @@ #!/bin/rc -if (! ~ $DEBUG '') { flag x + } -if (test -e /net/tcp/clone) { - dialstring=`{ndb/query sys $1 dom} - network=tcp - if (~ $#dialstring 0 || ! ~ $dialstring '') { - dialstring=$1 - } - if(lpsend $network^!^$dialstring^!printer) exit '' - rv='tcp failed' -} -if not rv='no tcp' +# lpsend.rc dialstring - run lpsend network!dialstring!printer +if (! ~ $DEBUG '') + flag x + +if (! test -e /net/tcp/clone) + exit 'no tcp' +dialstring=`{ndb/query sys $1 dom} +if (~ $#dialstring 0 || ~ $dialstring '') # no dom for sys in ndb? + dialstring=$1 # use arg unchanged -if (! ~ $dialstring '') - exit 'lpsend: no dialstring' -if not - exit 'lpsend: '^$rv +lpsend tcp!^$dialstring^!printer +exit $status --- /sys/src/cmd/lp/mkfile Sat Mar 18 02:56:56 2000 +++ /sys/src/cmd/lp/mkfile Mon Jul 22 22:09:28 2013 @@ -1,12 +1,13 @@ +#include + +enum { TIMEOUT = 10*60*1000 }; + +int +alarmhandler(void *, char *note) +{ + if(strcmp(note, "alarm") == 0) { + fprint(2, "alarm\n"); + return 1; + } else + return 0; +} + +void +pass(int in, int out) +{ + int rv = 0; + static char buf[4096]; + + for(;;) { + alarm(TIMEOUT); /* to break hanging */ + rv = read(in, buf, sizeof buf); + if (rv == 0) + break; + if(rv < 0) + sysfatal("read error: %r"); + if(write(out, buf, rv) != rv) + sysfatal("write error: %r"); + } + alarm(0); +} + +static void +usage(void) +{ + fprint(2, "usage: %s network!destination!service\n", argv0); + exits("usage"); +} + +void +main(int argc, char *argv[]) +{ + int netfd; + + argv0 = argv[0]; + if (argc != 2) + usage(); + + atnotify(alarmhandler, 1); + + netfd = dial(argv[1], "net", 0, 0); + if (netfd < 0) + sysfatal("can't dial %s: %r", argv[1]); + pass(0, netfd); + exits(0); +}