Хорошо, принято.
Да, с благими целями создаются стандарты.
К сожалению, если компилятор и железо слепо следует программе, то программа выполняется слишком медленно.
Т.е. даже для однопоточных программ нужны какие-то допущения, чтобы компилятор и процессор могли выполнять код так, как будет быстрее.
Я к чему: абстракции текут, и в многопоточных приложениях от синхронизации никуда не уйти.
Как вариант -- сказать, что "при одновременной работе со смежными областями памяти может быть что угодно" (== undefined behavior), и это тоже вариант "модели памяти".
Упрощает ли он жизнь программисту? Едва ли.
Так ли работает КДС? -- фиг знает.
Если бы В.Филоненко сказал "для выполнения IO задачи на всех ядрах, в том числе, на PRU приостанавливаются, выполняется ввод-вывод, и потом возобновляются программы", то это бы объясняло как именно синхронизируется IO и PRU/цикл.
Но, В.Филоненко сказал, что "PRU вообще в realtime работает, и не влияет на цикл".
ПЛК110-24-32.К-М02