学校手机网站建设/经典广告

学校手机网站建设,经典广告,页面设计自述,江门市住房和城乡建设局网站目录 1 冯诺依曼体系 2 操作系统(Operator System) 3 如何理解管理 3.1计算机管理硬件 3.2 管理逻辑图 3.3 怎样管理 4 什么是进程? 5 查看进程 5.1 ps ajx显示所有进程信息 5.2 /proc(内存文件系统) 5.2.1 ls /proc/PID 5.2.2 ls /proc/PID -al ​ 5…

目录

1 冯诺依曼体系

 2 操作系统(Operator System)

3 如何理解管理

3.1计算机管理硬件

3.2 管理逻辑图

3.3 怎样管理 

 4 什么是进程?

5 查看进程 

5.1  ps ajx显示所有进程信息

5.2 /proc(内存文件系统)

5.2.1 ls /proc/PID

5.2.2 ls /proc/PID -al

​ 5.3 PPID与PID 

6 getpid(),getppid()

 7 父进程与子进程

7.1子进程的创建 (fork)

总结 


1 冯诺依曼体系

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系

我们所认识的计算机,都是有一个个的硬件组件组成:

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器,打印机等我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

关于冯诺依曼:

这里的存储器指的是内存 不考虑缓存情况,这里的CPU能且只能对内存进行读写不能访问外设(输入或输出设备) 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。 一句话,所有设备都只能直接和内存打交道

 2 操作系统(Operator System)

操作系统:对下与硬件交互,管理所有的软硬件资源。对上为用户程序(应用程序)提供一个良好的执行环境。一句话就是操作系统是管理软硬件的软件。

3 如何理解管理

3.1计算机管理硬件

  •  描述起来,用struct结构体
  •  组织起来,用链表或其他高效的数据结构

总结就是六个字:先描述,再组织

3.2 管理逻辑图

3.3 怎样管理 

操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再把进程组织起来!

 4 什么是进程?

当你写完一个程序的时候,在没运行的时候,代码存在于哪里呢?存在于磁盘中,当程序运行的时候,程序就会被加载到内存之中,此时该程序还不是进程。在一个操作系统中,除了运行你的程序之外,还运行着其他的程序,那么系统中这些程序都是杂乱无章的吗?当CPU处理这些任务的时候考不考虑优先级呢?

运行中程序的管理:先描述再组织

描述过程:操作系统为每一个运行的程序用一个 struct task_struct 结构体来描述运行的程序的属性和信息。

组织过程:可以认为把创建的strcut 用双向链表进行链接。

操作系统中为每一个运行的程序维护一个数据结构,数据结构中应该存放该进程的所有相关的属性和信息。

所以说,进程=磁盘中的代码+内核的数据结构

在Linux操作系统下,我们称它为PCB,Process Control Block,即进程控制模块。

5 查看进程 

系统调用

想象一下,如果操作系统完全暴露在用户面前,对于新手用户可能会误触到操作系统内核的数据或者指令,导致出现不可挽回的后果。于是,操作系统为了安全考虑,不会将自己的底层直接交给用户操作,而是将操作系统封装起来,并提供一些特定的接口以供用户使用,这样的由操作系统给用户提供的操作接口,就被称为系统调用。

进程查看

上面我们已经了解到了进程,那么对于系统中的进程我们该怎么查看呢?下面介绍几种查看进程的系统调用指令。

5.1  ps ajx显示所有进程信息

 但是,上述命令不利于我们查找自己的进程信息,如下我们编写一个程序名为process,运行之后想要在系统中查看它的进程信息,我们可以使用:

 ps ajx | head -1&&ps ajx  | grep process来查看它。(head表示显示头栏)

创建的process程序,内容随意。 

接下来我们通过   ps ajx | head -1&&ps ajx  | grep process 命令查看进程信息

查看进程的时候发现出现了两个进程,其中一条是执行grep命令的进程。要想过滤掉它,我们可以用ps ajx | head -1 && ps ajx | grep Process | grep -v grep。

5.2 /proc(内存文件系统)

进程的信息还可以通过 /proc 系统文件夹查看,如果我们要想查看PID(Process I D)为 2的进程,可以进行如下操作。

5.2.1 ls /proc/PID

那么这个数字2 是什么呢,在上述我们使用 ps ajx 命令时,会发现头栏有PID(Process I D) 。即为标识一个进程的重要信息,类似于身份证号的概念,对于系统中的每一个进程,系统都会分配给其一个唯一的PID,/proc就是以这个来查看进程信息的。

 例如如下进程的PID 为2121

接下来我们使用/proc/PID 命令进行查看

5.2.2 ls /proc/PID -al

该指令用来查看进程的更多信息,圈出来的红框里的两个信息

cwd:表示当前进程运行的路径

exe:表示可执行文件的路径

 5.3 PPID与PID 

