新聞中心
在如今的技術(shù)時代,操作系統(tǒng)已經(jīng)成為每個計算機(jī)的核心所在。大多數(shù)人對于操作系統(tǒng)的理解只是簡單地認(rèn)為它是計算機(jī)硬件的管理者。但實際上,操作系統(tǒng)的功能遠(yuǎn)不止于此。操作系統(tǒng)不僅能夠有效地管理計算機(jī)硬件資源,還可以通過一種叫SOH的機(jī)制來實現(xiàn)程序的內(nèi)存隔離,使得操作系統(tǒng)具有更高的安全性。

那么,什么是SOH呢?SOH是操作系統(tǒng)中的一種內(nèi)存隔離機(jī)制,全稱為“Separation of Heap”。簡單來說,它的作用是將不同的程序所使用的內(nèi)存進(jìn)行隔離,以避免程序之間相互干擾,保證各個程序之間的獨立性。對于操作系統(tǒng)來說,SOH的出現(xiàn)提高了計算機(jī)運行的安全性,同時也為開發(fā)者們提供了更為靈活的編程方式。
SOH機(jī)制的實現(xiàn)主要分為兩種方式:分別是進(jìn)程內(nèi)的SOH和進(jìn)程外的SOH。
在進(jìn)程內(nèi)的SOH中,操作系統(tǒng)為每一個進(jìn)程都分配了獨立的內(nèi)存空間,保證了各個進(jìn)程之間獨立性的同時,也為進(jìn)程的通信提供了便利。具體來說,進(jìn)程內(nèi)的SOH機(jī)制是通過操作系統(tǒng)為不同進(jìn)程分配獨立的內(nèi)存空間,來實現(xiàn)各個進(jìn)程之間相互隔離。這樣,在不同進(jìn)程中創(chuàng)建的對象就不會有任何的干擾,也不會相互影響。
而在進(jìn)程外的SOH中,操作系統(tǒng)則將不同的程序所使用的堆內(nèi)存進(jìn)行隔離。和進(jìn)程內(nèi)的SOH類似,進(jìn)程外的SOH也是通過對獨立的內(nèi)存空間進(jìn)行分配實現(xiàn)的。在操作系統(tǒng)中,每個進(jìn)程都有自己的堆空間。進(jìn)程在申請內(nèi)存時,可以通過直接向系統(tǒng)申請空間來分配內(nèi)存。在分配完成后,操作系統(tǒng)會為不同的程序所使用的堆內(nèi)存進(jìn)行隔離,以保證程序之間的獨立性。
在 Linux 操作系統(tǒng)中,內(nèi)存隔離機(jī)制是很重要的,因為它能保障各個程序之間的安全性。同時,Linux 操作系統(tǒng)還提供了各種專用的工具和技術(shù),如內(nèi)存保護(hù)機(jī)制等,幫助開發(fā)者更好的實現(xiàn)程序的內(nèi)存隔離。
SOH機(jī)制的實現(xiàn)方式有很多,不同的操作系統(tǒng)也有它們自己獨特的實現(xiàn)方式。但無論哪種實現(xiàn)方式,都能幫助開發(fā)者輕松實現(xiàn)程序的內(nèi)存隔離,提高程序的安全性。SOH機(jī)制是一種非常重要的機(jī)制,Linux 操作系統(tǒng)中的 SOH 機(jī)制也是其中之一。有了它,我們就能更好地保障程序的安全性,從而讓計算機(jī)系統(tǒng)更穩(wěn)定、更可靠。
相關(guān)問題拓展閱讀:
- 文本文件讀取和二進(jìn)制文件讀寫的區(qū)別
- 為什么有二進(jìn)制文件和文本文件,那不是有重復(fù)么
文本文件讀取和二進(jìn)制文件讀寫的區(qū)別
一、文本文件與二進(jìn)制文件的定義
大家都知道計算機(jī)的存儲在物理上是二進(jìn)制的,所以文本文件與二進(jìn)制文件的區(qū)別并不是物理上的,而是邏輯上的。這兩者只是在編碼層次上有差異。簡單來說,文本文件是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。二進(jìn)制文件是基于值編碼的文件,你可以根據(jù)具體應(yīng)用,指定某個值是什么意思(這樣一個過程,可以看作是自定義編碼。
從上面可以看出文本文件基本上是定長編碼的(也有非定長的編碼如UTF-8)。而二進(jìn)制文件可看成是變長編碼的,因為是值編碼嘛,多少個比特代表一個值,完全由你決定。大家可能對BMP文件比較熟悉,就拿它舉例子吧,其頭部是較為固定長度的文件頭信息,前蠢吵2字節(jié)用來記錄文件為BMP格式,接下來的8個字節(jié)用來記錄文件長度,再接下來的4字節(jié)用來記錄bmp文件頭的長度。
二、文本文件與二進(jìn)制文件的存取
文本工具打開一個文件的過程悉肢是怎樣的呢?拿記事本來說,它首先讀取文件物理上所對應(yīng)的二進(jìn)制比特流,然后按照你所選擇的解碼方式來解釋這個流,然后將解釋結(jié)果顯示出來。一般來說,你選取的解碼方式會是ASCII碼形式(ASCII碼的一個字符是8個比特),接下來,它8個比特8個比特地來解釋這個文件流。例如對于這么一個文件流”___”(下劃線”_”,為了增強(qiáng)可讀性手動添加的),之一個8比特””按ASCII碼來解碼的話,所對應(yīng)的字符是字符”A”,同理其它3個8比特可分別解碼為”BCD”,即這個文件流可解釋成“ABCD”,然后記事本就將這個“ABCD”顯示在屏幕上。
事實上,世界上任何東西要與其他東西通信會話,都存在一個既定的協(xié)議,既定的編碼。人與人之間通過文字聯(lián)絡(luò),漢字“媽”代表生你的那個人,這就是一種既定的編碼。但注意到這樣一種情況,漢字“媽”在日本文字里有可能是你生下的那個人,所以當(dāng)一個中國人A與日本B之間用“媽”這個字進(jìn)行交流,出現(xiàn)誤解就很正常的。用記事本打開二進(jìn)制文件與上面的情況類似。記事本無論打開什么文件都按既定的字符編碼工作(如ASCII碼),所以當(dāng)他打開二進(jìn)制文件時,出現(xiàn)亂碼也是很必然的一件事情了,解碼和譯碼不對應(yīng)嘛。例如文件流”___”可能在二進(jìn)制文件中對應(yīng)的是一個四字節(jié)的整數(shù)int 1,在記事本里解釋就變成了”NULL_NULL_NULL_SOH”這四個控制符。
文本文件的存儲與其讀取基本上是個逆過程。而二進(jìn)制文件的存取顯然與文本文件的存取差不多,只是編/解碼方式不同而已,也不再敘述。
三、文本文件與二進(jìn)制文件的優(yōu)缺點
因為文本文件與二進(jìn)制文件的區(qū)別僅僅是編碼上不同,所以他們的優(yōu)缺點就是編碼的優(yōu)缺點,這個找本編碼的書來看看就比較清楚了。一般認(rèn)為,文本文件編碼基于字符定長,譯碼容易些;二進(jìn)制文件編碼是變長的,所帶陸侍以它靈活,存儲利用率要高些,譯碼難一些(不同的二進(jìn)制文件格式,有不同的譯碼方式)。關(guān)于空間利用率,想想看,二進(jìn)制文件甚至可以用一個比特來代表一個意思(位操作),而文本文件任何一個意思至少是一個字符.
在windows下,文本文件不一定是一ASCII來存貯的,因為ASCII碼只能表示128的標(biāo)識,你打開一個txt文檔,然后另存為,有個選項是編碼,可以選擇存貯格式,一般來說UTF-8編碼格式兼容性要好一些.而二進(jìn)制用的計算機(jī)原始語言,不存貯兼容性. 很多書上還認(rèn)為,文本文件的可讀性要好些,存儲要花費轉(zhuǎn)換時間(讀寫要編譯碼),而二進(jìn)制文件可讀性差,存儲不存在轉(zhuǎn)換時間(讀寫不要編解碼,直接寫值).這里的可讀性是從軟件使用者角度來說的,因為我們用通用的記事本工具就幾乎可以瀏覽所有文本文件,所以說文本文件可讀性好;而讀寫一個具體的二進(jìn)制文件需要一個具體的文件解碼器,所以說二進(jìn)制文件可讀性差,比如讀BMP文件,必須用讀圖軟件.
而這里的存儲轉(zhuǎn)換時間應(yīng)該是從編程的角度來說的,因為有些操作系統(tǒng)如windows需要對回車換行符進(jìn)行轉(zhuǎn)換(將”\n”,換成”\r\n”,所以文件讀寫時,操作系統(tǒng)需要一個一個字符的檢查當(dāng)前字符是不是”\n”或”\r\n”).這個在存儲轉(zhuǎn)換在Linux操作系統(tǒng)中并不需要,當(dāng)然,當(dāng)在兩個不同的操作系統(tǒng)上共享文件時,這種存儲轉(zhuǎn)換又可能出來
為什么有二進(jìn)制文件和文本文件,那不是有重復(fù)么
一、文本文件與二進(jìn)制文件的定義
大家都知道計算機(jī)的存儲在物理上是二進(jìn)制的,所以文本文件與二進(jìn)制文件的區(qū)
別并不是物理上的,而是邏輯上的。這兩者只是在編碼層次上有差異。
簡單來說,文本文件是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICOD
E編碼等等。二進(jìn)制文件是基于值編碼的文件,你可以根據(jù)具體應(yīng)用,指定某個值是什么
意思(這樣一個過程,可以看作是自定義編碼)。
從上面可以看出文本文件基本上是定長編碼的,基于字符嘛,每個字符在具體編
碼中是固定的,ASCII碼是8個比特的編碼,UNICODE一般占16個比特。而二進(jìn)制文件可看
成是變長編碼的,因為是值編碼嘛,多少個比特代表一個值,完全由你決定。大家可能
對BMP文件比較熟悉,就拿它舉例子吧,其頭部是固定長度的14字節(jié)的文件頭,然后是40個字節(jié)的位圖信息頭。。。大家可以看出來了吧,其編碼是基于值的(不定長的,2、4、
8字節(jié)長的值都有),所以BMP是二進(jìn)制文件。
二、文本文件與二進(jìn)制文件的存取
文本工具打開一個文件的過程是怎樣的呢?拿記事本來說,它首先讀取文件物理
上所對應(yīng)的二進(jìn)制比特流(前面已經(jīng)說了,存儲都是二進(jìn)制的),然后按照你所選擇的
解碼方式來解釋這個流,然后將解釋結(jié)果顯示出來。一般來說,你選取的解碼方式會是
ASCII碼形式(ASCII碼的一個字符是8個比特),接下來,它8個比特8個比特地來解釋
這個文件流。例如對于這么一個文件流”___”(下劃
線”_”,是我為了增強(qiáng)可讀性,而手動添加的),之一個8比特””按ASCII碼來解
碼的話,所對應(yīng)的字符是字符”A”,同理其它3個8比特可分別解碼為”BCD”,即這個文件
流可解釋成“ABCD”,然后記事本就將這個“ABCD”顯示在屏幕上。
事實上,世界上任何東西要與其他東西通信會話,都存在一個既定的協(xié)議,既
定的編碼。人與人之間通過文字聯(lián)絡(luò),漢字“媽”代表生你的那個人,這就是一種既定
的編碼。但注意到這樣一種情況,漢字“媽”在日本文字里有可能是你生下的那個人,
所以當(dāng)一個中國人A與日本B之間用“媽”這個字進(jìn)行交流,出現(xiàn)誤解就很正常的。用
記事本打開二進(jìn)制文件與上面的情況類似。記事本無論打開什么文件都按既定的字符編
碼工作(如ASCII碼),所以當(dāng)他打開二進(jìn)制文件時,出現(xiàn)亂碼也是很必然的一件事情了
,解碼和譯碼不對應(yīng)嘛。例如文件流”___”可能在二
進(jìn)制文件中對應(yīng)的是一個四字節(jié)的整數(shù)int 1,在記事本里解釋就變成了”NULL_NULL_NU
LL_SOH”這四個控制符。
文本文件的存儲與其讀取基本上是個逆過程,不再累述。而二進(jìn)制文件的存取顯然
與文本文件的存取差不多,只是編/解碼方式不同而已,也不再敘述。
三、文本文件與二進(jìn)制文件的優(yōu)缺點
因為文本文件與二進(jìn)制文件的區(qū)別僅僅是編碼上不同,所以他們的優(yōu)缺點就是編碼
的優(yōu)缺點,這個找本編碼的書來看看就比較清楚了。一般認(rèn)為,文本文件編碼基于字符
定長,譯碼容易些;二進(jìn)制文件編碼是變長的,所以它靈活,存儲利用率要高些,譯碼
難一些(不同的二進(jìn)制文件格式,有不同的譯碼方式)。關(guān)于空間利用率,想想看,二
進(jìn)制文件甚至可以用一個比特來代表一個意思(位操作),而文本文件任何一個意思至少
是一個字符.
很多書上還認(rèn)為,文本文件的可讀性要好些,存儲要花費轉(zhuǎn)換時間(讀寫要編譯碼)
,而二進(jìn)制文件可讀性差,存儲不存在轉(zhuǎn)換時間(讀寫不要編解碼,直接寫值).這里
的可讀性是從軟件使用者角度來說的,因為我們用通用的記事本工具就幾乎可以瀏覽所
有文本文件,所以說文本文件可讀性好;而讀寫一個具體的二進(jìn)制文件需要一個具體的
文件解碼器,所以說二進(jìn)制文件可讀性差,比如讀BMP文件,必須用讀圖軟件.而這里的
存儲轉(zhuǎn)換時間應(yīng)該是從編程的角度來說的,因為有些操作系統(tǒng)如windows需要對回車換行
符進(jìn)行轉(zhuǎn)換(將”\n”,換成”\r\n”,所以文件讀寫時,操作系統(tǒng)需要一個一個字符的檢查
當(dāng)前字符是不是”\n”或”\r\n”).這個在存儲轉(zhuǎn)換在Linux操作系統(tǒng)中并不需要,當(dāng)然,當(dāng)
在兩個不同的操作系統(tǒng)上共享文件時,這種存儲轉(zhuǎn)換又可能出來(如Linux系統(tǒng)和Window
s系統(tǒng)共享文本文件)。關(guān)于這個轉(zhuǎn)換怎樣進(jìn)行,我將在下一篇文章《Linux文本文件與W
indows文本文件間的轉(zhuǎn)換》給出^_^
四、C的文本讀寫和二進(jìn)制讀寫
應(yīng)該說C的文本讀寫與二進(jìn)制的讀寫是一個編程層次上的問題,與具體的操作系統(tǒng)
有關(guān),所以”用文本方式讀寫的文件一定是文本文件,用二進(jìn)制讀寫的文件一定是二進(jìn)
制文件”這類觀點是錯誤的.下面的講述非明確指出操作系統(tǒng)類型,都暗指windows.
C的文本方讀寫與二進(jìn)制讀寫的差別僅僅體現(xiàn)在回車換行符的處理上 .文本方式寫
時,每遇到一個”\n”(0AH換行符),它將其換成”\r\n”(0D0AH,回車換行),然后再寫入
文件;當(dāng)文本讀取時,它每遇到一個”\r\n”將其反變化為”\n”,然后送到讀緩沖區(qū).正
因為文本方式有”\n”--”\r\n”之間的轉(zhuǎn)換,其存在轉(zhuǎn)換耗時.二進(jìn)制讀寫時,其不存
在任何轉(zhuǎn)換,直接將寫緩沖區(qū)中數(shù)據(jù)寫入文件.
總地來說,從編程的角度來說,C中文本或二進(jìn)制讀寫都是緩沖區(qū)與文件中二進(jìn)
制流的交互,只是文本讀寫時有回車換行的轉(zhuǎn)換.所以當(dāng)寫緩沖區(qū)中無換行符”\n”(0AH
),文本寫與二進(jìn)制寫的結(jié)果是一樣的,同理,當(dāng)文件中不存在”\r\n”(0DH0AH)時,文本
讀與二進(jìn)制讀的結(jié)果一樣.
linux soh的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux soh,探索Linux SOH:解析操作系統(tǒng)中的SOH概念與實現(xiàn)方式,文本文件讀取和二進(jìn)制文件讀寫的區(qū)別,為什么有二進(jìn)制文件和文本文件,那不是有重復(fù)么的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁名稱:探索LinuxSOH:解析操作系統(tǒng)中的SOH概念與實現(xiàn)方式(linuxsoh)
文章位置:http://www.fisionsoft.com.cn/article/djojejg.html


咨詢
建站咨詢
