当前位置: 首页 > news >正文

Linux——进程

进程介绍及其使用

  • 1、认识冯诺依曼体系
  • 2、操作系统
    • 如何理解操作系统对硬件做管理?
  • 3、进程
    • 如何创建进程
    • 进程状态

1、认识冯诺依曼体系

在计算机的硬件结构中,有着图灵和冯诺依曼俩位举足轻重的人物。对于计算机的发展来说有着十分重要的意义。冯诺依曼结构也是现在大多数计算机的硬件结构。
输入、输出设备都是外设。外设数据传输时比较慢,例如磁盘相较于内存来说速度就比较慢。为了防止木桶效应。计算机为了兼顾这些外设运行速度就不得不说到存储器,这里的存储器就是特指内存。因为CPU计算速度十分快,所以内存可以帮我们对于数据进行预加载。这样CPU进行数据访问时就不需要访问外设,直接在内存中就可以的得到数据。所以在数据层面上一般CPU不会直接和外设沟通,而是直接和内存打交道。与外设进行数据层面沟通一般是内存。
在这里插入图片描述
在硬件层面上,单机和跨主机之间数据流向是通过一台冯诺依曼体系结构的输入设备输入进入内存,内存被CPU访问后。通过控制器进行数据输出到内存,再由内存输出到输出设备。中间还有一些其他设备在中间进行传输到另外一台冯诺依曼体系。进行相同方法数据的读取及其访问。

2、操作系统

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库,shell程序等等)

本质就是一款对于软硬件资源管理的软件。

如何理解操作系统对硬件做管理?

在理解上软件、硬件本就是不同概念。所以比较形象理解就是领导对于公司给出决策。策划对于决策执行,员工实现策划给出的方案。实施后数据好坏都会被统计,反馈。但是对于整个方案实施。领导只是给了决策对于方案实施并没有参与,但是通过数据分析后就可以对于公司作出管理。对于满勤员工进行奖金发放,缺勤的员工进行惩罚。并没有直接和员工进行面对面交流沟通。只是通过保安对于每天员工打卡数据的进行一个管理。就可以实现公司管理。每一个员工在公司中的职位、工资,名字……进行一个结构体或者类的定义,这样就方便管理。所以管理就是建模,是对于管理对象数据的管理。

管理本质:先描述,在组织

在操作系统软件中就是通过计算机语言描述,用单链表或者更加高效的数据结构来进行组织管理。

3、进程

程序的一个执行实例,正在执行的程序等。内核观点:担当分配系统资源(CPU时间,内存)的实体。在操作系统中就是PCB,linux中是task_struct。

平时使用应用和运行一个可执行程序就会有得到一个进程。可以在我们电脑的任务管理器中查看自己当前运行的进程。当我们关闭一个应用时是不会影响我们其他应用的。所以进程是独立的。不会相互影响。在linux中也可以使用命令

ps axj

对于当前用户还可以使用命令

top -u 用户名//查看当前运行任务

对于每一个进程操作系统要进行管理,毕竟内存空间是有限的。冯诺依曼体系就决定了进程使用就需要用内存进行数据预加载。将文件的内容加载内存,不同进程管理就需要不同的pcb进行进程管理。对于pcb中会保存进程的基本属性。linux中task_struct属性基本就是

标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息

如何创建进程

在程序中使用fork函数。函数返回值

子进程返回0;父进程会返回子进程的pid。返回-1就是创建失败。

函数执行数据代码可以是共享的,也可以在不同进程中对数据,因为使用函数后对于产生不同的输出流。对于数据会发生写时拷贝
在这里插入图片描述

会对不同属性进程的优先级作出判断方便进程调度。在linux下可以验证进程独立

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>int main(void) {pid_t ret=fork();if(ret==0){while(1){printf("这是子进程,我的pid:%d,父进程ppid:%d\n",getpid(),getppid());}sleep(1);}else if(ret>0){while(1){printf("这是父进程,我的pid:%d,父进程ppid:%d\n",getpid(),getppid());}sleep(1);}return 0;
}

在这里插入图片描述
然后进行对于一个进程使用kill命令
在这里插入图片描述
进程的pid每一次运行是不同,根据os的每次调用来进行分配。也可以理解是对于同一所学校报考后。入学会产生一个学号。但是一旦休学后在进入学校学习后有新的学号。可以通过进程的pid来识别不同进程。os对于内存进行管理也会在进程较多时,接近于宕机时对于部分进程进行kill命令来减缓内存压力。

