操作系统计组基础知识
操作系统基础知识#
进程与线程#
进程是资源分配的基本单位,线程是调度的基本单位
一个程序至少有一个进程,一个进程至少有一个线程,线程是进程的子单位
线程间信息共享和通讯比较方便,不需要资源的切换
线程与协程#
协程是运行在线程上的,单个时间只能有一个协程运行,它的调度由用户控制,用户手动发起协程,并且手动释放CPU使用权(yield)。调用协程不需要切换到内核态,因此效率高
死锁#
死锁的四个必要条件
- 互斥条件:指资源同一时间只能被一个线程所使用
- 请求和保持条件:线程在申请资源的同时,不愿放弃自己手头已有的资源
- 不可剥夺条件:资源只能由线程自己释放,不可被它人剥夺
- 循环等待条件:线程之间A等B,B等A的循环等待链
防止死锁#
- 破坏死锁的四个必要条件之一
- 利用算法实现资源分配(银行家算法:在分配之前计算有没有可能陷入死锁情况,有则拒绝分配)
- 由操作系统干预,抢占资源或终止线程
虚拟内存#
虚拟内存是基于分页式存储管理机制的。在进程执行的时候并不会把所有的页都放入内存中,而是把一部分页映射到内存中,剩余部分仍储存于外存,当引用到内存中不存在的页的时候,会产生缺页中断,此时再从外存中把页调用进来
把页调用进来后有三种页面置换算法
- 最佳置换算法(OPT):最理想的情况,但是需要预知未来页面的使用情况,不可能实现
- 先进先出(FIFO):先被置换进来的页面最先被置换出去
- 最近最久未使用(LRU):记录页面上一次以来访问经历的时间,找出最久未使用的
内存碎片#
固定分区分配会产生内部内存碎片;动态分区分配会产生外部碎片
计组基础知识#
Cached#
由于CPU寄存器的计算速度非常快,相比之下将数据从主存读入CPU的速度将会慢很多。因此为了提高CPU的效率,引入高速的Cached。CPU从Cached中读取数数据,计算后放回Cached中
一般的CPU有三级Cached,越靠近CPU的Cached速度越快,大小越小,价格越贵
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY