主页 > 软件开发  > 

linux5-多任务--进程fork()

linux5-多任务--进程fork()
一.多任务:让系统具备同时处理多个任务的能力 1.如何实现多任务 1.1进程:操作系统上正在运行的程序,需要消耗内存和CPU

1.1.1 进程的生存周期:创建、调度、消亡 1.1.1.1进程的创建:每个进程被创建时,操作系统会为该进程分配4G的虚拟内存空间。

1.1.1.2进程的调度:微观串行、宏观并行

cpu在调度时常用的调度算法:时间片轮转调度算法、高优先级优先算法、先来先服务后来后执行、短作业优先

进程的状态:三态图

1

linux进程七态图

1.运行态(用户运行态、内核运行态) R

正在执行,且被CPU任务调度所执行的进程 2.就绪态 R 正在执行,没有CPU任务调度执行的进程(只缺少cpu) 3.可唤醒等待态 S 也称为睡眠态,阻塞等待资源的进程 4.不可唤醒等待态 D 不想被CPU任务调度所打断的进程任务可以设置为不可唤醒等待态 5.暂停态 T 被暂停执行的进程 6.僵尸态Z

进程执行结束,空间没有被回收 7.结束态 X 进程执行结束,空间被回收

1.1.1.3进程的消亡

提出进程

回收进程

1.1.2进程与程序的区别 进程程序存储区域不同内存硬盘状态不同动态执行过程、短暂的静态的数据集合、永恒的关系一个进程可以运行多个程序程序运行可以产生多个进程进程需要消耗CPU,进程间会资源竞争

1.1.3进程的常用命令

ps -aux:查看系统中所有进程的信息和状态

PID:进程的ID号   PPID:父进程的ID号

父进程:创建新进程的进程称父进程

子进程:创建出的新进程

操作系统运行时会打开一号进程,由一号打开2、3……进程

top:动态查看当前系统进程状态及CPU/内存占有率

ps -ef:查看进程状态信息和父子进程ID号

pstree:查看进程间的关系  pstree -p(关系族谱可带ID号) pstree -p id号(可查看某id的关系族谱图)

kill(给进程发送信号)

kill -l 查看kill相关命令的信号数

kill -信号编码 pid让某pid进程执行编码

ps -aux | grep a.out(组合命令)

|管道:将前面的输出作为后面的输入

grep(查找匹配)

jobs(查看后台进程编号)(当前终端)

fg(将后台编号将进程调到前台)

pid_t fork(void);

功能:通过拷贝父进程产生一个新的子进程

           拷贝父进程0-3G的虚拟内存

           内核中拷贝父进程的PCB块更新自己的PID号

            父子进程用户空间互相独立,数据不独立

参数无

返回值:

        成功:子进程的ID号返回给父进程、0返回给子进程

        失败:-1返回父进程

当产生子进程后,根据FIFO调度算法,先执行父进程,由于内核的PCB保存了父进程的产生子进程的位置,继续向下执行。

fork()&&fork()||fork()为五个进程,要根据返回值查看,是否fork()

pid_t  getpid() ;获取子进程ID

pid_t  getppid(); 获取父进程ID

标签:

linux5-多任务--进程fork()由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“linux5-多任务--进程fork()