进程状态

首先是阻塞状态,还有挂起状态。

阻塞:进程因为等待某些条件就绪,而导致的一种不推进状态。

对于常见进程阻塞就是在启动多个应用时,造成的系统卡顿。就是多个应用启动时都会使用同一份资源比如说是网卡,对于多个应用同时需要向外界发送信息时。资源就比较紧缺。CPU就会对于进程的先后顺序进行排队使用。等前面使用完资源后,资源再被自己使用。但是当CPU要处理单机的进程时,对于还没有得到资源的进程就会处于挂起状态。挂起后的进程代码和数据被放置在磁盘中的,内存中只有进程的pcb,当CPU再次调度该进程时,数据和代码才会被预加载进入内存。
常见状态

R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。
S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))
D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的
进程通常会等待IO的结束。
T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可
以通过发送 SIGCONT 信号让进程继续运行。

在这里插入图片描述
对于上面代码运行后后发现状态不是R状态,而是S状态。这是因为CPU运行速度大于外设运行速度。通过printf函数向显示器打印数据。所以在CPU看来就是大多时候是在进程挂起状态。还有状态后面有一个‘+’。这是用于区分状态在前台运行还是在后台运行的标志。可以使用

kill -19 进程pid//暂停进程
kill -18 进程pid//恢复进程

在这里插入图片描述
再次恢复后,'+'消失。但是再次使用Ctrl+c就会发现无法终止进程,只能终止前台运行的进程。需要kill -9命令来终止进程(后台、前台进程都可以终止)。D状态暂时没有遇见过,但是对于系统的危害极大,会造成内存泄漏。可以直接断电终止该状态。但是数据会丢失。还有就是等待它自己恢复。

相关文章:

Linux——进程

进程介绍及其使用 1、认识冯诺依曼体系2、操作系统如何理解操作系统对硬件做管理&#xff1f; 3、进程如何创建进程进程状态 1、认识冯诺依曼体系 在计算机的硬件结构中&#xff0c;有着图灵和冯诺依曼俩位举足轻重的人物。对于计算机的发展来说有着十分重要的意义。冯诺依曼结…...

计及氢能的综合能源优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

基于Bert的知识库智能问答系统

项目完整地址&#xff1a; 可以先看一下Bert的介绍。 Bert简单介绍 一.系统流程介绍。 知识库是指存储大量有组织、有结构的知识和信息的仓库。这些知识和信息被存储为实体和实体关系的形式&#xff0c;通常用于支持智能问答系统。在一个知识库中&#xff0c;每个句子通常来说…...

libapparmor非默认目录构建和安装

在AppArmor零知识学习五、源码构建&#xff08;2&#xff09;中&#xff0c;详细介绍了libapparmor的构建步骤&#xff0c;但那完全使用的是官网给出的默认参数。如果需要将目标文件生成到指定目录而非默认的/usr&#xff0c;则需要进行一些修改&#xff0c;本文就来详述如何进…...

2023-04-14 算法面试中常见的查找表问题

2023-04-14 算法面试中常见的查找表问题 1 Set的使用 LeetCode349号问题&#xff1a;两个数组的交集 给定两个数组&#xff0c;编写一个函数来计算它们的交集。示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:…...

从TOP25榜单,看半导体之变

据SIA报告显示&#xff0c;2022年全球半导体销售额创历史新高达到5740亿美元。尽管2022年下半年&#xff0c;半导体市场出现了周期性的低迷&#xff0c;但其全年的销售额相较2021年增长了3.3%。 近日&#xff0c;市调机构Gartner发布了全球以及中国大陆TOP25名半导体厂商的排名…...

[异常]java常见异常

Java.io.NullPointerException null 空的&#xff0c;不存在的NullPointer 空指针 空指针异常&#xff0c;该异常出现在我们操作某个对象的属性或方法时&#xff0c;如果该对象是null时引发。 String str null; str.length();//空指针异常 上述代码中引用类型变量str的值为…...

gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT

原文&#xff1a;gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT 什么是gpt4all gpt4all是在大量干净数据上训练的一个开源聊天机器人的生态系统。它不用科学上网&#xff01;甚至可以不联网&#xff01;本地就能用&#xff0c;像这样↓&#xff1a; 如何使用&#xff…...

AcWing语法基础班 1.1 变量、输入输出、表达式和顺序语句

预备知识 首先先来了解一下最简单的C代码。 本文的所有代码操作均在AcWing的AC Editor中 #include <iostream>using namespace std;int main(){cout << "Hello World" << endl;return 0; }然后使用编译&#xff08;点击调试&#xff0c;再点击运…...

DC:5靶机通关详解

信息收集 漏洞发现 扫个目录 发现存在footer.php 查看,发现好像没什么用 参考他人wp得知thankyou.php会包含footer.php 可以通过传参来包含别的文件 但是我们不知道参数,这里用fuzz来跑参数 这里用wfuzz的时候报错了 解决方法如下 卸载 sudo apt --purge remove python3-pycu…...

【测试开发篇9】Junit框架

目录 一、认识Junit框架 Junit和Selenium的关系是什么 导入Junit框架common-io包 二、Junit框架的使用 2.1Junit有哪些常用注解 2.1.1Test注解 2.1.2BeforeEach 2.1.3BeforeAll 2.1.4AfterAll 2.1.5AfterEach 2.2Junit的断言 Assertions.assertEquals(期待值&#…...

《Spring MVC》 第五章 实现RESTful

前言 教授大家如何实现RESTful 1、什么是RESTful resource Representational State Transfer 的缩写&#xff0c;就是“表现层资源表述状态转移” 1.1、Resource&#xff08;资源&#xff09; web应用的文件&#xff0c;uri定位 1.2、Representation&#xff08;资源的描…...

Last Week in Milvus

What’s New Core Updates #23353 在 2.3 版本中&#xff0c; milvus 和 knowhere 引擎会移除了 Annoy 索引。Annoy 索引在性能和召回率方面均不如 IVF、HNSW 等索引&#xff0c;维护成本比较高所以经过讨论决定在 2.3 中移出 Annoy 索引的支持&#xff0c;有使用的用户要注意…...

Cursor IDE一个GPT4人工智能自动程序编辑器

让我们来了解一下Cursor IDE是什么。Cursor IDE是一个新型的编程工具&#xff0c;可以通过它生成、编辑以及与人工智能进行交互分析代码。官方网站上的三个单词“Build Software. Fast.”&#xff08;快速构建软件&#xff09;以及“Write, edit, and chat about your code wit…...

PPO算法-理论篇

1. Policy Gradient 【李宏毅深度强化学习笔记】1、策略梯度方法&#xff08;Policy Gradient&#xff09; 李宏毅深度强化学习-B站 2. PPO PPO 算法 PPO算法更新过程如下&#xff1a; 初始化policy参数 θ 0 \theta^0 θ0在每一步迭代中&#xff1a; 使用 θ k \theta^k …...

【现货】AP6317 同步3A锂电充电芯片 带短温度保护

AP6317是一款面向5V交流适配器的3A锂 离子电池充电器。它是采用800KHz固定频率的同 步降压型转换器&#xff0c;因此具有高达92%以上的充电效 率&#xff0c;自身发热量极小。 包括完整的充电终止电路、自动再充 电和一个精确度达1%的4.2V预设充电电压&#xff0c;内 部集成了防…...

MyBatis详解(2)

8、自定义映射resultMap 8.1、resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致&#xff0c;则可以通过resultMap设置自定义映射 <!--resultMap&#xff1a;设置自定义映射属性&#xff1a;id&#xff1a;表示自定义映射的唯一标识type&#xff1a;查询…...

2023-04-14 使用纯JS实现一个2048小游戏

文章目录 一.实现思路1.2048的逻辑2.移动操作的过程中会有三种情况 二.代码部分:分为初始化部分和移动部分1.初始化部分1.1.生成第一个方块:1.2.生成第二个方块: 2.移动过程部分: 三.实现代码1.HTML部分2.CSS部分3.JS部分3.1.game对象的属性3.2.game对象的start方法3.3.game对象…...

C++入门(3)

C入门 1.auto关键字&#xff08;C11&#xff09;1.1. 类型别名的思考1.2. auto简介1.3. auto使用情景1.4. auto的使用细则1.5. auto不能推导的场景 1.auto关键字&#xff08;C11&#xff09; 1.1. 类型别名的思考 随着程序越来越复杂&#xff0c;程序中用到的类型也越来越复杂…...

【亲测有效】更新了WIN11之后 右键无 新建WORD,PPT,EXCEL 选项 问题 解决方案

原本正常的正版系统&#xff0c;在昨天4月自动更新安装之后&#xff0c;发现右键找 不到新建文档了&#xff0c;word,ppt,excel都不见了。 看了网上大神的方法 Win11安装了Office右键没有新建Excel选项怎么办&#xff1f; - 知乎 可以解决一部分 官方解决方案&#xff0c;亲…...

2023年4月北京/西安/郑州/深圳CDGA/CDGP数据治理认证考试报名

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…...

Win10桌面我的电脑怎么调出来?最简单方法教学

Win10桌面我的电脑怎么调出来&#xff1f;有用户发现自己的电脑桌面没有我的电脑这个程序图标&#xff0c;每次要访问磁盘的时候&#xff0c;开启都非常的麻烦。那么怎么将这个图标设置到桌面显示呢&#xff1f;接下来我们一起来看看以下的解决方法吧。 方法一&#xff1a; 在开…...

开启单细胞及空间组学行业发展黄金时代!首届国际单细胞及空间组学大会在穗闭幕

2023年4月16日&#xff0c;首届TICSSO国际单细胞及空间组学大会圆满闭幕&#xff0c;本次大会吸引了2000余位来自产、学、研、资、医、政、媒等业界人士齐聚羊城&#xff0c;注册总人数5398人&#xff0c;网络播放总量达548245人次&#xff0c;网络观看覆盖美国、德国、日本、澳…...

YOLOv8 更换主干网络之 GhostNetV2

《GhostNetV2:Enhance Cheap Operation with Long-Range Attention》 轻量级卷积神经网络(CNN)是专门为在移动设备上具有更快推理速度的应用而设计的。卷积操作只能捕捉窗口区域内的局部信息,这防止了性能的进一步提高。将自注意力引入卷积可以很好地捕捉全局信息,但这将大…...

高级服务框架(黑马)

一、修改order-service服务 修改OrderService&#xff0c;让其监听Nacos中的sentinel规则配置。 具体步骤如下&#xff1a; 1.引入依赖 在order-service中引入sentinel监听nacos的依赖&#xff1a; <dependency><groupId>com.alibaba.csp</groupId><…...

Go语言面试题--基础语法(29)

文章目录 1.下面的代码有什么问题&#xff1f;2.下面代码最后一行输出什么&#xff1f;请说明原因3.下面代码有什么问题&#xff1f;4.下面的代码输出什么&#xff1f; 1.下面的代码有什么问题&#xff1f; func main() {data : []int{1,2,3}i : 0ifmt.Println(data[i]) }参考…...

毕业生招聘信息的发布与管理系统(论文+设计)

前 言 当今&#xff0c;人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动&#xff0c;人类的许多社会活动…...

mysql安全加固配置文档(完结)

4. MySQL 权限安全配置 4.1. 确保只有管理员账号有所有数据库的访问权限 建议理由 除了管理员账号&#xff0c;其他用户没必要有所有数据库的访问权限。过高的权限会导致安全问题。检查方法 SELECT user, host FROM MySQL.user WHERE (Select_priv Y) OR (Insert_priv Y) …...

CAPL函数在实现AES加密算法时遇到的各种问题(c++中符号的含义,AES算法中padding的问题等)

本来打算把AES算法的代码移植到CAPL中的,文章:https://blog.csdn.net/qq_28205153/article/details/55798628?spm=1001.2014.3001.5506里有非常详细的代码。但是一来太麻烦,二来没必要,因为CAPL提供了Security安全相关的函数: 这里面就提供了AES加密算法的接口函数,使用…...

二叉排序树(二叉查找树)基本操作_20230417

二叉排序树&#xff08;二叉查找树&#xff09;基本操作_20230417 前言 二叉排序树首先是一颗二叉树&#xff0c;它不同于常规二叉树的地方在于&#xff0c;如果左子树不为空&#xff0c;那么左子树上所有结点的值都不大于根节点的值&#xff0c;如果右子树不为空&#xff0c…...