第1章:操作系统和计算机网络

1. 操作系统和计算机网络组成目标概述

1.1. 核心知识

操作系统和网络知识很庞大,大多内容枯燥无味,主功最常用的,符合2/8原则。

操作系统:

  • 内核、性能、磁盘IO、内存、CPU
  • 进程、线程、文件、中断

计算机网络

  • OSI七层模型、TCP、IP四层模型和组合
  • 网络通讯、TCP、UDP、HTTP1.0、HTTP2.0、网络安全攻防、DNS、CDN

1.2. 为什么?

系统性能优化和生产环境问题:

  • 从操作系统——网络——应用程序——存储等多方面 诊断和优化
  • 接口突然响应慢、服务器内存、CPU占用率高、Redis、MySQL查询慢、如何排查?
  • 接口性能优化,如何进行分析和下手操作,是否有流程方法论?

要学会什么:

  • 认识对应的内容知识体系——有【全局认识】
  • 掌握常用的分析诊断工具——合适的场景用合适的工具,制作自己的【脑图】
  • 逐步优化自己的诊断思路

1.3. 性能优化的方法论

性能优化主要从应用程序性能维度和操作系统资源维度来看。

应用程序性能维度:

  • 提高吞吐量Throughput
  • 降低延迟Latency

操作系统资源维度:

  • CPU使用率
  • 内存使用率
  • 磁盘IO使用率

我们需要选择指标评估系统和应用程序现状;设置性能优化的目标;进行链路基准测试分析全链路性能瓶颈;优化系统和应用程序;验证优化后的性能指标。

2. 计算机硬件组成系统结构

计算机的组成部分:运算器、控制器、存储器、输入设备、输出设备。

控制器【CU】:计算机指挥系统,用来控制计算机其他组件的运行。

运算器【ALU】:运算功能,用来完成各种二进制编码做算术运算和逻辑运算,包括加减乘除、与或非运算,控制器+运算器=CPU。

存储器:计算机的记忆功能,用来存储数据。分为内存和外存。内存比如内存条,临时存储,断电丢失数据;外存比如机械硬盘,持久存储,断电不丢失数据。

IO设备:可以将数据输入到计算机,或接收计算机输出数据的外部设备。分为输出(output)和输入(input)。

运算器控制器联系十分紧密,两大部件多数集成在同一芯片,统称为中央处理器。

3. 操作系统和进程

3.1. 什么是操作系统?

  • 运行在计算机上最重要的一种程序,管理计算机的所有硬件和软件。
  • 用户通过系统OS来操作使用计算机硬件,属于中间件。

3.2. 现代操作系统核心功能

进程管理:操作系统为进程分配任务,解决处理器的调度、分配和回收等。

处理器管理:CPU的管理和分配,比如 分配进程 CPU调度执行。

内存管理:持久化存储的管理和分配,比如 磁盘文件写入。

I/O管理:输入/输出设备的管理,比如键盘输入和网络收发

3.3. 进程

一个具有独立功能的程序对某个数据集在处理机上的执行过程,也是操作系统分配资源的基本单位。

操作系统中专门给进程抽象了一个专门的数据结构,叫做进程控制块(PCB)。

每一个进程均有一个PCB,在创建进程是创建PCB,伴随进程运行的全过程,直到进程撤销而撤销。

PCB数据结构包含进程的多数信息:

  • 程序ID(PID,进程句柄):一个进程都必须对应一个唯一PID,一般是整形数字
  • 特征信息:一般分系统进程、用户进程、或者内核进程等
  • 进程状态:运行、就绪、阻塞,表示进程现的运行情况
  • 优先级:表示获取CPU控制权的优先级大小
  • 提供进程管理、调度所需要的信息

进程状态:

  • 新建态:进程正在被创建,操作系统为进程分配资源,初始化PCB
  • 就绪态:具备运行条件,但没有空闲的CPU导致不能运行,万事具备,只少一个CPU
  • 运行态:占有CPU,并在CPU上运行指令
  • 阻塞态:等待某一事件而暂时不能运行
  • 退出态:从系统中退出,操作系统会回收进程拥有的资源、撤销PCB

