Чому дорівнює розмір машинного слова

Машинное слово, каков его размер?

Есть понятие “машинного слово”, я читала об этом, но везде пишут по разному, на сколько я понимаю одно машинное слово равно 2 байта, а двойное машинное слово 4 байта, но откуда оно берётся, почему 2 байта а не один? То есть как я понимаю если процессор 32-битный он может за один такт принять и обработать с оперативной памяти 32 бита информации, а это 4 байта значит у него должно быть одно слово 4 байта ну а 64-х битный в 2 раза больше и его слово будет больше?

3 ответа 3

Думаю, вся путаница возникла из-за того, что когда то разработчики Интела (я так думаю) назвали два байта – словом (word) – тогда 16 битные процессоры были прорывом. Соответственно, 4 байта – двойным словом. (DWORD, double word). Это сохранилось и в многих языках программирования (в том числе в с/с++). Почему два байта – слово? да видимо от того, что байт это как буква. А две буквы – это уже слово. (Хотя сейчас прибегут филологи и скажут, что это скорее всего слог, чем слово). В википедии есть хорошая фраза “* Для 32-битных процессоров x86: исторически машинным словом считается 16 бит, реально — 32 бита.”

А вот словосочетание “двойное машинное слово” я никогда не слышал. Даже гугл мало находит статей с таким сочетанием. А вот “двойное слово” или “машинное слово” – это нормально.

То есть как я понимаю если процессор 32-битный он может за один такт принять и обработать с оперативной памяти 32 бита информации

не все так просто. Далеко не факт, что он может даже принять 32 бита. Современные процессоры сложные, имеют кеш. Имеют сложные комманды, которые за один раз (не так, а именно раз) могут обработать до 16 байт памяти (всякие mmx и sse).

Обычно, машинным словом называют “разрядность процессора”, так как разрядность обычно показывает оптимальный размер данных внутри процессора (регистры 32битного процессора 32 битные и с 32битными данными в основном все команды и работают). В некоторых процессорах слово было 60 бит:)

В любом случае рекомендую всегда всматриваться в контекст. Если о “слове” говорит программист на С/С++ – это 16 бит, если программист на ассемблере под 32 битные ARM процессоры – то скорее всего слово – это 32 бита.

Архітектура комп’ютерних систем

5. В чому різниця між пропускною здатністю (throughput) і часом доступу (latency)?
Пропускна здатність це скільки інформації можна передати за одиницю часу, час доступу це скільки часу потрібно щоб передати одиницю інформації.

6. Що таке concurrent computing, чим це поняття відрізняється від parallel computing?
concurrent computing — рiзнi обчислювальнi процеси проходять (позiрно) одночасно. При тому, вони можуть вiдбуватися на одному обчислювачi (наприклад, CPU), а одночаснiсть досягається частим
переключенням мiж цими обчисленнями, тож так можна підвищити продуктивіність навіть однопроцесорних систем.(поки один процес чекає — інший рахує.)

Parallel computing — розглядається використання декiлькох обчислювачiв для збiльшення продуктивностi. Експлуатується паралелізм самої задачі.(кілька процесів рахують одночасно)

7. Для чого використовується concurrent computing?
Розбиття задачi на паралельно виконуванi шматки(РІЗНІ види обчислення) часто спрощує її, позбавляючи потреби конструювати складнi скiнченi автомати.

8. Для чого використовується parallel computing?
Пришвидшити виконання задачі запустивши процеси на одночасне виконання (навіть якщо тип обчислень однаковий)

9. Що таке машинне слово? Який розмір машинного слова Вашого комп’ютера?
Величина, що = розрядності регістрів 64

10. Які види паралелізму ви знаєте?
На рівні бітів
На рівні команд
На рівні задач

11. Що таке паралелізм на рівні бітів?
Збільшений розмір машинного слова, що спрощує обчислення над великими змінними, і зменшує їх к-ть

12. Що таке конвеєр мікпроцесора?
Апаратна структура в обчислювальних пристроях ЕОМ, призначена для прискорення виконання машинних команд шляхом суміщення певних стадій їх виконання в часі

