操做系統的功能:數組
1 操做系統接口函數
2 CPU管理spa
3 內存管理操作系統
4 設備管理設計
5 文件管理指針
操做系統的設計採用分層結構,越是上層,越接近用戶排序
操做系統=內核+系統程序接口
系統程序=編譯環境+API+AUI隊列
編譯環境=編譯程序+鏈接程序+裝載程序內存
Linux內核是單內核結構,即把內核做爲一個大總體來實現,而各模塊之間能夠直接調用相關函數
延遲執行機制----下半部分,軟中斷,Tasklet,工做隊列等
qsort包含在<stdlib.h>頭文件中,此函數根據你給的比較條件進行快速排序,經過指針移動實現排序。排序以後的結果仍然放在原數組中。使用qsort函數必須本身寫一個比較函數。
函數原型:
void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
函數一共四個參數,沒返回值。一個典型的qsort的寫法以下:
void qsort(s,n,sizeof(s[0]),cmp);
其中第一個參數是參與排序的數組名(或者也能夠理解成開始排序的地址,由於能夠寫&s[i],這個問題下面有說明);第二個參數是參與排序的元素個數; 第三個參數是單個元素的大小(推薦使用sizeof(s[0])這樣的表達式,下面也有說明);第四個參數就是不少人以爲很是困惑的比較函數,關於這個函數,還要說的比較麻煩...
下面來討論cmp這個比較函數(寫成cmp是個人我的喜愛,你能夠隨便寫成什麼,好比qcmp什麼的)。典型的cmp的定義是:
int cmp(const void *a,const void *b);
返回值必須是int,兩個參數的類型必須都是const void *,那個a,b是我隨便寫的兩個參數。 假設是對int排序的話,若是是升序,那麼就是若是a比b大返回一個正值,小則負值,相等返回0,後面有例子來講明對不一樣的類型如何進行排序。
在函數體內要對a,b進行強制類型轉換後才能獲得正確的返回值,不一樣的類型有不一樣的處理方法。