Linux——操作系统与进程基本概念

Linux——操作系统与进程基本概念


文章目录

  • Linux——操作系统与进程基本概念
  • 一、冯诺依曼体系结构
  • 二、操作系统
    • 2.1 OS层次图
    • 2.2 操作系统的作用
    • 2.3 管理的理解
  • 三、进程
    • 3.1 进程的概念
    • 3.2 描述进程—PCB
    • 3.3 PCB的内容
      • 3.3.1 查看进程
      • 3.3.2 标识符
      • 3.3.3 状态
      • 3.3.4 程序计数器
      • 3.3.5 记账信息
      • 3.3.6 上下文信息


一、冯诺依曼体系结构

在这里插入图片描述

输入设备: 键盘、磁盘、网卡、显卡、写字板、摄像头等
输出设备: 显示器、磁盘、网卡、显卡等
存储器: 内存
运算器和控制器: CPU

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

冯诺依曼体系结构是现代计算机主要使用的体系结构
在计算机的发展历史上,对于计算机的构造,其实出现过很多不同的构造,例如哈佛结构,图灵结构,但计算机发展至今,冯诺依曼体系结构却是现代计算机主要使用的结构

理由:首先我们需要知道现代计算机cpu的算力速度是非常恐怖的,而对于硬件来讲, cpu的读写速度大于内存而内存大于磁盘,但在计算机发展的初期,由于科学技术受限,cpu 内存 磁盘 三者之间的速度差别可能不大,
所以存在cpu与磁盘等外设相连,cpu直接读写到磁盘中的情况,但随着科学技术的发展,cpu的读写速度呈指数级上升,cpu的读写速度远大于磁盘的读写速度,根据木桶原理我们可以知道如果cpu直接与磁盘进行数据交换的话属于是暴殄天物了,磁盘会限制计算机的算力,所以大部分的计算机体系结构都被淘汰了,而正是因为冯诺依曼体系结构的合理性,使其没被淘汰

现代计算机以CPU为中心,距离cpu越近,存储效率越高,造价越贵
如果全部用高价格,一定带来的就是计算机太贵了
如果我们全部用便宜的存储介质,计算机价格便宜,但是基本用不了

二、操作系统

首先需要知道的常识是,操作系统其实也是软件(而且是第一个运行起来的软件),也是需要被加载到内存运行的,只有变成一个进程,也就是被执行了,运行起来了操作系统才真正起作用了
这里提到了进程的概念,本文中会提到,此处只需要知道操作系统也是软件也需要被执行起来才有作用

2.1 OS层次图

在这里插入图片描述

2.2 操作系统的作用

早期的计算机,由于技术不够成熟,使用的人大部分都是科研人员,是妥妥的程序员,但设计计算机的初衷本质是为了让人们在各行各业都能使用获得便利,所以对于一个小白来讲,也要能使用上计算机,也就是上图中的用户
如果没有操作系统,我们就要和一堆的硬件直接接触,需要了解各种硬件的特性,使用成本太高
由此就有了操作系统:

像这种任何计算机包含的一种最基本的能够进行软硬交互的一款软件,我们把它叫做操作系统(英文缩写OS)

OS包括:

内核:进程管理,内存管理,文件管理,驱动管理:这是OS用于管理硬件的
其它程序:函数库,shell程序等,这些程序能帮助用户更方便的使用OS

操作系统是什么?
是一款专门针对软硬件资源管理工作的软件

操作系统的功能:
对下管理好软硬件资源
对上为用户提供稳定、高效、安全的运行环境

那OS怎么对用户提供各种功能?

首先要知道OS不信任任何用户,所以我们也只能通过接口来与OS打交道,也就是OS层次图中的系统调用接口

系统调用与库函数的区别

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,一些大佬对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发

2.3 管理的理解

既然是管理,那么就有管理者和被管理者

我们可以想象在学校中,校长就是管理者,但是我们从来没见过校长
管理者和被管理者不直接接触,管理者的决策交给执行者(老师、辅导员),通过他们管理被管理者(学生)

按照上面OS的层次图,OS就是校长,驱动程序就是辅导员,底层硬件就是我们学生

通过例子我们可以得出以下的结论:

① 管理者和被管理者并不直接打交道
② 如何对被管理者进行管理? 先进行一些决策,再把这些决策施行

而管理者的决策需要有依据,依据就是数据

而我们的数据怎么被管理者知道呢?
如果一个学校人很少,校长有可能能知道每个人的数据,但是如果人很多呢?该如何聚合这些数据呢?

这就用到了C语言中的结构体,C++中的类

我们将学生具有的属性定义成结构体或类的过程,通常叫做数据的描述
有了结构体或类,那么就可以将数据存放在容器中,数组也好,链表也好,可以进行增删查改,也就是管理数据,把这个过程叫做数据的组织

