系統程式設計 (上册) System Programming Vol I

陳金追

  • 系統程式設計 (上册)-preview-1
  • 系統程式設計 (上册)-preview-2
  • 系統程式設計 (上册)-preview-3
  • 系統程式設計 (上册)-preview-4
  • 系統程式設計 (上册)-preview-5
  • 系統程式設計 (上册)-preview-6
  • 系統程式設計 (上册)-preview-7
  • 系統程式設計 (上册)-preview-8
  • 系統程式設計 (上册)-preview-9
系統程式設計 (上册)-preview-1

買這商品的人也買了...

商品描述

• 本書英文版System Programming獲得美國最權威的書評機構Bookauthority的推薦,並評為最佳網路程式設計書籍。
• 作者陳金追為電腦系統軟體世界級的專家!從事軟體研發三十幾年,曾為Oracle開發全新的資料庫復原系統。
• 想成為世界級的電腦軟體專家,看本書就對了!


本書有系統地介紹如何以POSIX標準所規定的作業系統程式界面,做跨平台的軟體開發,設計出一流軟體。
上册第1-11章(系統程式設計):
• 靜態與動態連結,動態載入。程序管理。軟體開發與軟體工程過程。
• 檔案輸入/輸出:循序I/O、隨機I/O、向量I/O、非同步I/O、直接I/O。
• 程序間通信方法:信號、旗誌、共有記憶、插口、有名與無名導管、信息排隊、映入記憶器檔案。
‎• Pthreads多程線程式設計:互斥鎖、條件變數、程線特有資料、修復吊死的互斥鎖、程線取消、生産消費問題。
• 共時控制:更新遺失問題、系統五與POSIX旗誌。以組合語言撰寫自己的上鎖與解鎖函數,比系統所提供的任何共時控制設施,都快上25~80%的速度。如何預防鎖死。

下冊第12-16章(網路程式設計):
• 網路插口程式設計:不同種類的插口、客戶伺服程式、連線與非連線式通信、同時支援IPv4與IPv6、多工式伺服程式、多播作業、非同步連線、自動重新再連線、查取端口號。
• 插口選項:SO_KEEPALIVE、SO_LINGER、SO_REUSEADDR、SO_REUSEPORT 與緩衝器大小 。
• 性能調整:如何分別在應用軟體與作業系統核心層次,調整網路插口程式的性能。
• 分散式程式設計:如何解決跨印地(endian)、對位、32與64位元混合、永遠往後且往前相容、版本術、預防癱瘓攻撃。
• 電腦網路安全:對稱式與不對稱式密碼術。撰寫從事信息紋摘、加密、解密、‎HMAC、數位簽字,‎以及SSL/TLS‎等作業的客戶伺服程式。PKI,如何產生並建立自簽的X.509憑証,如何做不‎同格式憑證的轉換,SSL/TLS 程式設計,如何在SSL/TLS作業時驗證一串的憑證,以及‎如何在SSL/TLS‎上‎做客戶認證等。
• 如何設計一流軟體。
• 書中200多個C範例程式,均在Linux、AIX、Solaris、HPUX、Apple Darwin上測試過。網路插口程式也在微軟Windows測試過。

作者簡介

陳金追(Jin-Jwei Chen)
美國麻州大學電腦碩士,博士班肄業,是電腦系統軟體世界級的專家。求學後在美國電腦軟體工業界,從事軟體研發三十幾年,曾為Oracle開發全新的資料庫復原系統。經驗橫跨作業系統核心、資料庫管‎理系統核心、群集系統、網路與分散系統、網路安全、網路管理、應用伺服器與網際網路服務等不同領域。
作者擁有一項美國大專利,含十六項發明的「無資料遺失之資料庫備存與復原」。他也在1990年代設計與開發由Unix作業系統核心反向叫用使用者空間的命令,進行完全動態載入設備驅動程式的技術,但卻不知申請專利。

目錄大綱

第1 章 基本計算機概念
 1-1 硬體與軟體,兩者缺一不可
 1-2 計算機硬體簡介
 1-3 計算機的基本作業
 1-4 計算機軟體
 1-5 作業系統
 1-6 程式,程序與程線
 1-7 電腦的階層
