EDA365电子论坛网

标题: 迅为i.MX6ULL终结者进程基础-进程创建 [打印本页]

作者: 阳阳天    时间: 2021-3-3 14:06
标题: 迅为i.MX6ULL终结者进程基础-进程创建
进程指正在运行的程序,资源分配的最小单位,可以通过“ps ”或“top”等命令查看正在运行的进程,线程是系统的最小调度单位,一个进程可以拥有多个线程,同一进程里的线程可以共享此进程的同一资源。本章代码在process/目录下。
/ ]& W. ^3 g; K0 c, w进程类型:
: }2 P, T2 l/ [4 o& s, S1.交互进程:由shell启动,用户和计算机进行问答的进程。
& [. ]9 J9 L( }) a$ Z2 h2.批处理进程:不与特定终端相关联,将任务提交到等待队列按顺序执行的进程。
6 ?1 d5 l/ i# f0 y3 U3.守护进程:后台运行的特殊进程,用户不能和它进行会话。2 \# \& e( j' I* S5 {6 u
进程的三种状态:' b% p; ^' q0 z
' Z' {! M, K, h
1.运行态,正在运行或在运行队列中等待。
2 o2 q$ G$ i: Z. @% P5 Z2.可中断等待态,休眠, 在等待申请的资源有效或等待中断,信号唤醒。
; r% X3 l% p, m$ E3.不可中断等待态,休眠等待资源有效,不能被中断或信号唤醒。4 T- N1 o" d6 ^& h4 K6 `* f$ E! l
4.终止态,进程被停止或者被跟踪状态,收到SIGCONT信号时,又会恢复运行状态。
; t$ m1 L' P) L7 S- r! I4 b3 O1 ?6 ~/ a5.僵尸态,进程因某种原因而中止运行,但进程描述符仍存在,不可被Kill。
& d" q$ Y, m9 T( b8 R# Q如果想销毁某一进程,可在终端输入“ps -elf”查看进程号,如图 66.2:
" W3 B  {, p  X# F1 u$ w7 n  W
1 f  ]5 X' I0 }8 }% t) H如果要销毁qtcreator进程,使用“kill -9 3001”可以销毁它,8 Z' S, z5 Q9 v7 ^# I
3 R; o) Q. y! l
1进程创建+ T; s, d) D; |. K
所有的进程都是由其他进程创建(除了pid为0号的idle进程),pid号为1的init进程是系统启动后运行的第一个进程,是所有进程的父进程,init进程会初始化一部分系统服务,创建其他进程。
; m5 O/ J: k8 g! j创建新进程的那个进程称为父进程,新进程称为子进程,父进程和子进程拥有相同的代码段数据段,有各自独立的地址空间。采用写时拷贝技术,即创建的新进程不会立即把父进程的资源空间复制过来,只有在修改时才会复制资源,另外父进程挂起的信号和文件锁不会被子进程继承。
" \1 @7 }* @& m子进程结束后,它的父进程要回收它的资源,否则就会成为僵尸进程 。) r& K# O. `0 w
如果父进程先结束,子进程会被init进程收养,称为孤儿进程。
) t7 v- K% z4 i- h% a# M2 H终端输入“ps -el”查看进程状态,PID为进程号,PPID为此进程的父进程号,如图 1.1,1505号进程的父进程为1366进程。
: O5 y) W$ A$ R0 |( z; Z1 D
+ U7 c& q" P8 P7 v% Q; A, L3 r7 j( d0 x6 |; y! b. Z4 f
getpid():获取进程PID,
2 F/ ], `: K* }: k  j0 V
' c& l7 ]' h! Z9 W/ y- }7 a, g* _0 c返回值为PID号。: O1 \" U! H8 i1 B
fork():系统调用,创建一个进程,! r) Z* M& B6 \4 I# @; M# R  {8 A- g
#include
' s' ~4 {+ ~( t8 v6 ipid_t fork(void);. \& c; N/ Z! Q& |  T8 P
调用成功父进程返回子进程号,子进程返回0,失败返回-1。
+ U" J) C- _7 g- f/ B+ W如以下代码:2 [! L% x: z* |
for.c:1 o& a+ U5 p* k+ Q& o, O& n3 n

1 e$ g+ }3 k, O! t打印结果:
2 ?% }3 K4 A/ ~) G( W# e2 F
* o1 h4 W$ o( L$ v程序执行过程中第一次调用fork()进程2531创建子进程2532;第二次fork(),进程2531创建子进程2533,进程2532创建2534,创建过程如图 1.3:
, k% [/ m0 H+ F. {, D4 q7 ?! \8 P' x6 \- `, b2 N8 _6 `
. ]! x: }# N* O$ y

作者: modengxian111    时间: 2021-3-5 09:40
进程指正在运行的程序,资源分配的最小单位




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2