【Linux】:体系结构与进程概念

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux体系结构和进程的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!

C 语 言 专 栏:C语言:从入门到精通

数据结构专栏:数据结构

个  人  主  页 :stackY、

C + + 专 栏   :C++

Linux 专 栏  :Linux

目录

1. 冯诺依曼体系结构

2. 操作系统

2.1 概念

2.2 关于管理

2.4 总结

3. 系统调用

4. 进程

4.1 基本概念

4.2 描述进程


1. 冯诺依曼体系结构

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

  • 计算机里面几乎所有的设备,都具有存储数据的能力。
  • CPU处理数据的能力是非常快的,其次是内存,然后是各种外设。

为什么各种计算机、服务器大部分都要遵守冯诺依曼体系呢?

以CPU为中心,距离CPU越近的,存储效率越高,造价越贵。

那么这些存储器有存储效率与存储速度的区别,那么为什么不全都使用存储效率最好的存储器来组成计算机呢?

理论上是可以的,但是最关键的一点就是:太太太贵了!!!,因为计算机是需要大部分平民百姓去使用的,并不是只有一少部分富豪来使用,但如果都是用最为便宜的存储器来组成,那么造出来的计算机基本不能用,所以需要进行取中,在兼具性能的同时,也需要注意造价。

基于冯诺依曼体系结构的计算机的本质就是:用较少的成本,打造出来效率不错的计算机。

2. 操作系统

2.1 概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。大体的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

我们的计算机在开机时第一个加载的软件就是操作系统,它是一款软件,进行软硬件资源管理的软件。

为什么要有操作系统?

手段:操作系统将软硬件资源管理好。

目的:给用户提供良好(安全、稳定、搞笑)的使用环境。

2.2 关于管理

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。
操作系统内部,一定会存在大量的数据对象和数据结构。那么OS是如何管理各种各样的数据呢?
在操作系统的内部,各种数据信息都是以一种数据结构--链表来进行存储管理的,链表中的每一个节点存储各种信息的属性,通过节点的指针将各个信息属性的节点连接起来,这样子就通过对链表的增删查改来实现对各种信息的管理。

2.4 总结

计算机管理硬件

  • 1. 描述起来,用struct结构体
  • 2. 组织起来,用链表或其他高效的数据结构
  • 3. 简要概括为:先描述,再组织

3. 系统调用

  • 在开发角度,操作系统对外会表现为一个整体但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

首先我们需要了解一下操作系统管理的核心:

  • 进程管理
  • 内存管理
  • 文件/IO管理
  • 驱动管理

那么关于管理方面总结出来的就是:“先描述。再组织

我们可以再将操作系统的层状结构拿过来看一下:

可以看到在用户到操作系统这一环节其中还是需要经过两层结构,那么为什么用户不能直接的去访问操作系统呢?

那么这里就涉及到一个安全的问题,对于操作系统来说,它是不相信任何一个人的,无论是谁,但是呢,它也要为我们做各种事情,那么就需要用到上述提到的OS暴露出来的一部分接口:系统调用接口。用户首先使用用户操作的接口来根据所需让系统调用接口去与操作系统进行交互,使得操作系统做出对应的操作。

在现实中也存在类似于操作系统与用户这样的例子,比如:银行与办理业务的社会人员,银行不会直接让你操作银行的资源系统,而是开放对应的窗口,设置对应的工作人员,你只需要将你的意愿转达给业务人员,那么他们就会实施对应的操作。

注意:

一般一个用户想要访问非常底层的OS数据或者访问硬件,都必须贯穿于整个层状结构。(用户必定要调用系统调用)

4. 进程

那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再把进程组织起来!

在我们的计算里面存在许多的可执行程序,这些可执行程序是存储在磁盘当中的,当启动可执行程序时,这个可执行程序会加载到我们的内存中。当我们打开许多的可执行程序之后,OS该如何去管理内存中的这些可执行程序呢?

先把进程描述起来,再把进程组织起来!

4.1 基本概念

基本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统资源(CPU时间,内存)的实体

4.2 描述进程

  • 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
  • 也被称之为进程PCB(process control block),Linux操作系统下的PCB是: task_struct

简而言之就是这个PCB中存放的是这个可执行程序的各种属性信息。

那么到这里再来看进程:

进程 = 可执行程序 + 内核数据结构(PCB)

这同时也回归到了我们的先描述,再组织,对进程的管理转化为对PCB链表节点的增删查改,这样有助于OS对进程的管理。

task_struct-PCB

  • 在Linux中描述进程的结构体叫做task_struct。
  • task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的属性信息。

task_ struct内容分类

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

所有运行在系统里的进程都以task_struct链表的形式存在内核里。
Linux中的进程PCB具体指的是:struct task_struct{}

朋友们、伙计们,美好的时

光总是短暂的,我们本期的的分享就到此结束,欲知后事如何,请听下回分解~,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“释放视频潜力,批量放大视频尺寸,高效提升视频质量“

在视频制作和编辑的过程中,我们经常需要调整视频的尺寸。然而,一个一个地手动调整不仅耗时,还容易出错。为了解决这个问题,现在有一款全新的视频批量剪辑工具,可以帮助你批量将视频尺寸放大,提升工作效率。…

windows排除故障工具RELI、PSR

