【Linux】总结2-进程篇1

news2024/12/25 9:03:20

文章目录

  • 冯·诺伊曼结构
  • 操作系统
  • 什么是程序?什么是进程?
  • 操作系统是如何来管理进程的?
  • PCB(struct task_struct{...})

冯·诺伊曼结构

  • 冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成:输入设备、存储器、运算器、控制器、输出设备,这套理论被称为冯诺依曼体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrytciCL-1691498472260)(C:\Users\姬新羽\AppData\Roaming\Typora\typora-user-images\image-20230807213100972.png)]

  • 输入输出设备统称IO设备:负责数据和程序的输入输出
  • 存储器:存储程序和数据,指内存,所有的数据都是采用二进制进行存储,运算产生的数据都是存储在内存当中
  • 中央处理器:由运算器和控制器组成,运算器负责数据按照程序的处理办法进行计算,控制器控制程序的逻辑,一个CPU在同一时刻只能计算一份数据

操作系统

  • 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),操作系统 = 操作系统内核 + 一堆应用,操作系统内核:也是代码程序,这些代码完成进程管理、内存管理、文件管理、驱动管理等,一堆应用是指依附在操作系统内核上完成某些功能,比如微信等应用
  • 操作系统管理计算机的软硬件资源,硬件资源包括:CPU、内存、硬盘、网卡、显示器等等;软件资源包括:进程资源、驱动程序等
  • 操作系统通过管理来完成对计算机软硬件资源的管理,管理 = 描述(结构体) + 组织(串连起结构体),从代码的角度理解,描述就是结构体,组织是通过链表的方式完成的
  • 操作系统提供的函数,被称为系统调用函数,这些函数在库函数中被调用

什么是程序?什么是进程?

  • 程序:源代码经过编译产生的可执行文件,这个文件是静态的
  • 进程:程序运行起来的实例,是动态在运行的;进程是能独立运行、独立获得资源、独立接受调度的基本单位

操作系统是如何来管理进程的?

  • 进程的管理 = 描述(PCB) + 组织的方式(链表)
  • PCB是进程控制块:在操作系统中,用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标识,这意味着一个进程的存在,必然会有一个PCB,如果进程消失了,那么PCB也会随之消息;不同的PCB通过链表组织起来

