Linux进程管理:

进程与程序:

程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。

进程:是一个执行中的程序,它是动态的实体

进程四要素:

1. 有一段程序供其执行,这段程序不一定是某个进程所专有,可以与其他进程共用

2. 有进程专用的内核空间堆栈

3. 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能成为内核调度的一个的一个基本单位接收内核的调度。

4. 有独立的用户空间

Linux进程状态

1. TASK_RUNNING

进程正在被CPU执行,或者已经准备就绪,随时可以执行,当一个进程刚被创建时,就处于TASK_RUNNING状态。

2. TASK_INTERRUPTIBLE

处于等待中的进程,待等待条件为真时被唤醒,也可以被信号或者中断唤醒。

3. TASK_UNINTERRUPTIBLE

处于等待中的线程,待资源有效时唤醒,但不可以由其它进程通过信号或中断唤醒。

4. TASK_KILLABLE

Linux2.6新引入的进程睡眠状态,原理类似于TASK_UNINTERRUPTIBLE,但是可以被致命信号SIGKILL唤醒。

5. TASK_TRACED

正处于被调试状态的进程

6. TASK_DEAD

进程退出时(调用do_exit)所处的状态

Linux进程描述

在Linux内核代码中,线程、进程都使用结构task_struct(sched.h)来表示,它包含了大量描述进程/线程的信息,其中比较重要的有:

pid_t pid;//进程号

long state;//进程状态

int prio;//进程优先级

Linux进程调度:

调度的概念:从就绪的进程中选出最合适的一个来执行。

1. 调度策略

SCHED_NORMAL(SCHED_OTHER):普通的分时进程

SCHED_FIFO:先入先出的实时进程

SCHED_RR:时间片轮转的实时进程

SCHED_BATCH:批处理进程

SCHED_IDLE:只在系统空闲时才能够被调度执行的进程

2. 调度时机

什么时候发生调度?即shedule()函数什么时候被调用。

调度时机----主动式

在内核中直接调用schedule().当进程需要等待资源等而暂时停止运行时,会把自己的状态置于挂起(睡眠),并主动请求调度,让出CPU。

范例:

1. current->state = TASK_INTERRUPTIBLE;

2. schedule();

调度时机---被动式

被动式调度又名:抢占式调度。分为:用户态抢占和内核态抢占。

用户态抢占:

内核态抢占:

调度时机---抢占计数

3. 调度步骤

Schedule函数工作流程如下:

1>. 清理当前运行中的进程

2>.选择下一个要运行的进程

3>.设置新进程的运行环境

4>.进程上下文切换

linux进程管理子系统分析,linux进程管理子系统简要分析相关推荐

  1. Linux内核源码分析《进程管理》

    Linux内核源码分析<进程管理> 前言 1. Linux 内核源码分析架构 2. 进程原理分析 2.1 进程基础知识 2.2 Linux进程四要素 2.3 进程描述符 task_stru ...

  2. linux大多数进程都是sleep,Linux电源管理(5)_Hibernate和Sleep功能介绍

    Linux电源管理(5)_Hibernate和Sleep功能介绍 作者:wowo 发布于:2014-6-10 16:11 分类:电源管理子系统 1. 前言 Hibernate和Sleep两个功能是Li ...

  3. linux管理子进程c,Linux 进程管理 CGroup

    Cgroups控制cup,内存,io资源示例 http://www.cnblogs.com/yanghuahui/p/3751826.html Docker组成LXC+AUFS  LXC=cgroup ...

  4. 别人的Linux私房菜(17)进程管理与SELinux初探

    程序在磁盘中,通过用户的执行触发.触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限. PID和登陆者的UID/GID有关.父进程衍生出来的进程为子 ...

  5. Linux第六周学习总结——进程额管理和进程的创建

    Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/cour ...

  6. Linux系列教程——1 Linux磁盘管理、2 Linux进程管理、3 Linux系统服务、 4 Linux计划任务

    文章目录 1 Linux磁盘管理 1.磁盘的基本概念 1.什么是磁盘 2.磁盘的基本结构 3.磁盘的预备知识 1.磁盘的接口类型 2.磁盘的基本术语 3.磁盘在系统上的命名方式 4.磁盘基本分区Fdi ...

  7. Linux的命名空间详解--Linux进程的管理与调度(二)

    原文链接:https://blog.csdn.net/gatieme/article/details/51383322 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Lin ...

  8. linux内核——3_(进程管理)系统的进程管理

    作者:GWD 时间:2019.7.28 一.系统的进程的运转方式 1.系统时间:(jiffies系统滴答):CPU内部有一个RTC,会在上电的时候调用mktime函数算出从1970年1月1日0时开始到 ...

  9. Linux进程管理(一)进程数据结构

    Linux进程管理 Linux进程管理(一)进程数据结构 Linux进程管理(二)进程调度 Linux进程管理(三)进程调度之主动调度 Linux进程管理(四)进程调度之抢占式调度 Linux进程管理 ...

最新文章

  1. 使用jieba(中文分词)库统计词频
  2. 结构化数据不应该被人工智能忘之脑后 !
  3. 请求时的编码问题 Use body.encode(‘utf-8‘) if you want to send it encoded in UTF-8
  4. 华为平板wps语音朗读_华为隐藏的这五大功能,个个都很实用,如果你不知道,钱就白花了...
  5. 制作系统盘,重装新系统。
  6. 无后端完成在线翻译功能
  7. 【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
  8. 火狐 移动 html 元素,python中的Firefox+Selenium:如何交互式地获取元素html?
  9. Linux之JDK安装
  10. spark sql 查看分区_Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
  11. Android4.0源码编译方法以及错误解决方案
  12. 贺利坚老师汇编课程49笔记:call和ret
  13. php 中 map和array,浅析php中array_map和array_walk的使用对比
  14. VEGAS如何分割与解组?
  15. 在vc++如何响应键盘和鼠标事件-visual c++
  16. Ubuntu上打开windows共享文件夹进行读写操作的命令
  17. vue项目 情侣空间 纪念日功能模块
  18. 【堡塔企业级防篡改-重构版】使用手册
  19. APP如何在应用商店获取较高的排名?
  20. 苹果发布了Final Cut Pro和Logic Pro的M1新版本

热门文章

  1. java生成flash_针对 Flash 开发者的最新 Capuchin 计划资源
  2. 2016专接本c语言真题_云南特岗教师考试真题(中学信息技术)9套(无答案)
  3. Windows下安装scikit-learn
  4. python获取当前文件路径
  5. VMware虚拟机的三种联网方法及原理
  6. VS编译器安装Eigen
  7. linux启动过程剖析,分析Linux系统的启动过程
  8. js中立即执行函数会预编译吗_JavaScript预编译过程
  9. linux查端口被占用情况,Linux系统中如何查询端口被占用情况
  10. STM32利用光敏二极管实现光度测量