<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > linux操作系統內核分析

        linux操作系統內核分析

        時間: 春健736 分享

        linux操作系統內核分析

          “內核”指的是一個提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件。一個內核不是一套完整的操作系統。一套基于Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。學習啦小編為大家帶來了linux操作系統內核分析詳解,希望大家喜歡。

          linux操作系統內核分析

          一、操作系統概述

          在Richard Stevens的unix環境高級編程中這樣定義“它控制計算機硬件資源,提供程序運行環境。一般而言我們稱這種軟件為內核(kernel),它相對較小,位于環境的中心”。總結下就是控制硬件,提供環境。程序員主要關心的是所謂的環境,主要說下提供什么環境。

          操作系統都會想它們運行的程序提供各種服務,執行新的程序,打開文件,讀文件,分配存儲空間,獲得當前時間等(一般通過系統調用)。

          廣義上,操作系統還有內核外的系統調用,基于系統調用的shell(也是一種特殊的應用程序,為其他應用程序提供接口)和庫函數(對系統調用的封裝),和基于shell,系統調用,庫函數(這三個東西基本組成了我們常用的環境)的應用軟件。有圖如下:

          在使用linux的man幫助的時候可以指定是查詢系統命令還是系統調用使用man時可以指定不同的section來瀏覽,各個section 如下:

          1 - commands

          2 - system calls

          3 - library calls

          其實還有其他的section 不常見就沒有列出來,可以man 1 chmod 也可以 man 2 chmod 得到的幫助內容是不同的。

          為了增加unix可移植性,IEEE定義了POSIX的標準,后來這個標準不只限于unix操作系統。POSIX標準只是定義了一套接口,并沒有規定接口的實現(類似于概要設計),(各個操作系統對接口的實現可能有所不同),也沒有詳細的區分系統調用和庫函數,所有的例程都叫做函數。需要說明的是,并不是每個操作系統都嚴格遵守POSIX標準,POSIX標準現在是一個很大的協議族(類似于TCP/IP),標準很多。

          二、Linux 是什么內核是什么

          Linus Torvalds1991年的一片文章上寫道“

          LINUX is a free unix-like kernel for 386-AT computers, coming with full source code. It is meant for hackers/computer science students to use, learn and enjoy. It is written mostly inC, but parts of it are in gnu-format assembler, and the boot-sequence is in intel 086 assembly language. TheC-code is relatively ANSI, with a few GNU enhancements (mostly__asm__ andinline).

          ”-其實,linux只是一個主要用c寫的內核。

          從不同的角度來看,內核擔任的角色不同。從純技術角度來看,內核只是軟件和硬件的一個中間層,它把從軟件發來的請求發送給硬件,完成尋址等操作,還充當了底層驅動。

          從應用程序角度來看,內核是對硬件的一個高層次的抽象,應用程序與硬件沒有聯系,只與內核有聯系,內核是應用程序知道的最底層。

          從多個并發的進程的角度來看,內核是一個資源管理器,它完成對進程的切換,調度,共享計算機資源(CPU,內存,磁盤,網絡等)。

          還可以把內核看成一個庫,通過系統調用向內核發送各種請求。

          三、內核有什么

          這個問題是淘寶面試的時候問我的問題,當時不知道從何下手,簡單的總結下。有什么,最簡單的就是直接看看內核源代碼文件夾下有什么,一般內核文件在linux的目錄/usr/src/kernels的文件夾下,我安裝的操作系統是redhet的,當時沒有安裝上內核源文件,而且即使是安裝上了也是2.6版本的,也不便于學習,所以下載了一個0.11版本的在http://www.oldlinux.org/index_cn.html上面,1.0版本及以上的可在http://www.kernel.org/pub/linux/kernel/上下載到。

          簡單看下1.0版本有什么文件主要的:

          drivers:驅動代碼

          fs:文件系統的代碼

          include :包含文件,這個文件利用其他模塊重建內核

          init:初始化代碼,內核工作的起點 //這里面有內核初始化程序main.c,是內核完成所有初始化工作并進入正常運行的關鍵

          ipc:進程間通信的相關代碼

          kernel:主內核的代碼 //最重要的是進程調度函數schedule()、sleep_on()函數和有關的系統調用程序

          mm:內存管理的代碼

          net:網絡管理的代碼

          0.11版本的.c文件代碼有8578行,而1.0版本里面的.c文件代碼大概有14w行,其中drives文件夾下就有7w行,2.6版本的有幾百萬行,估計那是任何大嬸也讀不完的~

          上面簡單的說明了源代碼的目錄結構,如果從系統的結構來看,linux操作系統可以分成五個比較核心的模塊,進程調度模塊,內存管理模塊,文件系統模塊,進程間通信模塊和網絡接口模塊。其中的內存管理模塊用于確保所有的進程能夠安全地共享機器主要內存區,同時內存管理模塊還支持虛擬內存的管理方式,使得Linux支持進程使用比實際內存空間多的內存容量。文件系統模塊用于支持對外部設備的驅動和存儲,虛擬文件系統模塊通過對向所有的外部存儲設備提供一個通用的文件接口,隱藏了各種硬件設備的不同細節,提高兼容性。下面是操作系統各個模塊間的簡單關系,虛線和虛框表示0.11上還為實現。

          從圖中可以看出,所有的模塊都與進程調度模塊存在依賴關系,因為他們都需要依靠進程調度程序來掛起(暫停)或重新運行它們的進程。還可以根據源代碼的結構將內核結構劃分成如下的形式:


        656181 主站蜘蛛池模板: 蜜桃AV抽搐高潮一区二区| 日韩美女av二区三区四区| 在线播放亚洲成人av| 国产jizzjizz视频| 天堂网亚洲综合在线| 蜜桃网址| 国产一区二区内射最近更新 | 日韩av无码精品人妻系列| 四虎影视一区二区精品| 71pao成人国产永久免费视频 | 亚洲国产高清第一第二区| 国产精品流白浆无遮挡| 国产精品综合一区二区三区 | 国产线播放免费人成视频播放| 人妻丰满熟妞av无码区| 麻豆成人精品国产免费| 精品国产三级a∨在线欧美| 激情亚洲内射一区二区三区| 国产精品福利自产拍在线观看| 色av专区无码影音先锋| 亚洲国产日韩在线视频| 少妇被多人c夜夜爽爽av| 亚洲AV无码专区亚洲AV桃| 芒果乱码一线二线三线新区| 中文字幕日韩人妻一区| 国产亚洲精品线观看动态图| 日韩免费码中文在线观看| 少妇潮喷无码白浆水视频| 亚洲av尤物一区二区| 国产一区二区日韩在线| 99精品日本二区留学生| 亚洲中文精品久久久久久不卡| 国产首页一区二区不卡| 国产精品一区二区久久不卡| 四虎影视成人永久免费观看视频| 少妇粗大进出白浆嘿嘿视频| 国产传媒剧情久久久av| 天堂亚洲免费视频| 北条麻妃无码| 国产熟睡乱子伦视频在线播放 | 亚洲 国产 制服 丝袜 一区|