日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)

發布時間:2024/9/30 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本次內容作為Linux內核的總結內容,主要涉及對Linux系統的總體的一些理解,同時將之前的一些總結貼出來作為大家的一個索引,希望筆者一樣的菜鳥有一些幫助和入門的作用。從一個初學者的角度對Linux有一個較為整體的印象,從而加速對Linux操作系統的理解。

一、Linux內核分析-計算機是如何工作的

涉及內容(函數堆棧、反匯編C程序、AT&T匯編基礎講解、操作系統概述)

本節內容簡述了在Linux操作系統中是如何調度各個進程的。實際上我們知道現代的操作系統都是多任務的操作系統。那么這些任務或者說進程之間是采用什么要的機制決定哪個先被執行,哪個后被執行呢?事實上這些就是進程調度所關注的問題。我們知道Linux內核是一個基于分時的調度機制,所以我們也可以簡單的理解為同一時刻只有一個進程在CPU中真正的執行著。

二、Linux內核分析-操作系統是如何工作的

涉及內容(mykernel內核中進程的切換源代碼分析、進程的數據結構組織、進程的切換過程)

本節介紹了一個基于時間片輪轉的建議操作系統內核代碼。分析了操作系統中進程之間是如何進行切換的。通過對mykernel的源代碼分析,體會進程在切換過程中操作系統對進程運行環境的管理。事實上有時候我們可以把它叫做運行框架,也可以說是上下文,現場環境等等。實際上這些東西指的都是程序運行時候的堆棧,運行內存空間的地址,寄存器值的集合。因為程序運行需要改變他們,而他們中的一些也許會被其他程序運行時改變,所以在切換進程的時候要對所有進程恢復當前狀態的系統資源進行保存,這就是切換的核心。

三、Linux內核分析-內核啟動過程分析

涉及內容(Linux系統的啟動分析(start_kernel)、BIOS的結構、操作系統啟動的各歷史時期簡介)

四、Linux內核分析-系統調用用戶態到內核態流程

涉及內容(系統調用的基本概念、系統調用的實現、系統調用的過程、內核態、用戶態)

本文介紹了如何通過兩種方式實現一個系統調用的。一種是通過系統API函數的方式實現,另外一種通過軟中斷int0x80來實現,通過軟中斷實現的時候,我們需要在之前先傳入中斷入口參數,然后中斷時候系統就可以知道要執行哪個服務程序。入口參數就是一些必要的標識和系統執行這個功能必要的輸入數據。

五、Linux內核分析-系統調用的詳細過程

涉及內容(系統調用的過程詳解、用戶態內核態的切換)

我們知道操作系統為在用戶態運行的進程與硬件設備進行交互提供了一組幾口。在應用程序與硬件之間設置一個額外的層實際上是有很多優點的——所謂的系統調用。首先這使得編程更加容易,把用戶從學習硬件設備的低級編程特性中解放出來。其次,著極大的提高了系統的安全性,因為內核在試圖滿足某個請求之前在接口級別上就可以檢查這種請求是否是正確的合法的。最后更為重要的是,這些接口是的程序更具有可以執行,因為只要內核所提供的一組接口相同,那么在任意一個內核之上就可以正確的編譯和執行我們編寫的程序了。Linux系統就是通過內核發出的系統調用(system call)實現了用戶態進程和硬件設備之間的大部分接口。最后我們還是以一張圖來從很抽象的層次說明這件事情。

六、Linux內核分析-操作系統原理的系統進程簡析

涉及內容(進程的創建、fork)

七、Linux內核分析-啟動順序、運行級別及開機啟動

涉及內容(可執行程序的加載、execve)

本節的內容主要講述了程序在系統中是如何被裝載和執行的,另外我們將介紹ELF格式的文件的一些內容,這個文件實際上是用來描述程序一些執行時候被用到的屬性,例如他的堆棧信息之類的。然后我們將利用實驗的方式跟蹤調試一個程序的具體體執行過程,從而更加深入的理解程序在內核中是如何被裝載和編譯連接執行的。同時介紹一下新可執行程序的執行起點及對應的堆棧狀態,以及筆者對其的一些理解。

八、Linux內核分析-操作系統中的進程調度和六種策略

涉及內容(Linux進程切換代碼分析、switch_to、進程相關的數據結構簡析)

九、總結

經過兩個月的學習,對操作系統的啟動、系統功能調用、函數堆棧、進程的創建、切換和可執行程序加載有了較為詳細的了解。比較遺憾的是沒有進行關于存儲管理內容和調度算法的涉及,筆者會在之后的文章中更加詳細的闡述Linux系統的各方面內容。(筆者在計算機系統上的目標就是自己寫一個內核并把它成功運行在一個嵌入式處理器上,我覺得筆者還有好多需要學習,越學習發現不會的越多╮(╯▽╰)╭)

下面我們來總結一些Linux操作系統的一些內容,首先要明確操作系統主要只做一件事情就是資源管理,包括存儲資源和處理資源。

存儲資源這一系列我們沒有主要涉及,實際上就是對內存和外部存儲器比如硬盤的管理。這部分的內容大體上就是一個調度的問題,實際上處理資源也是個調度的問題,所以我們也可以說操作系統就是一個解決資源調度的軟件。那么存儲資源的調度實際上是由于存儲結構分層所導致的。舉個簡單的例子CPU的緩存(cache)很快但是不大,內存呢比他大但是比他慢一些,一個作業或者程序不可能完全調入cache中,但是運行時候CPU是直接從cache中取數據和指令的,所以有的時候程序的一些執行指令和數據在內存中卻不在cache中,這個時候就需要從內存中調出此時用到的數據放入cache,這個調度是基于局部性原理的策略進行的。那么同樣的事情也發生在內存和硬盤中間。這就是存儲的管理。同時此部分還涉及外存到底如何組織大量的數據(文件結構、磁盤格式等)從而方便人們查找。

處理資源主要我們指的是程序的執行,我們知道程序的一個可執行實例是進程,里面包含了代碼可以運行的最基本數據集合。那么從時間的維度上看,操作系統如何加載一個程序就是我們首先需要關心的,Linux中是把這個程序的執行地址的開頭作為參數傳遞給操作系統然后由系統將它啟動,系列文章中有涉及。從宏觀的角度上看,任務或者說程序被實例化成很多的進程,作為允許多進程同時運行的系統,Linux是如何在進程之間進行切換的呢?實際上我們在文章中有介紹Linux進程創建和切換源代碼的分析。這就好比你在做作業,比如你在做數學,用到了計算器,草算紙,做到一半你忽然需要看數學書了,這個時候你要記住你做到哪一個題、計算這個題的一些中間結果在草紙上要標記一下、看完書回來你才可以繼續做這道題。進程切換也是這樣的一個過程,包括中斷處理也是這樣的過程,你需要保存你正在做的這件事情的上下文(哪道題、計算的中間結果等等)然后再去做別的,這樣保證你回來繼續做的時候能夠連貫不出錯。這里面看出操作系統實際上在處理任務的時候和人有一定的相似性。從微觀的角度來看,函數的調用也是上述這個過程,你需要知道怎么回到調用你的函數繼續執行。系統調用也同樣是這個思路。那么所有的這些保存的信息都是用堆棧完成的。


首先恭喜您,能夠認真的閱讀到這里,如果對部分理解不太明白,建議先將文章收藏起來,然后對不清楚的知識點進行查閱,然后在進行閱讀,相應你會有更深的認知。如果您喜歡這篇文章,就點個贊或者【關注我】吧!!

總結

以上是生活随笔為你收集整理的linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。