由此我们得出重要结论:
管理的本质不是管理人,而是管理数据
计算机执行管理时,先把管理对象描述起来,再把管理对象组织起来
先描述 再组织

以上讲的都是对硬件的管理,那么对软件呢?对于软件的管理也是一样,先描述 再组织!

三、进程

3.1 进程的概念

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

Windows中任务管理器下的程序就叫进程
Windows中当我们想运行一个软件的时候,会双击一个.exe后缀的文件,这个文件就是可执行程序
上面我们说过操作系统的本质是管理,而管理是先描述 再组织

当想要创建一个进程的时候,要先将可执行程序加载到内存,随后操作系统对其建立对应的PCB(进程控制块)

在这里插入图片描述

3.2 描述进程—PCB

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

task_ struct内容分类

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

3.3 PCB的内容

3.3.1 查看进程

由于要查看一个进程,要保证进程一直在运行,这里写一个死循环
在这里插入图片描述
查看进程指令

ps axj | grep “mytest”
ps -l 查看运行中进程的详细信息

在这里插入图片描述
另一种查看进程的方法

ls /proc

proc是linux默认查看进程的目录,而我们创建的的进程的信息也会在proc中创建一个目录
在这里插入图片描述
修改程序获得程序的pid ,找到对应的目录(pid下文中会提到)
在这里插入图片描述
查看该目录下内容
在这里插入图片描述

3.3.2 标识符

查看进程的标识符

getpid()

身份证可以说是人的标识符,而进程也有一个属于自己标识符pid

3.3.3 状态

退出信号:我们写的程序末尾会有个return 0,0就是退出码
退出码用于检测程序是正常结束还是异常结束

查看最近一次的退出码

echo $?

3.3.4 程序计数器

也就是pc指针,永远指向下一条指令的地址

3.3.5 记账信息

OS有一个调度模块,可以较为均匀的调度每个进程,因为进程要获得CPU的资源才能进行,而进程又有很多,他会记录每个进程所使用的时间总和以确保“公平”

3.3.6 上下文信息

在这里插入图片描述
假设上述四个进程正在运行
为了保证公平,操作系统规定了进程单次运行的时间片(单次运行的最长时间),我们以为的CPU在同时运行多个进程,其实是CPU的快速切换完成的,在一个时间片运行一个进程,到了时间就切换下一个

假设我现在执行PCB1,一个时间片到了之后需要转换成PCB2,但PCB1进程很可能没执行完,而进程运行会产生大量的临时数据

这样就会引出一个问题
当1运行完一次时间片后这些临时数据下次还要用,如果不管,2就会覆盖掉1的临时数据

所以我们需要保护上下文信息和恢复上下文信息,当PCB1运行完一个时间片时,PCB1带走自己的临时数据,PCB回来的时候,再把临时数据给寄存器,接着上次运行

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

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

相关文章

跨境电商干货:如何提升亚马逊店铺质量?

亚马逊作为全球最大的电子商务平台之一,吸引了无数卖家和买家参与其中。在这个竞争激烈的环境中,要想提升亚马逊店铺的质量和业绩,需要采取一系列有效的策略和工具。而住宅IP代理作为一个强大的网络工具,也在其中发挥着重要的作用…

OpenCV基本图像处理操作(八)——光流估计

光流估计 光流估计是一种用于检测图像序列中像素点运动的技术。它基于这样的假设:在连续的视频帧之间,一个物体的移动会导致像素强度的连续性变化。通过分析这些变化,光流方法可以估计每个像素点的运动速度和方向。 光流估计通常用于多种应…

【Python】Pandas常用基础使用案例

落花雨 你飘摇的美丽 花香氤 把往日情勾起 我愿意 化浮萍躺湖心 只陪你 泛岁月的涟漪 🎵 许嵩《山水之间》 Pandas是一个强大的Python数据分析工具库,它极大地简化了数据处理和分析的过程。无论你是数据科学初学者还是经验丰富的分…

任务修复实例(3)