13. Який виграш дає використання мікропроцесорами конвеєра? Як цей виграш досягається?

  • Дозволяє ефективнiше використовувати доступнi розробникам процесора транзистори
  • Дозволяє досягати значно бiльших тактових частот, нiж без використання конвеєра.
  • Збiльшує пропускну здатнiсть (throughput), не впливаючи на час реакцiї (latency).

14. Яка довжина конвеєра ARM Cortex M3 (ядра мікроконтролерів STM32)? Яка довжина конвеєра типових сучасних процесорів x86?
3

15. Що таке передбачення переходів (branch prediction) та speculative execution?
Branch prediction — визначає напрям розгалужень в програмі, що зараз виконується
Speculative execution — метод оптимізації, коли комп’ютерна система виконує деякі завдання, які можуть бути насправді непотрібними

16. Що таке суперскалярний мікропроцесор?
Суперскалярний мікропроцесор — мікропроцесор, що має вбудований ряд внутрішніх конвейєрів, які можуть виконувати декілька команд одночасно.

17. Що таке позачергове виконання команд — out-of-order execution.
Поки порядок команд неважливий, вони можуть виконуватись в будь-якому порядку.(оптимізовано найшвидшому)

18. Що таке VLIW-мікропроцесор?
Very long instruction word. Де факто компілятор збирає команди в великі команди, та ефективно їх впорядковує для процесора, який може виконувати комплексні команди

19. В чому різниця між CISC i RISC мікропроцесорами? До якої із цих груп належить x86? А ARM Cortex M3?
CISC has complete instruction set, RISC has reduced one. x86 — CISC, ARM — RISC

20. Розкажіть, що таке класифікація Флінна (Flynn’s taxonomy)?

21. Що таке Single instruction stream, single data stream? В чому суть такого підходу, де він використовується?
SISD — Single instruction stream, single data stream. Паралелiзм вiдсутнiй. Один обчислювач виконує, послiдовно, по однiй командi, яка обробляє елемент даних. Приклад: однопроцесорний комп’ютер, скажiмо, типовi ”персоналки” 80-х.

22. Що таке Single instruction stream, multiple data streams? В чому суть такого підходу, де він використовується?
SIMD — Single instruction stream, multiple data streams. Одна команда опрацьовує декiлька елементiв даних. Приклад — векторнi процесори iз минулого, SIMD команди типу SSE та NEON сучасних процесорiв.

23. Що таке Multiple instruction streams, single data stream? В чому суть такого підходу, де він використовується?
Multiple instruction streams, single data stream. Екзотичний варiант. Використовується для забезпечення надiйностi. Системи, iнодi гетерогеннi, (щоб зменшити шанс повторення тiєї ж помилки), роблять те ж обчислення, та мають отримати однаковий результат, або, хоча б, проголосувати за кращий.

24. Що таке Multiple instruction streams, multiple data streams? В чому суть такого підходу, де він використовується?
MIMD — Multiple instruction streams, multiple data streams. Одночасно виконується декiлька команд, якi опрацьовують декiлька рiзних потокiв даних. Найпоширенiший рiзновид — багатоядернi процесори, кластери, розподiленi системи.

25. Які розширення класифікації Флінна ви знаєте?
SIMT — Single Instructions Multiple Threads,
SPMD — Single Program Multiple Datastreams,
MPMD — Multiple Programs Multiple Datastream

26. Що таке Single instruction, multiple threads підхід, де використовується?
SIMD + багатопоточність — множина простих процесорів що виконують ту ж команду над різними даними.

27. Що таке SPMD, MPMD та як вони співвідносяться із MIMD?
Частини MIMD
SPMD —Паралельно виконується та ж програма над різними даними і різні потоки можуть виконуватися на різних стадіях.
MPMD — Одночасне виконання кількох різних програм на різних пристроях

28. Що таке багатоядерні мікропроцесори?
складається з двох і більше «обчислювальних ядер» на одному кристалі. Він має один корпус і встановлюється в один роз’єм на системній платі комп’ютера, але операційна система сприймає кожне його обчислювальне ядро як окремий процесор з повним набором обчислювальних ресурсів.

