同步异步与操作系统
文章目录
同步与异步,阻塞与非阻塞
- 同步与异步
- 函数或方法被调用的时候,调用者是否得到最终结果。
- 直接得到最终结果的,就是同步调用。
- 不直接得到最终结果的,就是异步调用。
- 阻塞、非阻塞
- 函数或方法调用的时候,是否立刻返回。
- 立刻返回就是非阻塞调用
- 不立刻返回就是阻塞调用
-
区别
- 同步、异步,与阻塞、非阻塞不相关
- 同步、异步强调的是,是否得到(最终的)结果
- 阻塞、非阻塞强调是时间,是否等待。
-
同步与异步区别在于:调用则是否得到了想要的最终结果。
- 同步就是一直要执行到返回最终结果;
- 异步就是直接返回了,但是返回的补是最终结果。调用者不能通过这种调用得到结果,以后可以通过被调用者提供的某种方式(被调用者通知调用者、调用者反复查询、回调),来取回最终结果。
-
阻塞与非阻塞的区别在于:调用者是否还能干其他事情。
- 阻塞,调用者就只能等待,无法做其他事情。
- 非阻塞,调用者可以先去做其他事情,不用一直等到结果返回。
-
联系
- 同步阻塞,我啥事不干,就等你打饭打给我。打到饭是结果,而且我啥事不干一直等,同步加阻塞。
- 同步非阻塞,我等着你打饭给我,饭没好,我不等,但是我无事可做,反复看饭好了没有。打饭是结果,但是我不 一直等。
- 异步阻塞,我要打饭,你说等叫号,并没有返回饭给我,我啥事不干,就干等着饭好了你叫我。例如,取了号什么 不干就等叫自己的号
- 异步非阻塞,我要打饭,你给我号,你说等叫号,并没有返回饭给我,我在旁边看电视、玩手机,饭打好了叫我。
操作系统知识
- 在X86之前,CPU工作在实模式下,之后,开始支持保护模式,对内存进行了划分。
- X86 CPU有4种工作级别:
- Ring0级,可以执行特权指令,可以访问所有级别的数据,可以访问IO设备等
- Ring3级,级别最低,只能访问本级别的数据
- 内核代码运行在Ring0,用户代码运行在Ring3
现代操作系统采用虚拟存储器,理论上,对于32位系统来说,进程对虚拟内存地址的内存寻址空间为4G
。64位操作系统理论上最大内存寻址空间
。
操作系统中,内核程序独立且运行在较高的特权级别上,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,这部分内存称为内核空间(内核态,最高地址1G)。
普通应用程序运行在用户空间(用户态)。
应用程序想访问某些硬件资源就需要通过操作系统提供的系统调用,系统调用可以使用特权指令运行在内核空间, 此时进程陷入内核态运行。系统调用完成,进程将回到用户态执行用户空间代码。