主頁 > 作業系統 > Linux系統結構詳解(轉)

Linux系統結構詳解(轉)

2020-09-28 23:51:07 作業系統

Linux系統一般有4個主要部分:

內核、shell、檔案系統和應用程式,內核、shell和檔案系統一起形成了基本的作業系統結構,它們使得用戶可以運行程式、管理檔案并使用系統,部分層次結構如圖1-1所示,

 

 

 

 

 1. linux內核


 

        Linux內核是世界上最大的開源專案之一,內核是與計算機硬體介面的易替換軟體的最低級別,它負責將所有以“用戶模式”運行的應用程式連接到物理硬體,并允許稱為服務器的行程使用行程間通信(IPC)彼此獲取資訊,

       內核是作業系統的核心,具有很多最基本功能,它負責管理系統的行程、記憶體、設備驅動程式、檔案和網路系統,決定著系統的性能和穩定性,

       Linux 內核由如下幾部分組成:記憶體管理、行程管理、設備驅動程式、檔案系統和網路管理等,如圖:

    系統呼叫介面:SCI 層提供了某些機制執行從用戶空間到內核的函式呼叫,這個介面依賴于體系結構,甚至在相同的處理器家族內也是如此,SCI 實際上是一個非常有用的函式呼叫多路復用和多路分解服務,在 ./linux/kernel 中您可以找到 SCI 的實作,并在 ./linux/arch 中找到依賴于體系結構的部分,

   1. 記憶體管理 
        對任何一臺計算機而言,其記憶體以及其它資源都是有限的,為了讓有限的物理記憶體滿足應用程式對記憶體的大需求量,Linux  采用了稱為“虛擬記憶體”的記憶體管理方式,Linux  將記憶體劃分為容易處理的“記憶體頁”(對于大部分體系結構來說都是 4KB),Linux 包括了管理可用記憶體的方式,以及物理和虛擬映射所使用的硬體機制,

     不過記憶體管理要管理的可不止 4KB 緩沖區,Linux 提供了對 4KB 緩沖區的抽象,例如 slab 分配器,這種記憶體管理模式使用 4KB 緩沖區為基數,然后從中分配結構,并跟蹤記憶體頁使用情況,比如哪些記憶體頁是滿的,哪些頁面沒有完全使用,哪些頁面為空,這樣就允許該模式根據系統需要來動態調整記憶體使用,
   為了支持多個用戶使用記憶體,有時會出現可用記憶體被消耗光的情況,由于這個原因,頁面可以移出記憶體并放入磁盤中,這個程序稱為交換,因為頁面會被從記憶體交換到硬碟上,記憶體管理的源代碼可以在 ./linux/mm 中找到,

 

    2 .行程管理
       行程實際是某特定應用程式的一個運行物體,在 Linux  系統中,能夠同時運行多個行程,Linux  通過在短的時間間隔內輪流運行這些行程而實作“多任務”,這一短的時間間隔稱為“時間片”,讓行程輪流運行的方法稱為“行程調度” ,完成調度的程式稱為調度程式,

 

       行程調度控制行程對CPU的訪問,當需要選擇下一個行程運行時,由調度程式選擇最值得運行的行程,可運行行程實際上是僅等待CPU資源的行程,如果某個行程在等待其它資源,則該行程是不可運行行程,Linux使用了比較簡單的基于優先級的行程調度演算法選擇新的行程, 

        通過多任務機制,每個行程可認為只有自己獨占計算機,從而簡化程式的撰寫,每個行程有自己單獨的地址空間,并且只能由這一行程訪問,這樣,作業系統避免了行程之間的互相干擾以及“壞”程式對系統可能造成的危害, 為了完成某特定任務,有時需要綜合兩個程式的功能,例如一個程式輸出文本,而另一個程式對文本進行排序,為此,作業系統還提供行程間的通訊機制來幫助完成這樣的任務,Linux 中常見的行程間通訊機制有信號、管道、共享記憶體、信號量和套接字等, 

       內核通過 SCI 提供了一個應用程式編程介面(API)來創建一個新行程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函式),停止行程(kill、exit),并在它們之間進行通信和同步(signal 或者 POSⅨ 機制),

 

    3. 檔案系統 

       和 DOS 等作業系統不同,Linux 作業系統中單獨的檔案系統并不是由驅動器號或驅動器名稱(如 A:  或 C:  等)來標識的,相反,和 UNIX  作業系統一樣,Linux 作業系統將獨立的檔案系統組合成了一個層次化的樹形結構,并且由一個單獨的物體代表這一檔案系統,Linux  將新的檔案系統通過一個稱為“掛裝”或“掛上”的操作將其掛裝到某個目錄上,從而讓不同的檔案系統結合成為一個整體,Linux  作業系統的一個重要特點是它支持許多不同型別的檔案系統,Linux 中最普遍使用的檔案系統是 Ext2,它也是 Linux  土生土長的檔案系統,但 Linux  也能夠支持 FAT、VFAT、FAT32、MINIX 等不同型別的檔案系統,從而可以方便地和其它作業系統交換資料,由于 Linux  支持許多不同的檔案系統,并且將它們組織成了一個統一的虛擬檔案系統.

 

       虛擬檔案系統(VirtualFileSystem,VFS):隱藏了各種硬體的具體細節,把檔案系統操作和不同檔案系統的具體實作細節分離了開來,為所有的設備提供了統一的介面,VFS提供了多達數十種不同的檔案系統,虛擬檔案系統可以分為邏輯檔案系統和設備驅動程式,邏輯檔案系統指Linux所支持的檔案系統,如ext2,fat等,設備驅動程式指為每一種硬體控制器所撰寫的設備驅動程式模塊, 

 

       虛擬檔案系統(VFS)是 Linux 內核中非常有用的一個方面,因為它為檔案系統提供了一個通用的介面抽象,VFS 在 SCI 和內核所支持的檔案系統之間提供了一個交換層,即VFS 在用戶和檔案系統之間提供了一個交換層,