29. Що таке симетрична багатопроцесорність — SMP?

30. Чим мультипроцесор відрізняється від мультикомп’ютера?
Мультипроцесор — паралельний комп, в якому всі процеси використовують спільну пам’ять
Мультикомп — кожен процес має свою пам’ять

31. Які види паралельних обчислювальних систем ви знаєте?
Системи із спільною пам’яттю, системи із розподіленою пам’яттю, distributed shared memory, memory visualization

32. В чому суть паралельних обчислювальних систем із спільною пам’яттю — shared memory?
В тому що в процесів спільна память.

33. В чому суть паралельних обчислювальних систем із розподіленою пам’яттю — distributed memory?
В тому що в кожного процесу своя память.

34. Чим системи із спільною пам’яттю (shared memory) відрізняються від систем із розподіленою пам’яттю (distributed memory)?
В спільній памяті процеси не обовязково знають де саме є дата і мають спільну память, а розподілені мають свою память і уникають race conditions

35. Що називають абревіатурою UMA?
UMA — uniform memory access, системи де час доступу до всiх елементiв пам’ятi однаковий для всiх процесорiв. Те, що до всіх елементів однаковий час доступу робить передбачення перформансу.

36. Чому виникла потреба в технології NUMA? Чим вона відрізняється від UMA?
В тому, що однаковий час доступу погіршував продуктивність. В NUMA різний час доступу.

37. Що називають абревіатурою NUMA?
Non-uniform memory access

38. Розкажіть про ієрархію пам’яті сучасних процесорів.
Регістрова память
Кешова память
Стек
Віртуальна память

39. Що таке кеш пам’яті?
Це відносно швидкий та малий блок пам’яті в який записуються деякі дані для прискорення доступу до них. Зазвичай якісь змінні до яких часто доступаються

40. Чим відрізняються кеші пам’яті першого, другого, тощо, рівнів?
Швидкістю та обємом. Перший рівень: максимальна швидкість, мінімальний об’єм, наступні рівні — зменшується швидкість, збільшується об’єм

41. Що таке когерентність кешів? Де, у яких системах, виникає потреба про неї турбуватися?
властивість кешу, що означає цілісність даних, що зберігаються в локальних кешах для роздільного ресурсу. Турбуватись необхідно у мультипроцесорних системах де є кілька блоків кешу

42. Як може досягатися когерентність кешім процесорів мультипроцесора?
Створюють копії shared memory, котрі синхронізуються

43. Що таке Parallel random-access machine (PRAM), для чого це поняття використовується?
Абстрактна машина з розподіленою пам’яттю. Використовується розробниками паралельних алгоритмів для моделювання паралельної алгоритмічної продуктивності

44. Чим обмежується масштабування мультикомп’ютерів?

45. Що таке Resource contention — конфлікт доступу до спільного ресурсу?
Коли декілька процесів одночасно доступаються до спільного ресурсу

46. Для чого служить Translation lookaside buffer— TLB?
Трансляцiя сторiнок у типових реалiзацiях вiртуальної пам’ятi вимагає звертання до таблиць у пам’ятi. Якщо б таке звертання вiдбувалося фiзично кожного разу швидкодiя була б катастрофiчно низькою. Тому воно пишеться в цей буфер

47. В чому суть поняття віртуальної пам’яті?
Схема адресації пам’яті комп’ютера, при якій пам’ять для запущеної програми реалізується однорідним масивом, в той час як насправді операційна система виділяє пам’ять блоками в різних видах пам’яті

48. Що таке cache hit та сache miss?
Cache hit — ситуація коли дані, потрібні для виконання програми містяться в кеші процесора. Cache miss — даних в кеші немає, і потрібно звертатися до головної пам’яті для того щоб отримати дані.

49. Яку міру ефективності кешів пам’яті ви знаєте?
Hit rate, miss rate

