【linux】体系结构和os管理

冯诺依曼体系结构

在这里插入图片描述
输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出单元:显示器,打印机等

这里的存储器指的是内存
三者是相互连接的,设备之间会进行数据的来回拷贝,拷贝的整体速度,决定计算机效率的指标
为什么在体系结构中要存在内存?
cpu读取数据非常快,计算也非常快,而输入设备输入的速度较慢相比cpu读取速度

在这里插入图片描述

所以我们先要将数据加载到内存中去,在内存中积累起来,然后cpu处理内存中的大量数据,计算机效率问题就变成了内存效率问题,内存可以看做介于设备和cpu之间的一个超大缓存.
在数据层面,cpu只和内存打交道,外设和内存打交道,磁盘是外设.
设想一下,你和你的铁铁怎么聊天呢??
忽略网络上的知识,你打的字通过键盘这个输入设备加载到内存中去,然后cpu从内存中读取数据,经过处理,将数据拷贝到输出设备上(网卡),忽略网络原因,然后传到你铁铁的输入设备(网卡)上,然后将数据加载到你铁铁的内存中,经过cpu处理,将数据拷贝到你铁铁的屏幕上去了;

操作系统(Operator System)

当你打开电脑的一瞬间,操作系统就被加载了;
操作系统是一个进行软硬件资源管理的软件,设计OS的目的与硬件交互,管理所有的软硬件资源,为用户程序(应用程序)提供一个良好的执行环境
在这里插入图片描述
管理的例子
在学校,校长属于管理者,就好像这里的管理者,而我们学生就相当于底层的硬件,而在学校,一般校长是和我们不会见面的,驱动就相当于我们的导员,为执行者,那我们和校长不见面,校长怎么管理我们啊??
本质上只需要将你的个人信息(数据)做管理即可,对数据进行决策
我们的个人信息可以通过执行者交给管理者,管理者面对大量的信息,对我们数据的管理,就相当于对我们人的管理.
这里也可以联想到我们之前写的通讯录,需要先写个结构体保存我们的信息,然后在通过链表,或者其他的数据结构将所有人的信息组织起来,所以校长对学生的管理也就变成了对链表的增删查改

总结一下:管理就相当于先描述,再组织
操作系统工作我们可以理解为一个银行的大系统,操作系统类比行长,而底层硬件可以理解为银行所有的硬件设施,行长是不直接和硬件设备打交道,驱动程序就是我们银行的工作人员,相当于执行者,包括后勤人员,后勤人员将硬件的信息统计起来交给行长,行长对信息进行描述,组织,就相当于对硬件设施的管理,而默认银行系统是对任何人不信任的,对外提供功能,只暴露几个窗口,在操作系统内核,也只提供几个接口对外提供功能,为了更好的提供服务,银行会在外面也设置几个服务人员,而操作系统内核也会提供第三方库,和shell程序,和用户打交道.

进程

我们可以启动多个程序,将.exe加载到内存,并且操作系统会对加载到内存的程序进行管理,如何管理,就是先描述在组织;
当.exe 被我们打开,操作系统就会把该程序的进程加载到内存,进程包括程序的数据和代码(内容)+程序的属性,而针对于程序属性,操作系统会使用pcb结构体进行描述,对进程的管理,转化成对pcb对象的管理,在内存中的所有进程会通过将所以进程对应的pcb结构体节点通过复杂的双向链表连接起来,理论上pcb结点可以通过任何数据结构进行管理,PCB(进程控制块),可以理解为进程属性的集合。
在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息
几乎所有的独立指令,就是程序,运行起来变成进程.
而task_ struct内容分类,我们后面再讲.
进程的查看

ps指令可以查看我们自己的进程信息
ps axj指令可以查看所有任务进程的信息
ps axj | head-1带数据对应的名称
ps axj | head - l &&grep '可执行程序或该进程id‘ 查看对应可执行程序的进程信息
top 也可以查看进程信息
ls /proc 将进程信息通过文件形式显示出来
ls /proc -al 查看进程发现是目录形式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
只有一个云服务器无法演示显示一个正在执行的程序的进程信息
我们看不懂这些进程信息,如果出现一个exe的进程会标记当前进程对应的可执行程序的路径,还有一个cwd,当执行一个程序,cwd进程会记录该进程的工作路径
在这里插入图片描述
pid是你该进程的进程id
ppid是你该进程的父进程id
1.如何获取运行程序的pid
在这里插入图片描述

使用getpid函数,函数返回当前程序进程的pid,记得包含头文件
在这里插入图片描述

