汇总
Linux系统编程学习大纲
1. 多进程编程
- 进程创建与管理
fork()
,vfork()
,clone()
exec*()
系列函数wait()
,waitpid()
- 进程属性
- 进程ID (
getpid()
,getppid()
) - 进程组 (
setpgid()
,getpgid()
) - 会话 (
setsid()
,getsid()
)
- 进程ID (
2. 进程间通信(IPC)
- 管道(Pipe)
- 无名管道 (
pipe()
) - 命名管道 (
mkfifo()
)
- 无名管道 (
- 消息队列
- 创建和删除消息队列 (
msgget()
,msgctl()
) - 发送和接收消息 (
msgsnd()
,msgrcv()
)
- 创建和删除消息队列 (
- 共享内存
- 创建和销毁共享内存段 (
shmget()
,shmdt()
,shmctl()
) - 附着和分离共享内存 (
shmat()
,shmdt()
)
- 创建和销毁共享内存段 (
- 信号量
- 创建和销毁信号量集 (
semget()
,semctl()
) - 操作信号量 (
semop()
)
- 创建和销毁信号量集 (
3. 信号处理
- 信号基础知识
- 信号类型
- 信号默认行为
- 信号处理函数
signal()
,sigaction()
- 信号集
sigemptyset()
,sigfillset()
,sigaddset()
,sigdelset()
,sigsuspend()
4. 特殊进程
- 孤儿进程与僵尸进程
- 守护进程
- 创建守护进程 (
daemon()
) - 设置工作目录和文件权限掩码
- 创建守护进程 (
- 精灵进程
- 进程生命周期
- 精灵进程的作用
5. 多线程编程
- 线程基础
- 线程的概念
- 线程属性
- POSIX线程(pthreads)
- 创建线程 (
pthread_create()
) - 线程同步 (
pthread_mutex_t
,pthread_cond_t
) - 线程取消 (
pthread_cancel()
) - 线程属性 (
pthread_attr_t
)
- 创建线程 (
6. 线程池
- 线程池设计
- 线程池的创建与销毁
- 任务队列
- 线程池API
- 分配任务 (
pthreadpool_submit()
) - 线程池等待 (
pthreadpool_wait()
)
- 分配任务 (
7. 实践项目
- 实现一个简单的客户端-服务器模型
- 使用管道、消息队列或共享内存进行通信
- 守护进程编程
- 创建一个后台运行的服务
- 线程池实现
- 设计并实现一个简单的线程池
- 并发文件系统操作
- 使用多线程或多进程实现并发文件读写
8. 参考资料和资源
- 书籍
- 《Advanced Programming in the Unix Environment》 by W. Richard Stevens
- 《UNIX Network Programming》 by W. Richard Stevens and Bill Fenner
- 在线教程
- 官方文档
- Linux man pages
- 编程实践
一、多进程
多进程编程学习大纲
-
进程基础
- 进程的概念
- 进程的状态(就绪、运行、阻塞)
- 进程的生命周期
- 进程ID (PID) 和父进程ID (PPID)
-
进程创建
fork()
函数vfork()
函数clone()
函数- 创建子进程的注意事项
-
进程控制
- 进程执行 (
exec*()
系列函数) - 进程等待 (
wait()
,waitpid()
) - 进程终止 (
exit()
,_exit()
,abort()
)
- 进程执行 (
-
进程间通信(IPC)
- 管道
- 无名管道 (
pipe()
) - 命名管道 (
mkfifo()
)
- 无名管道 (
- 消息队列
- 创建 (
msgget()
) - 操作 (
msgsnd()
,msgrcv()
)
- 创建 (
- 共享内存
- 创建 (
shmget()
) - 附着 (
shmat()
) - 操作共享内存区域
- 创建 (
- 信号量
- 创建 (
semget()
) - 操作 (
semop()
- 创建 (
- 套接字
- 管道
-
信号处理
- 信号基础
- 信号处理函数 (
signal()
,sigaction()
) - 信号集操作 (
sigemptyset()
,sigfillset()
,sigaddset()
,sigdelset()
,sigsuspend()
)
-
特殊进程
- 孤儿进程
- 僵尸进程
- 守护进程 (
daemon()
)
-
案例分析与实践
- 编写一个简单的父子进程通信程序
- 实现一个简单的消息队列服务
- 创建和管理守护进程
-
并发与并行
- 并发与并行的概念
- 并发与并行的区别
- 并发编程的优点与挑战
- 并行编程的优点与挑战
-
同步机制
- 锁(Mutexes)
- 信号量
- 条件变量
- 互斥量
- 读写锁
-
死锁与饥饿
- 死锁的概念与预防
- 饥饿的概念与预防
- 死锁的四个必要条件
- 死锁检测与恢复
多进程学习资料:
- Linux下的多进程编程 - RunningSnail - 博客园 (cnblogs.com)
- 多进程和多线程的概念 - fengMisaka - 博客园 (cnblogs.com)
- 彻底理解 进程、线程、多进程、多线程-阿里云开发者社区 (aliyun.com)
- java - 图文并茂-带你搞懂多线程和多进程 - 个人文章 - SegmentFault 思否
- 多进程和多线程区别以及优缺点[通俗易懂]-腾讯云开发者社区-腾讯云 (tencent.com)
- 并发与并行的区别-CSDN博客
- linux进程(一)——什么是进程?-CSDN博客
- Linux:进程概念(三.详解进程:进程状态、优先级、进程切换与调度)-腾讯云开发者社区-腾讯云 (tencent.com)
并发,并行,同步,死锁,饥饿,竞争条件,进程间通信,守护进程