50. На яких принципах базується ідея використання кешу пам’яті?
На принципах локальності
Часова локальнiсть — данi, якi використовувалися недавно, ймовiрно знову пригодяться. Кеш, природно, менший за головну пам’ять, однак виграш вiд нього помiтний, якщо тi ж данi потрiбнi знову i знову.

Просторова локальнiсть — якщо використано данi iз позицiї N, ймовiрно, скоро пригодяться данi iз позицiї N+1

51. Що таке рядок кешу, з яких частин він складається?
Основний блок інформації в кеші. Складається з тегу, флагів та блоку даних

52. Який типовий розмір рядка кешу сучасних процесорів сімейства x86?
64

53. Що таке повно-асоціативний кеш (fully associative cache)?
Будь-яка адреса може зберігатись в будь-якому рядку кешу. Зручно швидко, але жесть як дорого, тому юзається лише в крихітних кешах

54. Що таке кеш прямого відображення (direct mapped cache)?
Кожна ділянка пам’яті може лише в одному, конкретному рядку кешу зберігатись, дешево, неефективно, бо куча синонімів конкурують за рядок кешу

55. Що таке N-канальні асоціативний кеш (Set associative cache)?
Кожній ділянці відповідає N рядків кешу

56. В чому різниця між кешем прямого відображення (direct mapped cache) і N-канальним асоціативним кешем (Set associative cache)?
Кількість рядків які можуть відповідати ділянці пам’яті

57. В чому різниця між кешем прямого відображення (direct mapped cache) і повно-асоціативний кешем (fully associative cache)?
В прямому відображенні для ділянки є виділений рядок, фуллі асосіейтів закидує ділянки в будь-які рядки

58. Які політики запису кешу пам’яті ви знаєте?
Write-through та write-back. Перший пише негайно в пам’ять, другий чекає коли йому дозволять

59. В чому різниця між інклюзивним та ексклюзивним кешами?
Інклюзивний вимагає щоб вміст одного кешу повність включався в інший, ексклюзивний навпаки, щоб у всіх кешах були унікальні дані

60. Що таке багатоядрені процесори?
Багато процесорів на одному кристалі, зазвичай зі спільним кешем

61. Що таке гіперпоточність (Hyperthreading)?
Коли в ядрі є два обчислювальних блока, що дозволяє одночасне виконання двох потоків в 1 ядрі

62. Що таке модель консистентності пам’яті (мультипроцесорів)?
Домовленості між програмним і апаратним забезпеченням

63. Які види консистентності пам’яті ви знаєте?
Строгаб послідовнаб процесорна, слабка, по виходу, по входу, по кінцевому результаті

64. Що таке строга консистентність (strict consistency)?
За будь-якого читання адреси повертається результат запису туди.

65. Що таке послідовна консистентність (sequential consistency)?
Порядок читання та запису визначається апаратурою. Процеси не обов’язково бачать запис, але обов’язково бачать впорядкування

66. Що таке процесорна консистентність (processor consistency)?
Всі процесори бачать записи кожного процесора у порядку який був.

67. Що таке слабка консистентність (weak consistency/weak ordering)?
Порядок операцій для різних процесорів може відрізнятися

68. Що таке консистентність по виходу (release consistency)?
При вході в критичну секцію всі операції мають завершитися, а при виході розповсюдитися між всіма процесорами

69. Що таке узгодженість по входу (entry consistency)?
.Таке ж як і по виходу, але стосується 1 змінної.

70. Що таке узгодженість в кінцевому результаті (eventual consistency)?
Через якийсь час після запису всі процесори побачать однаковий результат

71. Що таке SIMD? Які приклади реалізації цієї технології ви знаєте для процесорів сімейства x86?
SIMD — Single instruction stream, multiple data streams. Одна команда опрацьовує декiлька елементiв даних. Приклад — векторнi процесори iз минулого, SIMD команди типу SSE та NEON сучасних процесорiв.

72. Що таке SSE/SSE2/SSE3?
Набори інструкцій для оптимізації роботи з відео та аудіо, floating point обчисленнями. Покращення MMX

73. Що таке MMX?
Набір інструкцій призначений для прискорення процесів кодування / декодування потокових аудіо і відео даних.