VFS         在用戶和檔案系統之間提供了一個交換層:

       

  在 VFS 上面,是對諸如 open、close、read 和 write 之類的函式的一個通用 API 抽象,在 VFS 下面是檔案系統抽象,它定義了上層函式的實作方式,它們是給定檔案系統(超過 50 個)的插件,檔案系統的源代碼可以在 ./linux/fs 中找到,
  檔案系統層之下是緩沖區快取,它為檔案系統層提供了一個通用函式集(與具體檔案系統無關),這個快取層通過將資料保留一段時間(或者隨即預先讀取資料以便在需要是就可用)優化了對物理設備的訪問,緩沖區快取之下是設備驅動程式,它實作了特定物理設備的介面,
      因此,用戶和行程不需要知道檔案所在的檔案系統型別,而只需要象使用 Ext2  檔案系統中的檔案一樣使用它們,

 

     4. 設備驅動程式 
      設備驅動程式是 Linux  內核的主要部分,和作業系統的其它部分類似,設備驅動程式運行在高特權級的處理器環境中,從而可以直接對硬體進行操作,但正因為如此,任何一個設備驅動程式的錯誤都可能導致作業系統的崩潰,設備驅動程式實際控制作業系統和硬體設備之間的互動,設備驅動程式提供一組作業系統可理解的抽象介面完成和作業系統之間的互動,而與硬體相關的具體操作細節由設備驅動程式完成,一般而言,設備驅動程式和設備
的控制芯片有關,例如,如果計算機硬碟是 SCSI  硬碟,則需要使用 SCSI  驅動程式,而不是 IDE 驅動程式, 

 

    5.網路介面(NET)   
       提供了對各種網路標準的存取和各種網路硬體的支持,網路介面可分為網路協議和網路驅動程式,網路協議部分負責實作每一種可能的網路傳輸協議,眾所周知,TCP/IP  協議是 Internet  的標準協議,同時也是事實上的工業標準,Linux  的網路實作支持 BSD 套接字,支持全部的TCP/IP協議,Linux內核的網路部分由BSD套接字、網路協議層和網路設備驅動程式組成, 
    網路設備驅動程式負責與硬體設備通訊,每一種可能的硬體設備都有相應的設備驅動程式,

 

 2 . linux shell



