嵌入式操作系统网络编程(6)

D3.24

1、多任务 VS 单任务(并发VS并行)

2、进程的特点:每个进程拥有独立的虚拟地址空间(内核态:1G 用户态:3G(栈、堆、数据段(bss、or、静态数据区))、代码段)

3、进程pid:每个进程创建都有自己的id号 getpid getppid

4、进程控制块(PCB):每个进程创建都会有自己进程控制块(struct task_struct)(pid\ppid\fd\parent\child\os\mem)

5、如何创建进程?(对于开发人员,只需要知道如何创建进程,至于进程的调度是由os决定)

Fork:创建进程(1、给子进程分配空间 2、拷贝父进程的数据及代码到子进程、3、给父进程返回大于0(子进程pid),给子进程返回==0)

练习:

1、vfork:创建子进程;

执行顺序:子进程执行结束后,父进程执行;

空间:子进程共享父进程的内存空间;

2、进程退出:exit VS_exit

exit:库函数,里面封装了_exit();

_exit:系统调用接口API

_exit函数退出进程,不会使进程刷新缓冲区;

exit函数在调用_exit之后,会刷新缓冲区

D3.25

1、进程创建

fork

system

exec函数族/execl execv

2、进程退出

exit、_exit

3、进程等待

wait(僵尸进程:父进程先于子进程退出、子进程资源无法回收)

孤儿进程(父进程退出,没有调用wait或者waitpid等待子进程退出,子进程的资源无法回收,则变为僵尸进程)、

守护进程(后天运行的进程、周期性处理任务)–作业:csdn更新如何实现守护进程?

4、进程调度(内核进行调度)

站在开发人员的角度:只需要学会如何创建进程,使创建的进程能够安全的访问资源;

站在系统实现的角度:调度算法(流水线)

进程状态:

就绪态、执行态、等待态

进程同步(互斥)

你可能感兴趣的:(嵌入式操作系统网络编程(6))