PID即Process ID,上面讲到了PID是一个进程的标识符,担当着“身份证号”的角色,每一个系统中的进程都有唯一的PID。那么PPID是什么呢?即Parent Process ID,为当前进程的父进程ID。

 为什么要有父进程的这个概念:当我们在执行shell脚本的时候,这个动作是由登录的shell(父进程)处理的,有的也叫bash(shell 或者bash 就是命令解释器), 为了执行指令,父进程bash会创建一个新的子进程用来代替父进程执行命令,子进程是父进程的一个副本,它独立运行,这种方式保证了脚本执行的安全性和隔离性,避免了对父进程状态的影响。后面我们会看到bash.


6 getpid(),getppid()

除了上述的查看一个进程的PID与PPID的方法,系统还提供了一个调用接口

通过系统调用获取进程标示符

 getppid()是获取父进程的PID

当我们结束这个程序再次运行的时候,我们发现,每次重新形成一个进程时,系统都会为它分配一个ID,所以第一次的ID是22783,第二次的变成了23883,但是后面的父进程14105为什么不变呢?

 7 父进程与子进程

通过上图我们可以看到父进程的PID 14105是不变的,那么后面的~bash是什么呢,前面也有所说,bash是命令解释器, 为了执行指令,父进程bash会创建一个新的子进程用来代替父进程执行命令,子进程是父进程的一个副本,它独立运行,这种方式保证了脚本执行的安全性和隔离性,避免了对父进程状态的影响

7.1子进程的创建 (fork)

在上面我们已经了解到了进程的形成过程,以及怎么查看进程相关的信息和属性,,且我们知道了父进程和子进程,那么我们该如何自己创建一个子进程呢?操作系统已经为用户提供了一个系统调用接口来创建子进程:fork()

认识fork

 ✍fork()返回值

fork()创建一个子进程的时候会把该进程的PID传给父进程,而把0传给该子进程,若创建子进程失败会把-1传给父进程,接下来我们用一个例子来进行说明。 

 运行结果:

我是父进程:pid:3058,ppid :14105,id 3059

我是子进程:pid :3059,ppid :3058,id 0

解释一下:前面也说过fork()是一个创建子进程的函数,当我们创建一个子进程的时候。

我是子进程:pid :3059,ppid :3058,id 0,子进程的pid会传给父进程:我是父进程:pid:3058,ppid :14105,id 3059。所以父进程的id 为3059,且子进程的ppid为3058,而父进程pid为3058,说明其为父子进程关系。而ppid 14105的这个进程不是别的,是bash.


总结 


  • fork()之后,会有父进程+子进程两个进程在执行后续代码。
  • fork()后续的代码,被父子进程共享。
  • 通过返回值不同,让父子进程执行后续共享代码的一部分。

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

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

相关文章

Conda 全面使用指南:从基础操作到高级优化

一、Conda 简介 Conda 是一个开源的包、依赖项和环境管理系统,可在 Windows、macOS 和 Linux 上运行。它最初是为 Python 程序创建的,但可以打包和分发任何语言的软件。Conda 有 Anaconda 和 Miniconda 两种发行版,Anaconda 包含大量常用的数…

计算机毕设JAVA——某高校宿舍管理系统(基于SpringBoot+Vue前后端分离的项目)

文章目录 概要项目演示图片系统架构技术运行环境系统功能简介 概要 网络上许多计算机毕设项目开发前端界面设计复杂、不美观,而且功能结构十分单一,存在很多雷同的项目:不同的项目基本上就是套用固定模板,换个颜色、改个文字&…

【Redis】在Java中以及Spring环境下操作Redis

Java环境下&#xff1a; 1.创建maven 项目 2.导入依赖 <!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency> 此处使用的是Jedis&…

橙心同步助手更新,,支持博客园、头条和语雀

文章同步助手v1.5版本开发完成了&#xff0c;新增了博客园、头条和语雀同步支持。 使用方式和前几个版本一致&#xff0c;都需要先登录上对应平台的账号&#xff0c;再进行同步。 语雀因为可以有不同的知识库&#xff0c;所以同步的时候需要指定对应的知识库&#xff0c;才能…

如何把网络ip改为动态:全面指南

在数字化时代&#xff0c;网络IP地址作为设备在网络中的唯一标识&#xff0c;扮演着至关重要的角色。随着网络环境的不断变化&#xff0c;静态IP地址的局限性逐渐显现&#xff0c;而动态IP地址则因其灵活性和安全性受到越来越多用户的青睐。那么&#xff0c;如何把网络IP改为动…

IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题

文章目录 引言一、安装Proxy AI1.1 在线安装Proxy AI1.2 离线安装Proxy AI 二、Proxy AI中配置DeepSeek2.1 配置本地部署的DeepSeek&#xff08;Ollama方式&#xff09;2.2 通过第三方服务商提供的API进行配置 三、效果测试 引言 许多开发者尝试通过安装Proxy AI等插件将AI能力…

八. Spring Boot2 整合连接 Redis(超详细剖析)

八. Spring Boot2 整合连接 Redis(超详细剖析) 文章目录 八. Spring Boot2 整合连接 Redis(超详细剖析)2. 注意事项和细节3. 最后&#xff1a; 在 springboot 中 , 整合 redis 可以通过 RedisTemplate 完成对 redis 的操作, 包括设置数据/获取数据 比如添加和读取数据 具体…

