cpu是存储执行的,指令和数据一定是预先准备好的,外存->内存->缓存->cpu
数据可能会随着程序的执行发生变化,但是指令不会变
未来计算机应该能够打破这种方式,在某些情形下,cpu可以产生新的指令和数据
实现指令再造->机器智能
大多数程序在开始运行的时候先完成一些数据结构的初始化
然后对预先准备好的数据进行运算,最后给出结果
后台程序,包括内核则是在数据结构初始化完成后
进入一个循环执行的过程,随着预先设置好的判断条件变化而执行不同的指令
如果内核不使用中断机制,和daemon程序一回事
循环逐个检查判断条件是否满足
有了中断和调度则可以省去很多循环检查的消耗
以人为中心,以人每天的活动来描述操作系统和应用程序
略去人是怎么来的,和人的前期培养过程
相当于计算机的硬件生产,到系统的初始化
当然,同样的人,在不同的国家文化背景下成长,会长成不同的样子
相当于同样的物质,不同的生产工艺,不同的平台,安装了不同的操作系统
简化人每天的活动:
吃饭--应用程序
睡觉--内核idle线程
看书--看10本书,应用程序
工作--内核线程,写磁盘
上厕所--中断请求
接听手机--中断请求
收发邮件--中断请求
以天为单位循环。。。
有10本书要看,通常是这一本看N页,夹个书签,保存进程上下文,再看一会下一本,进程切换
按顺序把10本书看完?现在很少人这么干吧?
感兴趣了就多看会,不感兴趣就先换一本,时间片长短问题
异常就是吃饭时吃到沙子,必须及时吐掉,难道吃下去?处于进程上下文
对手机铃声的反应就是预先注册的中断请求,电话响了,停下手边的工作接电话
然后继续工作,电话里遇到有更紧急的工作,就记下当前的工作状态,切换
上班不让接电话,那这就是个被屏蔽的中断请求
睡觉。。。绝大多数的cpu在绝大多数的时间里都是在睡觉
上厕所可是不可屏蔽的中断
很忙的时候邮件比较多,可以一次多poll一些,当然也要有限度的
要不就光看邮件吧,别的什么事也不用干了
实在处理不了,总会有一些邮件被遗忘
不忙的时候等邮件提示就行了,怕邮箱坏了则定时检查下,看门狗