ARM Linux 进程线程管理

ARM Linux 进程线程管理

(一) 进程描述符及任务结构

1.进程概念

进程本质即是一个程序的一次执行的过程
进程和程序由本质的区别:程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,是程序执行的过程,包括动态创建、调度和消亡的整个过程,是程序和资源管理的最小单位。用户在系统中键入命令执行一个程序时,对系统而言,将启动一个进程。

2. Linux中进程描述符

Linux系统包括以下几种进程

  • 交互进程:由shell控制,可在前台运行,也可在后台运行
  • 批处理进程:不属于某个终端,被提交到队列中
  • 守护进程:只有需要时才被唤起在后台,一般在Linux启动时开始执行

正在执行的进程包括处理器当前的一切活动。Linux是一个多进程的操作系统,其他的进程必须等正在运行的进程空闲CPU后才能运行,由内核中的调度算法决定将CPU分配给哪一个进程。

(1)进程状态

  • 运行:一般指就绪态,此时进程可随时投入运行和运行状态
  • 可中断:此时进程停止运行,直到满足继续运行的条件
  • 不可中断: 进程停止运行,但即使获得满足 运行的条件,也不会正常运行
  • 僵尸: 运行结束,等待父进程销毁
  • 停止:进程停止运行

转换关系如下
在这里插入图片描述
(2)任务标识
Linux内核通过唯一的进程标识值PID来标识每个进程。PID短整数型的数,最大值32767

3.进程的创建、执行和终止

(1)进程的创建和执行
Linux中进程的创建很特别,是由两个单独的函数执行:fork()和exec()。首先fork()通过拷贝当前进程创建一个子进程,子进程与父进程的区别仅仅在于不同的PID、PPID和某些资源及统计量。exec函数负责读取可执行文件并将其载入地址空间开始运行。
(2)进程的终止
Linux首先把终止的程序设为僵尸态,此时程序无法运行,父进程得到子进程申请死亡的信息,调用wait4(),杀死子进程,释放子进程占用的所有资源。

(二) 进程的调度

1.Linux进程调度概述

进程调度是指确定CPU执行那个进程。以优先调度为基础,即优先运行优先级最高的进程。在此基础上,通过被调度优先级的范围,又可以把进程分为实时进程和一般进程,实时进程优先于一般进程,并有特殊调度策略保证他们实时性。
当前内核默认配置是:进程优先级在0-139,其中实时进程0-99,一般进程100-139.实时进程优先级不会改变,一般进程分为静态和动态两种,静态优先级在进程产生时确定,动态优先级会随进程转台动态变化。
2.进程调度算法

(三) Linux中的线程

Linux实现线程的机制非常独特。从内核的角度说并没有线程的概念。Linux把线程当做进程来实现,仅将其视为使用密歇共享资源的进程。每个线程都有唯一隶属于自己的task_struct,在内核中看起来就像是一个普通的进程。

(四)Linux中的进程通信

Linux中使用较多的进程间通信方式以下几种:

  • 管道(Pipe)及有名管道(named pipe): 管道用于有亲缘关系进程间的通信;有名管道,除管道的功能外,还允许无亲缘关系的进程间通信。
  • 信号(signal): 信号是在软件层次上渡中断机制的一种模拟,是比较复杂的通信方式,用于通知接受进程有模式发生,一个进程收到一个信号处理器收到一个中断请求效果上是一样的。
  • 消息队列 :消息队列是消息的链接表,它克服了前两种方式信息量有限的特点。
  • 共享内存 : 最有用的进程间通信方式,使多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程对共享内存数据的更新。
  • 信号量
  • 套接字(socket)用于不同机器之间进程的通信。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值