进程、线程之间的关系:

  • 进程:
    1. 本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念
    2. 操作系统进行资源分配和调度的一个独立单位
  • 线程:
    1. 是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中实际运作单位
    2. 一个进程中可以并发多个线程,每条线程执行不同的任务,切换受系统控制
  • 重点:
    1. 进程拥有多个线程的时候,这些线程会共享相同的虚拟内存和全局变量资源,这些资源上下文切换时不需要更改
    2. 同进程内的线程切换,要比多进程间的切换资源消耗更少的资源,所以并发中用多线程代替多进程的原因
    3. 线程上下文切换的两种情况:
      1. 前后两个线程不同进程,此时资源不共享,线程上下文切换和进程的上下文切换一样
      2. 前后两个线程属于统一个进程。同进程虚拟内存共享,在切换的时候虚拟内存等资源就保持不动,只需要切换线程的私有数据,寄存器等不共享的数据

进程的创建:

  • 进程一般是OS内核创建,一个进程也可以去创建另一个进程,这个去创建的进程称为父进程,被创建的进程称为子进程。
  • 应用场景:Nignx的master-worker进程,worker是处理真正的请求的,而master负责监控worker进程是否在正常工作。Redis的AOF和RDB持久化,执行bgsave命令,Redis-Server会fork创建子进程,PDB持久化过程由子进程负责,会在后台异步进行快照操作,由于是进程,所有快照生成同时还可以向应客户端请求。

4. 操作系统的进程调用算法和解决方案

什么是进程调度?

  • Linux是一个多任务操作系统,支持的任务同时运行的数量远远大于CPU的数量
  • 进程调度就是指怎样安排某一个时刻CPU运行那个进程

进程调度类型:

  • 非抢占调度,一旦把处理分配给某个进程后,进程就会一直运行,直到改进程完成或阻塞时才会把CPU让给其他进程。主要用于批处理系统和某些对实时性要求不严的实时系统。
  • 非抢占式调度,暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一个其优先权更高的进程。主要用于比较严格的实时系统中。

先来先服务调度算法(FCFS ,非抢占式):

  • 按照作业或进程到达的先后顺序进行调度,即:优先考虑在系统中等待时间最长的作业。
  • 重点:排在长进程后的短进程的等待时间长,不利于短作业进程。

短作业优先调度算法(SJF ,非抢占式):

  • 预计执行时间短的进程优先分派处理机,短进程作业(要求服务时间最短)。
  • 在实际情况中占用很大比例,为了使他们优先执行,对长作业不友好。
  • 重点:缩短进程的等待时间,提高系统的吞吐量

高响应比优先调度算法(HRRN ,非抢占式):

  • 在每次调度时,先计算各个作业的优先权:优先权=响应比= (等待时间+要求服务时间)/要求服务时间。
  • 因为等待时间与服务时间之和就是系统对该作业的响应时间,所以 优先权=响应比=响应时间/要求服务时间。
  • 选择优先权高的进行服务需要 计算优先权信息,增加了系统的开销 是介于FCFS和SJF之间的一种折中算法。

时间片轮转调度算法(RR,抢占式):

  • FCFS的方法按照时间片轮流使用CPU的调度方式,让每个进 在一定时间间隔内都可以得到响应。
  • 由于高频率的进程切换,会增加了开销,且不区分任务的紧急程度。

优先级调度算法(非抢占式和抢占式):

  • 根据任务的紧急程度进行调度,高优先级的先处理,低优先级的慢处理。
  • 通常使用 动态优先级, 如果高优先级任务很多且持续产生,那低优先级的就可能很慢才被处理。
  • 优先级因素:进程的等待时间,已使用的处理机时间或其他资源的使用情况。

