Linux 內核第一版 (v0.01) 開源代碼解讀

?

探索Linux v0.01的內部結構,Linux內核經常被認為是一個龐大的開源軟件。在撰寫本文時,最新版本是v6.5-rc5,包含36M行代碼。不用說,Linux是幾十年來許多貢獻者辛勤工作的成果。

Linux 內核首個開源版本 (v0.01) 的體積非常小,僅包含 10,239 行代碼。如果除去注釋和空行,只剩下 8,670 行。正因它足夠小,所以方便理解,是了解類 UNIX 操作系統內核內部結構的良好起點

然而,Linux的第一個版本v0.01非常小。它只有10239行代碼。除去注釋和空白行,總共只有8670行。它足夠小,可以理解,并且是了解類unix操作系統內核內部的一個很好的起點

Linux 內核最初的名字為?"FREAX"

v0.01 總共包含 66 個 system call,如下

access acct alarm break brk chdir chmod
chown chroot close creat dup dup2 execve
exit fcntl fork fstat ftime getegid geteuid
getgid getpgrp setsid getpid getppid
getuid gtty ioctl kill link lock lseek
mkdir mknod mount mpx nice open pause
phys pipe prof ptrace read rename rmdir
setgid setpgid setuid setup signal stat
stime stty sync time times ulimit umask
umount uname unlink ustat utime waitpid write

確實如此。Linux v0.01是為i386深度硬編碼的

extern inline char * strcpy(char * dest,const char *src)
{
__asm__("cld\n""1:\tlodsb\n\t""stosb\n\t""testb %%al,%%al\n\t""jne 1b"::"S" (src),"D" (dest):"si","di","ax");
return dest;
}

參考:

Exploring the internals of Linux v0.01 - seiya.me

Linux v0.01 源代碼下載:https://cdn.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

四、Dubbo擴展點加載機制

四、Dubbo擴展點加載機制 4.1 加載機制概述 Dubbo良好的擴展性與框架中針對不同場景使用合適設計模式、加載機制密不可分 Dubbo幾乎所有功能組件都是基于擴展機制(SPI)實現的 Dubbo SPI 沒有直接使用 Java SPI,在它思想上進行改進&#xff…

競賽項目 深度學習的視頻多目標跟蹤實現

文章目錄 1 前言2 先上成果3 多目標跟蹤的兩種方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟蹤過程4.1 存在的問題4.2 基于軌跡預測的跟蹤方式 5 訓練代碼6 最后 1 前言 🔥 優質競賽項目系列,今天要分享的是 基于深度學習的視頻多目標跟蹤實現 …

全網最牛,Appium自動化測試框架-關鍵字驅動+數據驅動實戰(二)

目錄:導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結(尾部小驚喜) 前言 util 包 util 包…

數據可視化工具LightningChart .NET正式發布v10.5.1——擁有全新的3D新功能

LightningChart.NET完全由GPU加速,并且性能經過優化,可用于實時顯示海量數據-超過10億個數據點。 LightningChart包括廣泛的2D,高級3D,Polar,Smith,3D餅/甜甜圈,地理地圖和GIS圖表以及適用于科學…

網絡安全專業術語英文縮寫對照表

因在閱讀文獻過程中經常遇到各種專業縮寫,所以把各種縮寫總結了一下。 因能力有限,錯誤在所難免,歡迎進行糾錯與補充:https://github.com/piaolin/CSAbbr 滲透相關 縮寫全稱解釋備注XSSCross Site Script Attack跨站腳本攻擊為…

ResNet創新點總結

ResNet(Residual Networks)是深度學習中的一個重要架構,其創新點主要體現在解決了深層神經網絡訓練中的梯度消失和梯度爆炸問題,從而使得可以構建更深的神經網絡。以下是 ResNet 的創新點總結: ??1. 殘差連接&#x…

nlohmann json:通過items遍歷object/array

//官方的例子 #include <iostream> #include <nlohmann/json.hpp>using json = nlohmann::json;int main() {// create JSON valuesjson j_object = {{"one", 1}, {"two", 2}};json j_array = {1, 2, 4, 8, 16};// example for an objectfor (…

java畢業設計-智慧食堂管理系統-內容快覽

首頁 智慧食堂管理系統是一種可以提高食堂運營效率的管理系統。它將前端代碼使用Vue實現&#xff0c;后端使用Spring Boot實現。這個系統的目的是簡化食堂管理&#xff0c;提高食堂服務質量。在現代快節奏的生活中&#xff0c;人們對餐飲服務提出了更高的要求&#xff0c;食堂管…

Flink-間隔聯結