PCB(struct task_struct{…})

  • 机器中的进程数量远大于CPU数量,而且一个进程想要向后执行自己的代码,必须拥有CPU进行计算(执行代码),那进程是如何获得CPU资源的呢?操作系统调度进程获取资源,它有自己的调度策略:先来先服务、短作业优先、长作业优先、高优先级优先、时间片轮转

  • 从CPU的角度来理解,进程的状态可以分为三种:就绪/运行/阻塞

    • 运行:进程占用CPU,并在CPU上运行,即进程正在使用CPU来执行自己的代码
    • 就绪:进程已经具备了运行的条件,但还没有被分配CPU,可以理解为进程已经将运行前的准备工作全部做好了,万事俱备,只欠被操作系统调用,占用CPU资源了
    • 阻塞:进程因等待某件事的发生而暂时不能运行(就绪),例如:等待IO输入、调用某些阻塞接口
  • 状态间转换

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rvz0e0Jb-1691498472262)(C:\Users\姬新羽\AppData\Roaming\Typora\typora-user-images\image-20230808110915473.png)]

  • 进程是抢占式执行,在计算机中,进程多的情况是常态,操作系统在调度的时候要做到雨露均沾,让每一个进程都能运行上,但是操作系统在调度的时候,是从就绪队列当中获取进程,进行运行,也就是说,哪个进程准备好了,就绪了,原则上就可以调度谁,所以进程为了自己可以被执行,都是抢占式执行,不会互相谦让。这种狼多肉少的状态,也是进程有不同状态的原因之一

    并发:多个进程在一个CPU下,采用进程切换的方式,各自独占CPU运行各自的代码,交替运行,让多个进程都得以被推进,称为并发(多个岔路要汇合到主路,各车道交替进入)

    并行:多个进程在多个CPU下,同时运行各自的代码,称为并行(车道足够,各进程跑在各自的车道上)

    在一个多核CPU的机器当中,并发和并行是同时存在的

  • 细分的进程状态

    • R:运行状态,处于R状态 ,有可能在执行代码,有可能在就绪队列中等待
    • S:可中断睡眠状态,进程正在睡眠(被阻塞),等待资源到来被唤醒,也可以通过其他进程信号或时钟中断唤醒,进入运行队列
    • D:不可中断睡眠状态,通常等待一个IO结束
    • T:暂停状态(ctrl+z),ctrl+z暂停一个进程 ;ctrl+c可终止一个进程
    • t:跟踪状态,调试程序的时候可以看到
    • X:死亡状态,我们用户看不到,在PCB被内核释放的时候,进程会被置为X,紧接着进程就退出了
    • Z:僵尸进程
  • 程序计数器:保存程序下一条执行的指令

  • 上下文信息:保存寄存器当中的内容。在多进程的系统当中,操作系统调度进程,获取CPU之后,进行现场恢复,继续执行后面的代码

  • 上下文切换:Linux是多任务的操作系统,它的进程数远大于CPU数,它能支持远大于CPU数量的任务同时运行,但实际上同一时刻只会有CPU数量的进程在运行,等CPU时间片到了之后,进程调度器就会把CPU资源分配给其他进程,在这个过程就涉及到了进程之间的切换,这时候就需要把当前进程的上下文信息保存下来,随后加载被调度进程的上下文信息,这就是上下文切换。

    上下文信息既包括虚拟内存、栈、全局变量等用户态的资源,也包括内核堆栈、寄存器等内核态的资源,不同类型的上下文切换,会涉及到不同类型资源的切换,例如:同一进程不同线程的切换,只需要切换内核态的资源,而不需要切换用户态的资源

    上下文切换的类型:进程上下文切换、线程上下文切换、中断上下文切换

  • PCB是描述一个进程的数据块,在内核中对应struct task_struct{…}中的代码,我们列举一小部分其中的内容:进程标识符(进程号)、进程状态、程序计数器、上下文指针、内存指针、记账信息(使用CPU时长,占用内存大小)、IO信息(保存进程打开文件的信息)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/850247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion - 常用的负向提示 Embeddings 解析与 坐姿 (Sitting) 提示词

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132145248 负向 Embeddings 是用于提高 StableDiffusion 生成图像质量的技术,可以避免生成一些不符合预期的图像特征,比如…

day5gdb调试模式和makefile

一、gdb调试 1.1gdb调试的作用 gdb调试检查的是逻辑错误,而非语法错误 1.2gdb流程 1、gcc -g 1.c ---->加-g参数的作用,生成可以调试的gdb文件 2、gdb 可执行文件名/a.out ---->进入gdb工具进行调试 3、输入l,带行号打印文件信息…

管理类联考——逻辑——论证逻辑——汇总篇——目录+提炼

文章目录 一、削弱方法关系的削弱必要方法的削弱因果推理的削弱果因推理的削弱概念跳跃的削弱数量比例的削弱比例因果的削弱 二、支持方法关系的支持必要方法的支持因果推理的支持果因推理的支持概念跳跃的支持数量比例的支持比例因果的支持 三、假设方法关系的假设必要方法的假…

不分股权不分管理,只分利润:共享模式的新零售布局

实体行业如何通过共享模式去整合那些有资源的人,来完成新零售的一个布局?比如对于餐饮行业而言,一样的资源,经常有用餐、聚餐需求的人是谁? 有商会组织者、公司的管理层、培训机构、社群群主等等。那么如何把这些人整…

记一次Linux启动Mysql异常解决

文章目录 第一步: netstat -ntlp 查看端口情况2、启动Mysql3、查看MySQL日志 tail -100f /var/log/mysqld.log4、查看磁盘占用情况:df -h5、思路小结 第一步: netstat -ntlp 查看端口情况 并没有发现3306数据库端口 2、启动Mysql service …

【Windows】Windows11系统用户自己添加开机启动项的方法

按win R快捷键,打开运行窗口,在输入框中输入shell:startup后点击运行,打开启动文件夹: 把想增加的开机启动软件的快捷方式图标拖入到该文件夹中,如下图所示: 按ctrl shift esc打开任务管理器&#xff0c…

UWB伪应用场景 - 别再被商家忽悠

近几年UWB技术在网上宣传得如火如荼,与高精度定位几乎或等号,笔者认为这是营销界上的一大成功案例。 UWB超宽带技术凭借着低功耗、高精度,确实在物联网行业混得风生水起,但在无数实际应用案例中,根据客户的反馈情况&a…

