Untitled

多个CPU、共享同一片内存空间

Untitled

左边是单线程的进程,右边是多线程的进程,可以从途中看出他们的差别。

Untitled

上图:多线程和多进程区别

OS scheduler决定下一条指令是执行啥的,尽管他有基于一定算法,但是还是难以推断。

What runs next is determined by the OS scheduler, and although the scheduler likely implements some sensible algorithm, it is hard to know what will run at any given moment in time.

一.多处理器编程:从入门到放弃

多处理器编程:从入门到放弃

利用OS API实现多线程,但是多线程带来了许多问题:

1.原子性

1.1 放弃原子性,CPU每次执行的线程可能是 $T_A$或者 $T_B$,因此可以画出一个树状的形式语义机,每次PC都可能是$T_A$或者 $T_B$,这导致根本不可能一条程序(甚至指令)独占处理器:

Untitled

Untitled

这里两个线程求和小于2000……的原因是