在x86或者arm这样CPU支持多级运行级别的处理器上,并发是怎么回事之我的理解。
只要程序并发执行的程序就要考虑竞争,同步等,有些地方需要一次做完,就需要加锁等。
1. 应用程序在执行“系统调用”的时候回切入“内核态”执行内核程序,所以这种情况下也就会被“并发”执行
2.有些内核程序本身就执行核心功能:比如内存管理,任务调度等,他们再每次被触发的时候被调用,比如任务调度,可能被定时中断触发等等。
其实具体某个CPU在给定的时刻只能执行一条指令,轮到执行内核程序的时候,CPU会在比较高的级别运行,拥有权限也较高。执行用户程序的时候,级别就会低下来,当然ARM和x86都支持这种方式,但是低端的单片机没有这个概念。
一定要区分进程/线程和“程序”之间的不同,前者是一个可执行实体,后者是代码。
有内核态的进程/线程, 也有用户态的进程/线程,不管是那种状态的线程/进程。都需要和别的线程/进程通信。用户态之间进程靠管道,socket等通信,用户态和核心态之间通过系统调用等。核心态和核心态之间就可以用你看的书上的内容了。
这只是我的理解。
|