shell是系統的用戶界面,提供了用戶與內核進行互動操作的一種介面,它接收用戶輸入的命令并把它送入內核去執行,是一個命令解釋器,另外,shell編程語言具有普通編程語言的很多特點,用這種編程語言撰寫的shell程式與其他應用程式具有同樣的效果,
目前主要有下列版本的shell,
1.Bourne Shell:是貝爾實驗室開發的,  
2.BASH:是GNU的Bourne Again Shell,是GNU作業系統上默認的shell,大部分linux的發行套件使用的都是這種shell,
3.Korn Shell:是對Bourne SHell的發展,在大部分內容上與Bourne Shell兼容,    

4.C Shell:是SUN公司Shell的BSD版本,


 3 . linux 檔案系統



各作業系統使用的檔案系統并不相同,例如,Windows 98 以前的微軟作業系統使用 FAT(FAT16)檔案系統,Windows 2000 以后的版本使用 NTFS 檔案系統,而 Linux 的正統檔案系統是 Ext2,

在 CentOS 6.3 系統中,默認的檔案系統是 Ext4,它是 Ext3(Ext2) 檔案系統的升級版,在性能、伸縮性和可靠性方面進行了大量改進,變化可以說是翻天覆地的,比如:

  • 向下兼容 Ext3;
  • 最大 1EB 檔案系統和 16TB 檔案;
  • 無限數量子目錄;
  • Extents 連續資料塊概念;
  • 多塊分配、延遲分配、持久預分配;
  • 快速 FSCK、日志校驗、無日志模式、在線碎片整理、inode 增強、默認啟用 barrier 等;

Linux支持的常見檔案系統
Linux 系統能夠支持的檔案系統非常多,除 Linux 默認檔案系統 Ext2、Ext3 和 Ext4 之外,還能支持 fat16、fat32、NTFS(需要重新編譯內核)等 Windows 檔案系統,也就是說,Linux 可以通過掛載的方式使用 Windows 檔案系統中的資料,Linux 所能夠支持的檔案系統在 "/usr/src/kemels/當前系統版本/fs" 目錄中(需要在安裝時選擇),該目錄中的每個子目錄都是一個可以識別的檔案系統,我們介紹較為常見的 Linux 支持的檔案系統,如表 1 所示,

 

檔案系統 描 述
Ext Linux 中最早的檔案系統,由于在性能和兼容性上具有很多缺陷,現在已經很少使用
Ext2 是 Ext 檔案系統的升級版本,Red Hat Linux 7.2 版本以前的系統默認都是 Ext2 檔案系統,于 1993 年發布,支持最大 16TB 的磁區和最大 2TB 的檔案(1TB=1024GB=1024x1024KB)
Ext3 是 Ext2 檔案系統的升級版本,最大的區別就是帶日志功能,以便在系統突然停止時提高檔案系統的可靠性,支持最大 16TB 的磁區和最大 2TB 的檔案
Ext4

是 Ext3 檔案系統的升級版,Ext4 在性能、伸縮性和可靠性方面進行了大量改進,Ext4 的變化可以說是翻天覆地的,比如向下兼容 Ext3、最大 1EB 檔案系統和 16TB 檔案、無限數量子目錄、Extents 連續資料塊 概念、多塊分配、延遲分配、持久預分配、快速 FSCK、日志校驗、無日志模式、在線碎片整理、inode 增強、默認啟用 barrier 等,它是 CentOS 6.3 的默認檔案系統

