LogSeq/assets/ostep_1681115599584_0.edn
2023-04-16 00:43:33 +08:00

5605 lines
292 KiB
Clojure
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{:highlights [{:id #uuid "6433ca28-1bdf-433d-8ed9-0d54bf5ba940",
:page 311,
:position {:bounding {:x1 199.265625,
:y1 543.921875,
:x2 243.2843017578125,
:y2 563.921875,
:width 719.9999999999999,
:height 1080},
:rects ({:x1 199.265625,
:y1 543.921875,
:x2 243.2843017578125,
:y2 563.921875,
:width 719.9999999999999,
:height 1080}),
:page 311},
:content {:text "thread"},
:properties {:color "yellow"}}
{:id #uuid "6433cb56-fbef-46da-83c2-13fa2dba2967",
:page 311,
:position {:bounding {:x1 577.609375,
:y1 1234.609375,
:x2 804.0300903320312,
:y2 1264.609375,
:width 1094.3999999999999,
:height 1641.6},
:rects ({:x1 577.609375,
:y1 1234.609375,
:x2 804.0300903320312,
:y2 1264.609375,
:width 1094.3999999999999,
:height 1641.6}),
:page 311},
:content {:text "thread control blocks"},
:properties {:color "yellow"}}
{:id #uuid "6433cb70-d168-4863-8268-1e969df6ce06",
:page 311,
:position {:bounding {:x1 274.29595947265625,
:y1 1133.640625,
:x2 422.473388671875,
:y2 1163.640625,
:width 1094.3999999999999,
:height 1641.6},
:rects ({:x1 274.296875,
:y1 1133.640625,
:x2 422.473388671875,
:y2 1163.640625,
:width 1094.3999999999999,
:height 1641.6}
{:x1 274.29595947265625,
:y1 1135.125,
:x2 274.3037109375,
:y2 1158.125,
:width 1094.3999999999999,
:height 1641.6}),
:page 311},
:content {:text "context switch"},
:properties {:color "yellow"}}
{:id #uuid "6433cba2-61bd-4549-a29f-2ad85b3e30cd",
:page 312,
:position {:bounding {:x1 480.51898193359375,
:y1 1039.890625,
:x2 683.934814453125,
:y2 1069.890625,
:width 1094.3999999999999,
:height 1641.6},
:rects ({:x1 480.53125,
:y1 1039.890625,
:x2 610.921875,
:y2 1069.890625,
:width 1094.3999999999999,
:height 1641.6}
{:x1 480.51898193359375,
:y1 1041.375,
:x2 683.934814453125,
:y2 1064.375,
:width 1094.3999999999999,
:height 1641.6}),
:page 312},
:content {:text "thread-local storage,"},
:properties {:color "yellow"}}
{:id #uuid "6433e4cc-69e4-4057-8cc6-1766240d82f4",
:page 320,
:position {:bounding {:x1 554.1071472167969,
:y1 682.4375152587891,
:x2 670.6859741210938,
:y2 705.8660888671875,
:width 864,
:height 1296},
:rects ({:x1 554.1071472167969,
:y1 682.4375152587891,
:x2 670.6859741210938,
:y2 705.8660888671875,
:width 864,
:height 1296}),
:page 320},
:content {:text "race condition"},
:properties {:color "yellow"}}
{:id #uuid "6433e52b-1f38-4f7c-b168-0aed624f9bdf",
:page 320,
:position {:bounding {:x1 0,
:y1 509.14286518096924,
:x2 746.7916259765625,
:y2 922.9732360839844,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 509.14286518096924,
:x2 0,
:y2 530.2857236862183,
:width 864,
:height 1296}
{:x1 0,
:y1 525.142865896225,
:x2 0,
:y2 546.285724401474,
:width 864,
:height 1296}
{:x1 515.8003540039062,
:y1 865.4107360839844,
:x2 746.7916259765625,
:y2 883.1250305175781,
:width 864,
:height 1296}
{:x1 171.89286041259766,
:y1 885.3303833007812,
:x2 745.5325088500977,
:y2 903.2589416503906,
:width 864,
:height 1296}
{:x1 171.89286041259766,
:y1 905.2589416503906,
:x2 682.6857986450195,
:y2 922.9732360839844,
:width 864,
:height 1296}),
:page 320},
:content {:text "A critical section is a piece of code that accesses a shared variable (or more generally, a shared resource) and must not be concurrently executed by more than one thread."},
:properties {:color "yellow"}}
{:id #uuid "6433e566-e6ef-45b3-84b1-eba981be914a",
:page 320,
:position {:bounding {:x1 0,
:y1 557.1428680419922,
:x2 752.232177734375,
:y2 984.7500305175781,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 557.1428680419922,
:x2 0,
:y2 578.2857246398926,
:width 864,
:height 1296}
{:x1 0,
:y1 573.1428680419922,
:x2 0,
:y2 594.2857284545898,
:width 864,
:height 1296}
{:x1 601.2857360839844,
:y1 925.5268249511719,
:x2 743.2662353515625,
:y2 948.9553833007812,
:width 864,
:height 1296}
{:x1 743.2589721679688,
:y1 927.1875305175781,
:x2 752.232177734375,
:y2 945.1160888671875,
:width 864,
:height 1296}
{:x1 171.89286041259766,
:y1 947.107177734375,
:x2 745.5417861938477,
:y2 965.0357360839844,
:width 864,
:height 1296}
{:x1 171.89286041259766,
:y1 967.0357360839844,
:x2 576.7512893676758,
:y2 984.7500305175781,
:width 864,
:height 1296}),
:page 320},
:content {:text "mutual exclusion. This property guarantees that if one thread is executing within the critical section, the others will be prevented from doing so."},
:properties {:color "yellow"}}
{:id #uuid "6433e6a1-407c-4936-b184-dee868ef4107",
:page 321,
:position {:bounding {:x1 423.9821548461914,
:y1 850.3928833007812,
:x2 509.6704788208008,
:y2 873.8214721679688,
:width 864,
:height 1296},
:rects ({:x1 423.9821548461914,
:y1 850.3928833007812,
:x2 509.6704788208008,
:y2 873.8214721679688,
:width 864,
:height 1296}),
:page 321},
:content {:text "atomically"},
:properties {:color "yellow"}}
{:id #uuid "6433e6e7-d995-4b69-96b3-261b79f94c1d",
:page 322,
:position {:bounding {:x1 715.2017593383789,
:y1 262.08929443359375,
:x2 746.7634048461914,
:y2 279.8035888671875,
:width 864,
:height 1296},
:rects ({:x1 715.2017593383789,
:y1 262.08929443359375,
:x2 746.7634048461914,
:y2 279.8035888671875,
:width 864,
:height 1296}),
:page 322},
:content {:text "sane"},
:properties {:color "green"}}
{:id #uuid "6433e729-7043-453b-8d60-6e6c41560543",
:page 322,
:position {:bounding {:x1 0,
:y1 125.14286422729492,
:x2 747.738899230957,
:y2 366.5625114440918,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 125.14286422729492,
:x2 0,
:y2 146.28571701049805,
:width 864,
:height 1296}
{:x1 712.866096496582,
:y1 323.2053642272949,
:x2 747.738899230957,
:y2 346.6339530944824,
:width 864,
:height 1296}
{:x1 171.90179443359375,
:y1 343.1339530944824,
:x2 366.5299377441406,
:y2 366.5625114440918,
:width 864,
:height 1296}),
:page 322},
:content {:text "synchronization primitives"},
:properties {:color "yellow"}}
{:id #uuid "6433eabf-48d6-4776-b66f-a5f7804d1ddc",
:page 323,
:position {:bounding {:x1 320.0720024108887,
:y1 195.0178680419922,
:x2 547.6788444519043,
:y2 212.94644165039062,
:width 864,
:height 1296},
:rects ({:x1 320.0720024108887,
:y1 195.0178680419922,
:x2 547.6788444519043,
:y2 212.94644165039062,
:width 864,
:height 1296}),
:page 323},
:content {:text " KEY CONCURRENCY TERMS"},
:properties {:color "yellow"}}
{:id #uuid "6433f35b-403b-4b25-b9f9-076e9e34777e",
:page 327,
:position {:bounding {:x1 585.9527893066406,
:y1 368.6517906188965,
:x2 738.0721740722656,
:y2 409.2232322692871,
:width 921.6,
:height 1382.4},
:rects ({:x1 585.9527893066406,
:y1 368.6517906188965,
:x2 738.0721740722656,
:y2 409.2232322692871,
:width 921.6,
:height 1382.4}),
:page 327},
:content {:text "Thread API"},
:properties {:color "yellow"}}
{:id #uuid "6433f45b-0345-4790-8379-3d1a94e57ef5",
:page 339,
:position {:bounding {:x1 617.5714492797852,
:y1 347.3571548461914,
:x2 691.9386367797852,
:y2 385.0714416503906,
:width 864,
:height 1296},
:rects ({:x1 617.5714492797852,
:y1 347.3571548461914,
:x2 691.9386367797852,
:y2 385.0714416503906,
:width 864,
:height 1296}),
:page 339},
:content {:text "Locks"},
:properties {:color "yellow"}}
{:id #uuid "6433f4ba-f2e4-4743-a536-e2b7747433b7",
:page 339,
:position {:bounding {:x1 140.0178680419922,
:y1 979.4018249511719,
:x2 325.5472869873047,
:y2 997.1161193847656,
:width 864,
:height 1296},
:rects ({:x1 140.0178680419922,
:y1 979.4018249511719,
:x2 325.5472869873047,
:y2 997.1161193847656,
:width 864,
:height 1296}),
:page 339},
:content {:text "A lock is just a variabl"},
:properties {:color "yellow"}}
{:id #uuid "6433f5e6-bc06-42a9-866e-e9a3053f528f",
:page 340,
:position {:bounding {:x1 0,
:y1 349.1428680419922,
:x2 745.5471057891846,
:y2 658.3750305175781,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 349.1428680419922,
:x2 0,
:y2 370.2857360839844,
:width 864,
:height 1296}
{:x1 0,
:y1 365.1428680419922,
:x2 0,
:y2 386.2857360839844,
:width 864,
:height 1296}
{:x1 706.2289886474609,
:y1 600.8125305175781,
:x2 745.5282440185547,
:y2 618.5268249511719,
:width 864,
:height 1296}
{:x1 171.89286994934082,
:y1 620.732177734375,
:x2 745.5471057891846,
:y2 638.6607360839844,
:width 864,
:height 1296}
{:x1 171.89286994934082,
:y1 640.6607360839844,
:x2 318.0395984649658,
:y2 658.3750305175781,
:width 864,
:height 1296}),
:page 340},
:content {:text "locks help transform the chaos that is traditional OS scheduling into a more controlled activity."},
:properties {:color "yellow"}}
{:id #uuid "6433fb69-1425-46b4-996f-f91da5d3e8d0",
:page 341,
:position {:bounding {:x1 452.08409881591797,
:y1 710.0000305175781,
:x2 525.8427047729492,
:y2 727.7143249511719,
:width 864,
:height 1296},
:rects ({:x1 452.08409881591797,
:y1 710.0000305175781,
:x2 525.8427047729492,
:y2 727.7143249511719,
:width 864,
:height 1296}),
:page 341},
:content {:text "efficacy "},
:properties {:color "green"}}
{:id #uuid "6433fbfd-a1bf-4fd9-a54d-e15189c77b15",
:page 342,
:position {:bounding {:x1 171.88867950439453,
:y1 179.01788330078125,
:x2 385.91197204589844,
:y2 200.732177734375,
:width 864,
:height 1296},
:rects ({:x1 171.88867950439453,
:y1 179.01788330078125,
:x2 385.91197204589844,
:y2 200.732177734375,
:width 864,
:height 1296}),
:page 342},
:content {:text "Controlling Interrupts"},
:properties {:color "yellow"}}
{:id #uuid "6433fe7e-2221-41ee-ad6b-7deaa4459aa5",
:page 343,
:position {:bounding {:x1 116.09821701049805,
:y1 691.2232360839844,
:x2 532.493236541748,
:y2 712.9375305175781,
:width 864,
:height 1296},
:rects ({:x1 116.09821701049805,
:y1 691.2232360839844,
:x2 532.493236541748,
:y2 712.9375305175781,
:width 864,
:height 1296}),
:page 343},
:content {:text "A Failed Attempt: Just Using Loads/Stores"},
:properties {:color "yellow"}}
{:id #uuid "6433ff4a-856d-4e4b-af30-6cb600aefeb5",
:page 343,
:position {:bounding {:x1 0,
:y1 509.1428680419922,
:x2 690.1883277893066,
:y2 893.2232666015625,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 509.1428680419922,
:x2 0,
:y2 530.2857208251953,
:width 864,
:height 1296}
{:x1 594.5398139953613,
:y1 855.3660888671875,
:x2 689.8509101867676,
:y2 873.0803833007812,
:width 864,
:height 1296}
{:x1 116.09821701049805,
:y1 875.294677734375,
:x2 690.1883277893066,
:y2 893.2232666015625,
:width 864,
:height 1296}),
:page 343},
:content {:text " use a simple variable (flag) to indicate whether some thread has possession of a lock."},
:properties {:color "yellow"}}
{:id #uuid "64340154-807c-4a7a-b783-045d5d6d3927",
:page 344,
:position {:bounding {:x1 347.09178161621094,
:y1 733.5803985595703,
:x2 635.6820526123047,
:y2 755.294677734375,
:width 864,
:height 1296},
:rects ({:x1 347.09178161621094,
:y1 733.5803985595703,
:x2 635.6820526123047,
:y2 755.294677734375,
:width 864,
:height 1296}),
:page 344},
:content {:text "Spin Locks with Test-And-Set"},
:properties {:color "yellow"}}
{:id #uuid "643401e0-fcec-41d3-9898-d5c4175ac464",
:page 344,
:position {:bounding {:x1 171.89287185668945,
:y1 903.1607666015625,
:x2 544.1298828125,
:y2 927.9286193847656,
:width 864,
:height 1296},
:rects ({:x1 435.919677734375,
:y1 903.1607666015625,
:x2 441.9018249511719,
:y2 915.1607666015625,
:width 864,
:height 1296}
{:x1 171.89287185668945,
:y1 904.5000610351562,
:x2 271.8574905395508,
:y2 927.9286193847656,
:width 864,
:height 1296}
{:x1 300.0535888671875,
:y1 904.5000610351562,
:x2 435.9386901855469,
:y2 927.9286193847656,
:width 864,
:height 1296}
{:x1 266.50001525878906,
:y1 907.357177734375,
:x2 544.1298828125,
:y2 925.2857666015625,
:width 864,
:height 1296}),
:page 344},
:content {:text "test-and-set (or atomic exchange1) instruction"},
:properties {:color "yellow"}}
{:id #uuid "6434edd3-2a7b-4e11-af18-29854e628bc6",
:page 345,
:position {:bounding {:x1 491.1250305175781,
:y1 377.0089416503906,
:x2 658.8576049804688,
:y2 400.4375305175781,
:width 864,
:height 1296},
:rects ({:x1 491.1250305175781,
:y1 377.0089416503906,
:x2 658.8576049804688,
:y2 400.4375305175781,
:width 864,
:height 1296}),
:page 345},
:content {:text "Petersons algorithm"},
:properties {:color "yellow"}}
{:id #uuid "6434f523-44b7-40ab-8fea-528969c5acfd",
:page 347,
:position {:bounding {:x1 402.9370536804199,
:y1 274.72320556640625,
:x2 440.68061447143555,
:y2 292.4375,
:width 864,
:height 1296},
:rects ({:x1 402.9370536804199,
:y1 274.72320556640625,
:x2 440.68061447143555,
:y2 292.4375,
:width 864,
:height 1296}),
:page 347},
:content {:text "foil "},
:properties {:color "green"}}
{:id #uuid "6434f8ac-d762-40a4-abb0-2955c2c8b396",
:page 348,
:position {:bounding {:x1 203.03572463989258,
:y1 550.3303833007812,
:x2 358.456729888916,
:y2 573.7589569091797,
:width 864,
:height 1296},
:rects ({:x1 203.03572463989258,
:y1 550.3303833007812,
:x2 358.456729888916,
:y2 573.7589569091797,
:width 864,
:height 1296}),
:page 348},
:content {:text "compare-and-swap"},
:properties {:color "yellow"}}
{:id #uuid "6434fab0-08de-4f28-8d8e-f48f7e04aaaa",
:page 348,
:position {:bounding {:x1 0,
:y1 301.1428756713867,
:x2 746.9776916503906,
:y2 669.5536117553711,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 301.1428756713867,
:x2 0,
:y2 322.28572845458984,
:width 864,
:height 1296}
{:x1 0,
:y1 317.1428756713867,
:x2 0,
:y2 338.28572845458984,
:width 864,
:height 1296}
{:x1 528.7957763671875,
:y1 611.7679061889648,
:x2 745.6440734863281,
:y2 629.4822006225586,
:width 864,
:height 1296}
{:x1 171.89286422729492,
:y1 631.6964340209961,
:x2 746.9776916503906,
:y2 649.6250228881836,
:width 864,
:height 1296}
{:x1 171.89286422729492,
:y1 651.6250228881836,
:x2 731.2063903808594,
:y2 669.5536117553711,
:width 864,
:height 1296}),
:page 348},
:content {:text "est whether the value at the address specified by ptr is equal to expected; if so, update the memory location pointed to by ptr with the new value. If not, do nothing. "},
:properties {:color "yellow"}}
{:id #uuid "6434fb8c-2b3b-4d80-83fb-3b34da4dcd28",
:page 349,
:position {:bounding {:x1 333.7612075805664,
:y1 182.38393259048462,
:x2 382.13965606689453,
:y2 200.09822702407837,
:width 864,
:height 1296},
:rects ({:x1 333.7612075805664,
:y1 182.38393259048462,
:x2 382.13965606689453,
:y2 200.09822702407837,
:width 864,
:height 1296}),
:page 349},
:content {:text "delve "},
:properties {:color "green"}}
{:id #uuid "6434fde1-9d19-4381-805e-f2a972875dc2",
:page 349,
:position {:bounding {:x1 140.9732208251953,
:y1 353.53572845458984,
:x2 417.0097427368164,
:y2 376.9642868041992,
:width 864,
:height 1296},
:rects ({:x1 144.50000762939453,
:y1 353.53572845458984,
:x2 245.45536041259766,
:y2 376.9642868041992,
:width 864,
:height 1296}
{:x1 277.5178756713867,
:y1 353.53572845458984,
:x2 417.0097427368164,
:y2 376.9642868041992,
:width 864,
:height 1296}
{:x1 140.9732208251953,
:y1 355.1964340209961,
:x2 417.0097427368164,
:y2 373.1250228881836,
:width 864,
:height 1296}),
:page 349},
:content {:text " load-linked and store-conditional"},
:properties {:color "yellow"}}
{:id #uuid "6434fe1c-47f3-422c-a317-be72f08d6aef",
:page 349,
:position {:bounding {:x1 0,
:y1 173.14286613464355,
:x2 689.8495903015137,
:y2 474.5625305175781,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 173.14286613464355,
:x2 0,
:y2 194.28572463989258,
:width 864,
:height 1296}
{:x1 140.01786422729492,
:y1 436.919677734375,
:x2 689.8495903015137,
:y2 454.6339416503906,
:width 864,
:height 1296}
{:x1 116.09821891784668,
:y1 456.8482360839844,
:x2 576.551923751831,
:y2 474.5625305175781,
:width 864,
:height 1296}),
:page 349},
:content {:text "The load-linked operates much like a typical load instruction, and simply fetches a value from memory and places it in a register. "},
:properties {:color "yellow"}}
{:id #uuid "6434fe62-0e92-4414-86cc-b0c37fcf51ec",
:page 349,
:position {:bounding {:x1 0,
:y1 205.1428680419922,
:x2 691.6227188110352,
:y2 574.4018249511719,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 205.1428680419922,
:x2 0,
:y2 226.28572845458984,
:width 864,
:height 1296}
{:x1 0,
:y1 221.1428680419922,
:x2 0,
:y2 242.28572845458984,
:width 864,
:height 1296}
{:x1 0,
:y1 237.1428680419922,
:x2 0,
:y2 258.28572845458984,
:width 864,
:height 1296}
{:x1 0,
:y1 253.1428680419922,
:x2 0,
:y2 274.28572845458984,
:width 864,
:height 1296}
{:x1 277.6942825317383,
:y1 476.76788330078125,
:x2 689.7750625610352,
:y2 494.482177734375,
:width 864,
:height 1296}
{:x1 116.09821891784668,
:y1 496.6964416503906,
:x2 689.7808971405029,
:y2 514.6250305175781,
:width 864,
:height 1296}
{:x1 116.09821891784668,
:y1 516.6250305175781,
:x2 690.9502334594727,
:y2 534.5535888671875,
:width 864,
:height 1296}
{:x1 116.09821891784668,
:y1 536.5535888671875,
:x2 691.6227188110352,
:y2 554.482177734375,
:width 864,
:height 1296}
{:x1 116.09821891784668,
:y1 556.4732360839844,
:x2 505.1802444458008,
:y2 574.4018249511719,
:width 864,
:height 1296}),
:page 349},
:content {:text "store-conditional, which only succeeds (and updates the value stored at the address just load-linked from) if no intervening store to the address has taken place. In the case of success, the storeconditional returns 1 and updates the value at ptr to value; if it fails, the value at ptr is not updated and 0 is returned."},
:properties {:color "yellow"}}
{:id #uuid "64350170-c853-4080-9ed1-2777ea3a18c8",
:page 350,
:position {:bounding {:x1 171.88932037353516,
:y1 863.3928833007812,
:x2 325.20848846435547,
:y2 885.1071624755859,
:width 864,
:height 1296},
:rects ({:x1 171.88932037353516,
:y1 863.3928833007812,
:x2 325.20848846435547,
:y2 885.1071624755859,
:width 864,
:height 1296}),
:page 350},
:content {:text "Fetch-And-Add"},
:properties {:color "yellow"}}
{:id #uuid "643501c1-f11b-4e85-8125-d2a5a31f69b0",
:page 351,
:position {:bounding {:x1 287.3301315307617,
:y1 215.3393006324768,
:x2 330.14022064208984,
:y2 233.0535798072815,
:width 864,
:height 1296},
:rects ({:x1 287.3301315307617,
:y1 215.3393006324768,
:x2 330.14022064208984,
:y2 233.0535798072815,
:width 864,
:height 1296}),
:page 351},
:content {:text "brag "},
:properties {:color "green"}}
{:id #uuid "64350331-8fbb-4c41-9ac1-1a4ba852f772",
:page 351,
:position {:bounding {:x1 116.09821701049805,
:y1 483.9285888671875,
:x2 203.6010856628418,
:y2 507.3571472167969,
:width 864,
:height 1296},
:rects ({:x1 116.09821701049805,
:y1 483.9285888671875,
:x2 203.6010856628418,
:y2 507.3571472167969,
:width 864,
:height 1296}),
:page 351},
:content {:text "ticket lock"},
:properties {:color "yellow"}}
{:id #uuid "64350420-ca8a-4cac-af2f-f4e7deb5d1be",
:page 351,
:position {:bounding {:x1 0,
:y1 413.1428680419922,
:x2 738.2561340332031,
:y2 816.4464416503906,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 413.1428680419922,
:x2 0,
:y2 434.2857208251953,
:width 921.6,
:height 1382.4}
{:x1 204.68063354492188,
:y1 775.7679138183594,
:x2 738.2561340332031,
:y2 795.1964416503906,
:width 921.6,
:height 1382.4}
{:x1 123.83928871154785,
:y1 797.0179138183594,
:x2 618.5764713287354,
:y2 816.4464416503906,
:width 921.6,
:height 1382.4}),
:page 351},
:content {:text "it ensures progress for all threads. Once a thread is assigned its ticket value, it will be scheduled at some point in the future"},
:properties {:color "yellow"}}
{:id #uuid "64350781-6995-41db-8b8e-2de0eb84136a",
:page 353,
:position {:bounding {:x1 336.0178756713867,
:y1 439.3214416503906,
:x2 629.7097702026367,
:y2 464.46429443359375,
:width 921.6,
:height 1382.4},
:rects ({:x1 336.0178756713867,
:y1 439.3214416503906,
:x2 629.7097702026367,
:y2 464.46429443359375,
:width 921.6,
:height 1382.4}),
:page 353},
:content {:text "Lock With Test-and-set And Yield"},
:properties {:color "yellow"}}
{:id #uuid "643507af-1153-46c1-b232-31a9a203e5df",
:page 353,
:position {:bounding {:x1 0,
:y1 269.1428756713867,
:x2 738.272834777832,
:y2 606.2500381469727,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 269.1428756713867,
:x2 0,
:y2 290.28572845458984,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 285.1428756713867,
:x2 0,
:y2 306.28572845458984,
:width 921.6,
:height 1382.4}
{:x1 233.25476837158203,
:y1 544.3125381469727,
:x2 738.272834777832,
:y2 563.741096496582,
:width 921.6,
:height 1382.4}
{:x1 123.83929443359375,
:y1 563.9821853637695,
:x2 202.37335205078125,
:y2 589.1250381469727,
:width 921.6,
:height 1382.4}
{:x1 306.8750228881836,
:y1 563.9821853637695,
:x2 363.09754180908203,
:y2 589.1250381469727,
:width 921.6,
:height 1382.4}
{:x1 123.83929443359375,
:y1 567.4107437133789,
:x2 738.1959915161133,
:y2 586.8393020629883,
:width 921.6,
:height 1382.4}
{:x1 123.83929443359375,
:y1 586.8214492797852,
:x2 199.30642700195312,
:y2 606.2500381469727,
:width 921.6,
:height 1382.4}),
:page 353},
:content {:text "yield is simply a system call that moves the caller from the running state to the ready state, and thus promotes another thread to running. "},
:properties {:color "yellow"}}
{:id #uuid "6435099b-0834-483e-9ef2-98a0b795cf00",
:page 355,
:position {:bounding {:x1 381.2857208251953,
:y1 336.4643096923828,
:x2 535.9663848876953,
:y2 361.6071319580078,
:width 921.6,
:height 1382.4},
:rects ({:x1 381.2857208251953,
:y1 336.4643096923828,
:x2 535.9663848876953,
:y2 361.6071319580078,
:width 921.6,
:height 1382.4}),
:page 355},
:content {:text "priority inversion"},
:properties {:color "yellow"}}
{:id #uuid "643509b5-12a0-4ed9-8a96-f70b3fc0e373",
:page 355,
:position {:bounding {:x1 149.39746856689453,
:y1 359.30358123779297,
:x2 268.7185363769531,
:y2 378.73217010498047,
:width 921.6,
:height 1382.4},
:rects ({:x1 149.39746856689453,
:y1 359.30358123779297,
:x2 268.7185363769531,
:y2 378.73217010498047,
:width 921.6,
:height 1382.4}),
:page 355},
:content {:text "intergalactic "},
:properties {:color "green"}}
{:id #uuid "643509ba-662e-4d0a-906a-fd0987e24574",
:page 355,
:position {:bounding {:x1 268.71058654785156,
:y1 359.30358123779297,
:x2 328.3750915527344,
:y2 378.73217010498047,
:width 921.6,
:height 1382.4},
:rects ({:x1 268.71058654785156,
:y1 359.30358123779297,
:x2 328.3750915527344,
:y2 378.73217010498047,
:width 921.6,
:height 1382.4}),
:page 355},
:content {:text "scourge"},
:properties {:color "green"}}
{:id #uuid "64350b44-dfae-4544-93f9-ff2b343fefd4",
:page 354,
:position {:bounding {:x1 314.14287185668945,
:y1 927.5714721679688,
:x2 770.6213264465332,
:y2 952.7143249511719,
:width 921.6,
:height 1382.4},
:rects ({:x1 314.14287185668945,
:y1 927.5714721679688,
:x2 770.6213264465332,
:y2 952.7143249511719,
:width 921.6,
:height 1382.4}),
:page 354},
:content {:text "Lock With Queues, Test-and-set, Yield, And Wakeup"},
:properties {:color "yellow"}}
{:id #uuid "64350b4e-9559-49d9-aa37-eda9fe425b7f",
:page 353,
:position {:bounding {:x1 0,
:y1 621.1428756713867,
:x2 738.2636413574219,
:y2 1106.0625305175781,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 621.1428756713867,
:x2 0,
:y2 642.2857360839844,
:width 921.6,
:height 1382.4}
{:x1 149.35714721679688,
:y1 1065.3839721679688,
:x2 738.2636413574219,
:y2 1084.8125305175781,
:width 921.6,
:height 1382.4}
{:x1 123.83929443359375,
:y1 1086.6339721679688,
:x2 265.7547607421875,
:y2 1106.0625305175781,
:width 921.6,
:height 1382.4}),
:page 353},
:content {:text "The real problem with our previous approaches is that they leave too much to chance."},
:properties {:color "yellow"}}
{:id #uuid "64350bfb-64f7-4d41-8cc2-260dbec3372d",
:page 354,
:position {:bounding {:x1 267.0446472167969,
:y1 1086.6339721679688,
:x2 590.4763793945312,
:y2 1106.0625610351562,
:width 921.6,
:height 1382.4},
:rects ({:x1 267.0446472167969,
:y1 1086.6339721679688,
:x2 590.4763793945312,
:y2 1106.0625610351562,
:width 921.6,
:height 1382.4}),
:page 354},
:content {:text "park() to put a calling thread to sleep"},
:properties {:color "yellow"}}
{:id #uuid "64350c01-39bb-4d15-b554-0287b13806ee",
:page 354,
:position {:bounding {:x1 0,
:y1 669.1428909301758,
:x2 816.99169921875,
:y2 1127.3214721679688,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 669.1428909301758,
:x2 0,
:y2 690.2857475280762,
:width 921.6,
:height 1382.4}
{:x1 633.232177734375,
:y1 1086.6339721679688,
:x2 816.99169921875,
:y2 1106.0625610351562,
:width 921.6,
:height 1382.4}
{:x1 183.3571434020996,
:y1 1107.8929138183594,
:x2 415.88805770874023,
:y2 1127.3214721679688,
:width 921.6,
:height 1382.4}),
:page 354},
:content {:text "unpark(threadID) to wake a particular thread"},
:properties {:color "yellow"}}
{:id #uuid "64351ba3-d4b5-4999-bc61-7733d5e0a061",
:page 356,
:position {:bounding {:x1 569.2232360839844,
:y1 702.4732360839844,
:x2 751.833984375,
:y2 727.6161193847656,
:width 921.6,
:height 1382.4},
:rects ({:x1 569.2232360839844,
:y1 702.4732360839844,
:x2 751.833984375,
:y2 727.6161193847656,
:width 921.6,
:height 1382.4}),
:page 356},
:content {:text "wakeup/waiting race"},
:properties {:color "yellow"}}
{:id #uuid "64351e9a-6505-4176-a6fb-ddf63f3245a8",
:page 356,
:position {:bounding {:x1 471.6607360839844,
:y1 1127.5625610351562,
:x2 516.3173828125,
:y2 1152.7054138183594,
:width 921.6,
:height 1382.4},
:rects ({:x1 471.6607360839844,
:y1 1127.5625610351562,
:x2 516.3173828125,
:y2 1152.7054138183594,
:width 921.6,
:height 1382.4}),
:page 356},
:content {:text "futex"},
:properties {:color "yellow"}}
{:id #uuid "64352221-d590-4371-a5f0-29e9cfa75ccb",
:page 357,
:position {:bounding {:x1 265.9553680419922,
:y1 829.5625305175781,
:x2 596.0395202636719,
:y2 854.7054138183594,
:width 921.6,
:height 1382.4},
:rects ({:x1 379.21429443359375,
:y1 829.5625305175781,
:x2 596.0395202636719,
:y2 854.7054138183594,
:width 921.6,
:height 1382.4}
{:x1 265.9553680419922,
:y1 831.1429138183594,
:x2 379.2243347167969,
:y2 850.5714721679688,
:width 921.6,
:height 1382.4}),
:page 357},
:content {:text "Figure 28.10: Linux-based Futex Locks"},
:properties {:color "yellow"}}
{:id #uuid "643522a7-4b16-4998-9b2f-47a852681a16",
:page 358,
:position {:bounding {:x1 0,
:y1 157.14286422729492,
:x2 797.6362762451172,
:y2 485.67858505249023,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 157.14286422729492,
:x2 0,
:y2 178.28571701049805,
:width 921.6,
:height 1382.4}
{:x1 707.2857513427734,
:y1 439.2767906188965,
:x2 797.6362762451172,
:y2 464.41967391967773,
:width 921.6,
:height 1382.4}
{:x1 183.3571548461914,
:y1 460.5357322692871,
:x2 220.56002044677734,
:y2 485.67858505249023,
:width 921.6,
:height 1382.4}
{:x1 183.3571548461914,
:y1 463.9643211364746,
:x2 220.56002044677734,
:y2 483.0893211364746,
:width 921.6,
:height 1382.4}),
:page 358},
:content {:text "two-phase lock"},
:properties {:color "yellow"}}
{:id #uuid "6435230e-d84a-4c91-8329-b7608b0d543a",
:page 358,
:position {:bounding {:x1 0,
:y1 189.14286422729492,
:x2 797.7836151123047,
:y2 524.0535850524902,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 189.14286422729492,
:x2 0,
:y2 210.28571701049805,
:width 921.6,
:height 1382.4}
{:x1 498.4398956298828,
:y1 483.37502670288086,
:x2 797.7836151123047,
:y2 502.80358505249023,
:width 921.6,
:height 1382.4}
{:x1 183.3571548461914,
:y1 504.62502670288086,
:x2 546.6940078735352,
:y2 524.0535850524902,
:width 921.6,
:height 1382.4}),
:page 358},
:content {:text "in the first phase, the lock spins for a while, hoping that it can acquire the lock."},
:properties {:color "yellow"}}
{:id #uuid "64352344-d140-468c-987c-e8afa05c2171",
:page 358,
:position {:bounding {:x1 0,
:y1 221.14286422729492,
:x2 797.7610244750977,
:y2 587.8214378356934,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 221.14286422729492,
:x2 0,
:y2 242.2857322692871,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 237.14286422729492,
:x2 0,
:y2 258.2857322692871,
:width 921.6,
:height 1382.4}
{:x1 298.8221740722656,
:y1 525.8750267028809,
:x2 797.7419738769531,
:y2 545.3036155700684,
:width 921.6,
:height 1382.4}
{:x1 183.3571548461914,
:y1 547.1339378356934,
:x2 797.7610244750977,
:y2 566.5625267028809,
:width 921.6,
:height 1382.4}
{:x1 183.3571548461914,
:y1 568.3929100036621,
:x2 464.9660415649414,
:y2 587.8214378356934,
:width 921.6,
:height 1382.4}),
:page 358},
:content {:text " the lock is not acquired during the first spin phase, a second phase is entered, where the caller is put to sleep, and only woken up when the lock becomes free later."},
:properties {:color "yellow"}}
{:id #uuid "643525b0-e245-489b-877d-a2a1d63e7ea6",
:page 361,
:position {:bounding {:x1 174.14286422729492,
:y1 325.0178756713867,
:x2 645.9385185241699,
:y2 360.44644927978516,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 174.14286422729492,
:y1 325.0178756713867,
:x2 645.9385185241699,
:y2 360.44644927978516,
:width 806.3999999999999,
:height 1209.6}),
:page 361},
:content {:text "Lock-based Concurrent Data Structures"},
:properties {:color "yellow"}}
{:id #uuid "643525e5-fb85-48d4-905a-2a88b9ac0b0d",
:page 361,
:position {:bounding {:x1 108.35714340209961,
:y1 815.107177734375,
:x2 298.91018295288086,
:y2 835.6786193847656,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714340209961,
:y1 815.107177734375,
:x2 298.91018295288086,
:y2 835.6786193847656,
:width 806.3999999999999,
:height 1209.6}),
:page 361},
:content {:text "Concurrent Counters"},
:properties {:color "yellow"}}
{:id #uuid "64352751-d9bd-4d5e-a8ba-cd18f86b1a15",
:page 363,
:position {:bounding {:x1 156.65179443359375,
:y1 746.232177734375,
:x2 260.2728805541992,
:y2 762.8036193847656,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 156.65179443359375,
:y1 746.232177734375,
:x2 260.2728805541992,
:y2 762.8036193847656,
:width 806.3999999999999,
:height 1209.6}),
:page 363},
:content {:text "perfect scaling"},
:properties {:color "yellow"}}
{:id #uuid "64352794-d7c8-42f9-8321-f874967cebf2",
:page 363,
:position {:bounding {:x1 376.82144927978516,
:y1 967.5000305175781,
:x2 523.3794326782227,
:y2 984.0715026855469,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 376.82144927978516,
:y1 967.5000305175781,
:x2 523.3794326782227,
:y2 984.0715026855469,
:width 806.3999999999999,
:height 1209.6}),
:page 363},
:content {:text "approximate counter"},
:properties {:color "yellow"}}
{:id #uuid "643530d8-9d09-4c8a-9e92-47dfe814ef50",
:page 367,
:position {:bounding {:x1 116.09400177001953,
:y1 446.52679443359375,
:x2 350.7183532714844,
:y2 468.24107360839844,
:width 864,
:height 1296},
:rects ({:x1 116.09400177001953,
:y1 446.52679443359375,
:x2 350.7183532714844,
:y2 468.24107360839844,
:width 864,
:height 1296}),
:page 367},
:content {:text "Concurrent Linked Lists"},
:properties {:color "yellow"}}
{:id #uuid "64353237-4b74-4148-b7c1-5854d83a18c7",
:page 369,
:position {:bounding {:x1 255.12501525878906,
:y1 1018.0357666015625,
:x2 451.5310516357422,
:y2 1035.7500610351562,
:width 864,
:height 1296},
:rects ({:x1 255.12501525878906,
:y1 1018.0357666015625,
:x2 451.5310516357422,
:y2 1035.7500610351562,
:width 864,
:height 1296}),
:page 369},
:content {:text "hand-over-hand locking"},
:properties {:color "yellow"}}
{:id #uuid "64353353-9de2-421b-967d-dc80a597eecd",
:page 370,
:position {:bounding {:x1 171.89286422729492,
:y1 644.6607360839844,
:x2 361.0623435974121,
:y2 666.3750305175781,
:width 864,
:height 1296},
:rects ({:x1 171.89286422729492,
:y1 644.6607360839844,
:x2 361.0623435974121,
:y2 666.3750305175781,
:width 864,
:height 1296}),
:page 370},
:content {:text "Concurrent Queues"},
:properties {:color "yellow"}}
{:id #uuid "6435360d-c176-494a-9d61-b1fd0107a9bd",
:page 372,
:position {:bounding {:x1 171.89286041259766,
:y1 604.0268096923828,
:x2 395.03311920166016,
:y2 625.7411041259766,
:width 864,
:height 1296},
:rects ({:x1 171.89286041259766,
:y1 604.0268096923828,
:x2 395.03311920166016,
:y2 625.7411041259766,
:width 864,
:height 1296}),
:page 372},
:content {:text "Concurrent Hash Table"},
:properties {:color "yellow"}}
{:id #uuid "6435363d-c697-42a6-bfd0-8a2332cef394",
:page 372,
:position {:bounding {:x1 0,
:y1 445.1428680419922,
:x2 745.5475311279297,
:y2 804.1607513427734,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 445.1428680419922,
:x2 0,
:y2 466.28575134277344,
:width 864,
:height 1296}
{:x1 532.4713592529297,
:y1 766.5178680419922,
:x2 745.5475311279297,
:y2 784.2321624755859,
:width 864,
:height 1296}
{:x1 171.89286041259766,
:y1 786.4464569091797,
:x2 632.3166275024414,
:y2 804.1607513427734,
:width 864,
:height 1296}),
:page 372},
:content {:text "instead of having a single lock for the entire structure, it uses a lock per hash bucket"},
:properties {:color "yellow"}}
{:id #uuid "6435365a-b5d6-46fc-a9a1-25b0d23aa529",
:page 372,
:position {:bounding {:x1 564.7891998291016,
:y1 1059.107177734375,
:x2 651.2378387451172,
:y2 1076.8214721679688,
:width 864,
:height 1296},
:rects ({:x1 564.7891998291016,
:y1 1059.107177734375,
:x2 651.2378387451172,
:y2 1076.8214721679688,
:width 864,
:height 1296}),
:page 372},
:content {:text "ubiquitous "},
:properties {:color "green"}}
{:id #uuid "6435367f-dd9e-449d-b0e4-3d8c9e14f6c2",
:page 373,
:position {:bounding {:x1 320.9654083251953,
:y1 875.2946624755859,
:x2 378.3458709716797,
:y2 893.0089569091797,
:width 864,
:height 1296},
:rects ({:x1 320.9654083251953,
:y1 875.2946624755859,
:x2 378.3458709716797,
:y2 893.0089569091797,
:width 864,
:height 1296}),
:page 373},
:content {:text "humble "},
:properties {:color "green"}}
{:id #uuid "643536c8-fc05-4bbe-8d1d-0f4f6d1c4fee",
:page 376,
:position {:bounding {:x1 443.3345642089844,
:y1 585.2410888671875,
:x2 497.6003112792969,
:y2 602.9553833007812,
:width 864,
:height 1296},
:rects ({:x1 443.3345642089844,
:y1 585.2410888671875,
:x2 497.6003112792969,
:y2 602.9553833007812,
:width 864,
:height 1296}),
:page 376},
:content {:text "sloppy "},
:properties {:color "green"}}
{:id #uuid "643537d3-7d01-442b-b47e-59433c2aa6db",
:page 378,
:position {:bounding {:x1 596.2246246337891,
:y1 701.2500305175781,
:x2 659.0949554443359,
:y2 718.9643249511719,
:width 864,
:height 1296},
:rects ({:x1 596.2246246337891,
:y1 701.2500305175781,
:x2 659.0949554443359,
:y2 718.9643249511719,
:width 864,
:height 1296}),
:page 378},
:content {:text "grossly "},
:properties {:color "green"}}
{:id #uuid "643537ff-1028-4725-8d7a-c0338cc946d3",
:page 378,
:position {:bounding {:x1 293.5893096923828,
:y1 858.1875305175781,
:x2 445.99464416503906,
:y2 881.6160888671875,
:width 864,
:height 1296},
:rects ({:x1 293.5893096923828,
:y1 858.1875305175781,
:x2 445.99464416503906,
:y2 881.6160888671875,
:width 864,
:height 1296}),
:page 378},
:content {:text "condition variable"},
:properties {:color "yellow"}}
{:id #uuid "64353882-7697-4c16-8e53-c8f59ea256c1",
:page 378,
:position {:bounding {:x1 0,
:y1 477.1428642272949,
:x2 747.7302322387695,
:y2 981.2410888671875,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 477.1428642272949,
:x2 0,
:y2 498.28572273254395,
:width 864,
:height 1296}
{:x1 0,
:y1 493.1428656578064,
:x2 0,
:y2 514.2857241630554,
:width 864,
:height 1296}
{:x1 0,
:y1 509.14286613464355,
:x2 0,
:y2 530.2857246398926,
:width 864,
:height 1296}
{:x1 0,
:y1 525.1428661346436,
:x2 0,
:y2 546.2857246398926,
:width 864,
:height 1296}
{:x1 0,
:y1 541.1428680419922,
:x2 0,
:y2 562.2857246398926,
:width 864,
:height 1296}
{:x1 484.25003814697266,
:y1 858.1875305175781,
:x2 641.9464797973633,
:y2 881.6160888671875,
:width 864,
:height 1296}
{:x1 463.3002700805664,
:y1 859.8482360839844,
:x2 747.3339920043945,
:y2 877.7767944335938,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 879.7768249511719,
:x2 745.5433197021484,
:y2 897.7053833007812,
:width 864,
:height 1296}
{:x1 262.47322845458984,
:y1 898.0357360839844,
:x2 341.1931381225586,
:y2 921.4643249511719,
:width 864,
:height 1296}
{:x1 531.553596496582,
:y1 898.0357360839844,
:x2 601.7216262817383,
:y2 921.4643249511719,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 899.6964416503906,
:x2 747.192024230957,
:y2 917.6250305175781,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 919.6250305175781,
:x2 745.5449066162109,
:y2 937.5535888671875,
:width 864,
:height 1296}
{:x1 717.848274230957,
:y1 937.8928833007812,
:x2 747.7302322387695,
:y2 961.3214721679688,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 939.5535888671875,
:x2 747.7302322387695,
:y2 957.482177734375,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 957.8125305175781,
:x2 229.24837493896484,
:y2 981.2410888671875,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 960.669677734375,
:x2 371.48160552978516,
:y2 978.5982360839844,
:width 864,
:height 1296}),
:page 378},
:content {:text "A condition variable is an explicit queue that threads can put themselves on when some state of execution(i.e., some condition) is not as desired (by waiting on the condition); some other thread, when it changes said state, can then wake one (or more) of those waiting threads and thus allow them to continue (by signaling on the condition). "},
:properties {:color "yellow"}}
{:id #uuid "643538d5-9ea3-4399-9fa2-d75fdf0e1dd4",
:page 378,
:position {:bounding {:x1 0,
:y1 653.1428680419922,
:x2 747.631721496582,
:y2 1116.6607666015625,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 653.1428680419922,
:x2 0,
:y2 674.2857284545898,
:width 864,
:height 1296}
{:x1 650.6428909301758,
:y1 1079.0178833007812,
:x2 747.631721496582,
:y2 1096.9464721679688,
:width 864,
:height 1296}
{:x1 171.8928680419922,
:y1 1098.9464721679688,
:x2 594.3628997802734,
:y2 1116.6607666015625,
:width 864,
:height 1296}),
:page 378},
:content {:text "wait() call is executed when a thread wishes to put itself to sleep;"},
:properties {:color "yellow"}}
{:id #uuid "643538de-cc40-4dd2-8f03-9492004f209b",
:page 379,
:position {:bounding {:x1 0,
:y1 541.1428680419922,
:x2 689.7592334747314,
:y2 885.2500305175781,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 541.1428680419922,
:x2 0,
:y2 562.2857360839844,
:width 864,
:height 1296}
{:x1 116.09822273254395,
:y1 847.607177734375,
:x2 689.7592334747314,
:y2 865.3214721679688,
:width 864,
:height 1296}
{:x1 116.09822273254395,
:y1 867.5357360839844,
:x2 633.988603591919,
:y2 885.2500305175781,
:width 864,
:height 1296}),
:page 379},
:content {:text "is executed when a thread has changed something in the program and thus wants to wake a sleeping thread waiting on this condition. S"},
:properties {:color "yellow"}}
{:id #uuid "64353eb8-8ed8-4680-a3c0-91608b429408",
:page 379,
:position {:bounding {:x1 360.32312774658203,
:y1 1098.9464721679688,
:x2 409.81058502197266,
:y2 1116.6607666015625,
:width 864,
:height 1296},
:rects ({:x1 360.32312774658203,
:y1 1098.9464721679688,
:x2 409.81058502197266,
:y2 1116.6607666015625,
:width 864,
:height 1296}),
:page 379},
:content {:text "stems "},
:properties {:color "green"}}
{:id #uuid "643547c5-1613-49e9-899e-0e86f59a1462",
:page 380,
:position {:bounding {:x1 0,
:y1 285.14288330078125,
:x2 747.3582305908203,
:y2 563.0268249511719,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 285.14288330078125,
:x2 0,
:y2 306.2857437133789,
:width 864,
:height 1296}
{:x1 541.1089324951172,
:y1 525.1786041259766,
:x2 747.3582305908203,
:y2 543.107177734375,
:width 864,
:height 1296}
{:x1 171.89286422729492,
:y1 545.0982513427734,
:x2 745.9600219726562,
:y2 563.0268249511719,
:width 864,
:height 1296}),
:page 380},
:content {:text "uses a while loop instead of just an if statement when deciding whether to wait on the condition."},
:properties {:color "yellow"}}
{:id #uuid "64354974-adea-4b20-90f4-a12ebe1e4d5b",
:page 382,
:position {:bounding {:x1 279.43043518066406,
:y1 543.8750152587891,
:x2 506.8169403076172,
:y2 567.3035888671875,
:width 864,
:height 1296},
:rects ({:x1 279.4464416503906,
:y1 543.8750152587891,
:x2 443.5089569091797,
:y2 567.3035888671875,
:width 864,
:height 1296}
{:x1 279.43043518066406,
:y1 545.5357208251953,
:x2 506.8169403076172,
:y2 563.4642944335938,
:width 864,
:height 1296}),
:page 382},
:content {:text "producer/consumer problem,"},
:properties {:color "yellow"}}
{:id #uuid "64354cc4-14c5-408d-b879-7d4d011b2b5c",
:page 385,
:position {:bounding {:x1 294.6515197753906,
:y1 1077.3572082519531,
:x2 425.10882568359375,
:y2 1100.7857971191406,
:width 864,
:height 1296},
:rects ({:x1 294.6785888671875,
:y1 1077.3572082519531,
:x2 425.10882568359375,
:y2 1100.7857971191406,
:width 864,
:height 1296}
{:x1 294.6515197753906,
:y1 1079.0179138183594,
:x2 294.65740966796875,
:y2 1096.7322082519531,
:width 864,
:height 1296}),
:page 385},
:content {:text "Mesa semantics"},
:properties {:color "yellow"}}
{:id #uuid "64354d46-4286-44fd-9e82-2ba562a50f25",
:page 386,
:position {:bounding {:x1 0,
:y1 477.1428909301758,
:x2 746.0656509399414,
:y2 818.6518249511719,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 477.1428909301758,
:x2 0,
:y2 498.28575134277344,
:width 864,
:height 1296}
{:x1 171.89286422729492,
:y1 779.3482666015625,
:x2 308.99941635131836,
:y2 802.7768249511719,
:width 864,
:height 1296}
{:x1 308.9821548461914,
:y1 781.0089721679688,
:x2 746.0656509399414,
:y2 798.9375610351562,
:width 864,
:height 1296}
{:x1 171.89286422729492,
:y1 800.9375610351562,
:x2 693.3923149108887,
:y2 818.6518249511719,
:width 864,
:height 1296}),
:page 386},
:content {:text "Hoare semantics, is harder to build but provides a stronger guarantee that the woken thread will run immediately upon being woken "},
:properties {:color "yellow"}}
{:id #uuid "64354db0-8c74-4c14-b063-d26378a10555",
:page 386,
:position {:bounding {:x1 281.8214340209961,
:y1 997.6697082519531,
:x2 477.6873245239258,
:y2 1021.0982971191406,
:width 864,
:height 1296},
:rects ({:x1 286.6964340209961,
:y1 997.6697082519531,
:x2 477.6873245239258,
:y2 1021.0982971191406,
:width 864,
:height 1296}
{:x1 281.8214340209961,
:y1 999.3304138183594,
:x2 477.6873245239258,
:y2 1017.2590026855469,
:width 864,
:height 1296}),
:page 386},
:content {:text " always use while loops"},
:properties {:color "yellow"}}
{:id #uuid "64354f54-b26c-48dc-a328-4ae355b680f3",
:page 390,
:position {:bounding {:x1 593.6900482177734,
:y1 484.1875305175781,
:x2 652.7586212158203,
:y2 501.9018249511719,
:width 864,
:height 1296},
:rects ({:x1 593.6900482177734,
:y1 484.1875305175781,
:x2 652.7586212158203,
:y2 501.9018249511719,
:width 864,
:height 1296}),
:page 390},
:content {:text "albeit "},
:properties {:color "green"}}
{:id #uuid "64355441-5a1b-4015-baa1-65917526079c",
:page 391,
:position {:bounding {:x1 494.5921096801758,
:y1 1057.4464721679688,
:x2 649.2800369262695,
:y2 1080.8750610351562,
:width 864,
:height 1296},
:rects ({:x1 494.61609649658203,
:y1 1057.4464721679688,
:x2 649.2800369262695,
:y2 1080.8750610351562,
:width 864,
:height 1296}
{:x1 494.5921096801758,
:y1 1059.1072082519531,
:x2 649.2800369262695,
:y2 1076.8214721679688,
:width 864,
:height 1296}),
:page 391},
:content {:text "covering condition"},
:properties {:color "yellow"}}
{:id #uuid "643554f4-75a7-48fa-9366-87058ee723fb",
:page 390,
:position {:bounding {:x1 171.89286422729492,
:y1 317.60716247558594,
:x2 249.12459182739258,
:y2 341.0357208251953,
:width 864,
:height 1296},
:rects ({:x1 171.89286422729492,
:y1 317.60716247558594,
:x2 249.12459182739258,
:y2 341.0357208251953,
:width 864,
:height 1296}),
:page 390},
:content {:text "spurious "},
:properties {:color "green"}}
{:id #uuid "64355502-f41f-40dd-b71f-e0abdbc76716",
:page 390,
:position {:bounding {:x1 171.89286422729492,
:y1 317.60716247558594,
:x2 322.3585624694824,
:y2 341.0357208251953,
:width 864,
:height 1296},
:rects ({:x1 171.89286422729492,
:y1 317.60716247558594,
:x2 322.3585624694824,
:y2 341.0357208251953,
:width 864,
:height 1296}),
:page 390},
:content {:text "spurious wakeups"},
:properties {:color "yellow"}}
{:id #uuid "64356d96-cce8-48ad-80f1-e3e02a1a4684",
:page 396,
:position {:bounding {:x1 131.578125,
:y1 921.546875,
:x2 249.6654510498047,
:y2 945.546875,
:width 979.1999999999999,
:height 1468.8},
:rects ({:x1 131.578125,
:y1 921.546875,
:x2 249.6654510498047,
:y2 945.546875,
:width 979.1999999999999,
:height 1468.8}),
:page 396},
:content {:text "Semaphores"},
:properties {:color "yellow"}}
{:id #uuid "64356dba-48b4-49b8-8182-c962f12f03a5",
:page 396,
:position {:bounding {:x1 0,
:y1 301,
:x2 784.2239990234375,
:y2 1009.59375,
:width 979.1999999999999,
:height 1468.8},
:rects ({:x1 0,
:y1 301,
:x2 0,
:y2 323,
:width 979.1999999999999,
:height 1468.8}
{:x1 158.6875,
:y1 967,
:x2 784.2239990234375,
:y2 987,
:width 979.1999999999999,
:height 1468.8}
{:x1 131.578125,
:y1 989.59375,
:x2 290.9900207519531,
:y2 1009.59375,
:width 979.1999999999999,
:height 1468.8}),
:page 396},
:content {:text "A semaphore is an object with an integer value that we can manipulate with two routines;"},
:properties {:color "yellow"}}
{:id #uuid "64357404-d348-42b3-96a3-ba28575baa66",
:page 397,
:position {:bounding {:x1 402.39794921875,
:y1 611.3125,
:x2 466.92041015625,
:y2 630.3125,
:width 921.6,
:height 1382.4},
:rects ({:x1 402.39794921875,
:y1 611.3125,
:x2 466.92041015625,
:y2 630.3125,
:width 921.6,
:height 1382.4}),
:page 397},
:content {:text "salient "},
:properties {:color "green"}}
{:id #uuid "6435744b-a300-40ad-ba91-157666d8cd2a",
:page 397,
:position {:bounding {:x1 359.15777587890625,
:y1 1154.46875,
:x2 725.4879150390625,
:y2 1179.46875,
:width 921.6,
:height 1382.4},
:rects ({:x1 359.171875,
:y1 1154.46875,
:x2 725.4879150390625,
:y2 1179.46875,
:width 921.6,
:height 1382.4}
{:x1 359.15777587890625,
:y1 1156.1875,
:x2 359.16748046875,
:y2 1175.1875,
:width 921.6,
:height 1382.4}),
:page 397},
:content {:text "Semaphore: Definitions Of Wait And Post"},
:properties {:color "yellow"}}
{:id #uuid "64357512-e25b-4226-961a-caec367fc8a3",
:page 397,
:position {:bounding {:x1 0,
:y1 477,
:x2 797.5911254882812,
:y2 864.109375,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 477,
:x2 0,
:y2 499,
:width 921.6,
:height 1382.4}
{:x1 208.84375,
:y1 823.859375,
:x2 797.5911254882812,
:y2 842.859375,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 845.109375,
:x2 379.579833984375,
:y2 864.109375,
:width 921.6,
:height 1382.4}),
:page 397},
:content {:text "Third, the value of the semaphore, when negative, is equal to the number of waiting threads "},
:properties {:color "yellow"}}
{:id #uuid "6435753a-65b5-4e46-82bc-54c11c1cd533",
:page 398,
:position {:bounding {:x1 123.828125,
:y1 461.921875,
:x2 404.9288024902344,
:y2 484.921875,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 461.921875,
:x2 404.9288024902344,
:y2 484.921875,
:width 921.6,
:height 1382.4}),
:page 398},
:content {:text "Binary Semaphores (Locks)"},
:properties {:color "yellow"}}
{:id #uuid "64357930-2d96-4867-bc3d-2fe89990ce5f",
:page 399,
:position {:bounding {:x1 183.359375,
:y1 1122.015625,
:x2 450.3201599121094,
:y2 1145.015625,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 1122.015625,
:x2 450.3201599121094,
:y2 1145.015625,
:width 921.6,
:height 1382.4}),
:page 399},
:content {:text "Semaphores For Ordering"},
:properties {:color "yellow"}}
{:id #uuid "64357c6d-381e-492e-b901-095454f5315e",
:page 401,
:position {:bounding {:x1 183.33059692382812,
:y1 1062.84375,
:x2 721.8597412109375,
:y2 1085.84375,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.33059692382812,
:y1 1062.84375,
:x2 721.8597412109375,
:y2 1085.84375,
:width 921.6,
:height 1382.4}),
:page 401},
:content {:text "The Producer/Consumer (Bounded Buffer) Problem"},
:properties {:color "yellow"}}
{:id #uuid "643583b4-26b1-4cbf-801c-11ed6e63976e",
:page 406,
:position {:bounding {:x1 123.828125,
:y1 331.78125,
:x2 335.4051513671875,
:y2 354.78125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 331.78125,
:x2 335.4051513671875,
:y2 354.78125,
:width 921.6,
:height 1382.4}),
:page 406},
:content {:text "Reader-Writer Locks"},
:properties {:color "yellow"}}
{:id #uuid "64358755-1fae-4ea2-93a3-8c9d3d3e11c3",
:page 411,
:position {:bounding {:x1 726.3629150390625,
:y1 422.703125,
:x2 761.9802856445312,
:y2 441.703125,
:width 921.6,
:height 1382.4},
:rects ({:x1 726.3629150390625,
:y1 422.703125,
:x2 761.9802856445312,
:y2 441.703125,
:width 921.6,
:height 1382.4}),
:page 411},
:content {:text " bog"},
:properties {:color "green"}}
{:id #uuid "64358758-cb9c-4e8d-aaa4-f8e50457db88",
:page 411,
:position {:bounding {:x1 259.0669860839844,
:y1 334.59375,
:x2 367.23944091796875,
:y2 357.59375,
:width 921.6,
:height 1382.4},
:rects ({:x1 259.0669860839844,
:y1 334.59375,
:x2 367.23944091796875,
:y2 357.59375,
:width 921.6,
:height 1382.4}),
:page 411},
:content {:text "Throttling"},
:properties {:color "green"}}
{:id #uuid "643587a7-ade4-4f09-be50-aea233ff02c0",
:page 408,
:position {:bounding {:x1 123.81153106689453,
:y1 539.671875,
:x2 380.1902160644531,
:y2 562.671875,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.81153106689453,
:y1 539.671875,
:x2 380.1902160644531,
:y2 562.671875,
:width 921.6,
:height 1382.4}),
:page 408},
:content {:text "The Dining Philosophers"},
:properties {:color "yellow"}}
{:id #uuid "64358802-3b22-46ed-a0e2-71cc9df69a7b",
:page 408,
:position {:bounding {:x1 513.1211547851562,
:y1 882.953125,
:x2 556.3884887695312,
:y2 901.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 513.1211547851562,
:y1 882.953125,
:x2 556.3884887695312,
:y2 901.953125,
:width 921.6,
:height 1382.4}),
:page 408},
:content {:text "ensue"},
:properties {:color "green"}}
{:id #uuid "6435889f-1375-4b94-8630-b3d0d7bdfa56",
:page 408,
:position {:bounding {:x1 0,
:y1 381,
:x2 738.0819091796875,
:y2 901.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 381,
:x2 0,
:y2 403,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 397,
:x2 0,
:y2 419,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 413,
:x2 0,
:y2 435,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 429,
:x2 0,
:y2 451,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 445,
:x2 0,
:y2 467,
:width 921.6,
:height 1382.4}
{:x1 174.31170654296875,
:y1 776.6875,
:x2 738.0610961914062,
:y2 795.6875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 797.9375,
:x2 738.0778198242188,
:y2 817.0625,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 819.1875,
:x2 738.0721435546875,
:y2 838.3125,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 840.4375,
:x2 738.0819091796875,
:y2 859.5625,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 861.703125,
:x2 738.0709838867188,
:y2 880.828125,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 882.953125,
:x2 175.7489471435547,
:y2 901.953125,
:width 921.6,
:height 1382.4}),
:page 408},
:content {:text "here are five “philosophers” sitting around a table. Between each pair of philosophers is a single fork (and thus, five total). The philosophers each have times where they think, and dont need any forks, and times where they eat. In order to eat, a philosopher needs two forks, both the one on their left and the one on their right. The contention for these forks,"},
:properties {:color "yellow"}}
{:id #uuid "643589a6-31e6-4603-9259-999e9c8860f7",
:page 411,
:position {:bounding {:x1 269.5417785644531,
:y1 887.1875,
:x2 515.8197631835938,
:y2 910.1875,
:width 921.6,
:height 1382.4},
:rects ({:x1 269.5417785644531,
:y1 887.1875,
:x2 515.8197631835938,
:y2 910.1875,
:width 921.6,
:height 1382.4}),
:page 411},
:content {:text "Implement Semaphores"},
:properties {:color "yellow"}}
{:id #uuid "64358b0c-e441-4d0a-852d-ecfde369306c",
:page 410,
:position {:bounding {:x1 627.167236328125,
:y1 1150.953125,
:x2 738.0892333984375,
:y2 1169.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 627.167236328125,
:y1 1150.953125,
:x2 738.0892333984375,
:y2 1169.953125,
:width 921.6,
:height 1382.4}),
:page 410},
:content {:text "ramifications"},
:properties {:color "green"}}
{:id #uuid "64358de1-f418-44fd-8a77-bc0faa368059",
:page 412,
:position {:bounding {:x1 274.109375,
:y1 773.328125,
:x2 701.076904296875,
:y2 798.328125,
:width 921.6,
:height 1382.4},
:rects ({:x1 274.109375,
:y1 773.328125,
:x2 701.076904296875,
:y2 798.328125,
:width 921.6,
:height 1382.4}),
:page 412},
:content {:text "Implementing Zemaphores With Locks And CVs"},
:properties {:color "yellow"}}
{:id #uuid "64361e4c-62eb-4599-9809-0f77f9ce1cd0",
:page 420,
:position {:bounding {:x1 0,
:y1 156.57144165039062,
:x2 608.1144943237305,
:y2 438.83038330078125,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 156.57144165039062,
:x2 0,
:y2 179.42858505249023,
:width 806.3999999999999,
:height 1209.6}
{:x1 115.01848602294922,
:y1 403.6607360839844,
:x2 608.1144943237305,
:y2 420.23216247558594,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714530944824,
:y1 422.2589569091797,
:x2 315.529935836792,
:y2 438.83038330078125,
:width 806.3999999999999,
:height 1209.6}),
:page 420},
:content {:text " large fraction (97%) of non-deadlock bugs studied by Lu et al. are either atomicity or order violations."},
:properties {:color "yellow"}}
{:id #uuid "64361fb7-5aa6-45cd-8b1e-aa0d0c300ad2",
:page 420,
:position {:bounding {:x1 108.35714912414551,
:y1 626.1071624755859,
:x2 202.0477237701416,
:y2 646.6785888671875,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714912414551,
:y1 626.1071624755859,
:x2 202.0477237701416,
:y2 646.6785888671875,
:width 806.3999999999999,
:height 1209.6}),
:page 420},
:content {:text "Deadlock "},
:properties {:color "yellow"}}
{:id #uuid "64361fd1-49ff-4023-8493-840ac423086a",
:page 422,
:position {:bounding {:x1 108.35714721679688,
:y1 356.9196548461914,
:x2 319.1251525878906,
:y2 381.49108123779297,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714721679688,
:y1 356.9196548461914,
:x2 319.1251525878906,
:y2 381.49108123779297,
:width 806.3999999999999,
:height 1209.6}),
:page 422},
:content {:text "Conditions for Deadlock"},
:properties {:color "yellow"}}
{:id #uuid "643620d9-cdb6-4073-89f4-f9f8ac223073",
:page 422,
:position {:bounding {:x1 108.35714340209961,
:y1 720.6875305175781,
:x2 201.34223556518555,
:y2 745.2589721679688,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714340209961,
:y1 720.6875305175781,
:x2 201.34223556518555,
:y2 745.2589721679688,
:width 806.3999999999999,
:height 1209.6}),
:page 422},
:content {:text "Prevention"},
:properties {:color "yellow"}}
{:id #uuid "643620fb-edc6-43b2-b4b2-43b010cfc46e",
:page 422,
:position {:bounding {:x1 108.35714340209961,
:y1 752.3482360839844,
:x2 209.8732566833496,
:y2 774.6339569091797,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714340209961,
:y1 752.3482360839844,
:x2 209.8732566833496,
:y2 774.6339569091797,
:width 806.3999999999999,
:height 1209.6}),
:page 422},
:content {:text "Circular Wait"},
:properties {:color "yellow"}}
{:id #uuid "64362497-58cd-45da-8ab5-84f96e899e16",
:page 423,
:position {:bounding {:x1 267.0553894042969,
:y1 182.01786041259766,
:x2 620.5501251220703,
:y2 198.58929443359375,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 267.0553894042969,
:y1 182.01786041259766,
:x2 620.5501251220703,
:y2 198.58929443359375,
:width 806.3999999999999,
:height 1209.6}),
:page 423},
:content {:text " ENFORCE LOCK ORDERING BY LOCK ADDRESS"},
:properties {:color "yellow"}}
{:id #uuid "643625fe-423c-4b18-8c22-32d38720c5d0",
:page 423,
:position {:bounding {:x1 160.4375,
:y1 835.7947082519531,
:x2 272.9983215332031,
:y2 858.0804290771484,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 160.4375,
:y1 835.7947082519531,
:x2 272.9983215332031,
:y2 858.0804290771484,
:width 806.3999999999999,
:height 1209.6}),
:page 423},
:content {:text "Hold-and-wait"},
:properties {:color "yellow"}}
{:id #uuid "64362632-50e8-41dd-a1bc-bbf3d4312b0f",
:page 424,
:position {:bounding {:x1 108.35714721679688,
:y1 433.40181732177734,
:x2 225.13265228271484,
:y2 455.6875305175781,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714721679688,
:y1 433.40181732177734,
:x2 225.13265228271484,
:y2 455.6875305175781,
:width 806.3999999999999,
:height 1209.6}),
:page 424},
:content {:text "No Preemption"},
:properties {:color "yellow"}}
{:id #uuid "6436281f-4fdc-4586-83fb-b686cec3b76b",
:page 424,
:position {:bounding {:x1 480.5625305175781,
:y1 782.1875152587891,
:x2 541.9588623046875,
:y2 804.4732208251953,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 480.5625305175781,
:y1 782.1875152587891,
:x2 541.9588623046875,
:y2 804.4732208251953,
:width 806.3999999999999,
:height 1209.6}),
:page 424},
:content {:text "livelock"},
:properties {:color "yellow"}}
{:id #uuid "643629ba-e746-41a6-b073-1199b3db3691",
:page 425,
:position {:bounding {:x1 160.43750953674316,
:y1 403.1428909301758,
:x2 295.75261878967285,
:y2 425.42859649658203,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 160.43750953674316,
:y1 403.1428909301758,
:x2 295.75261878967285,
:y2 425.42859649658203,
:width 806.3999999999999,
:height 1209.6}),
:page 425},
:content {:text "Mutual Exclusion"},
:properties {:color "yellow"}}
{:id #uuid "64362af4-9b35-4e27-8ba2-0f5f8817526a",
:page 427,
:position {:bounding {:x1 160.4375114440918,
:y1 380.5535888671875,
:x2 468.5610466003418,
:y2 405.12501525878906,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 160.4375114440918,
:y1 380.5535888671875,
:x2 468.5610466003418,
:y2 405.12501525878906,
:width 806.3999999999999,
:height 1209.6}),
:page 427},
:content {:text "Deadlock Avoidance via Scheduling"},
:properties {:color "yellow"}}
{:id #uuid "64362b38-6dfb-4c00-8aa6-b756e8983de4",
:page 428,
:position {:bounding {:x1 349.3137512207031,
:y1 238.16070556640625,
:x2 413.10858154296875,
:y2 254.73214721679688,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 349.3137512207031,
:y1 238.16070556640625,
:x2 413.10858154296875,
:y2 254.73214721679688,
:width 806.3999999999999,
:height 1209.6}),
:page 428},
:content {:text "terrific "},
:properties {:color "green"}}
{:id #uuid "64362b40-5f07-418f-83f3-c83eb5927c94",
:page 428,
:position {:bounding {:x1 498.1431884765625,
:y1 238.16070556640625,
:x2 533.5830993652344,
:y2 254.73214721679688,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 498.1431884765625,
:y1 238.16070556640625,
:x2 533.5830993652344,
:y2 254.73214721679688,
:width 806.3999999999999,
:height 1209.6}),
:page 428},
:content {:text "maxim"},
:properties {:color "green"}}
{:id #uuid "64362c62-3a12-4bcb-95ae-baf1ca69312e",
:page 428,
:position {:bounding {:x1 108.35715103149414,
:y1 973.8839721679688,
:x2 272.61272048950195,
:y2 998.4554138183594,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35715103149414,
:y1 973.8839721679688,
:x2 272.61272048950195,
:y2 998.4554138183594,
:width 806.3999999999999,
:height 1209.6}),
:page 428},
:content {:text "Detect and Recover"},
:properties {:color "yellow"}}
{:id #uuid "64364569-01b4-45e1-83f8-ac1bd8af5850",
:page 432,
:position {:bounding {:x1 175.8877182006836,
:y1 630.8661041259766,
:x2 216.41903686523438,
:y2 647.4375152587891,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 175.8877182006836,
:y1 630.8661041259766,
:x2 216.41903686523438,
:y2 647.4375152587891,
:width 806.3999999999999,
:height 1209.6}),
:page 432},
:content {:text "nasty "},
:properties {:color "green"}}
{:id #uuid "64364585-ace4-4920-87fe-87aad004dffd",
:page 432,
:position {:bounding {:x1 193.21429443359375,
:y1 321.7768096923828,
:x2 501.472412109375,
:y2 357.20538330078125,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 193.21429443359375,
:y1 321.7768096923828,
:x2 501.472412109375,
:y2 357.20538330078125,
:width 806.3999999999999,
:height 1209.6}),
:page 432},
:content {:text "Event-based Concurrency"},
:properties {:color "yellow"}}
{:id #uuid "643658f3-4761-4d0c-b044-4cadcfea27aa",
:page 433,
:position {:bounding {:x1 372.4933624267578,
:y1 263.21429443359375,
:x2 449.53944396972656,
:y2 279.7857208251953,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 372.4933624267578,
:y1 263.21429443359375,
:x2 449.53944396972656,
:y2 279.7857208251953,
:width 806.3999999999999,
:height 1209.6}),
:page 433},
:content {:text "event loop"},
:properties {:color "yellow"}}
{:id #uuid "643658f9-5eee-4d1a-a3d6-4f8eb9ed3d7b",
:page 433,
:position {:bounding {:x1 281.8482208251953,
:y1 475.42857360839844,
:x2 381.6801300048828,
:y2 492.00001525878906,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 281.8482208251953,
:y1 475.42857360839844,
:x2 381.6801300048828,
:y2 492.00001525878906,
:width 806.3999999999999,
:height 1209.6}),
:page 433},
:content {:text "event handler"},
:properties {:color "yellow"}}
{:id #uuid "64365db8-a249-46bc-bd9c-237251c544b5",
:page 433,
:position {:bounding {:x1 335.05357360839844,
:y1 669.3125305175781,
:x2 408.33917236328125,
:y2 689.8839721679688,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 335.05357360839844,
:y1 669.3125305175781,
:x2 408.33917236328125,
:y2 689.8839721679688,
:width 806.3999999999999,
:height 1209.6}),
:page 433},
:content {:text "select"},
:properties {:color "yellow"}}
{:id #uuid "64365eb6-5310-4893-9d11-5e332ef84c4a",
:page 434,
:position {:bounding {:x1 0,
:y1 188.57144165039062,
:x2 631.6998062133789,
:y2 500.85716247558594,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 188.57144165039062,
:x2 0,
:y2 211.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 204.57144165039062,
:x2 0,
:y2 227.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 447.0893096923828,
:x2 608.0915832519531,
:y2 463.66075134277344,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 465.68751525878906,
:x2 409.7574157714844,
:y2 482.42860412597656,
:width 806.3999999999999,
:height 1209.6}
{:x1 432.49109649658203,
:y1 465.68751525878906,
:x2 631.6998062133789,
:y2 482.42860412597656,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 484.28575134277344,
:x2 236.34325408935547,
:y2 500.85716247558594,
:width 806.3999999999999,
:height 1209.6}),
:page 434},
:content {:text "if some of their descriptors are ready for reading, are ready for writing, or have an exceptional condition pending, respectively. The first nfds descriptors are checked in each set, "},
:properties {:color "yellow"}}
{:id #uuid "64365ef8-3c62-4d78-8bc6-d0a4b2c81d49",
:page 434,
:position {:bounding {:x1 0,
:y1 236.571439743042,
:x2 617.7018737792969,
:y2 556.6428661346436,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 236.571439743042,
:x2 0,
:y2 259.42858695983887,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 252.571439743042,
:x2 0,
:y2 275.42858695983887,
:width 806.3999999999999,
:height 1209.6}
{:x1 384.0608825683594,
:y1 502.88395500183105,
:x2 617.7018737792969,
:y2 519.4553661346436,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714912414551,
:y1 521.4732494354248,
:x2 608.120454788208,
:y2 538.2143383026123,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714912414551,
:y1 540.071455001831,
:x2 527.1530780792236,
:y2 556.6428661346436,
:width 806.3999999999999,
:height 1209.6}),
:page 434},
:content {:text "places the given descriptor sets with subsets consisting of those descriptors that are ready for the requested operation. select() returns the total number of ready descriptors in all the sets."},
:properties {:color "yellow"}}
{:id #uuid "643693db-d363-46ee-b0d6-910b30408946",
:page 437,
:position {:bounding {:x1 250.9367218017578,
:y1 155.14285278320312,
:x2 408.5350036621094,
:y2 174,
:width 748.8000000000001,
:height 1123.2},
:rects ({:x1 250.9367218017578,
:y1 155.14285278320312,
:x2 408.5350036621094,
:y2 174,
:width 748.8000000000001,
:height 1123.2}),
:page 437},
:content {:text " Asynchronous I/O"},
:properties {:color "yellow"}}
{:id #uuid "64369701-8a39-4aa4-9985-129572c04f53",
:page 437,
:position {:bounding {:x1 0,
:y1 76.5714111328125,
:x2 633.5952548980713,
:y2 291.6964111328125,
:width 748.8000000000001,
:height 1123.2},
:rects ({:x1 0,
:y1 76.5714111328125,
:x2 0,
:y2 99.42855834960938,
:width 748.8000000000001,
:height 1123.2}
{:x1 0,
:y1 92.5714111328125,
:x2 0,
:y2 115.42855834960938,
:width 748.8000000000001,
:height 1123.2}
{:x1 168.88722610473633,
:y1 241.72320556640625,
:x2 633.5932807922363,
:y2 257.15179443359375,
:width 748.8000000000001,
:height 1123.2}
{:x1 148.9732151031494,
:y1 259,
:x2 633.5952548980713,
:y2 274.54461669921875,
:width 748.8000000000001,
:height 1123.2}
{:x1 148.9732151031494,
:y1 276.26788330078125,
:x2 480.4746799468994,
:y2 291.6964111328125,
:width 748.8000000000001,
:height 1123.2}),
:page 437},
:content {:text "issue an I/O request and return control immediately to the caller, before the I/O has completed; additional interfaces enable an application to determine whether various I/Os have completed."},
:properties {:color "yellow"}}
{:id #uuid "6436a3d9-ee29-4378-af79-4efc770cc209",
:page 438,
:position {:bounding {:x1 0,
:y1 300.5714454650879,
:x2 608.117431640625,
:y2 641.8750305175781,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 300.5714454650879,
:x2 0,
:y2 323.4285888671875,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 316.5714454650879,
:x2 0,
:y2 339.4285888671875,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 332.57144601643085,
:x2 0,
:y2 355.4285913258791,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 348.5714473724365,
:x2 0,
:y2 371.4285888671875,
:width 806.3999999999999,
:height 1209.6}
{:x1 256.16650390625,
:y1 550.9107360839844,
:x2 608.1167907714844,
:y2 567.482177734375,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 569.5089569091797,
:x2 608.1011047363281,
:y2 586.2500305175781,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 588.107177734375,
:x2 608.117431640625,
:y2 604.8482360839844,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 606.7053833007812,
:x2 608.1163024902344,
:y2 623.4464721679688,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 625.3035888671875,
:x2 196.1043930053711,
:y2 641.8750305175781,
:width 806.3999999999999,
:height 1209.6}),
:page 438},
:content {:text " when an event handler issues an asynchronous I/O, it must package up some program state for the next event handler to use when the I/O finally completes; this additional work is not needed in thread-based programs, as the state the program needs is on the stack of the thread. A"},
:properties {:color "yellow"}}
{:id #uuid "6436a40a-121f-4fab-b428-b278e4cb65d3",
:page 440,
:position {:bounding {:x1 0,
:y1 44.571434020996094,
:x2 635.1374206542969,
:y2 279.7857131958008,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 44.571434020996094,
:x2 0,
:y2 67.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 60.571434020996094,
:x2 0,
:y2 83.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 76.5714340209961,
:x2 0,
:y2 99.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 567.6942443847656,
:y1 207.4196548461914,
:x2 635.1374206542969,
:y2 223.9910659790039,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 226.01786041259766,
:x2 608.1121215820312,
:y2 242.75894927978516,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 244.61609649658203,
:x2 608.1152648925781,
:y2 261.3571548461914,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 263.2143020629883,
:x2 449.3890686035156,
:y2 279.7857131958008,
:width 806.3999999999999,
:height 1209.6}),
:page 440},
:content {:text "record the needed information to finish processing this event in some data structure; when the event happens (i.e., when the disk I/O completes), look up the needed information and process the event."},
:properties {:color "yellow"}}
{:id #uuid "6436a46c-f845-4c7b-8bb1-97da71589c67",
:page 440,
:position {:bounding {:x1 434.5769805908203,
:y1 537.232177734375,
:x2 608.1061859130859,
:y2 553.8035888671875,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 434.5769805908203,
:y1 537.232177734375,
:x2 608.1061859130859,
:y2 553.8035888671875,
:width 806.3999999999999,
:height 1209.6}),
:page 440},
:content {:text "tilize more than one CPU,"},
:properties {:color "yellow"}}
{:id #uuid "6436a485-7a70-4974-93d2-9e11b010a948",
:page 440,
:position {:bounding {:x1 0,
:y1 444.5714569091797,
:x2 642.1258239746094,
:y2 760.0268249511719,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 444.5714569091797,
:x2 0,
:y2 467.42860412597656,
:width 806.3999999999999,
:height 1209.6}
{:x1 593.419677734375,
:y1 724.857177734375,
:x2 642.1258239746094,
:y2 741.4286193847656,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714721679688,
:y1 743.4553833007812,
:x2 171.71078491210938,
:y2 760.0268249511719,
:width 806.3999999999999,
:height 1209.6}),
:page 440},
:content {:text "implicit blocking "},
:properties {:color "yellow"}}
{:id #uuid "6436ca1f-f4e7-431e-9620-be7764825acd",
:page 448,
:position {:bounding {:x1 457.33807373046875,
:y1 639.015625,
:x2 528.4306640625,
:y2 657.015625,
:width 864,
:height 1296},
:rects ({:x1 457.33807373046875,
:y1 639.015625,
:x2 528.4306640625,
:y2 657.015625,
:width 864,
:height 1296}),
:page 448},
:content {:text "obstinate "},
:properties {:color "green"}}
{:id #uuid "6436caa1-6fe0-4de8-9ad4-2a057960fc1a",
:page 448,
:position {:bounding {:x1 650.139892578125,
:y1 934.359375,
:x2 691.9168701171875,
:y2 952.359375,
:width 864,
:height 1296},
:rects ({:x1 650.139892578125,
:y1 934.359375,
:x2 691.9168701171875,
:y2 952.359375,
:width 864,
:height 1296}),
:page 448},
:content {:text "pickle"},
:properties {:color "green"}}
{:id #uuid "6436cb20-ee0b-4359-a39a-4178a4e8a4f7",
:page 448,
:position {:bounding {:x1 225.3008270263672,
:y1 1069.984375,
:x2 259.7266540527344,
:y2 1087.984375,
:width 864,
:height 1296},
:rects ({:x1 225.3008270263672,
:y1 1069.984375,
:x2 259.7266540527344,
:y2 1087.984375,
:width 864,
:height 1296}),
:page 448},
:content {:text "segue"},
:properties {:color "green"}}
{:id #uuid "6436cc2e-b1af-4555-9d1d-808e6de120b1",
:page 450,
:position {:bounding {:x1 116.09375,
:y1 713.578125,
:x2 311.3595275878906,
:y2 735.578125,
:width 864,
:height 1296},
:rects ({:x1 116.09375,
:y1 713.578125,
:x2 311.3595275878906,
:y2 735.578125,
:width 864,
:height 1296}),
:page 450},
:content {:text "System Architecture"},
:properties {:color "yellow"}}
{:id #uuid "64378274-897c-4aac-b246-49bda634b872",
:page 450,
:position {:bounding {:x1 411.0239486694336,
:y1 1007.0803833007812,
:x2 467.33980560302734,
:y2 1023.6518249511719,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 411.0239486694336,
:y1 1007.0803833007812,
:x2 467.33980560302734,
:y2 1023.6518249511719,
:width 806.3999999999999,
:height 1209.6}),
:page 450},
:content {:text "manifold"},
:properties {:color "green"}}
{:id #uuid "643786f0-5f9c-4441-8898-82ccd6a1a464",
:page 452,
:position {:bounding {:x1 108.34862899780273,
:y1 690.3839416503906,
:x2 286.65130615234375,
:y2 710.9553833007812,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.34862899780273,
:y1 690.3839416503906,
:x2 286.65130615234375,
:y2 710.9553833007812,
:width 806.3999999999999,
:height 1209.6}),
:page 452},
:content {:text "A Canonical Device"},
:properties {:color "yellow"}}
{:id #uuid "64378926-ce8a-4e38-a3fe-62fb5c4994e6",
:page 453,
:position {:bounding {:x1 198.56453323364258,
:y1 352.04466247558594,
:x2 370.1695899963379,
:y2 372.6160888671875,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 198.56453323364258,
:y1 352.04466247558594,
:x2 370.1695899963379,
:y2 372.6160888671875,
:width 806.3999999999999,
:height 1209.6}),
:page 453},
:content {:text "Canonical Protocol"},
:properties {:color "yellow"}}
{:id #uuid "64378c55-677c-4ab7-94c6-02ff41b90ded",
:page 453,
:position {:bounding {:x1 276.63047790527344,
:y1 821.125,
:x2 438.38832092285156,
:y2 837.6964721679688,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 276.63047790527344,
:y1 821.125,
:x2 438.38832092285156,
:y2 837.6964721679688,
:width 806.3999999999999,
:height 1209.6}),
:page 453},
:content {:text "programmed I/O (PIO)"},
:properties {:color "yellow"}}
{:id #uuid "64378e9e-0f95-4312-a19e-3ee9d0b4ef1e",
:page 455,
:position {:bounding {:x1 482.5089569091797,
:y1 575.2054100036621,
:x2 555.9764862060547,
:y2 591.7768211364746,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 482.5089569091797,
:y1 575.2054100036621,
:x2 555.9764862060547,
:y2 591.7768211364746,
:width 806.3999999999999,
:height 1209.6}),
:page 455},
:content {:text "coalescing"},
:properties {:color "yellow"}}
{:id #uuid "64379241-c097-4aaa-b545-582df132b35f",
:page 456,
:position {:bounding {:x1 0,
:y1 76.5714340209961,
:x2 638.9917907714844,
:y2 329.66072845458984,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 76.5714340209961,
:x2 0,
:y2 99.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 548.4464416503906,
:y1 294.49108123779297,
:x2 638.9917907714844,
:y2 311.0625228881836,
:width 806.3999999999999,
:height 1209.6}
{:x1 108.35714912414551,
:y1 313.0892868041992,
:x2 240.935640335083,
:y2 329.66072845458984,
:width 806.3999999999999,
:height 1209.6}),
:page 456},
:content {:text "Direct Memory Access (DMA)"},
:properties {:color "yellow"}}
{:id #uuid "6437989d-c18e-4cc7-9cb0-737384cc7960",
:page 457,
:position {:bounding {:x1 379.8343276977539,
:y1 517.4286041259766,
:x2 507.8338394165039,
:y2 538.0000152587891,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 379.8343276977539,
:y1 517.4286041259766,
:x2 507.8338394165039,
:y2 538.0000152587891,
:width 806.3999999999999,
:height 1209.6}),
:page 457},
:content {:text " Device Driver"},
:properties {:color "yellow"}}
{:id #uuid "643799a7-dfae-46e0-88e6-ebf587755d75",
:page 458,
:position {:bounding {:x1 247.33929443359375,
:y1 401.67859649658203,
:x2 494.9961395263672,
:y2 418.2500228881836,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 247.33929443359375,
:y1 401.67859649658203,
:x2 494.9961395263672,
:y2 418.2500228881836,
:width 806.3999999999999,
:height 1209.6}),
:page 458},
:content {:text "Figure 36.4: The File System Stack"},
:properties {:color "yellow"}}
{:id #uuid "64379a07-5bc3-49b2-93e2-f371ad2b5347",
:page 457,
:position {:bounding {:x1 160.4375114440918,
:y1 649.5625305175781,
:x2 227.97158432006836,
:y2 666.1339569091797,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 160.4375114440918,
:y1 649.5625305175781,
:x2 227.97158432006836,
:y2 666.1339569091797,
:width 806.3999999999999,
:height 1209.6}),
:page 457},
:content {:text "oblivious "},
:properties {:color "green"}}
{:id #uuid "64379b8b-7c37-4d7e-8135-1d025eb42ae3",
:page 460,
:position {:bounding {:x1 464.8994674682617,
:y1 827.3839721679688,
:x2 512.903678894043,
:y2 843.9553833007812,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 464.8994674682617,
:y1 827.3839721679688,
:x2 512.903678894043,
:y2 843.9553833007812,
:width 806.3999999999999,
:height 1209.6}),
:page 460},
:content {:text "hauled "},
:properties {:color "green"}}
{:id #uuid "64379b93-cb30-45a8-afe6-53052c08fa6f",
:page 460,
:position {:bounding {:x1 547.1767807006836,
:y1 827.3839721679688,
:x2 595.1810531616211,
:y2 843.9553833007812,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 547.1767807006836,
:y1 827.3839721679688,
:x2 595.1810531616211,
:y2 843.9553833007812,
:width 806.3999999999999,
:height 1209.6}),
:page 460},
:content {:text "trailer"},
:properties {:color "green"}}
{:id #uuid "64379ba3-e41d-411f-ab6d-9a5f1424ac26",
:page 460,
:position {:bounding {:x1 249.13033294677734,
:y1 920.3750305175781,
:x2 298.4103469848633,
:y2 936.9465026855469,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 249.13033294677734,
:y1 920.3750305175781,
:x2 298.4103469848633,
:y2 936.9465026855469,
:width 806.3999999999999,
:height 1209.6}),
:page 460},
:content {:text "obscure"},
:properties {:color "green"}}
{:id #uuid "64379e9a-840a-48c9-b804-03e6b179a6a6",
:page 458,
:position {:bounding {:x1 224.1345672607422,
:y1 943.2054138183594,
:x2 455.71478271484375,
:y2 963.77685546875,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 224.1345672607422,
:y1 943.2054138183594,
:x2 455.71478271484375,
:y2 963.77685546875,
:width 806.3999999999999,
:height 1209.6}),
:page 458},
:content {:text "A Simple IDE Disk Driver"},
:properties {:color "yellow"}}
{:id #uuid "64379f7c-b440-4023-bc10-fd27071ec742",
:page 464,
:position {:bounding {:x1 445.2321548461914,
:y1 324.63395404815674,
:x2 645.885139465332,
:y2 360.0625123977661,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 445.2321548461914,
:y1 324.63395404815674,
:x2 645.885139465332,
:y2 360.0625123977661,
:width 806.3999999999999,
:height 1209.6}),
:page 464},
:content {:text "Hard Disk Drives"},
:properties {:color "yellow"}}
{:id #uuid "6437a316-6185-4eae-bc56-eeca9c5dfc0d",
:page 464,
:position {:bounding {:x1 168.15179443359375,
:y1 875.5714721679688,
:x2 364.46311950683594,
:y2 892.3125305175781,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 168.15179443359375,
:y1 875.5714721679688,
:x2 364.46311950683594,
:y2 892.3125305175781,
:width 806.3999999999999,
:height 1209.6}),
:page 464},
:content {:text " address space of the drive."},
:properties {:color "yellow"}}
{:id #uuid "6437a4a9-3103-4830-abc7-dba0b1067b76",
:page 465,
:position {:bounding {:x1 0,
:y1 220.5714340209961,
:x2 693.8439025878906,
:y2 485.80360412597656,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 220.5714340209961,
:x2 0,
:y2 243.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 236.5714340209961,
:x2 0,
:y2 259.42858123779297,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 252.5714340209961,
:x2 0,
:y2 275.42857360839844,
:width 806.3999999999999,
:height 1209.6}
{:x1 0,
:y1 268.5714340209961,
:x2 0,
:y2 291.42857360839844,
:width 806.3999999999999,
:height 1209.6}
{:x1 519.3035888671875,
:y1 391.98216247558594,
:x2 528.9941711425781,
:y2 403.4107208251953,
:width 806.3999999999999,
:height 1209.6}
{:x1 160.4375057220459,
:y1 394.83929443359375,
:x2 494.1349239349365,
:y2 411.4107208251953,
:width 806.3999999999999,
:height 1209.6}
{:x1 528.9910888671875,
:y1 394.83929443359375,
:x2 693.8439025878906,
:y2 411.5803680419922,
:width 806.3999999999999,
:height 1209.6}
{:x1 160.4375057220459,
:y1 413.43751525878906,
:x2 660.9213619232178,
:y2 430.17857360839844,
:width 806.3999999999999,
:height 1209.6}
{:x1 160.4375057220459,
:y1 432.0357208251953,
:x2 660.1910152435303,
:y2 448.7768096923828,
:width 806.3999999999999,
:height 1209.6}
{:x1 160.4375057220459,
:y1 450.6339569091797,
:x2 660.1794185638428,
:y2 467.37501525878906,
:width 806.3999999999999,
:height 1209.6}
{:x1 160.4375057220459,
:y1 469.23216247558594,
:x2 562.6104793548584,
:y2 485.80360412597656,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "one can usually assume that accessing two blocks1 near one-another within the drives address space will be faster than accessing two blocks that are far apart. One can also usually assume that accessing blocks in a contiguous chunk (i.e., a sequential read or write) is the fastest access mode, and usually much faster than any more random access pattern."},
:properties {:color "yellow"}}
{:id #uuid "6437a4da-bca4-4f13-b018-30f3400d169f",
:page 465,
:position {:bounding {:x1 462.02288818359375,
:y1 536.9018249511719,
:x2 662.5404357910156,
:y2 553.4732360839844,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 462.02288818359375,
:y1 536.9018249511719,
:x2 662.5404357910156,
:y2 553.4732360839844,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "components of a modern disk."},
:properties {:color "yellow"}}
{:id #uuid "6437a4f2-5d89-495a-a984-b427a3d03e74",
:page 465,
:position {:bounding {:x1 282.6071472167969,
:y1 555.5000305175781,
:x2 329.2925262451172,
:y2 572.0714721679688,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 282.6071472167969,
:y1 555.5000305175781,
:x2 329.2925262451172,
:y2 572.0714721679688,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "platter"},
:properties {:color "yellow"}}
{:id #uuid "6437a4f9-3de4-451b-a7cc-faf67b8530e8",
:page 465,
:position {:bounding {:x1 0,
:y1 364.57144927978516,
:x2 695.8244323730469,
:y2 628.0268249511719,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 0,
:y1 364.57144927978516,
:x2 0,
:y2 387.4285888671875,
:width 806.3999999999999,
:height 1209.6}
{:x1 668.0487365722656,
:y1 592.6964721679688,
:x2 695.8244323730469,
:y2 609.2678833007812,
:width 806.3999999999999,
:height 1209.6}
{:x1 160.4375057220459,
:y1 611.2857360839844,
:x2 188.97083282470703,
:y2 628.0268249511719,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "surface"},
:properties {:color "yellow"}}
{:id #uuid "6437a4fd-450b-49ff-acd1-e46d3b507079",
:page 465,
:position {:bounding {:x1 532.2857360839844,
:y1 668.7589721679688,
:x2 585.8849182128906,
:y2 685.3303833007812,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 532.2857360839844,
:y1 668.7589721679688,
:x2 585.8849182128906,
:y2 685.3303833007812,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "spindle"},
:properties {:color "yellow"}}
{:id #uuid "6437a503-6b91-4b61-b288-9cea9c2ea832",
:page 465,
:position {:bounding {:x1 369.4464416503906,
:y1 819.2232666015625,
:x2 404.8913879394531,
:y2 835.794677734375,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 369.4464416503906,
:y1 819.2232666015625,
:x2 404.8913879394531,
:y2 835.794677734375,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "track"},
:properties {:color "yellow"}}
{:id #uuid "6437a50b-a53a-476b-8ef2-8bcbc21d7073",
:page 465,
:position {:bounding {:x1 317.1339416503906,
:y1 932.4732666015625,
:x2 386.8203582763672,
:y2 949.044677734375,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 317.1339416503906,
:y1 932.4732666015625,
:x2 386.8203582763672,
:y2 949.044677734375,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "disk head"},
:properties {:color "yellow"}}
{:id #uuid "6437a50f-5c6c-47ff-9179-ac48118342d7",
:page 465,
:position {:bounding {:x1 475.7476501464844,
:y1 951.0714721679688,
:x2 538.2141418457031,
:y2 967.6428833007812,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 475.7476501464844,
:y1 951.0714721679688,
:x2 538.2141418457031,
:y2 967.6428833007812,
:width 806.3999999999999,
:height 1209.6}),
:page 465},
:content {:text "disk arm"},
:properties {:color "yellow"}}
{:id #uuid "6437a841-9b37-42dc-a8dc-339085099a5a",
:page 466,
:position {:bounding {:x1 326.42398834228516,
:y1 661.8214721679688,
:x2 474.7255325317383,
:y2 680.6785888671875,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 326.42398834228516,
:y1 661.8214721679688,
:x2 474.7255325317383,
:y2 680.6785888671875,
:width 806.3999999999999,
:height 1209.6}),
:page 466},
:content {:text " Rotational Delay"},
:properties {:color "yellow"}}
{:id #uuid "6437aa03-61a9-40c1-ba53-98d0e1ab87b9",
:page 467,
:position {:bounding {:x1 659.3125,
:y1 549.7857513427734,
:x2 691.29248046875,
:y2 566.3571624755859,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 659.3125,
:y1 549.7857513427734,
:x2 691.29248046875,
:y2 566.3571624755859,
:width 806.3999999999999,
:height 1209.6}),
:page 467},
:content {:text "seek"},
:properties {:color "yellow"}}
{:id #uuid "6437abff-a6b8-4d28-8a4e-8e67fe9cdd4d",
:page 467,
:position {:bounding {:x1 160.43750476837158,
:y1 870.1785888671875,
:x2 655.713963508606,
:y2 886.7500305175781,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 160.43750476837158,
:y1 870.1785888671875,
:x2 655.713963508606,
:y2 886.7500305175781,
:width 806.3999999999999,
:height 1209.6}),
:page 467},
:content {:text "first a seek, then waiting for the rotational delay, and finally the transfer."},
:properties {:color "yellow"}}
{:id #uuid "6437acc8-bc95-466b-9d04-acfe22b0eeee",
:page 467,
:position {:bounding {:x1 221.25001525878906,
:y1 988.5000305175781,
:x2 299.41912841796875,
:y2 1005.0714569091797,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 221.25001525878906,
:y1 988.5000305175781,
:x2 299.41912841796875,
:y2 1005.0714569091797,
:width 806.3999999999999,
:height 1209.6}),
:page 467},
:content {:text "track skew"},
:properties {:color "yellow"}}
{:id #uuid "6437ad1b-5292-4a42-80c4-8a1ff9f7f691",
:page 468,
:position {:bounding {:x1 459.5382385253906,
:y1 654.5982666015625,
:x2 547.2351989746094,
:y2 671.169677734375,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 459.5382385253906,
:y1 654.5982666015625,
:x2 547.2351989746094,
:y2 671.169677734375,
:width 806.3999999999999,
:height 1209.6}),
:page 468},
:content {:text "multi-zoned"},
:properties {:color "yellow"}}
{:id #uuid "6437ada7-4a51-4032-bdcc-110b47796be9",
:page 468,
:position {:bounding {:x1 572.2857360839844,
:y1 728.9910888671875,
:x2 611.1742858886719,
:y2 745.5625305175781,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 572.2857360839844,
:y1 728.9910888671875,
:x2 611.1742858886719,
:y2 745.5625305175781,
:width 806.3999999999999,
:height 1209.6}),
:page 468},
:content {:text "cache"},
:properties {:color "yellow"}}
{:id #uuid "6437bbc8-c313-4ec2-81ef-c3b0969214e4",
:page 469,
:position {:bounding {:x1 171.890625,
:y1 936.890625,
:x2 434.3005676269531,
:y2 958.890625,
:width 864,
:height 1296},
:rects ({:x1 171.890625,
:y1 936.890625,
:x2 434.3005676269531,
:y2 958.890625,
:width 864,
:height 1296}),
:page 469},
:content {:text "I/O Time: Doing The Math"},
:properties {:color "yellow"}}
{:id #uuid "6437d014-ef82-45e4-8083-974da0d39296",
:page 470,
:position {:bounding {:x1 0,
:y1 269,
:x2 691.9624633789062,
:y2 569.734375,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 269,
:x2 0,
:y2 291,
:width 864,
:height 1296}
{:x1 225.375,
:y1 531.796875,
:x2 691.9624633789062,
:y2 549.796875,
:width 864,
:height 1296}
{:x1 116.09375,
:y1 551.734375,
:x2 293.28265380859375,
:y2 569.734375,
:width 864,
:height 1296}),
:page 470},
:content {:text "random workload, issues small (e.g., 4KB) reads to random locations on the dis"},
:properties {:color "yellow"}}
{:id #uuid "6437d023-d891-45f1-89e5-c08801e33d71",
:page 470,
:position {:bounding {:x1 0,
:y1 317,
:x2 691.9202880859375,
:y2 629.5,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 317,
:x2 0,
:y2 339,
:width 864,
:height 1296}
{:x1 228.734375,
:y1 591.578125,
:x2 691.9202880859375,
:y2 609.578125,
:width 864,
:height 1296}
{:x1 116.09375,
:y1 611.5,
:x2 385.7304382324219,
:y2 629.5,
:width 864,
:height 1296}),
:page 470},
:content {:text "sequential workload, simply reads a large number of sectors consecutively from the disk"},
:properties {:color "yellow"}}
{:id #uuid "6437d17a-0bee-478e-a843-fea71d3b74e2",
:page 472,
:position {:bounding {:x1 288.0928039550781,
:y1 199.984375,
:x2 578.55810546875,
:y2 217.984375,
:width 864,
:height 1296},
:rects ({:x1 288.0928039550781,
:y1 199.984375,
:x2 578.55810546875,
:y2 217.984375,
:width 864,
:height 1296}),
:page 472},
:content {:text " COMPUTING THE AVERAGE SEEK"},
:properties {:color "yellow"}}
{:id #uuid "6437d1c9-ffce-44b6-b9ee-9e8c4d29a3fc",
:page 473,
:position {:bounding {:x1 171.86631774902344,
:y1 537.828125,
:x2 330.2746887207031,
:y2 559.828125,
:width 864,
:height 1296},
:rects ({:x1 171.86631774902344,
:y1 537.828125,
:x2 330.2746887207031,
:y2 559.828125,
:width 864,
:height 1296}),
:page 473},
:content {:text "Disk Scheduling"},
:properties {:color "yellow"}}
{:id #uuid "6437d47e-ea32-439d-98c2-364af2d48f58",
:page 473,
:position {:bounding {:x1 171.890625,
:y1 825.390625,
:x2 452.4966125488281,
:y2 845.390625,
:width 864,
:height 1296},
:rects ({:x1 171.890625,
:y1 825.390625,
:x2 452.4966125488281,
:y2 845.390625,
:width 864,
:height 1296}),
:page 473},
:content {:text "SSTF: Shortest Seek Time First"},
:properties {:color "yellow"}}
{:id #uuid "6437d48d-ce5b-4a23-b2b3-00d1696a54b5",
:page 473,
:position {:bounding {:x1 0,
:y1 765,
:x2 747.7291870117188,
:y2 936.5,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 765,
:x2 0,
:y2 787,
:width 864,
:height 1296}
{:x1 0,
:y1 781,
:x2 0,
:y2 803,
:width 864,
:height 1296}
{:x1 595.7539672851562,
:y1 878.640625,
:x2 747.7261962890625,
:y2 896.640625,
:width 864,
:height 1296}
{:x1 171.890625,
:y1 898.578125,
:x2 747.7291870117188,
:y2 916.578125,
:width 864,
:height 1296}
{:x1 171.890625,
:y1 918.5,
:x2 211.3318634033203,
:y2 936.5,
:width 864,
:height 1296}),
:page 473},
:content {:text "orders the queue of I/O requests by track, picking requests on the nearest track to complete first"},
:properties {:color "yellow"}}
{:id #uuid "6437d990-abcf-4f2d-a9c1-13f7c853c00a",
:page 474,
:position {:bounding {:x1 116.09375,
:y1 398.953125,
:x2 429.9847412109375,
:y2 418.953125,
:width 864,
:height 1296},
:rects ({:x1 116.09375,
:y1 398.953125,
:x2 429.9847412109375,
:y2 418.953125,
:width 864,
:height 1296}),
:page 474},
:content {:text "Elevator (a.k.a. SCAN or C-SCAN)"},
:properties {:color "yellow"}}
{:id #uuid "6437da6a-2921-4909-a9b9-b5cbd844e04b",
:page 474,
:position {:bounding {:x1 0,
:y1 173,
:x2 691.9360961914062,
:y2 511.28125,
:width 864,
:height 1296},
:rects ({:x1 0,
:y1 173,
:x2 0,
:y2 195,
:width 864,
:height 1296}
{:x1 284.9097595214844,
:y1 473.359375,
:x2 691.9360961914062,
:y2 491.359375,
:width 864,
:height 1296}
{:x1 116.09375,
:y1 493.28125,
:x2 373.70489501953125,
:y2 511.28125,
:width 864,
:height 1296}),
:page 474},
:content {:text " moves back and forth across the disk servicing requests in order across the tracks."},
:properties {:color "yellow"}}
{:id #uuid "6437e0d2-c585-4c74-a7d1-500ae29b38df",
:page 475,
:position {:bounding {:x1 745.6728515625,
:y1 581.421875,
:x2 788.939697265625,
:y2 600.421875,
:width 921.6,
:height 1382.4},
:rects ({:x1 745.6728515625,
:y1 581.421875,
:x2 788.939697265625,
:y2 600.421875,
:width 921.6,
:height 1382.4}),
:page 475},
:content {:text "pinch"},
:properties {:color "green"}}
{:id #uuid "6437e0db-ceb2-4b13-ae37-5598fa7dd519",
:page 475,
:position {:bounding {:x1 329.5712890625,
:y1 623.921875,
:x2 355.3808288574219,
:y2 642.921875,
:width 921.6,
:height 1382.4},
:rects ({:x1 329.5712890625,
:y1 623.921875,
:x2 355.3808288574219,
:y2 642.921875,
:width 921.6,
:height 1382.4}),
:page 475},
:content {:text "gem"},
:properties {:color "green"}}
{:id #uuid "6437e177-28f4-4b48-a501-f8e0620b3026",
:page 475,
:position {:bounding {:x1 280,
:y1 1186.90625,
:x2 700.9554443359375,
:y2 1206.03125,
:width 921.6,
:height 1382.4},
:rects ({:x1 280,
:y1 1186.90625,
:x2 700.9554443359375,
:y2 1206.03125,
:width 921.6,
:height 1382.4}),
:page 475},
:content {:text "Figure 37.8: SSTF: Sometimes Not Good Enough"},
:properties {:color "yellow"}}
{:id #uuid "6437e26b-14ef-49f3-968a-956509d62296",
:page 475,
:position {:bounding {:x1 183.359375,
:y1 329.09375,
:x2 547.5947875976562,
:y2 350.09375,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 329.09375,
:x2 547.5947875976562,
:y2 350.09375,
:width 921.6,
:height 1382.4}),
:page 475},
:content {:text "SPTF: Shortest Positioning Time First"},
:properties {:color "yellow"}}
{:id #uuid "6437e506-f8e4-46f7-bc5c-e0b58d5e82ed",
:page 476,
:position {:bounding {:x1 0,
:y1 461,
:x2 738.0863037109375,
:y2 956.078125,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 461,
:x2 0,
:y2 483,
:width 921.6,
:height 1382.4}
{:x1 702.453125,
:y1 915.828125,
:x2 738.0863037109375,
:y2 934.953125,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 937.078125,
:x2 197.19195556640625,
:y2 956.078125,
:width 921.6,
:height 1382.4}),
:page 476},
:content {:text " I/O merging"},
:properties {:color "yellow"}}
{:id #uuid "6437e8b0-b179-46c1-9173-e9b080273f7e",
:page 480,
:position {:bounding {:x1 0,
:y1 13,
:x2 738.093505859375,
:y2 444.171875,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 13,
:x2 0,
:y2 35,
:width 921.6,
:height 1382.4}
{:x1 205.1875,
:y1 373.15625,
:x2 738.093505859375,
:y2 413.15625,
:width 921.6,
:height 1382.4}
{:x1 629.265625,
:y1 404.171875,
:x2 738.0758666992188,
:y2 444.171875,
:width 921.6,
:height 1382.4}),
:page 480},
:content {:text "Redundant Arrays of Inexpensive Disks(RAIDs)"},
:properties {:color "yellow"}}
{:id #uuid "6437ef13-e1d1-4dce-bbd9-1a6f09dae4f0",
:page 482,
:position {:bounding {:x1 0,
:y1 45,
:x2 738.0833129882812,
:y2 319.8125,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 45,
:x2 0,
:y2 67,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 61,
:x2 0,
:y2 83,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 77,
:x2 0,
:y2 99,
:width 921.6,
:height 1382.4}
{:x1 328.5675048828125,
:y1 237.046875,
:x2 738.0601806640625,
:y2 256.046875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 258.296875,
:x2 738.0767822265625,
:y2 277.421875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 279.5625,
:x2 738.0833129882812,
:y2 298.6875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 300.8125,
:x2 277.2475280761719,
:y2 319.8125,
:width 921.6,
:height 1382.4}),
:page 482},
:content {:text " At a high level, a RAID is very much a specialized computer system: it has a processor, memory, and disks; however, instead of running applications, it runs specialized software designed to operate the RAID."},
:properties {:color "yellow"}}
{:id #uuid "6437ef79-0ca3-4937-9861-2648b2579524",
:page 482,
:position {:bounding {:x1 123.81153106689453,
:y1 355.546875,
:x2 249.5206756591797,
:y2 378.546875,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.81153106689453,
:y1 355.546875,
:x2 249.5206756591797,
:y2 378.546875,
:width 921.6,
:height 1382.4}),
:page 482},
:content {:text "Fault Model"},
:properties {:color "yellow"}}
{:id #uuid "6437f025-9841-4e02-a629-66940e341341",
:page 482,
:position {:bounding {:x1 251.7874755859375,
:y1 769.640625,
:x2 311.5213623046875,
:y2 788.640625,
:width 921.6,
:height 1382.4},
:rects ({:x1 251.7874755859375,
:y1 769.640625,
:x2 311.5213623046875,
:y2 788.640625,
:width 921.6,
:height 1382.4}),
:page 482},
:content {:text "latent "},
:properties {:color "green"}}
{:id #uuid "6437f261-2d97-4f0c-85aa-06dd6d230ce0",
:page 483,
:position {:bounding {:x1 183.359375,
:y1 399.328125,
:x2 418.61138916015625,
:y2 422.328125,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 399.328125,
:x2 418.61138916015625,
:y2 422.328125,
:width 921.6,
:height 1382.4}),
:page 483},
:content {:text "RAID Level 0: Striping"},
:properties {:color "yellow"}}
{:id #uuid "6437fe8e-f81a-4646-aab2-87c5b3376e91",
:page 483,
:position {:bounding {:x1 0,
:y1 349,
:x2 797.5982055664062,
:y2 778.859375,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 349,
:x2 0,
:y2 371,
:width 921.6,
:height 1382.4}
{:x1 552.2760620117188,
:y1 738.609375,
:x2 797.5982055664062,
:y2 757.609375,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 759.859375,
:x2 546.715087890625,
:y2 778.859375,
:width 921.6,
:height 1382.4}),
:page 483},
:content {:text "spread the blocks of the array across the disks in a round-robin fashion."},
:properties {:color "yellow"}}
{:id #uuid "6437feab-eceb-4f11-9ced-ae43e2798c0c",
:page 484,
:position {:bounding {:x1 123.828125,
:y1 771.3125,
:x2 247.18109130859375,
:y2 799.3125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 771.3125,
:x2 247.18109130859375,
:y2 799.3125,
:width 921.6,
:height 1382.4}),
:page 484},
:content {:text "Chunk Sizes"},
:properties {:color "yellow"}}
{:id #uuid "6437fffc-d2d1-4dbc-a28e-89e95b6efdfa",
:page 484,
:position {:bounding {:x1 344.94549560546875,
:y1 1022.875,
:x2 418.673583984375,
:y2 1041.875,
:width 921.6,
:height 1382.4},
:rects ({:x1 344.94549560546875,
:y1 1022.875,
:x2 418.673583984375,
:y2 1041.875,
:width 921.6,
:height 1382.4}),
:page 484},
:content {:text "incurred "},
:properties {:color "green"}}
{:id #uuid "64380150-55a0-493e-9fee-a5c666a095d4",
:page 485,
:position {:bounding {:x1 183.34375,
:y1 723.578125,
:x2 247.51998901367188,
:y2 742.578125,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.34375,
:y1 723.578125,
:x2 247.51998901367188,
:y2 742.578125,
:width 921.6,
:height 1382.4}),
:page 485},
:content {:text "deemed "},
:properties {:color "green"}}
{:id #uuid "64380351-ec20-460c-bf79-a423d22e59e3",
:page 486,
:position {:bounding {:x1 123.828125,
:y1 1065.421875,
:x2 378.02117919921875,
:y2 1088.421875,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 1065.421875,
:x2 378.02117919921875,
:y2 1088.421875,
:width 921.6,
:height 1382.4}),
:page 486},
:content {:text "RAID Level 1: Mirroring"},
:properties {:color "yellow"}}
{:id #uuid "64380cd0-34b3-4c34-8c35-a5cf1bf77eee",
:page 489,
:position {:bounding {:x1 208.84375,
:y1 194.53125,
:x2 592.8035888671875,
:y2 213.53125,
:width 921.6,
:height 1382.4},
:rects ({:x1 208.84375,
:y1 194.53125,
:x2 592.8035888671875,
:y2 213.53125,
:width 921.6,
:height 1382.4}),
:page 489},
:content {:text "To see that this is not (necessarily) the cas"},
:properties {:color "yellow"}}
{:id #uuid "64380d3f-30a1-4780-aff2-96cfeb474786",
:page 489,
:position {:bounding {:x1 183.33059692382812,
:y1 590.6875,
:x2 594.7306518554688,
:y2 613.6875,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.33059692382812,
:y1 590.6875,
:x2 594.7306518554688,
:y2 613.6875,
:width 921.6,
:height 1382.4}),
:page 489},
:content {:text "RAID Level 4: Saving Space With Parity"},
:properties {:color "yellow"}}
{:id #uuid "643821ec-6db3-410c-87bf-0a2c9928cdf9",
:page 491,
:position {:bounding {:x1 660.96875,
:y1 859.9375,
:x2 792.8169555664062,
:y2 884.9375,
:width 921.6,
:height 1382.4},
:rects ({:x1 664.734375,
:y1 859.9375,
:x2 792.8169555664062,
:y2 884.9375,
:width 921.6,
:height 1382.4}
{:x1 660.96875,
:y1 861.65625,
:x2 670.53125,
:y2 880.65625,
:width 921.6,
:height 1382.4}),
:page 491},
:content {:text " additive parity"},
:properties {:color "yellow"}}
{:id #uuid "64382387-01fb-4f28-b5bf-d68dcb529642",
:page 491,
:position {:bounding {:x1 369.5667724609375,
:y1 1030.375,
:x2 523.1246337890625,
:y2 1055.375,
:width 921.6,
:height 1382.4},
:rects ({:x1 369.578125,
:y1 1030.375,
:x2 523.1246337890625,
:y2 1055.375,
:width 921.6,
:height 1382.4}
{:x1 369.5667724609375,
:y1 1032.09375,
:x2 523.1246337890625,
:y2 1051.09375,
:width 921.6,
:height 1382.4}),
:page 491},
:content {:text "subtractive parity"},
:properties {:color "yellow"}}
{:id #uuid "6438241b-f487-4cf3-b717-60811340a5bd",
:page 493,
:position {:bounding {:x1 183.359375,
:y1 462.515625,
:x2 491.9293212890625,
:y2 485.515625,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 462.515625,
:x2 491.9293212890625,
:y2 485.515625,
:width 921.6,
:height 1382.4}),
:page 493},
:content {:text "RAID Level 5: Rotating Parity"},
:properties {:color "yellow"}}
{:id #uuid "64382546-3a1e-438d-9f0e-434018661bda",
:page 495,
:position {:bounding {:x1 390.9827575683594,
:y1 318.765625,
:x2 460.1952819824219,
:y2 337.765625,
:width 921.6,
:height 1382.4},
:rects ({:x1 390.9827575683594,
:y1 318.765625,
:x2 460.1952819824219,
:y2 337.765625,
:width 921.6,
:height 1382.4}),
:page 495},
:content {:text "taxonomy"},
:properties {:color "green"}}
{:id #uuid "64382a3d-6747-462d-8431-7775ad76cc22",
:page 494,
:position {:bounding {:x1 183.75,
:y1 481.90625,
:x2 678.1847534179688,
:y2 506.90625,
:width 921.6,
:height 1382.4},
:rects ({:x1 287.46875,
:y1 481.90625,
:x2 678.1847534179688,
:y2 506.90625,
:width 921.6,
:height 1382.4}
{:x1 183.75,
:y1 483.625,
:x2 287.47998046875,
:y2 502.75,
:width 921.6,
:height 1382.4}),
:page 494},
:content {:text "Figure 38.8: RAID Capacity, Reliability, and Performance"},
:properties {:color "yellow"}}
{:id #uuid "64382ab8-ad41-4c20-be74-3ce7446f20d6",
:page 498,
:position {:bounding {:x1 588.8907470703125,
:y1 531.90625,
:x2 641.553955078125,
:y2 550.90625,
:width 921.6,
:height 1382.4},
:rects ({:x1 588.8907470703125,
:y1 531.90625,
:x2 641.553955078125,
:y2 550.90625,
:width 921.6,
:height 1382.4}),
:page 498},
:content {:text "tandem"},
:properties {:color "green"}}
{:id #uuid "6438d8bf-19fd-4a4a-b491-3887c425aebf",
:page 498,
:position {:bounding {:x1 108.35715103149414,
:y1 931.4822082519531,
:x2 298.5384407043457,
:y2 952.0536193847656,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35715103149414,
:y1 931.4822082519531,
:x2 298.5384407043457,
:y2 952.0536193847656,
:width 806.3999999999999,
:height 1209.6}),
:page 498},
:content {:text "Files And Directories"},
:properties {:color "yellow"}}
{:id #uuid "6438dd4b-55ba-4649-90fd-7de69ed9c2ba",
:page 500,
:position {:bounding {:x1 108.35714721679688,
:y1 860.8839721679688,
:x2 232.83402252197266,
:y2 881.4554138183594,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714721679688,
:y1 860.8839721679688,
:x2 232.83402252197266,
:y2 881.4554138183594,
:width 806.3999999999999,
:height 1209.6}),
:page 500},
:content {:text "Creating Files"},
:properties {:color "yellow"}}
{:id #uuid "6438dd78-68fe-47c6-8ca6-b2de3206f4f1",
:page 501,
:position {:bounding {:x1 567.5357360839844,
:y1 572.9910888671875,
:x2 675.8062438964844,
:y2 595.2767944335938,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 570.982177734375,
:y1 572.9910888671875,
:x2 675.8062438964844,
:y2 595.2767944335938,
:width 806.3999999999999,
:height 1209.6}
{:x1 567.5357360839844,
:y1 574.732177734375,
:x2 575.9107360839844,
:y2 591.3035888671875,
:width 806.3999999999999,
:height 1209.6}),
:page 501},
:content {:text " file descriptor"},
:properties {:color "yellow"}}
{:id #uuid "6438e073-2636-4ec8-807d-3ecf83a5c0c0",
:page 502,
:position {:bounding {:x1 108.35714721679688,
:y1 414.08931732177734,
:x2 349.001220703125,
:y2 434.66075134277344,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714721679688,
:y1 414.08931732177734,
:x2 349.001220703125,
:y2 434.66075134277344,
:width 806.3999999999999,
:height 1209.6}),
:page 502},
:content {:text "Reading And Writing Files"},
:properties {:color "yellow"}}
{:id #uuid "6438e88b-e3e6-44a4-9f79-411c1f27ae71",
:page 506,
:position {:bounding {:x1 108.35714912414551,
:y1 894.669677734375,
:x2 326.5652027130127,
:y2 915.2411193847656,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 108.35714912414551,
:y1 894.669677734375,
:x2 326.5652027130127,
:y2 915.2411193847656,
:width 806.3999999999999,
:height 1209.6}),
:page 506},
:content {:text "Shared File Table Entries"},
:properties {:color "yellow"}}
{:id #uuid "6438e98b-b46f-4038-a984-eb172a628cc7",
:page 508,
:position {:bounding {:x1 163.42858123779297,
:y1 620.232177734375,
:x2 590.9100341796875,
:y2 642.5178833007812,
:width 806.3999999999999,
:height 1209.6},
:rects ({:x1 254.1785888671875,
:y1 620.232177734375,
:x2 590.9100341796875,
:y2 642.5178833007812,
:width 806.3999999999999,
:height 1209.6}
{:x1 163.42858123779297,
:y1 621.9732360839844,
:x2 253.81851196289062,
:y2 638.544677734375,
:width 806.3999999999999,
:height 1209.6}),
:page 508},
:content {:text "Figure 39.3: Processes Sharing An Open File Table Entry"},
:properties {:color "yellow"}}
{:id #uuid "643a7463-39e5-4645-8b43-b8be7b8ea7bc",
:page 509,
:position {:bounding {:x1 183.359375,
:y1 190.953125,
:x2 397.9424133300781,
:y2 213.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 190.953125,
:x2 397.9424133300781,
:y2 213.953125,
:width 921.6,
:height 1382.4}),
:page 509},
:content {:text "Writing Immediately"},
:properties {:color "yellow"}}
{:id #uuid "643a754d-3efb-4440-8f9a-009a88463df8",
:page 509,
:position {:bounding {:x1 0,
:y1 253,
:x2 797.6187744140625,
:y2 592.796875,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 253,
:x2 0,
:y2 275,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 269,
:x2 0,
:y2 291,
:width 921.6,
:height 1382.4}
{:x1 717.25,
:y1 531.28125,
:x2 797.6187744140625,
:y2 550.28125,
:width 921.6,
:height 1382.4}
{:x1 755.078125,
:y1 550.8125,
:x2 797.6136474609375,
:y2 575.8125,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 552.546875,
:x2 797.6136474609375,
:y2 571.671875,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 573.796875,
:x2 463.2677307128906,
:y2 592.796875,
:width 921.6,
:height 1382.4}),
:page 509},
:content {:text "fsync() for a particular file descriptor, the file system responds by forcing all dirty(i.e., not yet written) data to disk"},
:properties {:color "yellow"}}
{:id #uuid "643a782a-b874-4f34-9968-50b69a04b849",
:page 509,
:position {:bounding {:x1 183.359375,
:y1 1086.921875,
:x2 342.37335205078125,
:y2 1109.921875,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 1086.921875,
:x2 342.37335205078125,
:y2 1109.921875,
:width 921.6,
:height 1382.4}),
:page 509},
:content {:text "Renaming Files"},
:properties {:color "yellow"}}
{:id #uuid "643a789e-6346-4845-9d38-95d26927a32b",
:page 510,
:position {:bounding {:x1 123.828125,
:y1 875.890625,
:x2 455.27972412109375,
:y2 898.890625,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 875.890625,
:x2 455.27972412109375,
:y2 898.890625,
:width 921.6,
:height 1382.4}),
:page 510},
:content {:text "Getting Information About Files"},
:properties {:color "yellow"}}
{:id #uuid "643a79be-d297-4f8d-8825-83c9f830af0e",
:page 511,
:position {:bounding {:x1 183.359375,
:y1 1004.734375,
:x2 343.0458068847656,
:y2 1027.734375,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 1004.734375,
:x2 343.0458068847656,
:y2 1027.734375,
:width 921.6,
:height 1382.4}),
:page 511},
:content {:text "Removing Files"},
:properties {:color "yellow"}}
{:id #uuid "643a7a52-0c85-435c-8250-3f4198a09fc0",
:page 512,
:position {:bounding {:x1 123.828125,
:y1 529.453125,
:x2 321.84381103515625,
:y2 552.453125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 529.453125,
:x2 321.84381103515625,
:y2 552.453125,
:width 921.6,
:height 1382.4}),
:page 512},
:content {:text "Making Directories"},
:properties {:color "yellow"}}
{:id #uuid "643a7a83-66d0-4bbc-8b17-bd7604a0ed5f",
:page 512,
:position {:bounding {:x1 123.828125,
:y1 742.28125,
:x2 223.7018280029297,
:y2 761.28125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 742.28125,
:x2 223.7018280029297,
:y2 761.28125,
:width 921.6,
:height 1382.4}),
:page 512},
:content {:text "eponymous"},
:properties {:color "green"}}
{:id #uuid "643a7c32-0be4-4a2e-9532-31869f4e725a",
:page 513,
:position {:bounding {:x1 183.331298828125,
:y1 670.578125,
:x2 387.33258056640625,
:y2 693.578125,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.331298828125,
:y1 670.578125,
:x2 387.33258056640625,
:y2 693.578125,
:width 921.6,
:height 1382.4}),
:page 513},
:content {:text "Reading Directories"},
:properties {:color "yellow"}}
{:id #uuid "643a7d55-768c-4881-b78d-f721c8d7929d",
:page 514,
:position {:bounding {:x1 123.828125,
:y1 613.578125,
:x2 329.9228515625,
:y2 636.578125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 613.578125,
:x2 329.9228515625,
:y2 636.578125,
:width 921.6,
:height 1382.4}),
:page 514},
:content {:text "Deleting Directories"},
:properties {:color "yellow"}}
{:id #uuid "643a7d87-b945-4068-94dd-2b2d203eae67",
:page 514,
:position {:bounding {:x1 123.828125,
:y1 828.28125,
:x2 240.995361328125,
:y2 851.28125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 828.28125,
:x2 240.995361328125,
:y2 851.28125,
:width 921.6,
:height 1382.4}),
:page 514},
:content {:text "Hard Links"},
:properties {:color "yellow"}}
{:id #uuid "643a7dda-5c26-4ed5-8e06-c03e5a0e9fb7",
:page 515,
:position {:bounding {:x1 582.0946655273438,
:y1 1157.890625,
:x2 636.3905029296875,
:y2 1172.890625,
:width 921.6,
:height 1382.4},
:rects ({:x1 582.0946655273438,
:y1 1157.890625,
:x2 636.3905029296875,
:y2 1172.890625,
:width 921.6,
:height 1382.4}),
:page 515},
:content {:text "hamster "},
:properties {:color "green"}}
{:id #uuid "643a8017-1499-4cd3-a015-0f1e8d143e93",
:page 516,
:position {:bounding {:x1 123.81216430664062,
:y1 826.234375,
:x2 282.1700134277344,
:y2 849.234375,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.81216430664062,
:y1 826.234375,
:x2 282.1700134277344,
:y2 849.234375,
:width 921.6,
:height 1382.4}),
:page 516},
:content {:text "Symbolic Links"},
:properties {:color "yellow"}}
{:id #uuid "643a84cb-102e-4beb-a138-e8690f68356f",
:page 518,
:position {:bounding {:x1 123.828125,
:y1 290.03125,
:x2 283.0047302246094,
:y2 313.03125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 290.03125,
:x2 283.0047302246094,
:y2 313.03125,
:width 921.6,
:height 1382.4}),
:page 518},
:content {:text "Permission Bits"},
:properties {:color "yellow"}}
{:id #uuid "643a88bf-206b-4b6d-9d92-95516bcbe270",
:page 526,
:position {:bounding {:x1 360.484375,
:y1 367.953125,
:x2 738.0448608398438,
:y2 407.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 360.484375,
:y1 367.953125,
:x2 738.0448608398438,
:y2 407.953125,
:width 921.6,
:height 1382.4}),
:page 526},
:content {:text "File System Implementation"},
:properties {:color "yellow"}}
{:id #uuid "643a8c8e-b3ae-4de8-9280-75201b02d6db",
:page 526,
:position {:bounding {:x1 123.828125,
:y1 1001.859375,
:x2 311.8470764160156,
:y2 1024.859375,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 1001.859375,
:x2 311.8470764160156,
:y2 1024.859375,
:width 921.6,
:height 1382.4}),
:page 526},
:content {:text "The Way To Think"},
:properties {:color "yellow"}}
{:id #uuid "643a8ce0-15b0-4d37-987d-6e649a59b616",
:page 527,
:position {:bounding {:x1 265.9375,
:y1 832.6875,
:x2 323.32318115234375,
:y2 857.6875,
:width 921.6,
:height 1382.4},
:rects ({:x1 265.9375,
:y1 832.6875,
:x2 323.32318115234375,
:y2 857.6875,
:width 921.6,
:height 1382.4}),
:page 527},
:content {:text "blocks"},
:properties {:color "yellow"}}
{:id #uuid "643a8d89-facb-40cd-96d8-dd142c42da36",
:page 529,
:position {:bounding {:x1 483.5835266113281,
:y1 432.328125,
:x2 554.2378540039062,
:y2 451.328125,
:width 921.6,
:height 1382.4},
:rects ({:x1 483.5835266113281,
:y1 432.328125,
:x2 554.2378540039062,
:y2 451.328125,
:width 921.6,
:height 1382.4}),
:page 529},
:content {:text "overkill "},
:properties {:color "green"}}
{:id #uuid "643a8ef8-7d3f-4794-9f00-4973a3be9bb7",
:page 527,
:position {:bounding {:x1 652.65625,
:y1 1170.484375,
:x2 750.930908203125,
:y2 1195.484375,
:width 921.6,
:height 1382.4},
:rects ({:x1 652.65625,
:y1 1170.484375,
:x2 750.930908203125,
:y2 1195.484375,
:width 921.6,
:height 1382.4}),
:page 527},
:content {:text "data region"},
:properties {:color "yellow"}}
{:id #uuid "643a8f4b-ac22-4cb8-b68d-e7f3078709c1",
:page 528,
:position {:bounding {:x1 578.015625,
:y1 575.359375,
:x2 676.2728271484375,
:y2 600.359375,
:width 921.6,
:height 1382.4},
:rects ({:x1 578.015625,
:y1 575.359375,
:x2 676.2728271484375,
:y2 600.359375,
:width 921.6,
:height 1382.4}),
:page 528},
:content {:text "inode table"},
:properties {:color "yellow"}}
{:id #uuid "643a8fa4-9783-4e86-8b04-2fad1f3a5c66",
:page 528,
:position {:bounding {:x1 400.796875,
:y1 1042.890625,
:x2 576.8242797851562,
:y2 1067.890625,
:width 921.6,
:height 1382.4},
:rects ({:x1 400.796875,
:y1 1042.890625,
:x2 576.8242797851562,
:y2 1067.890625,
:width 921.6,
:height 1382.4}),
:page 528},
:content {:text "allocation structures"},
:properties {:color "yellow"}}
{:id #uuid "643a9022-da94-4092-8a64-e22cd2364365",
:page 529,
:position {:bounding {:x1 592.65625,
:y1 559.203125,
:x2 690.4248657226562,
:y2 584.203125,
:width 921.6,
:height 1382.4},
:rects ({:x1 592.65625,
:y1 559.203125,
:x2 690.4248657226562,
:y2 584.203125,
:width 921.6,
:height 1382.4}),
:page 529},
:content {:text "superblock"},
:properties {:color "yellow"}}
{:id #uuid "643a92a1-90df-4342-a183-85c55242b8af",
:page 529,
:position {:bounding {:x1 416.36773681640625,
:y1 1022.078125,
:x2 479.9180603027344,
:y2 1045.078125,
:width 921.6,
:height 1382.4},
:rects ({:x1 416.36773681640625,
:y1 1022.078125,
:x2 479.9180603027344,
:y2 1045.078125,
:width 921.6,
:height 1382.4}),
:page 529},
:content {:text " Inode"},
:properties {:color "yellow"}}
{:id #uuid "643a93f0-e122-4ea5-a228-48607f93e404",
:page 531,
:position {:bounding {:x1 183.359375,
:y1 908.28125,
:x2 402.9515380859375,
:y2 936.28125,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 908.28125,
:x2 402.9515380859375,
:y2 936.28125,
:width 921.6,
:height 1382.4}),
:page 531},
:content {:text "The Multi-Level Index"},
:properties {:color "yellow"}}
{:id #uuid "643a950d-c2c2-419b-8206-0b957b7de178",
:page 531,
:position {:bounding {:x1 0,
:y1 589,
:x2 797.5996704101562,
:y2 1110.25,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 589,
:x2 0,
:y2 611,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 605,
:x2 0,
:y2 627,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 621,
:x2 0,
:y2 643,
:width 921.6,
:height 1382.4}
{:x1 420.269775390625,
:y1 1027.484375,
:x2 797.5996704101562,
:y2 1046.484375,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 1048.75,
:x2 797.5984497070312,
:y2 1067.875,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 1070,
:x2 797.582763671875,
:y2 1089.125,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 1091.25,
:x2 797.5953369140625,
:y2 1110.25,
:width 921.6,
:height 1382.4}),
:page 531},
:content {:text ". Thus, an inode may have some fixed number of direct pointers (e.g., 12), and a single indirect pointer. If a file grows large enough, an indirect block is allocated (from the data-block region of the disk), and the inodes slot for an indirect pointer is set to point to it."},
:properties {:color "yellow"}}
{:id #uuid "643a96a0-f55d-4a84-bf93-4732a282b124",
:page 532,
:position {:bounding {:x1 571.3375854492188,
:y1 998.0625,
:x2 615.238037109375,
:y2 1017.0625,
:width 921.6,
:height 1382.4},
:rects ({:x1 571.3375854492188,
:y1 998.0625,
:x2 615.238037109375,
:y2 1017.0625,
:width 921.6,
:height 1382.4}),
:page 532},
:content {:text "akin "},
:properties {:color "green"}}
{:id #uuid "643a96cb-bb7d-44c7-ac86-1e55a7ea3249",
:page 533,
:position {:bounding {:x1 413.6831359863281,
:y1 544.78125,
:x2 481.9478759765625,
:y2 563.78125,
:width 921.6,
:height 1382.4},
:rects ({:x1 413.6831359863281,
:y1 544.78125,
:x2 481.9478759765625,
:y2 563.78125,
:width 921.6,
:height 1382.4}),
:page 533},
:content {:text "readily "},
:properties {:color "green"}}
{:id #uuid "643a96d1-5114-40f7-9dad-4291462344ff",
:page 533,
:position {:bounding {:x1 280.546875,
:y1 376.59375,
:x2 700.4242553710938,
:y2 401.59375,
:width 921.6,
:height 1382.4},
:rects ({:x1 384.265625,
:y1 376.59375,
:x2 700.4242553710938,
:y2 401.59375,
:width 921.6,
:height 1382.4}
{:x1 280.546875,
:y1 378.3125,
:x2 387.875,
:y2 397.4375,
:width 921.6,
:height 1382.4}),
:page 533},
:content {:text "Figure 40.2: File System Measurement Summary"},
:properties {:color "yellow"}}
{:id #uuid "643a975d-f0a2-47e7-bf85-63a300a2c504",
:page 532,
:position {:bounding {:x1 373.015625,
:y1 208.015625,
:x2 624.874267578125,
:y2 227.140625,
:width 921.6,
:height 1382.4},
:rects ({:x1 373.015625,
:y1 208.015625,
:x2 624.874267578125,
:y2 227.140625,
:width 921.6,
:height 1382.4}),
:page 532},
:content {:text "EXTENT-BASED APPROACHES"},
:properties {:color "yellow"}}
{:id #uuid "643a990d-2b82-4bed-a49d-46746821b5a4",
:page 533,
:position {:bounding {:x1 183.33059692382812,
:y1 607.515625,
:x2 422.4984130859375,
:y2 630.515625,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.33059692382812,
:y1 607.515625,
:x2 422.4984130859375,
:y2 630.515625,
:width 921.6,
:height 1382.4}),
:page 533},
:content {:text "Directory Organization"},
:properties {:color "yellow"}}
{:id #uuid "643a9be6-58e7-47a5-9ef2-bfff1f4c88a7",
:page 534,
:position {:bounding {:x1 680.6773681640625,
:y1 706.0625,
:x2 738.0621948242188,
:y2 725.0625,
:width 921.6,
:height 1382.4},
:rects ({:x1 680.6773681640625,
:y1 706.0625,
:x2 738.0621948242188,
:y2 725.0625,
:width 921.6,
:height 1382.4}),
:page 534},
:content {:text "per se,"},
:properties {:color "green"}}
{:id #uuid "643a9c2b-a519-4800-9188-253b13e9c2e5",
:page 534,
:position {:bounding {:x1 333.991455078125,
:y1 208.015625,
:x2 589.796142578125,
:y2 227.140625,
:width 921.6,
:height 1382.4},
:rects ({:x1 333.991455078125,
:y1 208.015625,
:x2 589.796142578125,
:y2 227.140625,
:width 921.6,
:height 1382.4}),
:page 534},
:content {:text " LINKED-BASED APPROACHES"},
:properties {:color "yellow"}}
{:id #uuid "643a9d3c-3847-4a2e-b50e-f8423b089b39",
:page 535,
:position {:bounding {:x1 183.33059692382812,
:y1 492.90625,
:x2 434.0701599121094,
:y2 515.90625,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.33059692382812,
:y1 492.90625,
:x2 434.0701599121094,
:y2 515.90625,
:width 921.6,
:height 1382.4}),
:page 535},
:content {:text "Free Space Management"},
:properties {:color "yellow"}}
{:id #uuid "643a9d6e-eab7-475c-9822-9b2efa21e6f0",
:page 535,
:position {:bounding {:x1 596.453125,
:y1 889.734375,
:x2 717.6112670898438,
:y2 914.734375,
:width 921.6,
:height 1382.4},
:rects ({:x1 596.453125,
:y1 889.734375,
:x2 717.6112670898438,
:y2 914.734375,
:width 921.6,
:height 1382.4}),
:page 535},
:content {:text "pre-allocation"},
:properties {:color "yellow"}}
{:id #uuid "643a9e6c-c2bd-48b9-80b8-b98340f91f7a",
:page 536,
:position {:bounding {:x1 123.828125,
:y1 589.125,
:x2 377.6831359863281,
:y2 617.125,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 589.125,
:x2 377.6831359863281,
:y2 617.125,
:width 921.6,
:height 1382.4}),
:page 536},
:content {:text "Reading A File From Disk"},
:properties {:color "yellow"}}
{:id #uuid "643a9e8a-5f34-4dc9-817b-30466e84ffe2",
:page 536,
:position {:bounding {:x1 0,
:y1 429,
:x2 738.087890625,
:y2 821.296875,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 429,
:x2 0,
:y2 451,
:width 921.6,
:height 1382.4}
{:x1 467.359375,
:y1 779.3125,
:x2 541.5746459960938,
:y2 804.3125,
:width 921.6,
:height 1382.4}
{:x1 462.234375,
:y1 781.046875,
:x2 738.087890625,
:y2 800.171875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 802.296875,
:x2 329.5362854003906,
:y2 821.296875,
:width 921.6,
:height 1382.4}),
:page 536},
:content {:text " traverse the pathname and thus locate the desired inode."},
:properties {:color "yellow"}}
{:id #uuid "643ab82b-d15c-4298-b52b-30c27da1deb0",
:page 537,
:position {:bounding {:x1 0,
:y1 477,
:x2 797.6093139648438,
:y2 895.796875,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 477,
:x2 0,
:y2 499,
:width 921.6,
:height 1382.4}
{:x1 371.88311767578125,
:y1 855.53125,
:x2 797.6093139648438,
:y2 874.53125,
:width 921.6,
:height 1382.4}
{:x1 183.359375,
:y1 876.796875,
:x2 490.4876403808594,
:y2 895.796875,
:width 921.6,
:height 1382.4}),
:page 537},
:content {:text " amount of I/O generated by the open is proportional to the length of the pathname."},
:properties {:color "yellow"}}
{:id #uuid "643ab83e-d2fe-4f02-b467-b969ab2482cc",
:page 537,
:position {:bounding {:x1 183.359375,
:y1 1033.859375,
:x2 402.55523681640625,
:y2 1061.859375,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 1033.859375,
:x2 402.55523681640625,
:y2 1061.859375,
:width 921.6,
:height 1382.4}),
:page 537},
:content {:text "Writing A File To Disk"},
:properties {:color "yellow"}}
{:id #uuid "643abbf4-1d1a-4b32-9d91-345983406ce5",
:page 541,
:position {:bounding {:x1 412.848876953125,
:y1 1156.125,
:x2 487.0954895019531,
:y2 1171.125,
:width 921.6,
:height 1382.4},
:rects ({:x1 412.848876953125,
:y1 1156.125,
:x2 487.0954895019531,
:y2 1171.125,
:width 921.6,
:height 1382.4}),
:page 541},
:content {:text "o bad mouth"},
:properties {:color "green"}}
{:id #uuid "643abc13-2fdb-4a66-932a-eea1eafa449a",
:page 539,
:position {:bounding {:x1 183.359375,
:y1 618.015625,
:x2 416.6278076171875,
:y2 641.015625,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 618.015625,
:x2 416.6278076171875,
:y2 641.015625,
:width 921.6,
:height 1382.4}),
:page 539},
:content {:text "Caching and Buffering"},
:properties {:color "yellow"}}
{:id #uuid "643abc3c-040a-4f2f-89e4-ca14c9c0c230",
:page 540,
:position {:bounding {:x1 123.828125,
:y1 807.25,
:x2 262.8486633300781,
:y2 832.25,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 807.25,
:x2 262.8486633300781,
:y2 832.25,
:width 921.6,
:height 1382.4}),
:page 540},
:content {:text "write buffering "},
:properties {:color "yellow"}}
{:id #uuid "643abc6f-93a1-44e8-bb62-e56b2a9f2541",
:page 539,
:position {:bounding {:x1 252.21875,
:y1 957.515625,
:x2 409.9726867675781,
:y2 982.515625,
:width 921.6,
:height 1382.4},
:rects ({:x1 252.21875,
:y1 957.515625,
:x2 409.9726867675781,
:y2 982.515625,
:width 921.6,
:height 1382.4}),
:page 539},
:content {:text "static partitioning"},
:properties {:color "yellow"}}
{:id #uuid "643abc73-d5b4-4627-9ab9-ef8863bc8f3d",
:page 539,
:position {:bounding {:x1 534.234375,
:y1 1042.734375,
:x2 718.5639038085938,
:y2 1067.734375,
:width 921.6,
:height 1382.4},
:rects ({:x1 534.234375,
:y1 1042.734375,
:x2 718.5639038085938,
:y2 1067.734375,
:width 921.6,
:height 1382.4}),
:page 539},
:content {:text "dynamic partitioning"},
:properties {:color "yellow"}}
{:id #uuid "643abf69-04dc-428c-996d-b139cba0fa1f",
:page 544,
:position {:bounding {:x1 515.3082885742188,
:y1 372.5,
:x2 738.0563354492188,
:y2 402.5,
:width 921.6,
:height 1382.4},
:rects ({:x1 515.3082885742188,
:y1 372.5,
:x2 738.0563354492188,
:y2 402.5,
:width 921.6,
:height 1382.4}),
:page 544},
:content {:text "Fast File System"},
:properties {:color "yellow"}}
{:id #uuid "643ac12f-817c-459b-b9ba-bbb1745519fb",
:page 546,
:position {:bounding {:x1 123.81153106689453,
:y1 498.796875,
:x2 343.5225830078125,
:y2 521.796875,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.81153106689453,
:y1 498.796875,
:x2 343.5225830078125,
:y2 521.796875,
:width 921.6,
:height 1382.4}),
:page 546},
:content {:text "Organizing Structure"},
:properties {:color "yellow"}}
{:id #uuid "643ac141-3bff-4b00-9c18-57ad7c108fe5",
:page 546,
:position {:bounding {:x1 529.84375,
:y1 561.265625,
:x2 602.1054077148438,
:y2 586.265625,
:width 921.6,
:height 1382.4},
:rects ({:x1 529.84375,
:y1 561.265625,
:x2 602.1054077148438,
:y2 586.265625,
:width 921.6,
:height 1382.4}),
:page 546},
:content {:text "cylinder"},
:properties {:color "yellow"}}
{:id #uuid "643ac144-24f3-46ca-9354-47c9d2f4ffe0",
:page 546,
:position {:bounding {:x1 308.28125,
:y1 561.265625,
:x2 445.497802734375,
:y2 586.265625,
:width 921.6,
:height 1382.4},
:rects ({:x1 308.28125,
:y1 561.265625,
:x2 445.497802734375,
:y2 586.265625,
:width 921.6,
:height 1382.4}),
:page 546},
:content {:text "cylinder groups"},
:properties {:color "yellow"}}
{:id #uuid "643ac1ec-08d9-4584-b6ed-4332f8f791a0",
:page 547,
:position {:bounding {:x1 220.60842895507812,
:y1 214.0625,
:x2 333.9940185546875,
:y2 239.0625,
:width 921.6,
:height 1382.4},
:rects ({:x1 220.625,
:y1 214.0625,
:x2 333.9940185546875,
:y2 239.0625,
:width 921.6,
:height 1382.4}
{:x1 220.60842895507812,
:y1 215.796875,
:x2 333.9940185546875,
:y2 234.796875,
:width 921.6,
:height 1382.4}),
:page 547},
:content {:text "block groups"},
:properties {:color "yellow"}}
{:id #uuid "643ac2c5-a62f-473b-b0e5-32807c7b2e6a",
:page 547,
:position {:bounding {:x1 626.9721069335938,
:y1 923.953125,
:x2 686.7061157226562,
:y2 942.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 626.9721069335938,
:y1 923.953125,
:x2 686.7061157226562,
:y2 942.953125,
:width 921.6,
:height 1382.4}),
:page 547},
:content {:text "replica"},
:properties {:color "green"}}
{:id #uuid "643ac2f1-4d07-4107-a46d-4d2d8eea6fc6",
:page 548,
:position {:bounding {:x1 270.5033264160156,
:y1 739.765625,
:x2 330.91644287109375,
:y2 758.765625,
:width 921.6,
:height 1382.4},
:rects ({:x1 270.5033264160156,
:y1 739.765625,
:x2 330.91644287109375,
:y2 758.765625,
:width 921.6,
:height 1382.4}),
:page 548},
:content {:text "mantra "},
:properties {:color "green"}}
{:id #uuid "643ac41b-c2e0-4351-b0e3-012e792cf426",
:page 548,
:position {:bounding {:x1 0,
:y1 365,
:x2 738.0799560546875,
:y2 780.015625,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 365,
:x2 0,
:y2 387,
:width 921.6,
:height 1382.4}
{:x1 691.775390625,
:y1 739.765625,
:x2 738.0799560546875,
:y2 758.765625,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 761.015625,
:x2 159.8196258544922,
:y2 780.015625,
:width 921.6,
:height 1382.4}),
:page 548},
:content {:text "corollary,"},
:properties {:color "green"}}
{:id #uuid "643ac42c-edf9-4b68-8890-b04d724c2ac2",
:page 548,
:position {:bounding {:x1 123.81153106689453,
:y1 652.609375,
:x2 605.0134887695312,
:y2 675.609375,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.81153106689453,
:y1 652.609375,
:x2 605.0134887695312,
:y2 675.609375,
:width 921.6,
:height 1382.4}),
:page 548},
:content {:text "Policies: How To Allocate Files and Directories"},
:properties {:color "yellow"}}
{:id #uuid "643ac4ec-df99-430a-9e2e-78101c74b14e",
:page 549,
:position {:bounding {:x1 575.7300415039062,
:y1 1007.109375,
:x2 661.0611572265625,
:y2 1026.109375,
:width 921.6,
:height 1382.4},
:rects ({:x1 575.7300415039062,
:y1 1007.109375,
:x2 661.0611572265625,
:y2 1026.109375,
:width 921.6,
:height 1382.4}),
:page 549},
:content {:text "extensive "},
:properties {:color "green"}}
{:id #uuid "643ac4f0-6809-4acd-b141-2a96174f5395",
:page 549,
:position {:bounding {:x1 515.3639526367188,
:y1 1028.359375,
:x2 573.4813842773438,
:y2 1047.359375,
:width 921.6,
:height 1382.4},
:rects ({:x1 515.3639526367188,
:y1 1028.359375,
:x2 573.4813842773438,
:y2 1047.359375,
:width 921.6,
:height 1382.4}),
:page 549},
:content {:text "nuanced"},
:properties {:color "green"}}
{:id #uuid "643ac55f-b4a2-4bfc-ad0b-23c785c4871e",
:page 548,
:position {:bounding {:x1 0,
:y1 477,
:x2 738.09033203125,
:y2 974.984375,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 477,
:x2 0,
:y2 499,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 493,
:x2 0,
:y2 515,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 509,
:x2 0,
:y2 531,
:width 921.6,
:height 1382.4}
{:x1 195.0341033935547,
:y1 892.234375,
:x2 738.0705413818359,
:y2 911.234375,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 913.484375,
:x2 738.085693359375,
:y2 932.609375,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 934.734375,
:x2 738.09033203125,
:y2 953.859375,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 955.984375,
:x2 460.4035339355469,
:y2 974.984375,
:width 921.6,
:height 1382.4}),
:page 548},
:content {:text "find the cylinder group with a low number of allocated directories (to balance directories across groups) and a high number of free inodes (to subsequently be able to allocate a bunch of files), and put the directory data and inode in that group. "},
:properties {:color "yellow"}}
{:id #uuid "643ac616-ab90-40d5-94b2-7b8c294c4360",
:page 548,
:position {:bounding {:x1 0,
:y1 573,
:x2 738.0941162109375,
:y2 1104.34375,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 573,
:x2 0,
:y2 595,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 589,
:x2 0,
:y2 611,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 605,
:x2 0,
:y2 627,
:width 921.6,
:height 1382.4}
{:x1 248.3310546875,
:y1 1021.59375,
:x2 738.0941162109375,
:y2 1040.59375,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 1042.84375,
:x2 738.066162109375,
:y2 1061.96875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 1064.09375,
:x2 738.0770263671875,
:y2 1083.21875,
:width 921.6,
:height 1382.4}
{:x1 123.828125,
:y1 1085.34375,
:x2 414.9846496582031,
:y2 1104.34375,
:width 921.6,
:height 1382.4}),
:page 548},
:content {:text " data blocks of a file in the same group as its inode, thus preventing long seeks between inode and data (as in the old file system). Second, it places all files that are in the same directory in the cylinder group of the directory they are in. T"},
:properties {:color "yellow"}}
{:id #uuid "643ac769-6511-4954-a43a-957f3b561c56",
:page 550,
:position {:bounding {:x1 123.828125,
:y1 708.671875,
:x2 367.2305908203125,
:y2 731.671875,
:width 921.6,
:height 1382.4},
:rects ({:x1 123.828125,
:y1 708.671875,
:x2 367.2305908203125,
:y2 731.671875,
:width 921.6,
:height 1382.4}),
:page 550},
:content {:text "Measuring File Locality"},
:properties {:color "yellow"}}
{:id #uuid "643ac8cc-7164-4066-9730-231063c6c7c0",
:page 551,
:position {:bounding {:x1 183.359375,
:y1 658.34375,
:x2 440.3702392578125,
:y2 681.34375,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 658.34375,
:x2 440.3702392578125,
:y2 681.34375,
:width 921.6,
:height 1382.4}),
:page 551},
:content {:text "The Large-File Exception"},
:properties {:color "yellow"}}
{:id #uuid "643ac9e7-1479-4be9-81fe-acb750f363b4",
:page 551,
:position {:bounding {:x1 0,
:y1 445,
:x2 808.6233520507812,
:y2 937.84375,
:width 921.6,
:height 1382.4},
:rects ({:x1 0,
:y1 445,
:x2 0,
:y2 467,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 461,
:x2 0,
:y2 483,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 477,
:x2 0,
:y2 499,
:width 921.6,
:height 1382.4}
{:x1 0,
:y1 493,
:x2 0,
:y2 515,
:width 921.6,
:height 1382.4}
{:x1 604.9961547851562,
:y1 833.828125,
:x2 797.5694580078125,
:y2 852.828125,
:width 921.6,
:height 1382.4}
{:x1 183.34375,
:y1 855.078125,
:x2 797.590087890625,
:y2 874.203125,
:width 921.6,
:height 1382.4}
{:x1 183.34375,
:y1 876.328125,
:x2 808.6233520507812,
:y2 895.453125,
:width 921.6,
:height 1382.4}
{:x1 183.34375,
:y1 897.578125,
:x2 797.5711059570312,
:y2 916.703125,
:width 921.6,
:height 1382.4}
{:x1 183.34375,
:y1 918.84375,
:x2 673.0679321289062,
:y2 937.84375,
:width 921.6,
:height 1382.4}),
:page 551},
:content {:text "After some number of blocks are allocated into the first block group (e.g., 12 blocks, or the number of direct pointers available within an inode), FFS places the next “large” chunk of the file (e.g., those pointed to by the first indirect block) in another block group (perhaps chosen for its low utilization)."},
:properties {:color "yellow"}}
{:id #uuid "643acbfe-afa1-4031-82ce-1a765d6ee445",
:page 553,
:position {:bounding {:x1 762.4848022460938,
:y1 753.90625,
:x2 797.5928955078125,
:y2 772.90625,
:width 921.6,
:height 1382.4},
:rects ({:x1 762.4848022460938,
:y1 753.90625,
:x2 797.5928955078125,
:y2 772.90625,
:width 921.6,
:height 1382.4}),
:page 553},
:content {:text "lone"},
:properties {:color "green"}}
{:id #uuid "643acd1b-5a18-4b14-acdc-006c2f97c0e8",
:page 555,
:position {:bounding {:x1 476.45806884765625,
:y1 932.90625,
:x2 565.6673583984375,
:y2 951.90625,
:width 921.6,
:height 1382.4},
:rects ({:x1 476.45806884765625,
:y1 932.90625,
:x2 565.6673583984375,
:y2 951.90625,
:width 921.6,
:height 1382.4}),
:page 555},
:content {:text "watershed "},
:properties {:color "green"}}
{:id #uuid "643ace75-cb8c-4421-a1b6-292547f28333",
:page 554,
:position {:bounding {:x1 468.140625,
:y1 1039.953125,
:x2 616.9420166015625,
:y2 1064.953125,
:width 921.6,
:height 1382.4},
:rects ({:x1 468.140625,
:y1 1039.953125,
:x2 616.9420166015625,
:y2 1064.953125,
:width 921.6,
:height 1382.4}),
:page 554},
:content {:text "parameterization"},
:properties {:color "yellow"}}
{:id #uuid "643acef0-5592-4bad-8557-878567dc18a1",
:page 553,
:position {:bounding {:x1 183.359375,
:y1 978.421875,
:x2 508.1578063964844,
:y2 1001.421875,
:width 921.6,
:height 1382.4},
:rects ({:x1 183.359375,
:y1 978.421875,
:x2 508.1578063964844,
:y2 1001.421875,
:width 921.6,
:height 1382.4}),
:page 553},
:content {:text "A Few Other Things About FFS"},
:properties {:color "yellow"}}
{:id #uuid "643acfc2-eef7-4c7f-a8a5-1740c8788159",
:page 558,
:position {:bounding {:x1 170.890625,
:y1 370.8125,
:x2 424.6278991699219,
:y2 400.8125,
:width 921.6,
:height 1382.4},
:rects ({:x1 170.890625,
:y1 370.8125,
:x2 424.6278991699219,
:y2 400.8125,
:width 921.6,
:height 1382.4}),
:page 558},
:content {:text "Crash Consistency"},
:properties {:color "yellow"}}],
:extra {:page 558}}