波奇学Linux:Linux进程状态,进程优先级

2023-12-16

编写一个程序模拟进程

查看进程状态

修改代码后发现进程状态为由S+变成R+

R为运行态,S为阻塞态

第一次为S是因为调用了外设(printf调用屏幕外设),实际上应该为R,S状态轮换,但是R太快了,所以每次查到了都为S。

R+为前台运行,运行bash指令无反应。

R加入& 为后台运行,可以运行bash指令,此时只能用kill指令来取消进程

大部分的程序都属于sleep状态,等待资源输入,比如scanf和bash命令行。

D状态(Disk sleep):深度睡眠的阻塞态

S状态叫做前度睡眠,可以被外部操作唤醒,如外部输入kill指令关掉进程。

当进程把数据从内存写入磁盘,进程进入S状态。

当资源压力太大,操作系统可以杀掉进程,为了防止写入磁盘的进程被杀掉,进程进入D状态,进程就不能被杀死。

D状态不响应操作系统的任何操作。当高I/O状态下,才能看到D状态。

T状态:暂停进程

19号命令取消进程,18号命令唤醒暂停的指令。

T状态和S状态区别,S状态常用于等待资源。两种都是阻塞状态

t,X,Z状态

t状态(trace stop):暂停状态的一种,同样也是阻塞状态,常被用于断点处

X(dead):终止态,进程结束

Z(zombie):僵尸态,进入X状态前进入Z状态。

Z状态会在X状态前维持进程状态等信息。传递信息等给父进程。

编写父子进程,此时父进程没有对子进程做任何事情,子进程退出,保持僵尸态。

进程一般退出时,如果父进程没有主动回收,子进程信息,子进程一直让自己出于z状态,进程的相关资源尤其是task_struct结构体不能被释放。

如果父进程一直不释放,会造成资源浪费。

父进程先于子进程销毁

此时运行的子进程的父进程变成操作系统(操作系统pid为1)

该进程被系统领养,该子进程也叫 孤儿进程 ,该进程的资源被系统回收。

直接kill能让父子进程都销毁。

进程优先级

进程饥饿:如果进程长时间得不到cpu资源,该进程的代码长时间无法得到推进,该进程的饥饿问题。优先权高的进程有优先执行权利。

UID表示执行者身份boki的uid就是 1002

PRI(priority):80,这个值越小,优先级越高

NI(nice):进程的nice值,进程优先级修正数据,默认的nice值范围是[-20,19)。

PRI(new)=PRI(old) +nice 通过修改nice值可以修改优先级,nice改成负数,PRI变小优先级变高

nice指令和renice指令可以修改优先级

查找进程PID

top指令,按r修改进程的nice值(修改后只会是-20)

其中PRI(old)是从永远从80开始

哈希开散列法实现操作系统优先级调度

struct runqueue中有running和waiting两个指针数组。

PCB会根据PRI的值映射到running数组中,数组跟据优先级由上往下获取取PCB运行进程,如果优先级相同则在添加在PCB1后,先从左往右,再往下直到数组中全部进程运行完毕。

waiting是镜像数组,当负责接收进程,把running中的提取和waiting的接收分开,接收规则和runing一样。当running数组空了后,wait和run指针指向的数组swap()。

用bitmap来判断running数组是否为空。根据0,1判断数组对应位置是否有PCB指针。

进程的其他概念

竞争性:系统进程数目比较众多,cpu资源只有一个

独立性:多进程运行,独享各种资源,多进程运行期间互不干扰

并行:多个进程在多个cpu分别同时运行,称为并行

并发:多个进程在一个cpu下采用进程切换的方式,在一段时间内,让多个进程得以推进

进程切换:进程在CPU上离开时,要将上下文数据保存好,甚至带走

保存的目的

进程被切换的时候:保存上下文,恢复上下文

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

