原文:linux源碼解讀(十七):紅黑樹在內核的應用——epoll

簡單介紹一下epoll的出現的背景:這里以java代碼為例,最原始的server代碼如下: 單線程中,一個死循環不停地接受客戶端的連接和數據 上述代碼有兩個 卡點 :第一個是accept函數,server在 端口監聽有沒有client來連接,如果沒有就一直阻塞,代碼沒法往下繼續執行 第二個是readLine函數,server和client建立連接后要等client發送數據 如果沒收到client ...

2022-01-21 21:57 0 1591 推薦指數:

查看詳情

linux源碼解讀(十四):在內核應用——原理和api解析

  1、是一種非常重要的數據結構,有比較明顯的兩個特點: 插入、刪除、查找的時間復雜度接近O(logN),N是節點個數,明顯比鏈表快;是一種性能非常穩定的二叉樹! 中序遍歷的結果是從小到大排好序的   基於以上兩個特點,比較適合的應用場景: 需要動態插入 ...

Fri Jan 14 05:42:00 CST 2022 0 1471
linux源碼解讀(十八):在內核應用——timer定時器

  定時器都知道吧?個人認為是linux最核心的功能之一了!比如線程sleep(5000),5s后再喚醒執行,cpu是怎么知道5s的時間到了?還有nginx這種反向代理每隔一段時間都要檢測客戶端的是否還在,如果掉線了就沒必要再分配資源維護連接關系啦。那么間隔固定時間檢測心跳的定時機制是怎么實現 ...

Sat Jan 29 03:42:00 CST 2022 0 929
linux源碼解讀(十五):在內核應用——CFS調度器

  1、在現代的操作系統中,進程調度是最核心的功能之一;linux 0.11的調度算法簡單粗暴:遍歷task_struct數組,找到時間片counter最大的進程執行;顯然這種策略已經不適合越來越復雜的業務場景需求了,所以后來逐步增加了多種調度策略,目前最廣為人知的調度策略有5種:cfs、idle ...

Sun Jan 16 05:29:00 CST 2022 1 1009
linux源碼解讀(十六):在內核應用——虛擬內存管理

  1、linux內核中利用增刪改查快速、穩定的特性來管理的還有另一個非常重要的功能:虛擬內存管理!前面介紹了buddy和slab算法是用來管理物理頁面的。由於早期物理頁面遠比虛擬頁面小很多,而且只需要分配和回收合並,所以也沒用樹形結構來組織,簡單粗暴地用鏈表來管理!但是虛擬內存不一樣 ...

Thu Jan 20 04:19:00 CST 2022 0 1249
(java 8)HashMap-轉換-源碼解讀

轉換圖例: 1、無旋轉 2、有旋轉 參考:https://blog.csdn.net/qpzkobe/article/details/79533237 參考:https://blog.csdn.net ...

Thu Jan 02 19:44:00 CST 2020 0 337
(三)之 Linux內核的經典實現

概要 前面分別介紹了的理論知識 以及 通過C語言實現了。本章繼續會紅進行介紹,下面將Linux 內核中的單獨移植出來進行測試驗證。若讀者對紅的理論知識不熟悉,建立先學習的理論知識,再來學習本章。 轉載請注明出處:http://www.cnblogs.com ...

Thu Apr 03 04:22:00 CST 2014 2 18564
詳解Linux內核算法的實現

轉自:https://blog.csdn.net/npy_lp/article/details/7420689 內核源碼linux-2.6.38.8.tar.bz2 關於二叉查找的概念請參考博文《詳解二叉查找算法的實現》。 平衡二叉樹 ...

Tue Apr 09 15:59:00 CST 2019 0 669
linux內核中的代碼解析

1 的定義 (1)每個節點或者為黑色,或者為紅色。 (2)根必須為黑色。   (3)每個葉子節點(不包含關鍵字的節點)都是黑色。   (4)如果有一個節點是紅色,那么它的兩個兒子都是黑色。   (5)對於每個節點,從該節點出發到其子孫節點的所有路徑上包含 ...

Sat Apr 06 19:05:00 CST 2013 0 4252
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM