本文主要是介绍嵌入式操作系统网络编程(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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!