调用、调用接口、库调用

线性内存地址空间、物理内存地址空间、线性地址、物理地址

交换内存:缺页异常

进程内存结构

常驻内存集、虚拟内存集

进程、进程元数据、结构体、任务结构体、链表

进程类型、状态(read,runing,sleep,stopped,zombie)

可中断睡眠、不可中断睡眠

创建子进程的过程 

进程优先级、进程调度、进程队列

过期队列:抢占式多任务、系统调用IO

IO模型、系统调用IO等待过程

进程间通信:IPC

硬件

编程接口

syscall(系统调用)

libcall(库调用)

硬件

库调用: 用户空间发生(独立的模块或系统调用的二次封装)

系统调用:内核空间发生,特权指令

**如果非内核将要运行特权指令,会发起软中断,CPU会通知内核,除非内核有漏洞,特权指令一定是由内核执行。

调用:载入事先编写好的功能模块

模块:由别人提供,调用此模块完成功能

调用接口:得到模块的途径

例如:想要一双鞋(功能),到鞋店去买(提供功能的位置),鞋店的大门(调用接口)。

内核的功能

驱动硬件、用户及权限管理、网络管理、程序包管理、文件系统管理、进程管理、安全管理

网络管理: ip,ifcfg,nmcli配置ip,route,dns。配置文件配置ip,dns,route,图形工具配置

文件系统管理: 块组、bitmap,GDT,Supper Block,VFS,同步IO、异步IO,写时复制,快照,中断信号,同步、通知机制、扩展槽、适配器、控制器

程序包管理:rpm , yum , dnf (yum比rpm多了查询搜索、事务历史功能),Ip比ifconfig多了(清空,查询过滤)

进程管理

1)进程创建

2)进程调度

CPU使用和不使用的区别

1、都是以相同频率工作

2、消耗电一样

不使用,白白浪费性能

使用,CPU占据60-80%都有价值。

线性内存地址空间、物理内存地址空间、线性地址、物理地址

线性内存地址: 进程使用的地址

进程只能通过线性地址追踪数据

1)将地址映射关系保存于内核内存的task struct表中,由内核虚拟出进程内存为整个内存大小

2)由cpu的MMU(Memory Manager Unit)单元完成映射

交换内存:虚拟内存,中进程内存突然增大,可能物理内存不够用。基于LRU算法找出最近最少使用的内存数据,就将物理内存中的数据放入同内存有相同格式的磁盘中,以后使用时,用相同的方法,将数据交换到磁盘中,将交换分区要使用的数据加载至物理内存中。

当数据从磁盘中调回时,可能物理内存的地址发生变化。引起 “缺页异常”:虚拟内存中的数据地址映射的物理内存的地址没有数据

1、大异常、小异常

2、要从磁盘中读数据:1)数据在交换分区中。2)重读数据

进程内存结构

常驻内存集:不能交换出去的数据:指令所有空间"匿名页"

虚拟内存集:可以交换出去的数据:数据所有空间

进程:运行中的程序

有生命周期:创建、运行、销毁

进程元数据

位置:内核内存中,当进程切换或发起系统调用时,均会操作则表

进程元数据结构

task struct 任务结构体

thead_info 线程信息

flags 标识

run_list 运行列表

mm 内存结构

real_parent 真父

parent 养父

tty 在哪个终端启动

files 打开的文件

signal 自己持有的信号

物理地址和线性地址映射关系

结构体:保存进程元数据的结构

tast_struct : 进程元数据放至结构体中,称为任务结构体。一个进程也称为一个任务

链表

1、任务结构体的组织结构

2、每个结构体的结束处指向下一个有相同结构的结构体的起始处

链表类型

循环链表:最后 一个结构体的结束处指向第一个结构体的起始处

双向链表:结构体的结束处指向下一个结构的起始处,并且此起始处又能指向上一个结构体的开始处

双向循环链表:both above

进程类型

密集型

CPU密集型:优先级低,运行进程少时,也可获取大量CPU资源