easyExcel使用案例有代码

easyExcel 入门,完成web的excel文件创建和导出 easyExcel官网 EasyExcel 的主要特点如下&#xff1a; 1、高性能&#xff1a;EasyExcel 采用了异步导入导出的方式&#xff0c;并且底层使用 NIO 技术实现&#xff0c;使得其在导入导出大数据量时的性能非常高效。 2、易于使…

【网络安全 | 渗透测试】GraphQL精讲二:发现API漏洞

未经许可,不得转载。 推荐阅读:【网络安全 | 渗透测试】GraphQL精讲一:基础知识 文章目录 GraphQL API 漏洞寻找 GraphQL 端点通用查询常见的端点名称请求方法初步测试利用未清理的参数发现模式信息使用 introspection探测 introspection运行完整的 introspection 查询可视化…

新建菜单项的创建之CmpGetValueListFromCache函数分析

第一部分&#xff1a; PCELL_DATA CmpGetValueListFromCache( IN PHHIVE Hive, IN PCACHED_CHILD_LIST ChildList, OUT BOOLEAN *IndexCached, OUT PHCELL_INDEX ValueListToRelease ) 0: kd> dv KeyControlBlock 0xe1…

神经网络 - 激活函数(ReLU 函数)

一、ReLU函数&#xff1a; ReLU(Rectified Linear Unit&#xff0c;修正线性单元)&#xff0c;也叫 Rectifier 函数 &#xff0c;是目前深度神经网络中经常使用的激活函数&#xff0c;ReLU 实际上是一个斜坡(ramp)函数&#xff0c;其定义为&#xff1a; 也即&#xff1a; Re…

Spring Boot环境配置

一、Java开发环境 确保你的计算机已经安装了Java Development Kit&#xff08;JDK&#xff09;。建议使用JDK 17&#xff0c;可以从Oracle官方网站上下载并安装。 1.下载及配置环境变量 &#xff08;1&#xff09;下载JDK&#xff1a;官网下载 &#xff08;2&#xff09;运…

conda env remove与conda remove

在 Conda 中&#xff0c;删除环境的两种常用命令是 conda env remove --name ryu 和 conda remove -n ryu --all。它们的核心功能相同&#xff08;删除指定名称的 Conda 环境&#xff09;&#xff0c;但存在细微差异。以下是详细解释&#xff1a; 1. 命令对比 命令说明conda e…

6.6.5 SQL访问控制

文章目录 GRANT授予权限REVOKE回收权限 GRANT授予权限 GRANT语句可以给用户授予权限&#xff0c;基本格式是GRANT 权限 TO 用户。在授权时&#xff0c;WITH GRANT OPTION是可选项&#xff0c;有此句话&#xff0c;被授予权限的用户还能把权限赋给其他用户。 REVOKE回收权限 RE…

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好&#xff0c;我是老师&#xff0c;看到一个不错的SpringBoot公益众筹爱心捐赠系统&#xff0c;分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前&#xff0c;当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及&#xff0c;本文旨在探讨公益事业…

[Windows] 免费电脑控制手机软件 极限投屏_正式版_3.0.1 (QtScrcpy作者开发)

[Windows] 极限投屏_正式版 链接&#xff1a;https://pan.xunlei.com/s/VOKJf8Z1u5z-cHcTsRpSd89tA1?pwdu5ub# 新增功能(Future)&#xff1a; 支持安卓14(Supports Android 14)提高投屏成功率(Improve the success rate of mirror)加快投屏速度(Accelerate screen mirrorin…

vite+react+ts如何集成redux状态管理工具,实现持久化缓存

1.安装插件 这里的redux-persist--进行数据的持久化缓存&#xff0c;确保页面刷新数据不会丢失 yarn add react-redux^9.2.0 redux-persist^6.0.0 reduxjs/toolkit^2.5.1 2.创建仓库文件夹 在项目的src文件夹下创建名为store的文件夹&#xff0c;里面的具体文件如下 featur…

TrustRAG:通过配置化模块化的检索增强生成(RAG)框架提高生成结果的可靠性和可追溯性

TrustRAG旨在风险感知的信息检索场景中提高生成内容的一致性和可信度。用户可以利用私有语料库构建自己的RAG应用程序&#xff0c;研究库中的RAG组件&#xff0c;并使用定制模块进行实验。论文展示了TrustRAG系统在摘要问答任务中的应用&#xff0c;并通过案例研究验证了其有效…

力扣27.移除元素(双指针)

题目看起来很乱&#xff0c;实际上意思是&#xff1a;把数组中值不等于val的元素放在下标为0,1,2,3......&#xff0c;并且返回数组中值不等于val的元素的个数 方法一&#xff1a;直接判断覆盖 class Solution { public:int removeElement(vector<int>& nums, int…

特辣的海藻!7

特邀嘉宾&#xff1a;滑动窗口~ 题 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 做过的题&#xff0c;再一次做&#xff0c;还是有问题。。。。我把它给解决掉&#xff01; 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 超时 …