第2 章 軟體開發與軟體工程過程
 2-1 軟體開發過程
 2-2 原始碼控制系統
 2-3 軟體釋出過程
 2-4 產品建立的不同模式
 2-5 產品建立的工具
 2-6 退化測試組套
 2-7 編譯式與解譯式程式語言
 2-8 程式語言的選擇
第3 章 程式與庫存的建立
 3-1 何謂庫存
 3-2 存檔庫存與共用庫存
 3-3 建立程式或庫存的兩個階段
 3-4 靜態連結與動態連結
 3-5 連結程式如何找到靜態與動態庫存
 3-6 應用程式如何找到動態庫存
 3-7 動態載入 — 不連結
 3-8 編譯、載入與執行時段
 3-9 混合式連結
 3-10 建立與應用你自己的庫存
 3-11 作業指令摘要
第4 章 檔案輸入/輸出
 4-1 磁碟的結構
 4-2 檔案的一些觀念
 4-3 兩種程式界面
 4-4 檔案描述與相關之核心層資料結構
 4-5 打開與建立檔案
 4-6 寫入檔案
 4-7 撰寫健全牢固從事I/O 的軟體
 4-8 讀取檔案
 4-9 循序I/O
 4-10 共時程序間共用檔案
 4-11 隨機I/O
 4-12 向量式I/O
 4-13 非同步I/O
 4-14 ‎直接I/O
 4-15 輸入/輸出緩衝
 4-16 檔案的共時更新
第5章 檔案與檔案夾
 5-1 檔案的種類與權限
 5-2 開創或剔除檔案夾
 5-3 建立連結
 5-4‎ 建立象徵連結
 5-5 剔除或改名一個檔案或檔案夾
 5-6 獲取配置參數的值
 5-7 取得或改變現有工作檔案夾
 5-8 讀取檔案夾元素的狀態資訊
 5-9 打開與讀取檔案夾
 5-10 改變權限
 5-11 改變擁有者
 5-12 複製檔案‎描述
 5-13 ‎fcntl()函數
 5-14 ioctl()函數
 5-15 檔案與檔案夾之權限面罩
 5-16 SUID,SGID,與黏著位元
 5-17 access()與‎faccessat()函數
 5-18 更改存取與異動時間
第6章 信號
 6-1 信號簡介
 6-2 處置信號的行動
 6-3‎ 以kill()函數發送信號
 6-4 信號面罩—被阻擋著的信號
 6-5 接收被擋住,懸而未決的信號
 6-6 保留給應用程式的信號
 6-7 作業系統所定義的非必要信號
 6-8 信號對sleep()函數的影響
 6-9 信號的警訊
 6-10 信號摘要
 6-11 ‎其他的信號函數
第7章 程序
 7-1 程序有關的觀念與函數
 7-2 以fork()產生一新程序
 7-3 母程序等候子程序
 7-4‎ 產生新程序以執行不同的程式
 7-5 母程序與子程序之溝通
 7-6 孤兒與亡魂程序
 7-7 程序終止
 7-8 getenv()‎與‎sysconf()函數
 7-9 ‎system()函數
 7-10‎ 程序的資源極限
 7-11 其他用戶與群組相關的函數
第8章 Pthreads程式設計
 8-1 為何使用多程線程式設計
 8-2 基本的Pthreads
 8-3 ‎Pthreads‎屬性
 8-4 共時控制問題的種類
 8-5 互斥鎖
 8-6 條件變數
 8-7‎ 讀寫鎖
 8-8 程線特有的資料
 8-9‎ 取消程線
 8-10 程線的信號處理
 8-11 進一步參考資料
 8-12‎ 所有的pthreads‎程式界面
 8-13 含程線取消點的函數
第9章 共時控制與上鎖
 9-1 共時控制簡介
 9-2 系統五IPC資源簡介
 9-3 系統五旗誌
 9-4 不同類型的鎖
 9-5 設計與實作自己的上鎖函數
 9-6 POSIX旗誌
 9-7 微軟視窗的旗誌與互斥鎖
 9-8 鎖死
 9-9 和旗誌有關的系統可調參數
 9-10 ‎共時控制問題與解決辦法摘要
第10章 共有記憶
 10-1 共有記憶簡介
 10-2 共有記憶的程式界面
 10-3 共有記憶實例
第11章 再談程序間通信方式
 11-1 程序間通信摘要
 11-2 具名的導管(FIFOs)
 11-3 信息排隊
 11-4 映入記憶器檔案