多级反馈队列调度算法(抢占式):

  • 多级:表示有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短。
    1. 高优先级队列中已没有调度的进程,则调度次优先级队列中的进程
    2. 对同队列中的各个进程,按时间片轮转法调度
    3. 比如:1,2,3三个队列,在1中没有进行进程等待时才会去调度2,只有1,2都为空才会去调度3;队列的时间片为N,假如1中的作业经过N个时间片后还没有完成,则进入到2队列,以此类推。
  • 反馈:表示如果有新的进程加入优先级高的队列,立刻停止当前正在进行的进程,转而去运行优先级高的队列。

总结

一个好的调度算法考虑以下几个方面

  • 公平-保证每个进程得到合理的CPU时间
  • 高效-使CPU保持忙碌的状态,总是有进程在CPU上运行
  • 响应时间-使交互用户的响应时间尽可能短
  • 周转时间- 使交互用户等待输出时间尽可能短
  • 吞吐量- 使单位时间内处理的进程数量尽可能多

不同系统和版本支持的调度算法不一样

  • Linux采用动态优先队列调度
  • BSD采用多级反馈队列调度
  • Windows采用抢先多任务调度

  • 解决方案应用(内容爬去解析平台,区分大小站点)

负载均衡算法: nginx/fegin/dubbo......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96503.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day27|前端框架学习

1、验证。前后端连接,authentication2、action,在pinia,管理状态,处理异步操作(API/Firebase)。methods。在vue组件,处理组件内部逻辑3、滑动窗口,能有大致思路,但是自己…

单片机启动文件——数据段重定位,BSS段清零

目录重定位概念的引入一、数据段重定位1.作用:2.目的:3.自己模拟代码二、BSS段清零1.作用:2.目的:3.自己模拟代码三,实现原理重定位概念的引入 单片机中内存段的详细介绍 在单片机中内存分为了很多不同的区域&#xf…

QT(3)

四、基本组件1. Designer设计师(掌握)Qt Designer 是 Qt 提供的可视化界面设计工具,支持通过拖拽组件快速构建 GUI 界面,生成的界面文件以 .ui格式保存(基于 XML 的标签语言)。​​核心功能​​&#xff1a…

常用注解:@PostMapping、@RequestBody、@Autowired、@Service、@Mapper

1. PostMapping作用:将方法绑定到 HTTP POST 请求的特定路径上用法:PostMapping("/login") // 绑定到 POST /login PostMapping("/employees") // 绑定到 POST /employees PostMapping("/users/{id}") …

SoC日志管理

目录 一、汽车控制器中日志的核心类型 二、日志管理的核心环节与策略 1. 日志采集:确保“全面且不冗余” 2. 日志存储:平衡“可靠性”与“存储成本” 3. 日志安全:防止“篡改与泄露” 4. 日志生命周期:符合“法规与成本” 5. 日志工具与实现 三、汽车场景的特殊约束与应对 …

横评五款开源多智能体框架,AI高手都在用哪个?下一款Manus、Cursor、Devin,谁能撑起来?

Agent 成为共识的速度非常快。但今年 Agent 的真正转折点在于:多智能体。 从科研自动化到任务编排,从自动开淘宝店到 Vibe 一切,从 AI 浏览器到今天的 ChatGPT Agent,一切都是多智能体的味道。 但要真正搭建一个多智能体&#x…

GitHub每日最火火火项目(9.10)