IO密集型:优先级高,消耗CPU资源少,在需要CPU时,尽量满足。

前、后台

前台进程:在终端(控制器、虚拟、模拟)启动。 在终端也能启动后台进程(服务进程)或将前台进程送到后台。

后台进程: 随系统启动而启动的进程

进程创建:程序分配cpu资源及内存资源,即为一个进程

刚开机时,进程放在cpu上运行,等内核掌控一切,创建内核空间

内核创建第一个进程(用户空间建立)/sbin/init

init进程:

1、代替内核完成用户空间中操作

2、不能代替内核完成 系统调用的执行

进程创建子进程

1、子进程也能创建子进程

2、子进程和父进程共用一段内存空间,内存空间只读

3、当子进程需要修改内存空间中的数据时,基于写时复制完成

进程销毁:父进程替子进程收尸,如果父进程先于子进程挂。则为子进程找一个养父,才能收尸。

进程的状态:

ready: 在进程队列中等待运行

runing: 在cpu上运行

sleeping: 睡眠

stopped: 在内存中,有task struct但不会调度至cpu上运行,除非手动启动

zombie: 没有父进程清理尸体

睡眠

可中断睡眠:

运行队列:等待被调度至CPU上运行

过期队列:CPU时间消耗完毕

不可中断睡眠

过期队列:系统调用等待IO过程

进程运行中的进程需要完成特定功能

1)系统调用: 特权指令的封装(程序操作硬件时,发起系统调用)

2)子进程完成:父进程调用程序,运行程序创建一个子进程完成功能。

进程优先级、进程调度、进程队列

进程优先级:0-139,0-99:实时优先级,不可调。 100-139(-20,19)静态优先级:普通用户只能调高,root用户没有限制

进程调度:kernel按cpu划分时间片,依据优先级从运行队列挑选出优先级最高的队列,下次调度至cpu上运行

只扫描运行队列,找到优先级最高的队列,即为下次调度至cpu上执行的进程

进程队列:一个优先级对应2个队列:等待被调度至cpu上运行的的队列、过期队列

1、提升进程调度能力

2、一共有280个队列

过期队列:运行队列运行完毕,过期队列和运行队列会互换位置

Linux 多任务模式:抢占式多任务

进程运行时,有几个时间点可以被其他高于当前进程的进程所抢占。被抢占的进程,调度至过期队列,等待下一个循环

系统调用等待IO过程:

发起系统调用的进程,等待系统调用IO时,也会被调度至过期队列中,等待下一个循环

系统调用内核完成IO操作

第一阶段:kernel将磁盘中的数据加载至内存中

第二阶段:将Kernel内存中的数据复制到进程内存中(进程IO过程)


IO模型

同步、异步

阻塞、非阻塞

左侧进程在内核完成特权指令时的的状态。

右侧内核执行特权指令的阶段

同步IO

阻塞:进程挂起,第二阶段看着内核将数据复制到进程内存中(挂起)

非阻塞:进程不挂起,反复查看内核是否已经完成第一阶段,第二阶段看着内核将数据复制到进程内存中

异步IO

IPC: Inter Process Communication

同一主机: 信号、share memory 、 semenphor

信号 signal(masage queue)

共享内存, share memory 找一段内存空间扔数据,另一个进程从内存中读数据

旗语 semnphor

管道: pipe

不同主机: rpc,socket

rpc ,remote processcure call 本机发起调用,在另一个主机执行

socket, ip: port 通信基于TCP,通信前建立TCP连接,二者间,建立虚拟链路

