理论部分课程安排
第一部分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)
◆发送流程. |