實現流程介紹 Shell是命令行解釋器的一種,它的核心職責是作為用户與操作系統內核交互的中介,實現“用户指令接收→解析指令語法→調用內核執行→結果反饋”。 透過這些"高深"的終端命令交互,我們一定要"看清"shell實現的本質——所謂的shell就是一個進程,它能夠識別用户輸入,做分析,通過"進程控制管理與系統調用實現指定功能。 這篇博客,將從
在億級數據處理場景中,「快速判重」始終是繞不開的核心痛點——傳統數據結構要麼空間開銷爆炸,要麼查詢效率低下,難以平衡性能與資源成本。而位圖(BitMap)與布隆過濾器(Bloom Filter),正是解決這一難題的高效方案:位圖以比特級存儲實現精準判重,布隆過濾器則基於位圖優化,用概率模型突破數據範圍限制。 本文將從底層原理出發,拆解二者的關聯邏輯、核心差異,結合實戰場景講
進程控制是操作系統執行多任務的基礎,核心在於管理進程的完整生命週期。本文將深入探討如何通過 fork 創建、wait 等待及 exec 替換,實現對進程的精準掌控。 一.進程創建 進程創建是進程控制的起點核心,是掌握進程管控的必備基礎: fork 在之前探索進程的奧秘的博客中也提到過,fork()是Linux中創建子進程的系統調用,調用成功後父進程將與子進
不知有沒有注意過一個現象,運行中的進程會出現相同地址卻儲存不同值的情況?這是什麼原因?本文將聚焦Linux內存底層邏輯,拆解虛擬地址空間、物理內存與頁表的關聯,揭秘進程內存隔離與地址映射的核心原理。 一.同址不同存 先看一段代碼: #includestdio.h int main() { int num = 10; int n = fo
寫C/C++程序時,是否注意過main函數的參數?int main(int argc, char *argv[]),以前我們可能覺得這兩個參數可有可無?但我們有沒有想:過程序能不能能接收到外部配置信息?當命令行輸入的指令、程序運行依賴的庫路徑(包括鏈接找動態庫),又是如何被進程識別的? 這些,都涉及一個知識:環境變量。 一.介紹 1.概念 Lin
數據結構的選型中,“高效查找與操作”始終是核心需求。當面對海量數據的插入、查詢場景時,基於紅黑樹實現的map/set雖能保證有序性,卻受限於O(log n)的時間複雜度,難以突破性能瓶頸。而哈希表及其衍生的unordered_map/unordered_set,憑藉“平均O(1)”的極致效率,成為解決這類問題的最優解之一。 為什麼哈希表能實現遠超紅黑樹的操作速度?unord
C語言本身沒有處理異常的機制,通常需要通過錯誤碼(error)、assert、全局變量、函數返回值等方法處理錯誤;這種處理方法雖然邏輯直觀,但是多層調用時需逐層傳遞且無法自動清理資源,功能有限。 所以,Bjarne Stroustrup在設計C++時,為了更好地處理程序中的錯誤,將異常處理機制引入了C++,其基本思想是讓函數在發現自己無法處理的錯誤時拋出一個異常,然後由其調
在計算機科學中,進程是一個至關重要的概念。它是操作系統中最基本的執行單元,也是實現併發和多任務處理的關鍵。《操作系統概念》一書中提到:"進程是正在執行的程序,是程序執行過程中的一次指令、數據的集合,也可以叫做程序的一次執行過程。"然而,要真正理解進程,需要我們跨越硬件和軟件開始,深入探索期底層原理和工作機制。 一.硬件:馮諾依曼體系結構 1.核心框架 馮諾依曼體