74. Що таке мультикомп’ютери?
Не мають спільної памяті, об’єднані мережею.

75. Чим відрізняються мультиком’ютери від мультипроцесорів?
Мультипроцесор — паралельний комп, в якому всі процеси використовують спільну пам’ять
Мультикомп — кожен процес має свою пам’ять

76. Що таке розподілена система?
Мультиком’ютери, де групи серверів(наприклад) фізично далеко одне від одного Говорячи про розподiлену систему, мається на увазi, що вона вирiшує ту чи iншу задачу або групу пов’язаних задач.

77. Опишіть суть клієнт-серверної архітектури.
In the client-server model, a transaction involves two parties, the server, who offers some service, and the client, who wants to use the service. A typical example of the client-server model is the Web, in which users to go Web servers to find information.

78. В чому суть peer-to-peer архітектури розподілених систем?
computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the application.

79. Які характерні особливості розподілених систем ви знаєте?

  • Має бути готова справитися з поломкою своїх елементів (як тимчасовою так і тривалою)
  • структура/топологія системи може бути наперед невідома для жодного з компів-учасників (або не відома взагалі)
  • Для цілісності с-ми від вузлів вимагається приймати загально узгоджені рішення виходячи з локально наявної інфи

80. Перерахуйте типові заблудження початківців щодо розподілених систем.
Мережа надійна, пересилка даних миттєва, мережа захищена, адмін один, мережа однорідна.

81. Які способи побудови паралельних алгоритмів ви знаєте?
Для моделі спільної памяті
Покладаючись на обмін повідомленнями
Розподілені алгоритми

82. В чому суть CAP-теореми? Наведіть приклади.

83. Між якими властивостями розподілених систем із ненадійною мережею (типу Інтернет) можна вибирати, будуючи розподілену систему, згідно CAP-теореми? Наведіть приклади.
availability&partitionTolerance — підходять, Consistency — нє, бо інтернет — мережа ненадійна, і вузли не зможуть бачити одне і теж одночасно

84. Розкажіть, що ви знаєте про PACELC теорему.
Теорема PACELC4 — розширення CAP-теореми. Вона стверджує, що навiть у цiлiснiй системi, де вдається одночасно досягнути C-A-P, доводиться вибирати мiж затримкою (L — latency) i узгодженiстю (C — consistency).

85. Що таке beowulf-кластер?
кластер, зiбраний iз менш-бiльш споживацьких (off-the-shelf) компонент.

86. Що таке масово паралельні обчислювальні системи (massively parallel computers), чим вони відрізняються від кластерів?
MPC — use of a large number of processors (or separate computers) to perform a set of coordinated computations in parallel(simultaneously). На кластері майже все незалежне, на MPP — ні

87. Що таке GRID?
Кластери кластерів, зєднані інтернетом, найбільш розподілена форма HTC

88. Що таке гетерогенне програмування?
Електронні системи, що використовують різні типи обчислювальних блоків

89. Яка архітектура мікропроцесорів домінує в сучасних суперкомп’ютерах?
x86–64 Intel

90. Що таке TOP500?
500 найпотужніших суперкомпютерів

91. Які види паралелізму ви знаєте?
Дрібнозернистий, крупнозернистий, приголомшливий.

92. Що таке дрібнозернистий паралелізм (Fine-grained parallelism)?
Пiдзадачi повиннi обмiнюватися iнформацiєю багато раз за секунду.

93. Що таке крупнозернистий паралелізм (Coarse-grained parallelism)?
Якщо обмiн може вiдбуватися вiдносно рiдко

94. Що таке приголомшливий паралелізм (Embarrassing parallelism)?
Практично не потребують обмiну мiж задачами.

95. Як можна чисельно охарактеризувати прискорення виконання задачі (в результаті використання тієї чи іншої технології)?
В скільки разів збільшилась швидкість задач

96. Як знайти середню латентність задач?

97. Як знайти середню пропускну здатність задач?

98. Як знайти середнє прискорення виконання задач?

99. Сформулюйте закон Амдала. Які висновки із нього слідують? (Згадки про жінок та 1 місяць недостатньо).