swap swap 是 Linux 中用于交換磁區的檔案系統(類似于 Windows 中的虛擬記憶體),當記憶體不夠用時,使用交換磁區暫時替代記憶體,一般大小為記憶體的 2 倍,但是不要超過 2GB,它是 Linux 的必需磁區
NFS NFS 是網路檔案系統(Network File System)的縮寫,是用來實作不同主機之間檔案共享的一種網路服務,本地主機可以通過掛載的方式使用遠程共享的資源
iso9660 光碟的標準檔案系統,Linux 要想使用光碟,必須支持 iso9660 檔案系統
fat  就是 Windows 下的 fatl6 檔案系統,在 Linux 中識別為 fat
vfat 就是 Windows 下的 fat32 檔案系統,在 Linux 中識別為 vfat,支持最大 32GB 的磁區和最大 4GB 的檔案
NTFS 就是 Windows 下的 NTFS 檔案系統,不過 Linux 默認是不能識別 NTFS 檔案系統的,如果需要識別,則需要重新編譯內核才能支持,它比 fat32 檔案系統更加安全,速度更快,支持最大 2TB 的磁區和最大 64GB 的檔案
ufs Sun 公司的作業系統 Solaris 和 SunOS 所采用的檔案系統
proc Linux 中基于記憶體的虛擬檔案系統,用來管理記憶體存盤目錄 /proc
sysfs 和 proc —樣,也是基于記憶體的虛擬檔案系統,用來管理記憶體存盤目錄 /sysfs
tmpfs 也是一種基于記憶體的虛擬檔案系統,不過也可以使用 swap 交換磁區


檔案系統詳解:https://blog.csdn.net/hguisu/article/details/7401963

 

 4 . 用戶態和內核態


 應用程式是無法直接訪問硬體資源的,需要通過通過內核SCI 層提供的介面來訪問硬體資源,   

   Linux系統將自身劃分為兩部分,一部分為核心軟體,即是kernel,也稱作內核空間,另一部分為普通應用程式,這部分稱為用戶空間,

       區分用戶空間和內核空間的目的是為確保系統安全,在CPU的所有指令中,有一些指令是非常危險的,如果錯用,將導致整個系統崩潰,比如:清記憶體、設定時鐘等,因為如果應用程式和內核在同一個保護級別,那么應用程式就有可能有意或者不小心進入了內核空間,破壞了內核空間的代碼和資料,系統崩潰就不足為奇,所以CPU將指令分為特權指令和非特權指令,對于那些危險的指令,只允許作業系統及其相關模塊使用,普通的應用程式只能使用那些不會造成災難的指令,Intel的CPU將特權級別分為4個級別:RING0,RING1,RING2,RING3, 內核空間級別為“RING0”, 用戶空間級別為RING3,

      linux的內核是一個有機的整體,每一個用戶行程運行時都好像有一份內核的拷貝,每當用戶行程使用系統呼叫時,都自動地將運行模式從用戶級轉為內核級,此時行程在內核的地址空間中運行,

       當應用程式行程執行系統呼叫而陷入內核代碼中執行時,我們就稱行程處于內核運行態(或簡稱為內核態),此時處理器處于特權級最高的(RING0級)內核代碼中執行,當行程處于內核態時,執行的內核代碼會使用當前行程的內核堆疊,每個行程都有自己的內核堆疊,當行程在執行用戶自己的代碼時,則稱其處于用戶運行態(用戶態),即此時處理器在特權級最低的(RING3級)用戶代碼中運行,當正在執行用戶程式而突然被中斷程式中斷時,此時用戶程式也可以象征性地稱為處于行程的內核態,因為中斷處理程式將使用當前行程的內核堆疊,這與處于內核態的行程的狀態有些類似,

       內核態與用戶態是作業系統的兩種運行級別,跟intel cpu沒有必然的聯系, 如上所提到的intel cpu提供Ring0-Ring3四種級別的運行模式,Ring0級別最高,Ring3最低,Linux使用了Ring3級別運行用戶態,Ring0作為 內核態,沒有使用Ring1和Ring2,    

 

內核空間和用戶空間

x86 CPU采用了段頁式地址映射模型,行程代碼中的地址為邏輯地址,經過段頁式地址映射后,才真正訪問物理記憶體,

