作者:明睿崇 | 来源:互联网 | 2023-06-04 17:34
处理器活动的三种状态
实际上我们可以将每个处理器在任何指定时间点上的活动必然概括为以下三者之一。
-
运行于用户空间,执行用户进程。
-
运行于内核空间,处于进程上下文,代表某个特定的进程执行。
-
运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。
PS:当CPU空闲的时候,内核就运行一个空进程,处于进程上下文,但运行于内核空间。
同步和异步的区别
同步主要是等所有的操作都做完,才返回给用户。这样会给用户一种不太良好的体验。
异步可以将用户请求放置于消息队列中,并反馈给用户。
相对于同步,异步的用户体验效果较好。因为异步先响应用户请求。
异步操作例子:
为了避免短时间大量的数据库操作,就使用缓存机制,也就是消息队列。先将数据放入消息队列,然后再慢慢写入数据库。
引入消息队列机制,虽然可以保证用户请求的快速响应,但是并没有使得我数据迁移的时间变短(即80万条数据写入mysql需要1个小时,用了redis之后,还是需要1个小时,只是保证用户的请求的快速响应。用户输入完http url请求之后,就可以把浏览器关闭了,干别的去了。如果不用redis,浏览器不能关闭)。
不过同步调用可以直接得到正确的结果,异步调用不可以直接得到正确的结果,异步调用必须通过被调用者提供的某种机制,例如被调用者通知调用者,调用者反复查询、回调。
阻塞和非阻塞
既然有同步和异步,那么就有阻塞和非阻塞,这两个其实很简单,就是调用者能否在调用的时候做其他事情。
阻塞情况下,你必须等待结果,无法做其他事情。
非阻塞情况下,调用者可以去做其他事情。