Linux shell 整理之 基本概念篇(一)

參考文章系列

Linux shell 整理之 基本概念篇(一)

Linux shell 整理之 基本概念篇(二)

Linux shell 整理之 用戶權限篇(三)

虛擬內存管理

  1. 虛擬內存代表的是一種過程,這個過程是由內核內置維護的內存頁面表(映射表)來交換物理內存與實際磁盤指定的位置(swap space)進行數據交換的一個過程(換出,換入)。
  2. 爲什麼要有這麼一個交換過程呢?我們都知道目前內存是昂貴的,磁盤是便宜,而如果把數據存在內存中時間過長,會很容易導致內存oom,所以,有必要設計一個方式和方法,把長時間沒有訪問過的內存數據塊(頁),暫時存儲到磁盤中
  3. 等到再次訪問這個頁面的時候,內核會在物流內存換出一個空間,是的將所訪問的磁盤頁面換入到該空間內才能使用,這樣是有一些交換的性能消耗

軟件程序管理(應用程序)

  1. 進程的概念,有些資料上說,進程是運行中的程序,這要理解並不非常妥當,因爲線程也是運行中的程序。或者說,進程是擁有獨立的資源管理的程序,這個程序能夠維護其內在的一些線程。
    link
  2. 在內核中,有一個init進程(0號進程),用來初始化啓動系統進程的main進程(類似於每個應用程序的main方法函數),總有使用return 0 這個0就代表這0號進程,這是一種文化吧。
  3. 在內核啓動的時候會加載init進程到虛擬內存(swap space)中,同時也會爲隨之啓動的其他系統進程分配數據與d代碼到虛擬內存中。
  4. 這些啓動程序一般會放在/etc/inittab(/etc/init.d),用來管理程序的啓動,也可以把代碼放在這個目錄下來啓動,這個非常有用
    yi一般是通過 /etc/rcX.d目錄下的入口(entry)①啓動, 這裏的X代表運行級(run level)。
# cat /etc/init.d/
...
 zhangll_startdjango_pythonserver.sh

# ll /etc/rc*.d/* | grep zhangll
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc0.d/K01zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc1.d/K01zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc2.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc3.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc4.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc5.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc6.d/K01zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh...

可以發現hangll_startdjango_pythonserver.sh 這個腳本是運行在0-6級別的運行級上的 可以通過
$ runlevel
N 5

ubuntu 級別介紹

硬件設備管理

使用linux的設備,必須要在linux內核中設置匹配的驅動程序代碼(專業的人寫專業的工具)。相當於就是應用程序與硬件的中間橋樑
兩種方式將驅動程序插入內核


  1. 插入代碼的時候要重新編譯內核
    缺點很明顯: 每次一個新插入設備就要重新編譯內核,麻煩多多

  2. 即插即用,得益於內核模塊的提出與實現

設備的分類

根據處理的數據的數量與文件格式劃分

  1. 字符型設備 (c)
    終端 等等,一次只處理一個字符
  2. 塊設備 (b)
    磁盤硬盤,每次能處理大塊數據
  3. 網絡設備 (n)
    網卡等,發送數據與接收數據包(有個迴環設備 127.0.0.1)

通信過程

每個設備都有一個節點(特殊文件),這個節點是通信的關卡。且linux會分配這個節點唯一的id作爲標誌。這個id 包含 主設備號 & 次設備號(子設備號,這樣理解纔有層次) 類似的設備會分配相同的額主設備號id,子設備號用來區分相同類型的不同設備

文件管理系統

在 設備管理中,所有設備都被合理地通過文件來管理與相互通信。

那麼linux系統提供一個標準接口,即通過 VFS(Virtual file system)與每個文件系統進行交互

linux文件系統支持地

ext Linux擴展文件系統,最早的Linux文件系統
ext2 第二擴展文件系統,在ext的基礎上提供了更多的功能
ext3 第三擴展文件系統,支持日誌功能
ext4 第四擴展文件系統,支持高級日誌功能
hpfs OS/2高性能文件系統
jfs IBM日誌文件系統
iso9660 ISO 9660文件系統(CD-ROM)
minix MINIX文件系統
msdos 微軟的FAT16
ncp Netware文件系統
nfs 網絡文件系統
ntfs 支持Microsoft NT文件系統
proc 訪問系統信息
ReiserFS 高級Linux文件系統,能提供更好的性能和硬盤恢復功能
smb 支持網絡訪問的Samba SMB文件系統
sysv 較早期的Unix文件系統
ufs BSD文件系統
umsdos 建立在msdos上的類Unix文件系統
vfat Windows 95文件系統(FAT32)
XFS 高性能64位日誌文件系統

每個文件系統通過mount等方式掛載,linux通過VFS,把信息加載到內存中(有疑問,哪些數據信息?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章