![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 92
北鼻耷拉吧啦舅
向钱看,向厚赚
展开
-
死锁
概念:多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行会带来新的问题——死锁。死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。死锁产生的原因:1、系统竞争资源:通常系统中拥有的不可剥夺资源,数量不足以满足多个进程运行的需要,使得进程在 运行过程中,会因争夺资源而陷入僵局,如磁带机、打印机等。只有对不可剥夺资源的竞争才可...原创 2019-07-21 15:52:21 · 92 阅读 · 0 评论 -
进程抢占和上下文切换
上下文切换,也就是从一个可运行进程切换到还有一个可运行进程。进程切换schedule函数调用context_switch()函数完毕下面工作:1.调用定义在<asm/mmu_context.h>中的switch_mm(),该函数负责把虚拟内存从上一个进程映射切换到新进程中。2.调用定义在<asm/system.h>中的switch_to(),该函数负责从上一个进程的处理...原创 2019-04-03 12:58:44 · 419 阅读 · 0 评论 -
进程调度算法
1:可运行队列:调度程序中最主要的数据结构式运行队列(runqueue)。可运行队列是给定处理器上的可运行进程的链表,每一个处理器一个。每一个可投入运行的进程都唯一的归属于一个可运行队列。此外,可运行队列中还包括每一个处理器的调度信息。所以,可运行队列也是每一个处理器最重要的数据结构。为了避免死锁,要锁住多个执行队列的代码必须总是依照相同的顺序获取这些锁:依照可执行队列地址从低向高的顺序。2、优...原创 2019-04-02 22:31:35 · 107 阅读 · 0 评论 -
进程调度与进程管理
进程管理:1、创建进程:在Linux系统中,全部的进程都是PID为1的init进程的后代。内核在系统启动的最后阶段启动init进程。该进程读取系统的初始化脚本(initscript)并运行其它的相关程序,终于完毕系统启动的整个进程。Linux提供两个函数去处理进程的创建和运行:fork()和exec()。首先,fork()通过拷贝当前进程创建一个子进程。子进程与父进程的差别只在于PID(每一个进...原创 2019-04-02 22:30:54 · 380 阅读 · 0 评论