标签:进制 cpu 关闭 无限 div 自己 实现 自动 临界区
进程的等待状态
如果进程不在执行的话,那么它在等待一些事件,内核分了很多的等待状态
这些状态通常由进程的描述符队列来实现的 ,每个队列可能悬空,来对应一组等待特定的事件的进程。
内核的可重入
几个进程可以同时在内核态执行,在单处理器上只有一个进程真正的运行,其他都是被阻塞的状态,或者处于一个低优先级的状态等待,内核代表进程发出请求后,磁盘处理请求,恢复其他的进程,设备满足进程的请求,中断反馈内核,内核让以前的进程继续执行。
提供可重入的方式是编写函数
函数的变量改变局部变量,不改变全局,称作可重入函数
吞吐量
硬件中断,内核挂起进程,即使进程处于内核态,一旦设备发生中断,它一直等到cpu应答
进程的地址空间
每个进程运行的私有空间,他在用户态下运行的进程涉及到私有栈,数据和代码区
等到在内核状态的时候访问内核数据和代码区,使用另外的栈
进程共享地址空间,但在有些情况下明确的共享,有时内核自动完成共享
通过共享地址空间节省内存,内核自动完成
linux的进程共享地址空间来进行通信,共享内存技术
同步和临界
实现内核的可重入利用同步进制,如果作用于内核数据结构控制路径被挂起,
其他的内核路径不作用于这个数据结构,除非他被重置,否则两个路径就会破坏掉信息
避免死锁
与其他的控制路径的同步进程和内核控制路径容易进入死锁的状态
P1 >> a ; P2>>B P1 等待P2的完成, P2等待P1 的开始
这就是死锁的循环 ,和尚挑水
非抢占式内核
进程在内核执行时,他不能任意的挂起,也不能被另一个进程所代替,因此在单核的处理系统上,中断和异常处理函数不能更新内核,所以进程的访问是安全的,这样处理事情十分低效,就是单线程工作。
关闭中断的目的是什么
单处理器中存在同步机制,在进入一个临界区之前关闭产生的所有的硬件中断
就是中断的优先级问题,发生靠前的事情优先级高
多处理器的系统使用了自旋锁的机制,自旋锁与信号量相似,但是没有进程的链表
当一个进程锁发现被另一个进程锁锁着,就会不停地“旋转”,循环发送指令直到锁打开
为什么单进程无法进行自旋锁呢,因为单进程只能无限的被挂起,
而不能有反馈。
信号的机制
每种事件都有自己的信号编号
有两种系统事件
异步通告
例如,用户在终端按下中断,向前台发送一个中断信号
同步错误或异常
进程访问内存的非法地址,内核向这个进程发送SEGSEGV信号
unix 内核相关
标签:进制 cpu 关闭 无限 div 自己 实现 自动 临界区
原文地址:https://www.cnblogs.com/laochaia/p/13154998.html