Linux之进程管理基础概念相关推荐

  1. linux进程管理基本概念

    linux进程管理基本概念 进程管理 进程树 什么是进程和程序 启动进程 前台启动进程 后台启动进程 创建进程 1 地址空间 2 进程元数据 3 如何创建进程 特殊进程 僵尸进程 孤儿进程 守护进程 ...

  2. 2022-07-17 Linux group与user基础概念

    Linux group与user基础概念 概念 user 用户 group 用户组 Linux 命令使用 user 用户 useradd 添加用户 userdel 删除用户 usermod 修改账号 ...

  3. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

  4. linux进程管理 pdf,高效与精细的结合--Linux的进程管理.pdf

    高效与精细的结合--Linux的进程管理.pdf 第 卷 第 期 A 文献标识码 I T6L 76 28 L J6 7 8 676 LJ Q Q656 8J6 6 82 K 797863 R28J 2 ...

  5. Linux内核-进程管理

    Linux内核-进程管理 引言 本文主要介绍Linux内核进程管理相关知识,包括进程描述符.进程创建.销毁.状态.线程的实现以及Linux进程相关命令等. 进程描述符 内核把进程的列表存放在叫做任务队 ...

  6. Linux操作系统的进程管理详解

    Linux操作系统的进程管理详解 pkill & pgrep pkill & pgrep 是两个很方便的命令.省去了要先ps auwx | grep xxxx然后再根据pid kill ...

  7. 【Linux】进程管理之kill、killall、pkill

    一.kill 命令   Linux 中的 kill 命令用来终止指定的进程的运行,是 Linux 下进程管理的常用命令.通常,终止一个前台进程可以使用 Ctrl+C 键,但是,对于一个后台进程就须用 ...

  8. 挑战360无死角讲解Linux内核 进程管理,调度器的5种实现丨C++后端开发丨C/C++Linux服务器开发丨内核开发丨网络编程

    挑战360无死角讲解 进程管理,调度器的5种实现 1. 8500行 CFS是什么 2. RT调度器使用场景 3. IDLE/Dealine调度器 视频讲解如下,点击观看: 挑战360无死角讲解Linu ...

  9. 第10章 Linux的进程管理

    文章目录 文档配套视频讲解链接地址 第10章 进程管理 10.1 进程的理解与分类 10.2 进程管理命令 1. ps 查看进程命令 2. kill 杀死进程命令 3. pstree命令 4. top ...

  10. Linux内核——进程管理与调度

    进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ...

最新文章

  1. Windows 平台编译 WebRTC
  2. 第20章 TCP的成块数据流
  3. 树莓派python开发教程_树莓派Raspberry开发从基础到进阶视频+设计资料超详细教程下载...
  4. ElementUI:没有dist文件夹,vue项目打包后字体图标失效,变成小方框解决方案
  5. 【随笔】稚晖君软件硬件环境总结
  6. Reac版本的Ant Design树形控件的使用、搜索关键字标红、只显示搜索匹配中的数据
  7. 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)
  8. 人工智能/数据科学比赛汇总 2019.8
  9. MPB:农科院牧医所赵圣国组-微生物DNA、RNA和蛋白质共提取方法
  10. 【nowcoder 224882】牛牛和数组操作(贪心)(剪枝)(区间DP)
  11. 腾讯云图地图使用介绍
  12. Mybatis官方文档及使用简记
  13. Geospark电火花使用再记录
  14. torchnet.meter使用教程
  15. 互联网领袖们的形象到底是如何走下神坛的?
  16. Excel启动AutoCAD
  17. 计算机摄像头原理,教你了解网络摄像机的工作原理
  18. 安全购买数码相机七大步骤[荐]
  19. Codeforces-429-2-B Godsend
  20. 骁龙888旗舰蓄势待发,高端手机影像实力再升级

热门文章

  1. 2010-11-25
  2. Symbian编程总结-基础篇-活动对象正解(1)-理解活动对象
  3. MSRCR(Multi-Scale Retinex with Color Restore)
  4. pytorch自动微分的几个例子
  5. IDL | 语句练习
  6. apache启动失败查看错误信息
  7. 并发编程之美(1)并发编程基础
  8. 平衡二叉树---- AVL树
  9. 题目:输入某年某月某日,判断这一天是这一年的第几天?
  10. Java并发编程实战读书笔记5 ---Executor在android中的应用