Quest entry 24812 Quest name No More Mercy | 不再怜悯 -- Add AIName Field UPDATE world.creature_template SET AIName SmartAI WHERE entry IN (38442,38560,38932); -- Add aura for Zuni INSERT INTO world.creature_template_addon (entry, auras) VALUES (38932…

基于ssm冀中工程技师校园网站设计与实现论文

摘 要 使用旧方法对冀中工程技师学院网站的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在冀中工程技师学院网站的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次…

测试大佬揭秘写好简历的7个细节

简历是HR对候选人的第一印象,一个有经验的HR初筛一份2页A4纸的简历通常只有几十秒的时间,如果没有看到自己想看的东西,哪怕简历再厚很可能会被直接pass掉。 如果有兴趣,再花一两分钟仔细浏览一下候选人的基本情况,研究…

算法3:寻找数组的中心下标

给定一个整数数组 nums,请编写一个能够返回数组“中心下标” 的方法。 中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回-1。如果数组有多个中心下标,应该返回最靠近左边的…

【Python】如何使用Python中的pandas库和scikit-learn库来实现逻辑回归模型

他们说快写一首情歌 雅俗共赏 落笔传神还要容易传唱 上得厅堂也下得厨房 就像我一直在找的姑娘 快写一首情歌雅俗共赏 打完字谜还要接着打榜 如果胡同弄堂全都播放 气韵里居然添了些孤芳自赏 🎵 许嵩《雅俗共赏》 数据准备 在开始建模之前&am…

最新最全的Jmeter接口测试必会技能:jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入,而且每次登录时图片验证码都是随机的;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用; 通过jmeter对图片验证码…

【C语言】——字符串函数的使用与模拟实现(下)

【C语言】——字符串函数的使用与模拟实现(下) 前言五、长度受限类字符串函数5.1、 s t r n c p y strncpy strncpy 函数5.2、 s t r n c a t strncat strncat 函数5.3、 s t r n c m p strncmp strncmp 函数 六、 s t r s t r strstr strstr 函数6.1、函…

vue2知识点1 ———— (vue指令,vue的响应式基础)

vue2的知识点,更多前端知识在主页,还有其他知识会持续更新 Vue 指令 Vue指令是Vue.js中的一个重要概念,用于向DOM元素添加特定行为或功能。Vue指令以v-开头,例如v-bind、v-if、v-for等。 v-bind 动态绑定属性 用法&#xff1a…

跟bug较劲的第n天,undefined === undefined

前情提要 场景复现 看到这张图片,有的同学也许不知道这个冷知识,分享一下,是因为我在开发过程中踩到的坑,花了三小时排查出问题的原因在这,你们说值不值。。。 我分享下我是怎么碰到的这个问题,下面看代码…

大数据:【学习笔记系列】Flink基础架构

Apache Flink 是一个开源的流处理框架,用于处理有界和无界的数据流。Flink 设计用于运行在所有常见的集群环境中,并且能够以高性能和可扩展的方式进行实时数据处理和分析。下面将详细介绍 Flink 的基础架构组件和其工作原理。 1. Flink 架构概览 Flink…

资料总结分享:《全外显子测序数据的流程和原理》

1外显子与测序,生信流程 1.1 外显子是什么? 外显子是基因组中能够转录组出成熟RNA的部分。一个基因组中所有外显子的集合,即为外显子组。值得注意的是,通常所说的全外显子组测序,是指针对蛋白编码基因的外显子&#x…

【RK3568】lt6911驱动采集RGB格式码流

此篇博客用以记录在rk3568下调试lt6911c芯片遇到的视频格式问题以及解决过程(内核版本4.19) 芯片的调试部分可以看RK3568调试lt6911c这篇文章。 问题描述 6911c芯片将HDMI信号转为mipi信号,转化后出来的原始数据格式是YUV422,得到yuv422后,直接送给rk3568编码 编码指令:…

【LeetCode热题100】【回溯】单词搜索

题目链接:79. 单词搜索 - 力扣(LeetCode) 要在一个二维数组里面找到一条单词路径,可以先遍历二维数组找到单词入口,然后往上下左右深度遍历,访问过的元素直接修改成字符串结束符,访问完改回去 …

PyTorch深度学习之旅:从入门到精通的十个关键步骤

在人工智能的浪潮中,深度学习框架扮演着至关重要的角色。PyTorch作为其中的佼佼者,以其简洁、直观和灵活的特性,吸引了众多开发者与研究者。本文将引导您逐步掌握PyTorch,从基础概念到高级应用,让您在深度学习的道路上…

Arduino UNO驱动MPR121接近电容式触摸传感器控制WS2812彩灯

简介 MPR121芯片功能强大可用作触摸,电容检测,驱动LED等等.在低速扫描下可以将功 耗降低到8μA,可以处理多达12个独立的触摸板。支持I2C,几乎可以用任何微控 制器连接。可以使用ADDR引脚选择4个地址中的一个,一个I2C2线总线上共有48 个电容触摸板。使用该芯片比使用模拟输入进行…

哈夫曼编码的实现

哈夫曼编码 在说哈夫曼编码之前,先要讲清楚编码集是什么东西。相信写过代码的人,一定听说过ASCII、 UTF-8、GBK 这些编码集。这些编码集合,本质上都是一个二进制和字符之间映射关系,拿最简单的 ASCII 来说吧,使用 0x3…

刷题DAY56 | LeetCode 583-两个字符串的删除操作 72-编辑距离

583 两个字符串的删除操作(medium) 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 代码实现1(正向思考): class Solution {…