python小游戏代码200行左右,python小游戏代码1000行

大家好,小编为大家解答20行python代码的入门级小游戏的问题。很多人还不知道python小游戏代码200行左右,现在让我们一起来看看吧! 大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今…

Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发

今日目标 掌握纯注解开发依赖注入(DI)模式 学习使用纯注解进行第三方Bean注入 1 注解开发依赖注入(DI)【重点】 问题导入 思考:如何使用注解方式将Bean对象注入到类中 1.1 使用Autowired注解开启自动装配模式(按类型) Service public class StudentS…

redis基础(三十六)

安装redis、配置redis 目录 一、 概述 (一)NoSQL 1、类型 2、应用场景 (二)Redis 二、安装 (一)编译安装 (二)RPM安装 三、目录结构 四、命令解析 五、redis登录更改 1、…

三层交换实验

前言 在实际的企业应用中,我们会先建立不同的vlan把用户先隔开来。然后再通过三次交换机技术打通vlan直接的网络。 这样的目的如下: 隔离: 隔离是广播域,也就是隔离的是故障连通: 连通的是正常的通信 比如校园网&am…

在魔塔社区搭建通义千问-7B(Qwen-7B)流程

复制以下语句 python3 -m venv myvenvsource myvenv/bin/activatepip install modelscope pip install transformers_stream_generator pip install transformers pip install tiktoken pip install accelerate pip install bitsandbytestouch run.py vi run.py复制下面代码粘…

IMV5.0

背景内容: 经历了多个版本,基础内容在前面,可以使用之前的基础环境: v1: https://blog.csdn.net/wtt234/article/details/132139454 v2: https://blog.csdn.net/wtt234/article/details/132144907 v3&#…

04-8_Qt 5.9 C++开发指南_QTableWidget的使用

文章目录 1. QTableWidget概述2. 源码2.1 可视化UI设计2.2 程序框架2.3 qwintspindelegate.h2.4 qwintspindelegate.cpp2.5 mainwindow.h2.6 mainwindow.cpp 1. QTableWidget概述 QTableWidget是Qt中的表格组件类。在窗体上放置一个QTableWidget 组件后,可以在 PropertyEditor…

二、 MySQL 内部技术架构

二、 MySQL 内部技术架构 047 Mysql内部支持缓存查询吗? 当MySQL接收到客户端的查询SQL之后,仅仅只需要对其进行相应的权限验证之后,就会通过Query Cache来查找结果,甚至都不需要经过Optimizer模块进行执行计划的分析优化&…

产品缺陷管理软件:了解功能与选择要点

在现代社会,产品缺陷管理软件已经成为了各个行业必不可少的工具。它可以帮助企业更好地管理和解决产品中存在的缺陷问题,提高产品质量和客户满意度。然而,市场上存在着众多的产品缺陷管理软件,如何选择一款好用、适合自己的软件成…

Java实现数字加密

Java实现数字加密 需求分析代码实现小结Time 需求分析 1.首先,考虑方法是否需要接收数据处理? 需要一个4位数,至于是哪一个数,让方法的调用者传递。 所以,方法的参数,就是这个需要加密的四位数 2.接着&…

Unity 编辑器资源导入处理函数 OnPostprocessAudio :深入解析与实用案例

Unity 编辑器资源导入处理函数 OnPostprocessAudio 用法 点击封面跳转下载页面 简介 在Unity中,我们可以使用编辑器资源导入处理函数(OnPostprocessAudio)来自定义处理音频资源的导入过程。这个函数是继承自AssetPostprocessor类的&#xff…

电压信号转电流信号

用运算放大器配置电流,使其既能做同相放大电路,也能把电压转化为电流信号 1、当SW1断开情况下,OUT的电压仅受U1.3产生的同相放大电路有关,把0-3V输入转换成0-10V 2、当SW1闭合时 设输入INT的电压信号为Vi,负载电阻R8的…

04-7_Qt 5.9 C++开发指南_QTreeWidget和QDockWidget

文章目录 1. 实例功能简述2. 源码2.1 可视化UI设计2.2 mainwindow.h2.3 mainwindow.cpp 1. 实例功能简述 本节介绍 QTreeWidget、QDockWidget 的使用,以及用 QLabel 显示图片的方法。实例 samp4_8以QTreeWidget 为主要组件,创建一个照片管理器&#xff…