де р це процент задачі який можна паралелізувати

100. Нехай можливим є розпаралелення 90% задачі. В скільки раз можна максимально прискорити її виконання?

101. Сформулюйте закон Густафсона.

обєм роботи лінійно росте з апаратними ресурсами.

102. Що таке залежності між задачами? Сформулюйте умови Бернштейна незалежності задач.
Жодна програма не може працювати швидше ніж виконати найдовшу послідовність залежних обчислень.

103. Що таке паралельне сповільнення?
Збільшення кількості паралельних підзадач збільшує і накладні витрати (витрати на переключення і підзадачі). Тому настає момент коли N+1 потоків виконують N задач.

104. Як можна чисельно оцінити ефективність розпаралелення?

L(х) — Час виконання задачі х потоками

105. До якого значення коефіцієнту ефективності паралелізації слід прагнути?
Мінімального

106. Що таке надлінійне прискорення? За яких умов воно виникає?
Коли прискорення неочікувано стрибає вверх. Часто виникає через ієрархічну організацію пам’яті, коли при деякій n кількості потоків всі данні починають поміщатись в кеш

107. Для чого використовується паралелізація?
Вирішення задач швидше з використанням декількох процесорів

108. Які етапи розробки реалізації паралельних задач включає методологія PCAM? Коротко опишіть їх.
Partitioning, Communication, Agglomeration, Mapping
Розділ на підзадачі
Аналіз зв’язків між задачами
Перегрупування задач
Розподіл підзадач між обчислювачами

109. В чому суть етапу Partitioning методології PCAM?
Декомпозиція, поділ на паралельні підзадачі

110. В чому суть етапу Communication методології PCAM?
Аналіз залежності між підзадачами, та розробка комунікації між ними.

111. В чому суть етапу Agglomeration методології PCAM?
Оцінка ефективності поділу та комунікації і при потребі групування задач на крупніші

112. В чому суть етапу Map методології PCAM?
Розподіл підзадач між обчислювачами

113. Що таке domain decomposition, говорячи про методологію PCAM? Наведіть приклади.

114. Що таке functional decomposition, говорячи про методологію PCAM? Наведіть приклади.
Паралельне швидке сортування чи сортування злиттям.

115. Наведіть приклад побудови паралельного алгоритму з використанням методології PCAM.

116. Які способи зменшення об’єму комунікації в рамках методології PCAM ви знаєте?
Редукція

117. Що таке стан гонитви (race condition)?
Помилкова ситуація під час виконування програми, в якій робота системи чи результат операції залежить від того, в якій послідовності, або ж з якою тривалістю виконуються деякі окремі інструкції коду.

118. Що таке гонитва даних (data race)?
Data race — це коли різні потоки намагаються читати/писати на один і той самий ресурс, без синхронізації.

119. Як формулює достатню умову виникнення гонитви даних С/С++?
Різні потоки намагаються читати/писати на один і той самий ресурс, без синхронізації і принаймі один з них хоче записати, то виникне гонитва даних і undefined condition

120. Для чого використовується синхронізація при паралельному програмуванні?
Для випадку, коли два потоки потребують звертання до однієї змінної.

121. Про які API для маніпуляції потоками (виконання) ви знаєте?
std::thread

122. Що таке std::thread?
Клас thread — клас одного потоку виконання, вони дозволяють багатьом функціям виконуватися одночасно.

123. Що таке замок (Lock) та як за його допомогою досягається взаємне виключення (mutual exclusion — не плутати із власне мютексом, примітивом синхронізації)?
Lock — замок, який забезпечить взаємне виключення (mutual exclusion) або ексклюзивне володiння потоку змiнною.

124. Що таке критична секція?
Ділянка коду, який користується lock — захопила ексклюзивний доступ до змінної.

125. Як слід розуміти твердження, що певна операція є атомарною?
Операція є атомарною, якщо вона закінчується в один крок відносно інших потоків, які мають доступ до цієї пам’яті.

126. Чи є атомарною операція присвоєння змінної в С/С++?
+

127. Чи є атомарними арифметичні операції в С/С++?

