Linux网络编程(一):Linux内核
生活随笔
收集整理的這篇文章主要介紹了
Linux网络编程(一):Linux内核
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux內核:進程調度、內存管理、虛擬文件系統、網絡接口、進程通信
進程調度:系統對進程的多種狀態之間的轉換策略。
? SCHED_OTHER 針對普通進程的時間片輪轉調度策略。系統給所有的運行狀態的進程分配時間片,在當前進程的時間片用完之后,系統從進程中優先級最高的進程中選擇進程運行。
? SCHED_FIFO? 針對運行的實時性要求比較高,運行時間短的進程調度策略。系統按照進入隊列的先后進行進程的調度,在沒有更高優先級進程到來或當前進程沒有因為等待資源而阻塞的情況下,會一直運行下去
? SCHED_RR? ? 針對實時性要求比較高,運行時間比較長的進程調度策略。與SCHED_OTHER類似,不過SCHED_RR進程調度的優先級高得多。系統分配給SCHED_RR進程時間片,然后通過輪循運行這些進程,將時間片運行完的進程放入隊列的末尾
? 1.對于SCHED_OTHER,即普通進程調度策略,它應該是基于CFS, 它的特點是即使是最低優先級,他也能獲得一定的時間片。
? 2.SCHED_FIFO:高優先級會搶占低優先級,高優先級運行期間,低優先級沒法搶占,只能等到高優先級主動退出;對于同等優先級,先運行的進程會一直占據cpu, 只有等到先運行的進程主動退出,后續進程才能得到時間片。?
? 3.SCHED_RR: 同上,高優先級會搶占低優先級,高優先級運行期間,低優先級沒法搶占,只能等到高優先級主動退出, ;對于同等優先級的進程,各個進程會輪流運行一定的時間片(大約100ms)。
? 進程的優先級范圍:0-139, 0-99是實時進程,100-139是普通進程
內存管理:多個進程間的內存共享策略。
? 虛擬內存可以讓進程擁有比實際物理內存更大的內存,可以是實際內存的很多倍,每一個進程的虛擬內存有不同的地址空間,多個進程的虛擬內存不會沖突。
? 虛擬內存的分配策略是每個進程都可以公平地使用虛擬內存。虛擬內存的大小通常設置為物理內存的兩倍。
虛擬文件系統
? Linux常用的文件系統ext2和ext3,ext2文件系統用于固定文件系統和可活動文件系統。ext3文件系統是在ext2上增加日志功能后的擴展,兩者可以互相轉換
網絡接口:分為網絡協議和驅動程序
? 網絡協議是一種網絡傳輸的通信標準,網絡驅動是對硬件設備的驅動程序。
進程間通信:進程之間需要進行數據的交流才能完成控制、協同工作
? 通信方式:共享內存、消息隊列、信號、管道、套接字、信號量
進程調度:系統對進程的多種狀態之間的轉換策略。
? SCHED_OTHER 針對普通進程的時間片輪轉調度策略。系統給所有的運行狀態的進程分配時間片,在當前進程的時間片用完之后,系統從進程中優先級最高的進程中選擇進程運行。
? SCHED_FIFO? 針對運行的實時性要求比較高,運行時間短的進程調度策略。系統按照進入隊列的先后進行進程的調度,在沒有更高優先級進程到來或當前進程沒有因為等待資源而阻塞的情況下,會一直運行下去
? SCHED_RR? ? 針對實時性要求比較高,運行時間比較長的進程調度策略。與SCHED_OTHER類似,不過SCHED_RR進程調度的優先級高得多。系統分配給SCHED_RR進程時間片,然后通過輪循運行這些進程,將時間片運行完的進程放入隊列的末尾
? 1.對于SCHED_OTHER,即普通進程調度策略,它應該是基于CFS, 它的特點是即使是最低優先級,他也能獲得一定的時間片。
? 2.SCHED_FIFO:高優先級會搶占低優先級,高優先級運行期間,低優先級沒法搶占,只能等到高優先級主動退出;對于同等優先級,先運行的進程會一直占據cpu, 只有等到先運行的進程主動退出,后續進程才能得到時間片。?
? 3.SCHED_RR: 同上,高優先級會搶占低優先級,高優先級運行期間,低優先級沒法搶占,只能等到高優先級主動退出, ;對于同等優先級的進程,各個進程會輪流運行一定的時間片(大約100ms)。
? 進程的優先級范圍:0-139, 0-99是實時進程,100-139是普通進程
內存管理:多個進程間的內存共享策略。
? 虛擬內存可以讓進程擁有比實際物理內存更大的內存,可以是實際內存的很多倍,每一個進程的虛擬內存有不同的地址空間,多個進程的虛擬內存不會沖突。
? 虛擬內存的分配策略是每個進程都可以公平地使用虛擬內存。虛擬內存的大小通常設置為物理內存的兩倍。
虛擬文件系統
? Linux常用的文件系統ext2和ext3,ext2文件系統用于固定文件系統和可活動文件系統。ext3文件系統是在ext2上增加日志功能后的擴展,兩者可以互相轉換
網絡接口:分為網絡協議和驅動程序
? 網絡協議是一種網絡傳輸的通信標準,網絡驅動是對硬件設備的驅動程序。
進程間通信:進程之間需要進行數據的交流才能完成控制、協同工作
? 通信方式:共享內存、消息隊列、信號、管道、套接字、信號量
總結
以上是生活随笔為你收集整理的Linux网络编程(一):Linux内核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++11新标准 default 和
- 下一篇: jeecg开源社区近期版本发布计划