原创 Linux pid_hash散列表

linux系統中每個進程由一個進程id標識,在內核中對應一個task_struct結構的進程描述符,系統中所有進程的task_struct通過鏈表鏈接在一起,在內核中,經常需要通過進程pid來獲取進程描述符,例如kill命令;最簡單的方

原创 將二元樹轉換成一個排序的雙向鏈表(方法二)

這個題目是微軟的面試題,將二元樹轉換成一個排序的雙向鏈表,直接貼代碼! 該方法在中序遍歷二叉樹時,完成指針的轉換; /* * main.c * * Created on: Nov 30, 2013 * Author

原创 Linux 經典書籍 推薦

入門篇  可以看看《鳥哥的私房菜》等書,偏管理類的書。如果想做server方向的可以找來看看。驅動篇  《LINUX設備驅動程序 》就是網上說的“LDD”,網上都說是經典之作,但是我一點都不覺得這是一本好書,而且我問了周圍的同學也都同

原创 排序算法—堆和堆排序

1.堆   堆實際上是一棵完全二叉樹,其任何一非葉節點滿足性質:   Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]   即任何一非葉

原创 Linux內存地址

Linux的分段 Linux uses segmentation in a very limited way. In fact, segmentation and paging are somewhat redundant, becaus

原创 對Linux內存管理的整體理解

內核中內存的管理與分配 內存的分配歸根到底是由夥伴系統分配內存頁面; 夥伴系統之上就是zone,它對內存的預留空間的設置和管理; __alloc_pages()是內核中對內存頁面分配的最核心函數,它盡最大能力的分配所需要的內存頁; sla

原创 最常被程序員們謊稱讀過的計算機書籍

馬克·吐溫曾經說過,所謂經典小說,就是指很多人希望讀過,但很少人真正花時間去讀的小說。這種說法同樣適用於“經典”的計算機書籍。 在Stack Overflow (以及其它很多軟件論壇)上,諸如”程序員最應該讀的計算機書籍有哪些? “

原创 Linux用戶態和內核態的那些事

雖然用戶態下和內核態下工作的程序有很多差別,但最重要的差別就在於特權級的不同,即權力的不同。運行在用戶態下的 程序不能直接訪問操作系統內核數據結構和程序。當我們在系統中執行一個程序時,大部分時間是運行在用戶態下的,在其需要操作系統幫助完

原创 linux內核的調度策略

這是我對Linux的傳統分時調度策略的總結: 分時進程靜態優先級由nice決定;nice值將會轉換爲該任務的時間片的長度,nice越小,時間片越大。nice可有nice()系統調用更改;動態優先級( 100 - 139 )是

原创 Linux 中斷們和陷阱門

一直沒有搞清楚,記在博客裏省的再去查資料 中斷門: 用於硬件中斷,DPL爲0,不允許用戶態直接使用int指令訪問,硬件中斷免去這一判斷,因此可以在用戶態響應中斷,見set_intr_gate。 DPL0 陷阱門: 用於CPU異常,DPL

原创 讀書最好的方式

人變聰明的一個關鍵方法就是多讀書。 但只讀還不夠。讀只是要素之一。 “研究證明,那些遵循B策略[一次讀10頁,然後合上書,寫一頁總結]的人要比那些遵循A策略[一次讀10頁,而且讀4遍來保持記憶]的人,從長期效果來看,要多記住50%的

原创 我在山大的七年

就在剛剛,看看劉未鵬的CSDN博客裏的一篇文章《我在南大的七年》,感觸頗深,然後想起來自己在山大的四年半,還有未來的兩年半,感慨自己的大學四年稀裏糊塗的過去了,還有是對自己的未來的2年半的研究生生活的迷惘! 我的大學生活是一段很失敗的經

原创 Linux內存頁面分配

在Linux中,對物理內存的管理是怎麼實現的呢?對頁面的分配和回收是如何實現的呢? Linux中對物理內存的管理是通過zone來管理的,以X86爲例,16MB以下的物理內存爲DMA zone;896MB以下的區域爲normal zone

原创 將二元樹轉換成一個排序的雙向鏈表(方法一)

這個題目是微軟的面試題,將二元樹轉換成一個排序的雙向鏈表,直接貼代碼! 該方法通過遞歸方式轉換二叉樹,分別轉換根結點的左右子樹,然後和根結點連接 /* * main.c * * Created on: Nov 27, 2013

原创 比賽賽程安排算法--分治算法

問題在註釋中已說明,直接貼代碼! /* * bisaisaicheng.c * * Created on: Nov 30, 2013 * Author: bing * * 每個選手必須與其他所有選手進行