重学操作系统和计算机网络
目标概述
核心目标
-
操作系统和网络知识庞大,太多内容则枯燥无味,我们主要是讲解最常见的知识点,符合28原则
-
操作系统
-
内核,性能,磁盘IO,内存,CPU,进程,线程,文件,中断
-
-
计算机网络
-
OSI七层模型,TCP/IP四层模型和组成
-
网络通讯,TCP,UDP,HTTP1.0/2.0,HTTPS,网络安全攻防,DNS,CDN
-
为什么要学习
-
系统性能优化和生产环境问题
-
从操作系统-网络-应用程序-存储 等多方面 诊断和优化
-
比如:1.接口突然响应变慢,服务器内存,CPU占用高,Redis,Mysql查询慢,如何排查;2.接口性能优化,如何进行分析和下手
怎么学
-
认识对应的内容知识体系,有全局认知
-
掌握常用的分析诊断工具-适合的场景用合适的工具,制作自己的脑图
性能优化诊断方法论
-
围绕两个大点
-
应用程序性能维度:提高吞吐量Throughput;降低延迟Latency
-
操作系统资源维度:CPU使用率;内存使用率;磁盘IO使用率
-
-
选择指标评估系统和应用程序现状
-
设置性能优化目标
-
进行链路基准测试
-
分析全链路性能瓶颈
-
优化系统和应用程序
-
验证优化后的性能指标

计算机硬件组成系统
什么是计算机
-
1945年冯诺依曼提出了一种计算机设计实现架构,奠定了现代计算机的理论基础
-
于是就有了电脑

五大组成部分
-
运算器,控制器,存储器,输入设备,输出设备
-
控制器
-
计算机的指挥系统,用来控制计算机其他组件的运行
-
简单来说:有一个正常的大脑
-
-
运算器
-
又名 算数逻辑运算器,简称ALU
-
运算功能,用来完成各种二进制编码做算数运算和逻辑运算,包括加减乘除,与或非运算,控制器+运算器=CPU
-
简单来说:用大脑思考1+1=2
-
运算器和控制器联系十分紧密,两大部件多数集成在同一芯片,统称为中央处理器
-
-
存储器
-
计算机的记忆功能,用来存取数据
-
内存:比如内存条,临时存储,断电丢失数据
-
外存:比如机械硬盘,持久存储,断电不丢失数据
-
-
IO设备
-
可以将数据输入到计算机,或接受计算机输出数据的外部设备
-
分类
-
输入设备:计算机接收外界数据的工具,比如键盘鼠标等
-
输出设备:计算机向外输出数据的工具,比如显示屏音响等
-
-

最重要的程序-操心系统和进程
什么是操作系统
-
运行在计算机上最重要的一种程序,管理计算机的所以硬件和软件
-
用户通过系统OS来操作使用计算机硬件,属于中间层
现代操作系统核心功能
-
进程管理:操作系统为进程分配任务,解决处理器的调度,分配和回收等
-
处理器管理:CPU的管理和分配,比如分配进程CPU调度执行
-
内存管理:内存的管理和分配,比如给程序分配内存和释放内存
-
外存管理:持久化存储的管理和分配,比如磁盘文件写入
-
IO管理:输入输出设备的管理,比如磁盘输入和网络收发
什么是进程
-
一个具有独立功能的程序对某个数据在处理机上的执行过程,也是操作系统资源分配的基本单位

-
操作系统中给进程 抽象了专门的数据结构
-
称为进程控制块,PCB
-
在操作系统代码当中是一个结构体:struct task_struct(...)
-
每一个进程均有一个PCB,在创建进程时创建PCB,伴随进程运行的全过程,直到进程撤销而撤销
-
-
PCB数据结构,包含进程的多数信息
-
程序ID(PID,进程句柄):一个进程都必须对应唯一PID一般是整型数字
-
特征信息:一般分系统进程,用户进程,或者内核进程等
-
进程状态:运行,就绪,阻塞,表示进程现在的运行情况
-
优先级:表示获取CPU控制权的优先级大小
-
提供进程管理,调度所需要的信息
-
-
进程状态
-
新建态:进程正在被创建,操作系统为进程分配资源,初始PCB
-
就绪态:具备运行条件,但没有空闲的CPU导致不能运行,万事俱备,只欠一个CPU
-
运行态:占有CPU,并在CPU上运行指令
-
阻塞态:等待某一事件而暂时不能运行
-
退出态:从系统中退出,操作系统会回收进程拥有的资源,撤销PCB
-
进程,线程,他们之间的关系怎么样的
-
进程
-
本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念
-
操作系统进行资源分配和调度的一个独立单位
-
-
线程
-
是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际操作单位
-
一个进程总可以并发多个线程,每条线程执行不同任务,切换受系统控制
-
-
重点
-
进程拥有多个线程的时候,这些线程会共享相同的虚拟内存和全局变量资源,这些资源在上下文切换时不需要修改
-
同进程内的线程切换,要比多线程间的切换消耗更少的资源,所以开发中用多线程替代多进程的原因
-
线程上下文切换的两种情况
-
前后两个线程属于不同进程,此时资源不共享,线程上下文切换和进程的上下文切换一样
-
前后两个线程属于同一个进程,同进程虚拟内存共享,在切换的时候虚拟内存等资源就保持不动,只需要切换线程的私有数据,寄存器不共享的数据
-
-
-
进程创建
-
进程一般由OS内核创建,一个进程也可以去创建另一个进程,这个去创建进程称为父进程,被创建进程称为子进程
-
应用场景
-
Nginx 的master-worker进程
-
Worker 是处理真正的请求的,而master负责监控worker进程是否正常工作
-
-
Redis两种持久化方式
-
AOF 和RDB
-
执行bgsave命令,Redis-Server会fork创建子进程,RDB持久化过程由子进程负责,会在后台异步进程快照操作,由于是子进程,所以快照生成同时还可以响应客户端请求
-
-
-
操作系统的调度算法
什么是进程调度
-
Linux是一个多任务操作系统,支持的任务同时运行的数量远远大于CPU的数量
-
进程调度就指 怎么安排 某一个时刻CPU运行 哪个进程
进程调度类型
-
非抢占式调度
-
一旦把处理机分配给某进程后,进程就会一直运行,直到该进程 完成 或 阻塞 时才会把 CPU 让给其他进程
-
主要用于 批处理系统 和 某些对 实时性要求不严 的实时系统
-
-
抢占式调度
-
暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一个进程
-
系统同样是把处理机分配给优先权最高的进程,在其他执行期间出现了另一个其优先权更高的进程
-
进程调度程序就停止当前进程的执行,重新将处理机分配给新得到的优先级最高的进程
-
主要用于比较严格的 实时系统 中
-

算法分类
-
先来先服务算法 FCFS
-
按照作业/进程达到的先后顺序进行调度,即:优先考虑在系统中等待时间最长的作业
-
重点:排在长进程后的短进程的等待时间长,不利于短作业/进程,长进程得到CPU就执行完成了,不利于短进程
-
比如 进程一响应慢,进程23快,那进程1先到,其他本来很快搞定的但是没有被调度到导致效率慢
-
-
短作业优先调度算法 SJF
-
预计执行时间短的进程优先分派处理机,短作业/进程(要求服务时间最短)
-
在实际情况中占有很大比例,为了使得他们优先执行,对长作业不友好
-
重点:缩短进程的等待时间,提高系统的吞吐量
-
比如, 进程一响应慢,进程23快,那么在同等时间下,更多短进程任务完成了,吞吐量也上去了
-
-
高响应比优先调度算法 HRRN
-
在每次调度时,先计算各个作业的优先权:优先权=响应比=(等待时间+要求服务时间)/要求服务时间
-
因为等待时间与服务时间之和就是系统对该作业的响应时间,所以 优先权=响应比=响应时间/要求服务时间
-
选择优先权高的进行服务需要 计算优先权信息,增加了系统的开销 是介于FCFS和SJF之间的一种折中算法
-
-
时间片轮转调度算法 RR
-
FCFS的方式按时间片轮转使用CPU的调度方式,让每个进程在一定时间间隔内都可以得到响应
-
由于高频率的进程切换,会增加开销,且不分区任务的紧急程度
-
-
优先级调度算法
-
根据任务的紧急程度进行调度,高优先级先处理,低优先级慢处理
-
通常使用 动态优先级,如果高优先级任务很多且持续产生,那低优先级的就可能很慢才被处理
-
分类
-
非抢占式:当就绪队列中出现优先级高的进程,运行完当前进程,再选择优先级高的进程
-
抢占式:当就绪队列中出现优先级高的进程,当前进程挂起,调度优先级高的进程运行
-
-
-
多级反馈队列调度算法
-
多级:表示有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短
-
高优先级队列中已没有调度的进程,则调度次优先级队列中的进程
-
对同个队列中的各个进程,按时间片轮转法调度
-
比如:Q1,Q2,当Q1没有才会去请求Q2,队列时间片为N,加入Q1的作业经过N个时间片之后还没有完成,则进入Q2
-
-
反馈:表示如果有新的进程加入优先级高的队列时,立即停止当前正在运行的进程,转而去运行优先级高的队列
-

总结
-
😋一个好的调度算法要考虑以下几个方面
-
公平-保证每个进程得到合理的CPU时间
-
搞笑-使CPU保持忙碌状态,总是有进程在CPU上运行
-
响应时间-使交互用户的响应时间尽可能短
-
周转时间-使单位时间内处理的进程数量尽可能多
-
-
不同版本和系统的调度算法不一样
-
UINX采用动态队列调度
-
BSD采用多级反馈队列调度
-
Windows采用抢先多任务调度
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)