128. Що таке взаємоблокування (deadlock)?
Ситуація, коли кожен із групи процесів очікує на подію, яку може викликати лише інший процес з цієї групи

129. Перерахуйте необхідні умови виникнення взаємоблокування (deadlock).
Умова взаємного виключення
Умова утримування та очікування
Умова відсутності примусового звільнення ресурсів
Умова циклічного очікування

130. Які способи уникнення взаємоблокувань (deadlock) ви знаєте?
Виявлення та відновлення
Правильний розподіл ресурсів
Невиконання однієї з 4 умов

131. Що таке динамічне взаємне блокування (livelock)?
Майже дедлок, коли щось постійно відбувається але не дає ніякого результату. Часто виникає у спробі пофіксити дедлок

132. Що таке бар’єри синхронізації?
Якщо є група процесів, то бар’єр то місце в коді де виконання повинно зупинитися, поки всі не досягнуть цього місця в коді.

133. Які способи уникнення гонитви даних (data race) ви знаєте?
Mutex, не робити паралельну програму, semafor

134. Що таке lock-free структури даних?
Написання програм без явних блокувань називається lock-free програмуванням.

135. Що таке test-and-set?
Дозволяє атомарно встановити комiрку пам’ятi в 1 та повернути її попереднє значення

136. Що таке compare-and-swap (CAS)?
Порiвнює вмiст пам’ятi iз переданим значенням та записує нове, тiльки якщо значення спiвпадають

137. Що таке fetch-and-add?
Aтомарно збiльшує вмiст комiрки на вказану величину.

138. Що таке spinlock? Коли його варто використовувати, а коли ні?
Низькорiвневий примiтив синхронiзацiї, очiкує в циклi на момент, коли замок (lock) звiльниться. Є варiантом холостого циклу — busy waiting.

139. Що таке семафор? Які операції над ним можна виконувати? Наведіть приклади
Лічильник, який блокує доступ кудись, коли переповнений. Його можна збільшувати а можна зменшувати. Приклад: черга

140. Які правила «хорошої поведінки» при роботі із семафорами?
Звільняти захоплений ресурс і захоплювати вільний
Користуватися захопленим ресурсом
Не утримувати ресурс занадто довго

141. Що таке бінарний семафор?
Мютекс без пам”яті про те, де він відбувся
Семафор з двома станами

142. Що таке мютекс?
Одиничний семафор, але має інформацію про потік в якому відбувся, служить перемикачем доступу до комірки пам”яті між потоками
Об’єкт взаємного виключення

143. В чому (зазвичай — термінологія може варіювати від мови до мови, від framework до framework) різниця між мютексом і бінарним семафором?
Мютекс має інфу про те в якому потоці відбувся

144. Що таке рекурсивні мютекси? Коли вони можуть бути корисними?
Рекурсивний може захоплюватися одним потоком багато разів і нікого не пустить, поки потік не відпустить його стільки ж разів скільки взяв. Нерекурсивний мютекс так не можна — буде deadlock.

145. Що таке критична секція Windows? Яка її перевага над мютексами (там, де її можна застосувати)?
Бар’єр для однієї і тієї ж ділянки коду, яка виконується багатьма потоками.

146. Що таке умовні змінні?
Спосіб одного потоку повідомити, що відбулась подія, а іншого прокинутися у відповідь на подію.

147. Чи можна в умовних змінних зберігати якісь дані?
Ні

148. Наведіть приклад використання умовних змінних на прикладі типової задачі постачальника-споживача (consumer-producer).

149. Що таке spurious wakeup? Як їм протистояти?
Марні прокидання — потік прокидається не тільки тому що його розбудили. Для того щоб протистояти spurious wakeup в c++ можна використати якийсь предикат, який не дасть потоку прокинутися якщо якась умова не була виконана

150. Які засоби синхронізації С++11 ви знаєте?
Spinlock, mutex, semaphores, бар’єри

151. Що таке std::lock_guard в C++11?
Коли об’єкт створений він намагається отримати mutex, а коли знищений він автоматично його звільняє.