操作系统
文章平均质量分 96
FrozenPenguin
冰冻三尺,非一日之寒;水滴石穿,非一日之功。
展开
-
「 操作系统 」聊聊进程调度算法
进程调度算法是操作系统中非常重要的一部分,它决定了操作系统中各个进程的执行顺序和时间片。在单核CPU下,任何时刻都只可能有一个程序在执行,比如正在计算1*2这个程序A,那么就不能运行1+…+n这个求和程序B,这个时候程序A处于执行状态,而程序B处于非执行状态。我们在任意时刻到底是执行哪个程序呢?我们运行的地铁列车,有指挥中心统一控制调度,到底由哪些地铁执行哪一天的任务,这是因为轨道等资源有限,不可能全放进去。类似到进程调度,CPU等硬件资源有限,也不可能全部一起执行。这就引出了我们的进程调度。原创 2023-04-08 11:34:31 · 4213 阅读 · 0 评论 -
「操作系统」彻底理解零拷贝Zero-Copy技术
早期 I/O 操作,内存与磁盘的数据传输的工作都是由 CPU 完成的,而此时 CPU 不能执行其他任务,会特别浪费 CPU 资源。于是,为了解决这一问题,DMA 技术就出现了,每个 I/O 设备都有自己的 DMA 控制器,通过这个 DMA 控制器,CPU 只需要告诉 DMA 控制器,我们要传输什么数据,从哪里来,到哪里去,就可以放心离开了。后续的实际数据传输工作,都会由 DMA 控制器来完成,CPU 不需要参与数据传输的工作。原创 2023-03-31 10:14:09 · 1114 阅读 · 0 评论 -
「操作系统」深入理解死锁(什么是死锁?死锁形成条件?如何避免死锁?如何排查死锁?)
死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。原创 2023-03-26 14:10:52 · 2497 阅读 · 0 评论 -
「操作系统」全面剖析进程、线程、协程(区别与联系)
我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行于操作系统之上的。原创 2023-03-25 17:24:18 · 1271 阅读 · 0 评论 -
「操作系统」什么是用户态和内核态?为什么要区分
简单来说内核态就是操作系统运行线程,用户态就是线程执行用户自己的程序。用户态不能直接使用系统资源,也不能改变 CPU 的工作状态,并且只能访问这个用户程序自己的存储空间!内核态系统中既有操作系统的程序,也有普通用户程序。为了安全性和稳定性,操作系统的程序不能随便访问,这就是内核态。即需要执行操作系统的程序就必须转换到内核态才能执行内核态可以使用计算机所有的硬件资源为什么要区分用户态和内核态?在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。原创 2023-03-20 08:29:03 · 7005 阅读 · 0 评论 -
「操作系统」进程间的通信方式全面解析
匿名管道顾名思义,它没有名字标识,匿名管道是特殊文件只存在于内存,没有存在于文件系统中,shell 命令中的「」竖线就是匿名管道,通信的数据是无格式的流并且大小受限,通信的方式是单向的,数据只能在一个方向上流动,如果要双向通信,需要创建两个管道,再来匿名管道是只能用于存在父子关系的进程间通信,匿名管道的生命周期随着进程创建而建立,随着进程终止而消失。命名管道。原创 2023-03-16 10:16:21 · 3206 阅读 · 2 评论