嵌入式之进程

本文详细介绍了进程的概念,包括进程的组成、属性,重点解析了fork()系统调用的工作原理以及传统Unix中创建和管理进程的方法。同时,讨论了wait和waitpid函数在等待进程结束时的作用,阐述了进程在Linux系统中的生命周期和父子进程的关系。
摘要由CSDN通过智能技术生成

什么是进程?

进程是一个正在执行的程序的实例。

进程由哪些元素组成?

➢程序的当前上下文,程序当前的执行状态
➢程序的当前执行目录
➢程序访问的文件和目录
➢程序的访问权限
➢内存以及其他分配给进程的系统资源

进程的属性

  • 进程号(PID)
  • 父进程号(PPID)
  • 进程名
  • 用户
  • cpu%
  • 内存%
  • 优先级
  • 开启时间等

进程最重要的属性是进程号(PID) ,以及父进程号(PPID) 。一个进程有唯一的进程号,如果一个进程创建 了一个子进程, 那么它的进程号就是子进程的父进程号。
1号进程(init) :即PID=1,负责引导系统、启动守护进程以及运行其他必要的程序。

扩展:
扩展来源

  • 系统允许一个进程创建新进程,即子进程,子进程还可以创建新的子进程,形成进程树结构模型。整个linux系统的所有进程其实就是一个树形结构。树根是系统自动创建的,即内核态下执行的0号进程,它是所有进程的祖先。由0号进程创建1号进程(内核态),1号负责执行内核的部分初始化工作及进行系统配置,并创建若干个用于高速缓存和虚拟主存管理的内核线程。随后,1号进程调用 execve() 运行可执行程序init,并演变成用户态1号进程, 即init进程。它按照配置文件/etc/initab的要求,完成系统启动工作,创建编号为1号、2号……的若干终端注册进程getty。
  • 每个getty进程设置其进程组标识号,并监视配置到系统终端的接口线路。当检测到来自终端的连接信号时,getty进程将通过函数 execve() 执行 注册程序login,此时用户就可输入注册名和密码进入登录过程,如果成功,由login程序再通过函数 execv() 执行shell,该shell进程 接收getty进程的pid,取代原来的getty进程。再由shell直接或间接地产生其他进程。
    这里1号进程有一个从内核到用户状态的改变

fork()系统调用的功能和执行过程

fork系统调用可以产生一个新进程。

#include<unistd.h>
pid_ _t fork( void );

如果fork执行成功,就向父进程返回子进程的PID,并向子进程返回0。这意味着即使只调用一次fork, 也会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值