RELI 在windows10中,如果按某些书上或网上所属,点击开始按钮,然后再搜书欧昂立输入RELI,在开始菜单中可以看到Reliable History(查看可靠性历史记录)蓝色的图标。 可惜,我试验后没能找到。 这…

【接口测试】最细Fiddle抓包辅助接口实战,抓包全过程总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、为什么需要抓包…

图像分类(四) 全面解读复现GoogleNet_InceptionV1-V4

论文解读 InceptionV1 前言 论文题目: Going Deeper with Convolutions Googlenet论文原文地址:https://arxiv.org/pdf/1409.4842.pdf 之前看过VGG的论文(VGG精读直达)。当时VGG获得了 2014 ILSVRC 图像分类的第二名,今天来看一下第一名…

矩阵的QR分解

矩阵的QR分解 GramSchmidt 设存在 B { x 1 , x 2 , … , x n } \mathcal{B}\left\{\mathbf{x}_{1},\mathbf{x}_{2},\ldots,\mathbf{x}_{n}\right\} B{x1​,x2​,…,xn​}在施密特正交化过程中 q 1 x 1 ∣ ∣ x 1 ∣ ∣ q_1\frac{x_1}{||x_1||} q1​∣∣x1​∣∣x1​​ q k …

资深测试总结,现在软件测试有未来吗?“你“的底气在哪里?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、为什么会有 “…

【C刷题】day7

🎥 个人主页:深鱼~🔥收录专栏:【C】每日一练🌄欢迎 👍点赞✍评论⭐收藏 一、选择题 1、以下对C语言函数的有关描述中,正确的有【多选】( ) A: 在C语言中,一…

内容运营工具:标签体系

一.分类和标签的区别 ■标签是扁平的,分类是层级的。 ■标签是精确的,分类是粗糙的。 ■标签是多维的,分类是一维的。 二.标签的本质:元数据 事实上,在数据领域,有一个鼎鼎大名的词汇与标签极其雷同&…

【C++】:模板进阶

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关C模板进阶的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

qsort函数使用方法总结

目录 一、qsort函数原型 二、compar参数 三、各种类型的qsort排序 1. int 数组排序 2. 结构体排序 3. 字符串指针数组排序 4. 字符串二维数组排序 四、回调函数 1. 什么是回调函数 2. 为什么要用回调函数? 3. 怎么使用回调函数? 4.下面是…

皮肤性病科专家谭巍主任提出HPV转阴后饮食七点建议

HPV转阴是每一位感染者都期盼的,因为转阴所以健康,只有转为阴性才意味着不具备传染性,从此也不必再害怕将病毒传染给家人的风险,也不必再担忧持续感染而引发的健康风险。总之,HPV转阴是预示感染者恢复健康与否的主要标…

不知道如何制作产品图册的,赶紧收藏住!

产品图册是展示产品外观、功能和特点的重要工具,对于销售和推广产品至关重要。然而,制作一本高质量的产品图册并不是一件容易的事情。如果你没有经验或者不确定如何着手,那么这篇文章将为你提供一些实用的建议和技巧,帮助你轻松制…

AtCoder Beginner Contest 329 题解A~F

A - Spread 输入字符串&#xff0c;字符之间加上空格输出 B - Next 输出数组当中第二大的数 C - Count xxx 统计每个字符出现过的最长长度&#xff0c;再累加即可 #include<bits/stdc.h> #pragma GCC optimize("Ofast") #define INF 0x3f3f3f3f #define I…

Flutter 中数据存储的四种方式

在 Flutter 中&#xff0c;存储是指用于本地和远程存储和管理数据的机制。以下是 Flutter 中不同存储选项的概述和示例。 Shared Preferences&#xff08;本地键值存储&#xff09; Shared Preferences 是一种在本地存储少量数据&#xff08;例如用户首选项或设置&#xff09…

漂亮的pyqt6皮肤 PyOneDark_Qt_Widgets_Modern_GUIPublic

大家先看看界面图&#xff0c;真的很漂亮&#xff1a; github地址&#xff1a;GitHub - Wanderson-Magalhaes/PyOneDark_Qt_Widgets_Modern_GUI 作者还录了教程&#xff1a; TUTORIALS: Tutorial 01: https://youtu.be/QQGlTGYCMg0 Tutorial 02: https://youtu.be/LwKre2proDk…

GMEL:基于地理上下文嵌入的OD流预测

1 文章信息 文章题为“Learning Geo-Contextual Embeddings for Commuting Flow Prediction”&#xff0c;是一篇发表于The Thirty-Seventh AAAI Conference on Artificial Intelligence (AAAI-20)的一篇论文。该论文主要针对交通中OD流预测任务&#xff0c;从地理上下文信息中…

【机器学习基础】正则化

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战 欢迎订阅&am…

鸿蒙:实现两个Page页面跳转

效果展示 这篇博文在《鸿蒙&#xff1a;从0到“Hello Harmony”》基础上实现两个Page页面跳转 1.构建第一个页面 第一个页面就是“Hello Harmony”&#xff0c;把文件名和显示内容都改一下&#xff0c;改成“FirstPage”&#xff0c;再添加一个“Next”按钮。 Entry Compone…

⑩⑥ 【MySQL】详解 触发器TRIGGER,协助 确保数据的完整性,日志记录,数据校验等操作。

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 触发器 ⑩⑥ 【MySQL】触发器详解1. 什么是触发…

在前端开发中,什么是CDN(Content Delivery Network)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…