课程大纲

介绍

  •  目标
  •  你是谁
  •  Linux 基金会
  •  Linux 基础培训
  •  认证计划和数字徽章
  •  Linux 发行版
  •  平台
  •  准备您的系统
  •  使用和下载虚拟机
  •  Linux 中的情况发生了变化

预赛

  •  程序
  •  标准和 LSB

如何在 OSS 项目中工作 **

  •  关于如何正确贡献的概述
  •  贴近主线,确保安全性和质量
  •  研究并了解项目DNA
  •  弄清楚你想要什么痒 Scratch
  •  确定维护人员及其工作流程和方法
  •  尽早获得意见并公开工作
  •  贡献增量位,而不是大型代码转储
  •  把你的自我留在门口:皮薄
  •  要有耐心,发展长期关系,乐于助人

编译 器

  •  海湾合作委员会
  •  其他编译器
  •  主要 gcc 选项
  •  预处理
  •  集成开发环境 (IDE)
  •  实验室

图书馆

  •  静态库
  •  共享库
  •  链接到库
  •  动态链接加载程序
  •  实验室

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

源代码管理

  •  源代码管理
  •  RCS 和 CVS
  •  颠覆
  •  git
  •  实验室

调试和核心转储

  •  GDB公司
  •  什么是核心转储文件?
  •  生成核心转储
  •  检查核心转储
  •  实验室

调试工具

  •  把握时间
  •  剖析和性能
  •  瓦尔格林德
  •  实验室

系统调用

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

内存 Management 和分配

  •  存储器 Management
  •  动态分配
  •  调优 malloc()
  •  锁定页面
  •  实验室

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

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

文件 I/O

  •  UNIX 文件 I/O
  •  开盘和闭盘
  •  阅读、写作和寻找
  •  位置和矢量 I/O
  •  标准 I/O 库
  •  大文件支持 (LFS)
  •  实验室

高级文件操作

  •  统计函数
  •  目录函数
  •  iNotify公司
  •  内存映射
  •  flock() 和 fcntl()
  •  制作临时文件
  •  其他系统调用
  •  实验室

流程  I

  •  什么是流程?
  •  工艺限制
  •  进程组
  •  proc 文件系统
  •  InterProcess Communication 方法
  •  实验室

流程  II

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

管道和FIFOS

  •  管道和工艺间 Communication
  •  popen() 和 pclose()
  •  管道()
  •  命名管道 (FIFO)
  •  splice()、vmsplice() 和 tee()
  •  实验室

异步 I/O**

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

信号  I

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

信号  II

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

POSIX 线程  I

  •  Linux 下的多线程
  •  基本课程结构
  •  创建和销毁线程
  •  信号和线程
  •  分叉与线程
  •  实验室

POSIX 线程  II

  •  死锁和竞争条件
  •  互斥操作
  •  信号灯
  •  Futexes (英语)
  •  条件运算
  •  实验室

Networking 和插座

  •  Networking 图层
  •  什么是套接字?
  •  流套接字
  •  数据报套接字
  •  原始套接字
  •  字节排序
  •  实验室

套接字 地址和主机

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

套接字、 端口和协议

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

套接字 客户端

  •  基本客户端序列
  •  套接字()
  •  连接()
  •  close() 和 shutdown()
  •  UNIX 客户端
  •  Internet 客户端
  •  实验室

套接字 服务器

  •  基本服务器序列
  •  绑定()
  •  听()
  •  接受()
  •  UNIX 服务器
  •  互联网服务器
  •  实验室

套接字 输入/输出操作

  •  write()、read()
  •  发送()、recv()
  •  sendto(), recvfrom()
  •  sendmsg()、recvmsg()
  •  发送文件()
  •  socketpair()
  •  实验室

套接字 选项

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

Netlink 插槽**

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

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

  •  多路复用和异步套接字 I/O
  •  选择()
  •  投票()
  •  pselect() 和 ppoll()
  •  埃波尔
  •  信号驱动和异步 I/O
  •  并发服务器
  •  实验室

进程间 Communication

  •  IPC的方法
  •  POSIX 工控机
  •  系统 V IPC**
  •  实验室

共享内存

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

信号灯

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

消息队列

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

要求

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

观众

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

经验水平: 中级

 28 小时

人数


每位参与者的报价

即将举行的公开课程