菜鸟笔记
提升您的技术认知

操作系统笔记

进程,线程,协程与并行,并发进程线程协程的区别死锁进程,线程,多线程i++的线程安全性同步和异步孤儿进程和僵尸进程/proc进程信息linux中的分段和分页互斥量 mutex线程进程间通信进程创建进程优先级进程的基础知识进程与线程的区别(面试题)线程的控制(创建,终止,等待,分离)可重入 VS 线程安全死锁的概念一级缓存和二级缓存的理解一句话解说内存屏障 Memory barrierbrk(), sbrk() 用法详解malloc/free函数的简单实现一文讲透 “进程、线程、协程”Linux进程状态线程池的陷阱linux内核学习之进程和线程进程与线程的区别和联系内存寻址linux IO子系统和文件系统读写流程Page cache和buffer cache的区别与联系漫谈linux文件IO多线程和多进程的区别内存泄漏字节、字、位、比特的概念和关系如何避免死锁ANSI是什么编码?CPU寻址范围(寻址空间)CPU 使用率低高负载的原因创建多少个线程合适操作系统下spinlock锁解析、模拟及损耗分析线程堆栈堆和栈的内存分配堆和栈的概念和区别堆和栈的区别,申请方式,程序的内存分配什么是 POD 数据类型Linux内存分配小结--malloc、brk、mmap系统调用与内存管理(sbrk、brk、mmap、munmap)进程描述和控制CPU执行程序的原理编译的基本概念Linux虚拟地址空间布局一个程序从源代码到可执行程序的过程程序的运行机制——CPU、内存、指令的那些事分页内存管理——虚拟地址到物理地址的转换深刻理解Linux进程间通信fork之后父子进程的内存关系fork之后,子进程继承了父进程哪些内容关于协程及其锁的一些认识对协程的一点理解std::thread join和detach区别CAS和ABA问题CAS算法锁和无锁无锁队列的实现Lock-Free 编程锁开销优化以及CAS进程、线程和协程之间的区别和联系多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)Linux 原来是这么管理内存的线程上下文切换怎么玩儿进程和线程通信原理CPU密集型 和 IO密集型cas原理以及Atomic原子类分析改变线程状态的八个方法六种进程间通信方式进程和线程的区别系统调用进程的概念linux共享内存进程间通讯方式进程的调度线程同步的方式mmap和shm 区别

进程的调度

阅读 : 118

进程调度的算法
进程调度的核心是调度算法,不同的算法适用于不同的场景。常见的调度算法包括:

(1)先来先服务(FCFS,First-Come-First-Served)
– 原理:按照进程到达的顺序分配CPU。
– 优点:简单直观。
– 缺点:可能导致短作业等待时间过长(“短作业饥饿”问题)。

(2)短作业优先(SJF,Shortest Job First)
– 原理:优先调度预计运行时间最短的进程。
– 优点:可以有效减少平均等待时间。
– 缺点:可能导致长作业饥饿,且需要预估进程运行时间。

(3)优先级调度(Priority Scheduling)
– 原理:根据进程的优先级分配CPU,优先级高的进程优先运行。
– 优点:可以满足不同进程的紧急程度需求。
– 缺点:低优先级的进程可能会被饿死(“优先级倒置”问题)。

(4)时间片轮转(RR,Round Robin)
– 原理:将CPU时间分成固定长度的时间片(Time Quantum),每个就绪态进程轮流运行一个时间片。
– 优点:公平性好,响应速度快,适合交互式系统。
– 缺点:时间片大小的选择会影响系统性能。

(5)多级反馈队列(Multilevel Feedback Queue)
– 原理:将就绪队列分为多个优先级队列,每个队列采用不同的调度算法。进程在不同队列之间动态迁移。
– 优点:综合了多种调度算法的优点,兼顾公平性和效率。
– 缺点:实现复杂,需要合理设计队列之间的迁移策略。