kill -9 +进程的pid指令,结束该进程
获取该进程的父进程id
使用getppid()函数
在这里插入图片描述

在这里插入图片描述
该进程的父进程id为2531
在这里插入图片描述
我们通过查看pid号为2531的是我们shell创建的子进程bash,
如果我们使用kill杀掉bash,我们的命令行就会出错

fork函数作用创建子进程的函数
fork函数的返回值,会给父进程返回子进程的pid,给子进程返回0
在这里插入图片描述

当我们未使用fork时
在这里插入图片描述

使用fork后
在这里插入图片描述

在这里插入图片描述

fork函数调用后后面的函数被执行两次,一次在子进程执行,一次在父进程执行;相当于一页纸在fork后变成了两页纸。
再来看看fork的返回值
在这里插入图片描述

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

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

相关文章

社区店经营全攻略:如何选址、运营并打造火爆生意?

随着电商的兴起,实体店的经营面临着越来越多的挑战。然而,社区店依然具有独特的优势,如便捷的地理位置、与消费者的紧密互动等。 作为在社区店开鲜奶吧5年的创业者,我深有感触,那么这篇文章将为你提供最有价值的干货信…

计算机设计大赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…

深入浅出JVM(一)之Hotspot虚拟机中的对象

本篇文章思维导图 对象的创建 对象的创建可以分为五个步骤:检查类加载,分配内存,初始化零值,设置对象头,执行实例构造器 类加载检查 HotSpot虚拟机遇到一条new指令,会先检查能否在常量池中定位到这个类的符号引用,检查这个类是否类加载过 没有类加载过就去类加载类加载过就进…

基于Java+SpringBoot的旅游路线规划系统(源码+论文)

文章目录 目录 文章目录 前言 一、功能设计 二、功能实现 1.1 前端首页模块的实现 1.2 景点新闻 1.3 景点在线预订 1.4 酒店在线预订 1.5 管理员景点管理 1.6 管理员旅游线路管理 1.7 酒店信息管理 三、库表设计 前言 随着我国的经济的不断发展,现在的一些热门的景…

【C++】类与对象(构造函数、析构函数、拷贝构造函数、常引用)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:http://t.csdnimg.cn/eCa5z 目录 类的6个默认成员函数 构造函数 特性 析构函数 特性 析构的顺序 拷贝构造函数 特性 常引用 前言 &…

HBase 进阶

参考来源: B站尚硅谷HBase2.x 目录 Master 架构RegionServer 架构写流程MemStore Flush读流程HFile 结构读流程合并读取数据优化 StoreFile CompactionRegion Split预分区(自定义分区)系统拆分 Master 架构 Master详细架构 1)Meta 表格介…

光芒绽放:妙用“GLAD原则”打造标准的数据可视化图表

光芒绽放:妙用“GLAD原则”打造标准的数据可视化图表 文章目录 光芒绽放:妙用“GLAD原则”打造标准的数据可视化图表前言一、可视化工具有哪些?二、那如何做出正确可视化图表 ?GLAD原则1.G原则2.L原则3.A原则4.D原则 三、总结最后…

模式匹配这么好,Java语法里有吗?

这篇文章我们借助新版Java来理解模式匹配,Rust版的模式匹配稍后就端上来,各位先尝尝Java这杯老咖啡还香不香😄。 什么是模式匹配? 下图直观的表达了模式匹配的概念。 所谓模式类似上图中木盒的各种形状的洞洞,我们…

单片机学习笔记---红外遥控(外部中断)

目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控简介 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工…

余弦退火:通过动态调整学习率增强深度学习

导 读 在快速发展的机器学习领域,特别是深度学习,训练算法的效率和有效性至关重要。学习率作为这些算法的一个关键因素,决定了梯度下降期间的步长。 而余弦退火作为用于优化学习率的一种新颖且日益流行的技术。本文将深入探讨了余弦退火的概…

SwiftUI 更自然地向自定义视图传递参数的“另类”方式

概览 在 SwiftUI 中,正是自定义视图让我们的 App 变得与众不同!然而,除了传统的视图接口定义方式以外,我们其实还可以有更“银杏化”的选择。 如上图所示:对于 SubView 子视图所需的参数我们一开始并没有操之过急&…

软件工具安装遇到bug、报错不知道怎么解决?看这里!

前言 本文举例了几个常见的软件工具使用问题,文末会提供一些我自己整理和使用的工具资料 。 "在追逐零 Bug 的路上,我们不断学习、改进,更加坚定自己的技术信念。让我们相信,每一个 Bug 都是我们成长的机会。" 一、VM…