隨著微服務(wù)的盛行、自動化運維技術(shù)的發(fā)展,我們測試管理測試環(huán)境的能力似乎在逐漸降低,而整個IT行業(yè)對于“W”型人才的需求確越來越高。作為一個有追求的測試,我們是時候補一補我們的運維知識~
今天這篇將給大家介紹我們測試環(huán)境中最最重要的基礎(chǔ)設(shè)施——Linux操作系統(tǒng)的系統(tǒng)組成,讓大家對于我們最最常用的服務(wù)器操作系統(tǒng)有個稍微深入一點的了解。后續(xù)還會有Linux命令,shell腳本內(nèi)容等相關(guān)文章,請大家持續(xù)關(guān)注喲(^U^)ノ~YO
Linux操作系統(tǒng)一般有4個主要部分:
Linux內(nèi)核
Shell
文件系統(tǒng)
應(yīng)用程序
其中Linux內(nèi)核、Shell和文件系統(tǒng)一起形成了基本的操作系統(tǒng)結(jié)構(gòu),它們使得用戶可以運行程序、管理文件并使用系統(tǒng)。
接下來我們逐個了解一下:
Linux內(nèi)核
內(nèi)核是操作系統(tǒng)的核心,它在操作系統(tǒng)中主要完成以下任務(wù):
從技術(shù)層面講,內(nèi)核是硬件與軟件之間的一個中間層。作用是將應(yīng)用層序的請求傳遞給硬件,并充當?shù)讓域?qū)動程序,對系統(tǒng)中的各種設(shè)備和組件進行尋址。
從應(yīng)用程序的層面講,應(yīng)用程序與硬件沒有聯(lián)系,只與內(nèi)核有聯(lián)系,內(nèi)核是應(yīng)用程序知道的層次中的最底層。在實際工作中內(nèi)核抽象了相關(guān)細節(jié)。
內(nèi)核是一個資源管理程序。負責將可用的共享資源(CPU時間、磁盤空間、網(wǎng)絡(luò)連接等)分配得到各個系統(tǒng)進程。
內(nèi)核就像一個庫,提供了一組面向系統(tǒng)的命令。系統(tǒng)調(diào)用對于應(yīng)用程序來說,就像調(diào)用普通函數(shù)一樣。
Linux 內(nèi)核由如下幾部分組成:系統(tǒng)調(diào)用接口、虛擬文件系統(tǒng)、內(nèi)存管理、進程管理、網(wǎng)絡(luò)服務(wù)和設(shè)備驅(qū)動程序。
系統(tǒng)調(diào)用接口(System Call Interface,SCI):SCI指的是用戶空間應(yīng)用程序和內(nèi)核提供的服務(wù)之間的接口。由于服務(wù)是在內(nèi)核中提供的,因此無法執(zhí)行直接調(diào)用,所以SCI幫助我們提供了執(zhí)行從用戶空間到內(nèi)核的函數(shù)調(diào)用。
虛擬文件系統(tǒng)(Virtual File System, VFS):VFS為文件系統(tǒng)提供了一個通用的接口抽象,它在 SCI 和內(nèi)核所支持的文件系統(tǒng)之間提供了一個交換層。
在 VFS 上面,是對諸如 open、close、read 和 write 之類的函數(shù)的一個通用 API 抽象。
在 VFS 下面是文件系統(tǒng)抽象,它定義了上層函數(shù)的實現(xiàn)方式。
文件系統(tǒng)層之下是緩沖區(qū)緩存,它為文件系統(tǒng)層提供了一個通用函數(shù)集(與具體文件系統(tǒng)無關(guān))。這個緩存層通過將數(shù)據(jù)保留一段時間(或者隨即預(yù)先讀取數(shù)據(jù)以便在需要是就可用)優(yōu)化了對物理設(shè)備的訪問。
緩沖區(qū)緩存之下是設(shè)備驅(qū)動程序,它實現(xiàn)了特定物理設(shè)備的接口。
內(nèi)存管理:為了讓有限的物理內(nèi)存滿足應(yīng)用程序?qū)?nèi)存的大需求量,Linux 采用了“虛擬內(nèi)存”的內(nèi)存管理方式,將內(nèi)存劃分為容易處理的“內(nèi)存頁”(對于大部分體系結(jié)構(gòu)來說都是 4KB)。Linux 的內(nèi)存管理提供了物理和虛擬映射所使用的硬件機制,也支持當內(nèi)存被消耗光的時候,
使用被稱為“交換”的過程把頁面從內(nèi)存交換到硬盤上。
進程管理:進程實際是某特定應(yīng)用程序的一個運行實體。在 Linux 系統(tǒng)中,能夠同時運行多個進程,Linux 通過在短的時間間隔內(nèi)輪流運行這些進程而實現(xiàn)“多任務(wù)”。這一短的時間間隔稱為“時間片”,讓進程輪流運行的方法稱為“進程調(diào)度” ,完成調(diào)度的程序稱為調(diào)度程序。
Linux系統(tǒng)使用進程調(diào)度控制進程對CPU的訪問,完成進程管理。內(nèi)核通過 SCI 提供了一個應(yīng)用程序編程接口(API)來創(chuàng)建一個新進程,停止進程,并在它們之間進行通信和同步。
網(wǎng)絡(luò)服務(wù):提供了對各種網(wǎng)絡(luò)標準的存取和各種網(wǎng)絡(luò)硬件的支持。網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動程序。網(wǎng)絡(luò)協(xié)議部分負責實現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。Linux 的網(wǎng)絡(luò)實現(xiàn)支持 BSD 套接字,支持全部的TCP/IP協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動程序負責與硬件設(shè)備通訊,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動程序。
設(shè)備驅(qū)動程序:設(shè)備驅(qū)動程序運行在高特權(quán)級的處理器環(huán)境中,從而可以直接對硬件進行操作,設(shè)備驅(qū)動程序?qū)嶋H控制操作系統(tǒng)和硬件設(shè)備之間的交互。設(shè)備驅(qū)動程序提供一組操作系統(tǒng)可理解的抽象接口完成和操作系統(tǒng)之間的交互,而與硬件相關(guān)的具體操作細節(jié)由設(shè)備驅(qū)動程序完成。
Shell
Shell是系統(tǒng)的用戶界面,提供了用戶與內(nèi)核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內(nèi)核去執(zhí)行,是一個命令解釋器。另外,Shell編程語言具有普通編程語言的很多特點,用這種編程語言編寫的Shell程序與其他應(yīng)用程序具有同樣的效果。
我們最常用的Shell版本是:BASH(GNU的Bourne Again Shell)。
文件系統(tǒng)
文件系統(tǒng)是文件存放在磁盤等存儲設(shè)備上的組織方法。Linux系統(tǒng)能支持多種目前流行的文件系統(tǒng),如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。
Linux以文件的形式對計算機中的數(shù)據(jù)和硬件資源進行管理,也就是徹底的一切皆文件,反映在Linux的文件類型上就是:普通文件、目錄文件(也就是文件夾)、設(shè)備文件、鏈接文件、管道文件、套接字文件(數(shù)據(jù)通信的接口)等等。
這些種類繁多的文件被Linux使用目錄樹進行管理, 所謂的目錄樹就是以根目錄(/)為主,向下呈現(xiàn)分支狀的一種文件結(jié)構(gòu)。一切皆文件和文件目錄樹的資源管理方式一起構(gòu)成了Linux的文件體系,讓Linux操作系統(tǒng)可以方便使用系統(tǒng)資源。
Linux中的常用文件類型:
普通文件(-)
·從Linux的角度來說,類似mp4、pdf、html這樣應(yīng)用層面上的文件類型都屬于普通文件
·Linux用戶可以根據(jù)訪問權(quán)限對普通文件進行查看、更改和刪除
目錄文件(d,directory file)
·目錄文件對于用慣Windows的用戶來說不太容易理解,目錄也是文件的一種
·目錄文件包含了各自目錄下的文件名和指向這些文件的指針,打開目錄事實上就是打開目錄文件,只要有訪問權(quán)限,你就可以隨意訪問這些目錄下的文件(普通文件的執(zhí)行權(quán)限就是目錄文件的訪問權(quán)限),但是只有內(nèi)核的進程能夠修改它們
·雖然不能修改,但是我們能夠通過vim去查看目錄文件的內(nèi)容
符號鏈接(l,symbolic link)
·這種類型的文件類似Windows中的快捷方式,是指向另一個文件的間接指針,也就是我們常說的軟鏈接
塊設(shè)備文件(b,block)和字符設(shè)備文件(c,char)
·這些文件一般隱藏在/dev目錄下,在進行設(shè)備讀取和外設(shè)交互時會被使用到
·比如磁盤光驅(qū)就是塊設(shè)備文件,串口設(shè)備則屬于字符設(shè)備文件
·系統(tǒng)中的所有設(shè)備要么是塊設(shè)備文件,要么是字符設(shè)備文件,無一例外
FIFO(p,pipe)
·管道文件主要用于進程間通訊。比如使用mkfifo命令可以創(chuàng)建一個FIFO文件,啟用一個進程A從FIFO文件里讀數(shù)據(jù),啟動進程B往FIFO里寫數(shù)據(jù),先進先出,隨寫隨讀。
套接字(s,socket)
·用于進程間的網(wǎng)絡(luò)通信,也可以用于本機之間的非網(wǎng)絡(luò)通信
·這些文件一般隱藏在/var/run目錄下,證明著相關(guān)進程的存在
聯(lián)系客服