2841 lines
151 KiB
Clojure
2841 lines
151 KiB
Clojure
{: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 "Peterson’s 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 don’t 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"}}],
|
||
:extra {:page 351}}
|