课程大纲

简介

  • 目标
  • 你是谁
  • Linux基金会
  • Linux基金会培训
  • 认证项目与数字徽章
  • Linux发行版
  • 平台
  • 准备你的系统
  • 使用和下载虚拟机
  • Linux中的变化

预备知识

  • 流程
  • 标准与LSB

如何参与开源项目 **

  • 如何正确贡献的概述
  • 为安全与质量保持与主线的紧密联系
  • 研究并理解项目的DNA
  • 找出你想解决的问题
  • 识别维护者及其工作流程与方法
  • 尽早获取反馈并公开工作
  • 增量贡献,而不是大量代码提交
  • 放下自我:不要过于敏感
  • 保持耐心,建立长期关系,乐于助人

编译器

  • GCC
  • 其他编译器
  • 主要gcc选项
  • 预处理器
  • 集成开发环境(IDE)
  • 实验

  • 静态库
  • 共享库
  • 链接库
  • 动态链接加载器
  • 实验

Make

  • 使用make和Makefiles
  • 构建大型项目
  • 更复杂的规则
  • 内置规则
  • 实验

源代码控制

  • 源代码控制
  • RCS和CVS
  • Subversion
  • git
  • 实验

调试与核心转储

  • gdb
  • 什么是核心转储文件?
  • 生成核心转储
  • 检查核心转储
  • 实验

调试工具

  • 获取时间
  • 性能分析
  • valgrind
  • 实验

系统调用

  • 系统调用与库函数
  • 如何进行系统调用
  • 返回值与错误码
  • 实验

内存管理与分配

  • 内存管理
  • 动态分配
  • 调整malloc()
  • 锁定页面
  • 实验

Linux中的文件与文件系统 **

  • 文件、目录与设备
  • 虚拟文件系统
  • ext2/ext3文件系统
  • 日志文件系统
  • ext4文件系统
  • 实验

文件I/O

  • UNIX文件I/O
  • 打开与关闭
  • 读取、写入与定位
  • 位置与向量I/O
  • 标准I/O库
  • 大文件支持(LFS)
  • 实验

高级文件操作

  • Stat函数
  • 目录函数
  • inotify
  • 内存映射
  • flock()与fcntl()
  • 创建临时文件
  • 其他系统调用
  • 实验

进程 I

  • 什么是进程?
  • 进程限制
  • 进程组
  • proc文件系统
  • 进程间通信方法
  • 实验

进程 II

  • 使用system()创建进程
  • 使用fork()创建进程
  • 使用exec()创建进程
  • 使用clone()
  • 退出
  • 构造函数与析构函数
  • 等待
  • 守护进程
  • 实验

管道与FIFO

  • 管道与进程间通信
  • popen()与pclose()
  • pipe()
  • 命名管道(FIFO)
  • splice(), vmsplice()与tee()
  • 实验

异步I/O**

  • 什么是异步I/O?
  • POSIX异步I/O API
  • Linux实现
  • 实验

信号 I

  • 什么是信号?
  • 可用信号
  • 信号分发
  • 闹钟、暂停与睡眠
  • 设置信号处理程序
  • 信号集
  • sigaction()
  • 实验

信号 II

  • 可重入性与信号处理程序
  • 跳转与非本地返回
  • siginfo与sigqueue()
  • 实时信号
  • 实验

POSIX线程 I

  • Linux下的多线程
  • 基本程序结构
  • 创建与销毁线程
  • 信号与线程
  • fork与线程
  • 实验

POSIX线程 II

  • 死锁与竞争条件
  • 互斥操作
  • 信号量
  • Futexes
  • 条件操作
  • 实验

网络与套接字

  • 网络层
  • 什么是套接字?
  • 流套接字
  • 数据报套接字
  • 原始套接字
  • 字节序
  • 实验

套接字地址与主机

  • 套接字地址结构
  • 转换IP地址
  • 主机信息
  • 实验

套接字端口与协议

  • 服务端口信息
  • 协议信息
  • 实验

套接字客户端

  • 基本客户端流程
  • socket()
  • connect()
  • close()与shutdown()
  • UNIX客户端
  • 互联网客户端
  • 实验

套接字服务器

  • 基本服务器流程
  • bind()
  • listen()
  • accept()
  • UNIX服务器
  • 互联网服务器
  • 实验

套接字输入/输出操作

  • write(), read()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • 实验

套接字选项

  • 获取与设置套接字选项
  • fcntl()
  • ioctl()
  • getsockopt()与setsockopt()
  • 实验

Netlink套接字**

  • 什么是netlink套接字?
  • 打开netlink套接字
  • netlink消息
  • 实验

套接字多路复用与并发服务器

  • 多路复用与异步套接字I/O
  • select()
  • poll()
  • pselect()与ppoll()
  • epoll
  • 信号驱动与异步I/O
  • 并发服务器
  • 实验

进程间通信

  • IPC方法
  • POSIX IPC
  • System V IPC**
  • 实验

共享内存

  • 什么是共享内存?
  • POSIX共享内存
  • System V共享内存**
  • 实验

信号量

  • 什么是信号量?
  • POSIX信号量
  • System V信号量**
  • 实验

消息队列

  • 什么是消息队列?
  • POSIX消息队列
  • System V消息队列**
  • 实验

要求

本课程适用于有经验的开发人员。学生应精通 C 编程,并熟悉基本的 Linux 实用程序和文本编辑器。

观众

本课程适用于有经验的开发人员。学生应精通 C 编程,并熟悉基本的 Linux 实用程序和文本编辑器。

经验水平: 中级

 28 小时

即将举行的公开课程

课程分类