1. Physical-Intelligence / openpi 项目名称:openpi项目介绍:基于 Python 开发,聚焦于物理智能领域,为相关研究与应用提供支持。Python 在科学计算、人工智能等领域有着广泛且成熟的生态,借助其丰富的库(如…

2025年渗透测试面试题总结-61(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2. 提交过什么漏洞 3. 常用漏洞扫描工具 4. OWASP TOP 10 2021核心变化 5. MySQL写WebShell权限要求 6.…

高可用消息队列线程池设计与实现:从源码解析到最佳实践

前言在现代分布式系统中,消息队列处理是核心组件之一。今天我们将深入解析一个高性能、高可用的消息队列线程池实现——FindMessageQueue,并探讨如何将其优化应用于实际项目中。一、核心架构设计1.1 整体架构图┌───────────────────…

Android App瘦身方法介绍

第一章 安装包构成深度剖析1.1 APK文件结构解剖APK文件本质是一个ZIP压缩包,通过unzip -l app.apk命令可查看其内部结构:Archive: app.apkLength Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- -…

深入浅出迁移学习:从理论到实践

1. 引言:为什么需要迁移学习?在深度学习爆发的这十年里,我们见证了模型性能的飞速提升 ——ResNet 在图像分类上突破人类视觉极限,BERT 在 NLP 任务上刷新基准,GPT 系列更是开启了大语言模型时代。但这些亮眼成果的背后…

嵌入式人别再瞎折腾了!这8个开源项目,解决按键/队列/物联网所有痛点,小白也能抄作业

嵌入式人别再瞎折腾了!这8个开源项目,解决按键/队列/物联网所有痛点,小白也能抄作业 你是不是也有过这样的崩溃时刻:想做个按键控制,结果长按、连击、组合键的逻辑写了200行if-else,最后还时不时串键&#…

C++篇(7)string类的模拟实现

一、string的成员变量string和数据结构中的顺序表类似,本质上可以理解成字符顺序表,其成员变量仍然是_str,_size和_capacity。但是,C标准库里面也有一个string,和我们要自己实现的string类冲突了,该如何解决…

【直接套模板】如何用 Web of Science 精准检索文献?

在文献检索的时候遇到一些问题,单独使用关键词检索出来的文章数量太多,如果是多加一些限定词,又什么都检索不到:比如我明明知道某篇论文已经发表,但在 Web of Science (WoS) 里却检索不到。这其实和检索式的写法密切相…

HTTP 协议:从原理到应用的深度剖析

一、什么是HTTP协议?HTTP协议,全称 Hyper Text Transfer Protocol(超⽂本传输协议)的缩写,是⽤于服务器与客户端浏览器之间传输超⽂本数据(⽂字、图⽚、视频、⾳频)的应⽤层协议。它规定了客户端…

【算法--链表】138.随机链表的复制--通俗讲解

算法通俗讲解推荐阅读 【算法–链表】83.删除排序链表中的重复元素–通俗讲解 【算法–链表】删除排序链表中的重复元素 II–通俗讲解 【算法–链表】86.分割链表–通俗讲解 【算法】92.翻转链表Ⅱ–通俗讲解 【算法–链表】109.有序链表转换二叉搜索树–通俗讲解 【算法–链表…

为什么现在企业注重数据可视化?一文讲清可视化数据图表怎么做

目录 一、企业注重数据可视化的原因 1.提升数据理解效率 2.发现数据中的规律和趋势 3.促进企业内部沟通与协作 4.增强决策的科学性 5.提升企业竞争力 二、可视化数据图表的基本概念 1.常见的可视化图表类型 2.可视化图表的构成要素 3.可视化图表的设计原则 三、制作…

Cursor 辅助开发:快速搭建 Flask + Vue 全栈 Demo 的实战记录

Cursor 辅助开发:快速搭建 Flask Vue 全栈 Demo 的实战记录 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个…

实战:用 Python 搭建 MCP 服务 —— 模型上下文协议(Model Context Protocol)应用指南

📌 实战:用 Python 搭建 MCP 服务 —— 模型上下文协议(Model Context Protocol)应用指南 标签:#MCP #AI工程化 #Python #LLM上下文管理 #Agent架构🎯 引言:为什么需要 MCP? 在构建大…

宋红康 JVM 笔记 Day16|垃圾回收相关概念

一、今日视频区间 P154-P168 二、一句话总结 System.gc()的理解;内存溢出与内存泄漏;Stop The World;垃圾回收的并行与并发;安全点与安全区域;再谈引用:强引用;再谈引用:软引用;再谈…