【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.mzph.cn/news/690329.shtml

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

相关文章

.NET有哪些微服务框架

1.概述 想要对.net的微服务方案进行一下调查,看有什么可选的方案和框架,与spring clound相比.net 创建微服务是相对较麻烦的。 ID名称说明1Service FabricSteeltoe是帮助.NET开发的服务接入Spring Cloud技术栈的官方支持工具。也就是说,微服…

STM32F1 - I2C读写EEPROM

Inter-integrated circuit 1> 实验概述2> I2C模块 - 硬件方框图3> I2C模块 - 主发送器模式4> I2C模块 - 主接收器模式 1> 实验概述 通过STM32F103内部I2C硬件模块, 读写EEPROM - AT24C02 2> I2C模块 - 硬件方框图 3> I2C模块 - 主发送器模式 4…

GPT-4助力我们突破思维定势

GPT-4在突破思维局限、激发灵感和促进知识交叉融合方面的作用不可小觑,它正逐渐成为一种有力的工具,助力各行业和研究领域的创新与发展。 GPT-4在突破传统思维模式、拓宽创新视野和促进跨学科知识融合方面扮演着越来越重要的角色: 突破思维…

【Oracle11g安装配置详细教程——详细讲解】

Oracle11g安装配置详细教程 1. 介绍2. Windows环境安装Oracle 11g步骤3. Linux环境安装Oracle 11g步骤4. 注意事项 1. 介绍 由于Oracle 11g的安装涉及到一系列复杂的步骤,并且每一步可能还会因为操作系统的不同(如Windows、Linux)而略有差异…

java 数据结构LinkedList类

目录 什么是LinkedList 链表的概念及结构 链表的结构 无头单向非循环链表 addFirst方法(头插法) addLast方法(尾插法) addIndex方法 contains方法 removeAllKey方法 size和clear方法 链表oj题 无头双向非循环链表 ad…

Paper - 使用 CombFold 组合装配实现大型蛋白质复合物的结构预测

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/136170304 CombFold: predicting structures of large protein assemblies using a combinatorial assembly algorithm and AlphaFold2 CombFold…

大公司为什么禁止SpringBoot项目使用Tomcat?

原作者:老杨 原文PDF链接:https://topjavaer.cn/advance/excellent-article/28-springboot-forbid-tomcat.html 前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat…

ClickHouse监控及备份

第1章 ClickHouse监控概述 第2章 Prometheus&Grafana的安装 第3章 ClickHouse配置 第4章 Grafana集成Prometheus 第5章 备份及恢复

【C语言】位操作符与移位操作符练习

目录 前言: 1.一道变态的面试题 2.输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。 方法一: 方法二: 方法三: 3.打印整数二进制的奇数位和偶数位 前言: 前篇我们学习过C语言…

【开源】JAVA+Vue.js实现城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统,支持…

gem5学习(22):经典内存系统的一致性——Classic Memory System coherence

官网教程:gem5: Classic memory system coherence M5 2.0b4引入了一个经过大量重写和简化的缓存模型,包括一个新的一致性协议。一致性协议是用于确保多个缓存之间的数据一致性的规则和机制。这意味着在多个缓存中存储的数据将保持一致,以避免…

C#分部类、分割类的用法,及用分割类设计一个计算器

目录 一、涉及到的知识点 1.分部类 2.分部类主要应用在以下两个方面 3.合理使用分部类分割类 4.事件处理程序 5.Math.Ceiling方法 6.Text.Contains() 7.pictureBox.Tag属性 二、实例 1.源码 2.生成效果 在开发一些大型项目或者特殊部署时,可能需要…

MySQL的基础架构

文章目录 前言MySQL的基础架构总结 前言 你使用 MySQL 开发,你知道 MySQL 的基础架构吗?本文带你来入门MySQL 的基础架构 MySQL的基础架构 MySQL 是我们经常使用到的数据库。它的基础架构分为 server 层与存储引擎层。 server 层:用于存储…

(十九)springboot实战——springboot集成redis实现消息的订阅与发布

前言 本节内容主要介绍springboot项目通过集成redis,如何利用redis的订阅发布机制,完成系统消息的发布与订阅功能。Redis中的发布与订阅是一种消息通信模式,允许发送者(发布者)将消息发送给多个接收者(订…

小型医院医疗设备管理系统|基于springboot小型医院医疗设备管理系统设计与实现(源码+数据库+文档)

小型医院医疗设备管理系统目录 目录 基于springboot小型医院医疗设备管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、职员信息管理 2、设备信息管理 3、库房信息管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…

2.15日学习打卡----初学Zookeeper(二)

2.15日学习打卡 目录: 2.15日学习打卡一. Zookeeper部署运行伪集群安装集群安装服务管理 二. Zookeeper系统模型数据模型节点特性客户端命令行节点数据信息Watcher监听机制权限控制 ACL 三. 原生api操作Zookeeper四. zkclient库操作Zookeeper五. Apache Curator操作Zookeeper六…

Kubernetes基础(十八)-k8s存储对象Persistent Volume

1 什么是Persistent Volume? 在容器化应用中,Pod的生命周期是短暂的,当Pod终止时,其中的数据通常也会被销毁。为了解决这个问题,Kubernetes引入了Persistent Volume(PV)的概念。PV是集群中的一…

springboot/ssm物业管理系统Java小区物业缴费停车管理系统

springboot/ssm物业管理系统Java小区物业缴费停车管理系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&am…

C语言—指针(3)

嘿嘿嘿嘿,你看我像指针吗? 不会写,等我啥时候会写了再说吧,真的累了,倦了,有没有大佬教教我啊 1.面试题 1)定义整形变量i; 2)p为指向整形变量的指针变量&…

leetcode 1806. 还原排列的最少操作步数

题目链接:leetcode 1806 1.题目 给你一个偶数 n​​​​​​ ,已知存在一个长度为 n 的排列 perm ,其中 perm[i] i​(下标 从 0 开始 计数)。 一步操作中,你将创建一个新数组 arr ,对于每个 …