間隔聯結只支持事件時間間隔聯結如果遇到遲到數據&#xff0c;則會關聯不上&#xff0c;比如來了一個5秒的數據&#xff0c;它可以關聯前2秒的數據&#xff0c;后3秒的數據&#xff0c;就是可以關聯3秒到8秒的數據&#xff0c;然后又來了一個6秒的數據&#xff0c;可以關聯4秒到…

Docker安裝elasticsearch分布式搜索

文章目錄 ??安裝elasticsearch??1.部署單點es&#x1f338;1.1.創建網絡&#x1f338;1.2.下載鏡像&#x1f338;1.3.運行 ??2.部署kibana&#x1f338;2.1.部署&#x1f338;2.2.DevTools ??3.安裝IK分詞器&#x1f338;3.1.在線安裝ik插件&#xff08;較慢&#xff0…

Rx.NET in Action 中文介紹 前言及序言

Rx 處理器目錄 (Catalog of Rx operators) 目標可選方式Rx 處理器(Operator)創建 Observable Creating Observables直接創建 By explicit logicCreate Defer根據范圍創建 By specificationRangeRepeatGenerateTimerInterval Return使用預設 Predefined primitivesThrow …

答疑:Arduino IDE配置其他開發板下載速度慢

基于案例&#xff1a;Linux環境Arduino IDE中配置ATOM S3 通常&#xff0c;網絡問題較多&#xff0c;可以使用一些技巧。 https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json 沒有配置&#xff0c;不支持M5Stack&#xff08;ESP32&…

HCIA靜態路由與動態路由

目錄 一、靜態路由 定義&#xff1a; 適用環境 二、動態路由 定義&#xff1a; 特點&#xff1a; 動態路由協議: 三、缺點&#xff1a; 1&#xff09;靜態路由缺點: 2&#xff09;動態路由的缺點: 四、靜態路由與動態路由的區別 靜態路由: 動態路由: 一、靜態路…

字節原來這么容易進,是面試官放水,還是公司實在是太缺人?

本人211非科班&#xff0c;之前在字節和騰訊實習過&#xff0c;這次其實沒抱著什么特別大的希望投遞&#xff0c;沒想到字節可以再給我一次機會&#xff0c;還是挺開心的。 本來以為有個機會就不錯啦&#xff01;沒想到能成功上岸&#xff0c;在這里要特別感謝幫我內推的同學&…

【Python】進階之 MySQL入門教程

文章目錄 數據庫概述Mysql概述Mysql安裝與使用Navicat安裝和使用Mysql終端指令操作Mysql和python交互訂單管理案例實現 數據庫概述 數據庫的由來 發展歷程說明人工管理階段用紙帶等進行數據的存儲文件系統階段數據存儲在文件中數據庫階段解決了文件系統問題高級數據庫階段分布式…

IDEA 設置字體大小無效

設置字體大小&#xff0c;一般都是從file>settings>editor>font>Size里設置&#xff0c;一般都有效。 但是&#xff0c;如果是更換了主體&#xff0c;則需要從主體顏色菜單那里這是&#xff0c;你看這個頁面&#xff0c;上面黃色三角也提示你了&#xff0c;要去顏色…

學習筆記整理-DOM-03-定時器

一、定時器 1. setInterval()函數 setInterval()函數可以重復調用一個函數&#xff0c;在每次調用之間具有固定的時間間隔。 setInterval(function () { // 這個函數將自動被以固定間隔時間調用 }, 2000);第一個參數是函數第二個參數是間隔時間&#xff0c;以毫秒為單位&…

SpringBoot中間件使用之EventBus、Metric、CommandLineRunner

1、EventBus 使用EventBus 事件總線的方式可以實現消息的發布/訂閱功能&#xff0c;EventBus是一個輕量級的消息服務組件&#xff0c;適用于Android和Java。 // 1.注冊事件通過 EventBus.getDefault().register(); // 2.發布事件 EventBus.getDefault().post(“事件內容”); …

深入理解spring面經

1 了解SpringMVC的處理流程嗎&#xff1f; 用戶發送請求至前端控制器DispatcherServlet。DispatcherServlet通過處理器映射器HandlerMapping找到對應的處理器。DispatcherServlet將請求提交給對應的處理器Controller。Controller處理完請求后返回ModelAndView。DispatcherServ…

面試攻略,Java 基礎面試 100 問(十三)

什么時候用 assert&#xff1f; assertion(斷言)在軟件開發中是一種常用的調試方式&#xff0c;很多開發語言中都支持這種機制。一般來說&#xff0c;assertion 用于保證程序最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啟。為了提高性能&#xff0c;在軟件發布…