史上最强最细腻的linux嵌入式C语言学习教程【李慧芹老师】

硬啃408计算机操作系统,学习起来跟八股文没啥区别。还是得从实践出发,从应用的角度去了解。
进程环境
1.main函数
int main(int argc, char *argv[])
2.进程的终止情况
正常终止:
从main函数返回
调用exit
调用_exit或_Exit
最后一个线程从启动例程返回
最后一个线程调用 pthread_exit
异常终止:
调用abort
接到一个信号并终止
最后一个线程对其取消请求作出响应
echo &?打印上一条语句的执行状态

3.命令行参数的分析
4.环境变量
5.C程序的存储空间布局
6.库
7.函数跳转
8.资源的获取及控制
1.进程标识符pid
类型pid_t ,有符号16位,虚拟机技术
命令:ps ax -L / axf / axm
文件描述符
进程号是顺次向下使用,不是优先使用编号最小
getpid();
getppid();
2.进程的产生:fork()
执行一次返回两次,duplicating(复制) the calling process,memory copy,拷贝、克隆一模一样
fork后父子进程的区别:fork的返回值不一样,pid不同, ppid不同, 未决信号和文件锁不继承,资源利用量归零
init进程,是所有进程的祖先进程



调度器的调度策略来决定进程运行的先后顺序
sleep(1)
ps axf 阶梯状
孤儿进程、僵尸进程

重定向,Begin打印了两次
换行是无效的
fflush(NULL), fork之前要刷新所有该刷新的流


time ./primer0 > /dev/null


子进程没有一个退出的标记


S+, SLEEP
Z+,ZOMBINE
父进程结束,子进程变成了孤儿,由Init进行接收管理
“回收僵尸进程”
ps axf
time ./isprime > /dev/null
make isprime
zombine:僵尸
释放pid,pid非常的宝贵
vfork()与父进程共享存储区
3.进程的消亡及释放资源
wait()
waitpid()
waitid()
wait3()
wait4()
分块法
交叉分配法

池类算法,涉及到竞争与冲突



4.exec函数族
few
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

END打印不出来
fflush(NULL)
5.用户权限及组权限
6.观摩课:解释器文件
7.system()
8.进程会计
9.进程时间
10.守护进程
11.系统日志