491 lines
26 KiB
Clojure
491 lines
26 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"}}],
|
|
:extra {:page 345}}
|