linux进程管理子系统分析,linux进程管理子系统简要分析
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进程管理子系统简要分析相关推荐
- Linux内核源码分析《进程管理》
Linux内核源码分析<进程管理> 前言 1. Linux 内核源码分析架构 2. 进程原理分析 2.1 进程基础知识 2.2 Linux进程四要素 2.3 进程描述符 task_stru ...
- linux大多数进程都是sleep,Linux电源管理(5)_Hibernate和Sleep功能介绍
Linux电源管理(5)_Hibernate和Sleep功能介绍 作者:wowo 发布于:2014-6-10 16:11 分类:电源管理子系统 1. 前言 Hibernate和Sleep两个功能是Li ...
- linux管理子进程c,Linux 进程管理 CGroup
Cgroups控制cup,内存,io资源示例 http://www.cnblogs.com/yanghuahui/p/3751826.html Docker组成LXC+AUFS LXC=cgroup ...
- 别人的Linux私房菜(17)进程管理与SELinux初探
程序在磁盘中,通过用户的执行触发.触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限. PID和登陆者的UID/GID有关.父进程衍生出来的进程为子 ...
- Linux第六周学习总结——进程额管理和进程的创建
Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/cour ...
- Linux系列教程——1 Linux磁盘管理、2 Linux进程管理、3 Linux系统服务、 4 Linux计划任务
文章目录 1 Linux磁盘管理 1.磁盘的基本概念 1.什么是磁盘 2.磁盘的基本结构 3.磁盘的预备知识 1.磁盘的接口类型 2.磁盘的基本术语 3.磁盘在系统上的命名方式 4.磁盘基本分区Fdi ...
- Linux的命名空间详解--Linux进程的管理与调度(二)
原文链接:https://blog.csdn.net/gatieme/article/details/51383322 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Lin ...
- linux内核——3_(进程管理)系统的进程管理
作者:GWD 时间:2019.7.28 一.系统的进程的运转方式 1.系统时间:(jiffies系统滴答):CPU内部有一个RTC,会在上电的时候调用mktime函数算出从1970年1月1日0时开始到 ...
- Linux进程管理(一)进程数据结构
Linux进程管理 Linux进程管理(一)进程数据结构 Linux进程管理(二)进程调度 Linux进程管理(三)进程调度之主动调度 Linux进程管理(四)进程调度之抢占式调度 Linux进程管理 ...
最新文章
- 使用jieba(中文分词)库统计词频
- 结构化数据不应该被人工智能忘之脑后 !
- 请求时的编码问题 Use body.encode(‘utf-8‘) if you want to send it encoded in UTF-8
- 华为平板wps语音朗读_华为隐藏的这五大功能,个个都很实用,如果你不知道,钱就白花了...
- 制作系统盘,重装新系统。
- 无后端完成在线翻译功能
- 【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
- 火狐 移动 html 元素,python中的Firefox+Selenium:如何交互式地获取元素html?
- Linux之JDK安装
- spark sql 查看分区_Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
- Android4.0源码编译方法以及错误解决方案
- 贺利坚老师汇编课程49笔记:call和ret
- php 中 map和array,浅析php中array_map和array_walk的使用对比
- VEGAS如何分割与解组?
- 在vc++如何响应键盘和鼠标事件-visual c++
- Ubuntu上打开windows共享文件夹进行读写操作的命令
- vue项目 情侣空间 纪念日功能模块
- 【堡塔企业级防篡改-重构版】使用手册
- APP如何在应用商店获取较高的排名?
- 苹果发布了Final Cut Pro和Logic Pro的M1新版本
热门文章
- java生成flash_针对 Flash 开发者的最新 Capuchin 计划资源
- 2016专接本c语言真题_云南特岗教师考试真题(中学信息技术)9套(无答案)
- Windows下安装scikit-learn
- python获取当前文件路径
- VMware虚拟机的三种联网方法及原理
- VS编译器安装Eigen
- linux启动过程剖析,分析Linux系统的启动过程
- js中立即执行函数会预编译吗_JavaScript预编译过程
- linux查端口被占用情况,Linux系统中如何查询端口被占用情况
- STM32利用光敏二极管实现光度测量