通常32位Linux內核地址空間劃分0~3G為用戶空間,3~4G為內核空間,64位內核地址空間劃分是不同的,

32位與64位具體地址分布如下圖:

 

64位地址時將0x0000,0000,0000,0000 – 0x0000,7fff,ffff,f000這128T地址用于用戶空間,參見定義:

#define TASK_SIZE_MAX   ((1UL << 47) - PAGE_SIZE),注意這里還減去了一個頁面的大小做為保護,

而0xffff,8000,0000,0000以上為系統空間地址,注意:該地址前4個都是f,這是因為目前實際上只用了64位地址中的48位(高16位是沒有用的),而從地址0x0000,7fff,ffff,ffff到0xffff,8000,0000,0000中間是一個巨大的空洞,是為以后的擴展預留的,

而真正的系統空間的起始地址,是從0xffff,8800,0000,0000開始的,參見:

#define __PAGE_OFFSET     _AC(0xffff,8800,0000,0000, UL)

而32位地址時系統空間的起始地址為0xC000,0000,

另外0xffff,8800,0000,0000 – 0xffff,c7ff,ffff,ffff這64T直接和物理記憶體進行映射,0xffff,c900,0000,0000 – 0xffff,e8ff,ffff,ffff這32T用于vmalloc/ioremap的地址空間,

而32位地址空間時,當物理記憶體大于896M時(Linux2.4內核是896M,3.x內核是884M,是個經驗值),由于地址空間的限制,內核只會將0~896M的地址進行映射,而896M以上的空間用做一些固定映射和vmalloc/ioremap,而64位地址時是將所有物理記憶體都進行映射,

內核態與用戶態

       用戶態Ring3狀態不能訪問內核態Ring0的地址空間,包括代碼和資料,(例如32位Linux行程的4GB地址空間,3G-4G部 分大家是共享的,是內核態的地址空間,這里存放在整個內核的代碼和所有的內核模塊,以及內核所維護的資料),用戶運行一個程式,該程式所創建的行程開始是運行在用戶態的,如果要執行檔案操作,網路資料發送等操作,必須通過write,send等系統呼叫,這些系統呼叫會呼叫內核中的代碼來完成操作,這時,必 須切換到Ring0,然后進入內核地址空間去執行這些代碼完成操作,完成后,切換回Ring3,回到用戶態,這樣,用戶態的程式就不能 隨意操作內核地址空間,具有一定的安全保護作用,

處理器總處于以下狀態中的一種:

1、內核態,運行于行程背景關系,內核代表行程運行于內核空間;

2、內核態,運行于中斷背景關系,內核代表硬體運行于內核空間;

3、用戶態,運行于用戶空間,

從用戶空間到內核空間有兩種觸發手段:

1.系統呼叫:

用戶空間的應用程式,通過系統呼叫,進入內核空間,這個時候用戶空間的行程要傳遞很多變數、引數的值給內核,內核態運行的時候也要保存用戶行程的一些暫存器值、變數等,所謂的“行程背景關系”,可以看作是用戶行程傳遞給內核的這些引數以及內核要保存的那一整套的變數和暫存器值和當時的環境等,

2.中斷:  

硬體通過觸發信號,導致內核呼叫中斷處理程式,進入內核空間,例如網卡發送一個資料包或硬碟驅動器提供一次 IO 請求等,這個程序中,硬體的一些變數和引數也要傳遞給內核,內核通過這些引數進行中斷處理,所謂的“中斷背景關系”,其實也可以看作就是硬體傳遞過來的這些引數和內核需要保存的一些其他環境(主要是當前被打斷執行的行程環境),


————————————————
著作權宣告:本文為CSDN博主「規速」的原創文章,遵循 CC 4.0 BY-SA 著作權協議,轉載請附上原文出處鏈接及本宣告,
原文鏈接:https://blog.csdn.net/hguisu/article/details/6122513

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/135868.html

標籤:Linux

上一篇:ZeroTier-One搭建moon-加速p2p穿透

下一篇:超詳細的網路抓包神器 tcpdump 使用指南

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more