第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
英文地址,請注明出處:http://en.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;垃圾回收的并行與并發;安全點與安全區域;再談引用:強引用;再談引用:軟引用;再談…