波奇学Linux:Linux进程状态,进程优先级 的相关文章

  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 毕业设计|基于SpringBoot+Vue的前后端分离的电影购票系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 课程资料|最优化方法-电子版教材!

    写在前面 学习成绩 不管是是保研 考研 出国留学 还是找实习找工作 都是你极为重要的支撑 为了帮助同学们 更好地学习专业课 斩获高绩点 岛主将持续推出 CS相关的专业教材资料 希望同学们能够在接下来的学习生活中取得良好的成绩 今天为大家带来
  • 数说CS | 本校生源占比65%!一文揭秘北大智能学院近两年拟录取情况!

    写在前面 北京大学智能学院 仅开设一门交叉学科 招收哪些专业 保研录取情况如何 今天 岛主就带你深度揭秘 北京大学智能学院 01 院校介绍 北京大学是全球智能学科的诞生地 2002年北京大学创办了我国第一个智能科学系 2007年成功在人工智
  • 工业级路由器在智能交通系统(ITS)中的创新应用

    智能交通系统 ITS 作为一种先进的交通管理与控制系统 旨在提高交通运输系统的效率 安全性和便捷性 随着科技的不断发展 智能交通系统已经成为城市交通管理的重要组成部分 而工业级路由器作为一种可靠的网络通信设备 其在智能交通系统中的创新应用正
  • 自动驾驶技术:驶向未来的智能之路

    导言 自动驾驶技术正引领着汽车产业向着更安全 高效 智能的未来演进 本文将深入研究自动驾驶技术的核心原理 关键技术 应用场景以及对交通 社会的深远影响 1 简介 自动驾驶技术是基于先进传感器 计算机视觉 机器学习等技术的创新 旨在实现汽车在
  • 开题报告-基于SpringBoot的求职招聘系统的设计与实现

    一 选题的根据 由于临近毕业季 同学们也即将踏上自己的岗位 择业也成为了同学们当下最为关心的问题 为了能够更加方便的服务同学们找工作 最快最有效率的方式莫过于计算机网络 所以我就因此开发了这一个求职招聘系统 为广大求职者和各企业的人事单位提
  • Dirsearch简单使用

    目录 简介 特性 安装 使用 python3 dirsearch py h 查看工具使用帮助 常用命令 python3 dirsearch py u URL python dirsearch py u https www google co
  • Linux unzip解压多个文件

    前情介绍 最近下载了imagenet1k数据集 令人难受的是这里边有很多的zip包 我总不能一个一个解压吧 这就太费时了 有点程序员思维很重要 批量解压 解决办法 假设当前目录下有多个zip文件 需要 unzip zip 或者 unzip
  • 毕设项目-基于Springboot和Vue实现蛋糕商城系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • xv6(12文件系统Inode&;Directory&;Path

    签三方前查一下校招黑名单 对你真没啥坏处 靠谱 也可以找我push 华为上海终端 各位大大帮忙看看 发的一堆sp被鸽麻了 求求大家投下小米 谈谈c 方向 校招 华为15A vs 南湖实验室 华为15A vs 南湖实验室 27届Java求建议
  • VPS用途大揭秘:如何用VPS改变你的数字生活

    VPS是一种虚拟化技术 允许用户在单一物理服务器上创建多个独立的虚拟服务器 这些虚拟服务器拥有自己的操作系统 资源和配置 就像独立的物理服务器一样 1 为什么选择VPS 成本效益 VPS相对于独立服务器来说成本更低 但仍提供了高度的自定义和
  • 从OpenInfra看开源软件的可持续、高质量发展

    近些年 云计算加快普及应用 作为催化剂和引擎之一 开源思想和开源软件功不可没 比如 国内很多大型头部企业当初就采用了开放开源的OpenStack作为其云的底座 时过境迁 随着人们对于云计算的认知和应用越来越成熟 OpenStack的使用方式
  • 人工智能驱动的智慧城市:科技之光照亮未来城市发展

    导言 人工智能在智慧城市建设中扮演着关键角色 通过智能化 自动化的手段 为城市提供高效 智能的管理和服务 本文将深入研究人工智能在智慧城市中的应用 创新技术以及对城市未来发展的引领作用 智慧城市是利用先进的信息技术和大数据分析手段 以提高城
  • 浮点数保留3位小数的方法

    test 量化开发 策略 面试后的这些迹象 告诉你 你已经成功了 签三方前查一下校招黑名单 对你真没啥坏处 知乎高赞 有什么忠告想告诉刚刚毕业的年轻人 理想 大模型面经 理想ai 数据工程 浮点数保留3位小数的方法 链接 https ac
  • 深入理解人工智能中的图神经网络:原理、应用与未来展望

    导言 图神经网络 Graph Neural Networks GNNs 作为人工智能领域的一项前沿技术 在社交网络分析 推荐系统 生物信息学等多个领域展现出卓越的性能 本文将深入剖析图神经网络的原理 当前应用场景以及未来可能的发展方向 1
  • pwn入门:基本栈溢出之ret2libc详解(以32位+64位程序为例)

    目录 写在开头 题目简介 解题思路 前置知识 简要了解 plt表和got表 延迟绑定 例题详解 32位 64位 总结与思考 写在开头 这篇博客早就想写了 但由于近期事情较多 一直懒得动笔 近期被领导派去临时给合作单位当讲师 要给零基础的学员
  • 毕业设计|SSM+VUE的旅游平台系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 题解|#走多远# lanqiao 拓扑排序模板

    题解 走多远 lanqiao 拓扑排序模板 include
  • 干货!MES系统选型必须要考虑的9点要素!

    你所在的企业是否为这些问题困扰 纸质化管理混乱 物料供应不及时 设备数据难采集 生产进度难透明 如果是的话 你的企业需要MES系统的帮助 MES是制造执行系统 Manufacturing Execution System 的缩写 它是一种信
  • 波奇学Linux:Linux进程状态,进程优先级

    编写一个程序模拟进程 查看进程状态 修改代码后发现进程状态为由S 变成R R为运行态 S为阻塞态 第一次为S是因为调用了外设 printf调用屏幕外设 实际上应该为R S状态轮换 但是R太快了 所以每次查到了都为S R 为前台运行 运行ba