理論部分課程安排
第一部分IO接口高級編程
系統功能調用接口
無緩存方式I/O
open/close ,read/write
dup/dup2, fcntl/ioctl
標準I/O庫接口
緩存方式I/O
字符流I/O,比特流I/O
格式化I/O
高級I/O
無阻塞I/O,記錄加鎖
內存映射I/O
第二部分 進程高級編程
進程控制
進程環境
fork/vfork, wait/waitpid, exec
進程間的關系
進程組,會話(session)
Job控制
信號(signal)
信號的概念
Signal, kill/raise, alarm/pause, sigaction
第三部分 線程高級編程
進程與線程
Posix線程
線程的創建與結束
Pthread_create, pthread_join
競爭和臨界區概念
線程同步
互斥,pthread_mutex_*
信號量 (semaphore), sem_*
條件變量 , pthread_cond_*
第四部分 IPC高級編程
線程間通信與進程間通信
posix IPC 和 system V IPC
消息傳遞
無名管道(pipes)
有名管道(fifos)
消息隊列(mg_*, mg*)
同步
互斥, 條件變量, 信號量
共享內存
第五部分 網絡基礎知識
網絡基本概念
路由概念
TCP/IP各個層次的主要協議和功能
如何抓包并分析內容
第六部分 客戶端/服務器編程
客戶端與服務器概念
字節順序與網絡編程常用函數
htons,htonl,ntohs,ntohl,inet_aton inet_ntoa,inet_pton inet_ntop等
socket概念及使用
Bind,connect,listen,accept,recv,send
recvfrom,sendto,select,setsockoption等
第七部分socket網絡高級編程
簡單的TCP C/S
添加錯誤處理
處理SIGPIPE信號
使用fork進行并發處理
使用select
第八部分Web服務器編程
socket處理
http請求處理
文件請求處理
實驗部分課程安排
第一部分I/O實驗
open/close/read/write綜合實驗
fcntl/ioctl綜合實驗
select練習
第二部分 進程實驗
fork/wait/exec綜合練習
mysh:簡化實現的shell
mysh增強:支持重定向和管道
第三部分 線程實驗
圓周率的近似計算
Producer_consumer問題
管程的C++實現
第四部分 IPC實驗
pipe/fifos綜合實驗
消息隊列
信號量
共享內存
第五部分 網絡編程實驗
C/S編程
1.實踐代碼,修改代碼。
2.動手寫自己的服務器。
Web服務器
3.web服務器代碼實踐。
4.動手修改web服務器代碼。
第六部分 網絡設備驅動程序開發
1. 網卡設備介紹
◆ 常見網卡
◆ 網卡芯片所實現的協議層功能
◆ cs8900網卡芯片手冊導讀
◆ cs8900網卡硬件電路分析
2. Linux網絡驅動結構
◆ Linux TCPIP網絡結構概述
◆ Linux網絡設備結構
◇ 網絡設備的注冊
◇ net_device結構分析
◇ 網絡設備驅動的發送,接收和中斷處理
3. 網卡設備介紹
◆ 常見網卡
◆ 網卡芯片所實現的協議層功能
◆ cs8900網卡芯片手冊導讀
◆ cs8900網卡硬件電路分
【實驗】
1.實驗一:ifconfig等命令實驗
2.實驗二:字符設備的網卡驅動實現(上)
3.實驗三:字符設備的網卡驅動實現(下)
4.實驗四:驅動的測試程序編寫運行
第七部分 Linux下的TCP/IP協議棧--隊列層(Queuing Layer)
1. 基本數據結構和初始化
◆softnet data
◆ptype記錄表
◆隊列層初始化
2. 數據包的接收
◆NAPI接口
◆netif rx接口
3. 數據包的發送
◆隊列規則(Queuing Discipline)
◆發送流程. |