Linux系列-进程的概念

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

这篇文章,我们主要分析一下进程。

之前,我们讲过了冯诺依曼体系架构, 我们常见的计算机,像笔记本,或者不常见的计算机,像服务器,大部分都遵守冯诺依曼体系。

截止目前,我们所认识的计算机,都是又一个一个的硬件组件组成的。

主要包括三个部分:

输入单元、中央处理器、输出单元 

 关于冯诺依曼结构,我们需要知道的有几点:

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

操作系统

什么事操作系统

我们这里主要讲三个部分,分别是什么是操作系统,为什么要有操作系统,以及操作系统是怎么样工作的。

首先,什么是操作系统:

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。这个是官方的解释

那什么是操作系统呢?

操作系统其实就是一个管家,他可以帮助你完成好你想做的事情。

由于操作系统大部分写的时候都是使用的C语言,少部分使用的汇编,汇编的作用主要是开机的时候识别操作系统。

每一种硬件的底层都需要对应的驱动程序,因为并不是操作系统直接访问的。驱动程序就像是操作系统伸出的触手一样,可以帮助操作系统更好的管理硬件,这个驱动程序要么是操作系统自带的,要么是对应的硬件所要下载的。

操作系统的作用

那为什么需要有操作系统呢?

  • 对下管理好软硬件资源,对上提供良好的用户体验
  • 对下要进行软硬件管理,保证底层稳定,高效,安全,能进行良好的工作
  • 对上提供一个稳定、高效、安全的运行环境

操作系统是怎么样进行管理的

其实,管理的本质是对数据进行管理。

就像你的老板,就像校长,是可以通过各种各样的数据来了解你的具体情况,从而可以对你进行管理。

而在这个其中,是存在着一个中间人的角色的。

中间人的作用是,对上获取数据,对下执行决策工作。这个中间人,就是操作系统。

那,这个是怎么样进行管理呢?

比如说你的校长,是怎么样通过数据来了解你呢?,这个时候就存在着一个结构体,比如说

struct student
{名字性别成绩struct student*next;
}

通过这个结构体组成的单链表就可以实现对于数据的控制。

对学生的管理,变成了对链表的管理,转化成了计算机的语言。

在管理者层面上,我们对所有被管理对象,构成节点,把所有的节点按照链表的形式连接起来

那,相对应的,操作系统是如何管理硬件的呢?

在操作系统内部封装了一个结构体

通过链表连接,形成了一张,device_list

struct device
{//name//status//id}

 所以,我们在操作系统内部,看到的将全是链表,这个就是所谓的先描述,再组织,我们先对每个的性质进行描述,然后将每个节点连接起来。

任何计算机语言,都遵循先描述,再组织

所以,为什么现在所有的主流面向对象语言,都要提供面向对象的,标准库。

因为语言的本质是为了对各种对象进行管理,所以要有各种各样的管理工具,而语言中的面向对象,实质上是提供先描述的能力,而语言中的各种库,提供的是在组织的能力。

而操作系统的操作,其实都是对于数据结构的增删查改。

所以,我们其实可以想到,一定是现有的操作系统,再有的C语言。

那么,为什么会有数据结构呢?

最开始只有语言和操作系统,随着软件越来越大,写任何软件,都需要先描述再组织,进行组织的学科就叫做数据结构。

那么,为什么主流是面向对象呢?

面向对象其实就是怎么把一个对象描述起来,用语言进行先描述,提供各种各样描述的能力。

在银行当中,其实也是这个样子,银行本身就是一个系统,他有仓库,有收钱的地方等等。

而在银行当中,也存在着一个职位,叫做维护人员,他们负责维护底层的设备,使得底层的设备正常的运转,这个其实就像是操作系统当中的驱动程序,使得底层的硬件能够正常的运行。

而对于银行来说,银行系统是不相信任何人的,但是又要对外提供服务,所以,银行设置了各种各样的窗口,这个是银行开放的表现,对于操作系统来说,肯定也是不能随意的让用户修改自身的数据的,所以,它也把自己封闭起来,并且,它也提供了各种各样的对外的接口(系统调用),这种接口都是C语言式的接口,因为操作系统就是由C语言写的,所以对于C/C++,可以直接的使用系统调用。

比如说,我们向显示器进行打印,本质是对硬件进行写入,但是是不能直接写入了,而是通过系统调用。

对于系统调用来说,只要系统调用时C语言的接口,注定了所有软件的底层,都与C/C++有关。

而在银行当中,来的用户肯定也存在那种不识字的人,对于这种人,使用窗口的成本也很高,这个时候,就存在着另外一种岗位,叫做大堂经理。这个大堂经理,就像是操作系统当中的服务层,库。

系统调用接口,需要对系统有着一定的了解,对于一般的程序员来说,使用起来是比较麻烦的,所以我们封装成了库,直接使用库就可以了,比如说(C语言库,C++库),比如说,printf和scanf,还有图形化界面。

安卓的底层是Linux(内核)

什么叫做进程

操作系统是一个软件,所以开机后第一个加载的,就是操作系统。

操作系统最核心的工作就是进行进程管理,操作系统管理进程依靠的是进程的属性数据,在操作系统当中,加载一个进行,不止加载可执行程序到内存,还要加载进程的属性(这个叫做PCB,也可以说叫做task_struct)

 struct task_struct{int pid;int status;int prio;void* memptr;.....struct task_struct*nexr;}

 操作系统是如何对进程进行管理的呢?

先描述,再组织,先定义成某种结构体,在系统层面上进程的属性,结构体里面也有某种链接字段

对进程的管理,也就是对某种数据结构的管理。

所以说,其实什么叫做进程呢?

进程就是内核数据结构+程序的代码和数据

调度运行的时候,进程呈现出了动态的特征(被os调用,运行),从CPU上拿下来,拿上去。所以进程就像是运行起来的程序。

那为什么要有PCB呢?

因为操作系统要管理进程,可能存在多个进程,所以要先描述,在组织。

好了,本次的文章就到这里了,我们下次再见。 

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

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

相关文章

SQL优化经验大全(表设计优化,索引优化,索引创建规则、索引失效场景,sql语句优化,主从复制,分库分表)面试题

目录 1.表的设计优化 2.索引优化 2.1 索引创建的规则 2.2 索引失效的场景 3.SQL语句优化 4.主从复制、读写分离 5.分库分表 5.1.怎么判断项目是需要分库还是要分表? 5.2 分库分表有哪些拆分方案? 5.2.1 垂直分库 5.2.2 垂直分表 5.2.3 水平分…

css边框修饰

一、设置线条样式 通过 border-style 属性设置,可选择的一些属性如下: dotted:点线 dashed:虚线 solid:实线 double:双实线 效果如下: 二、设置边框线宽度 ① 通过 border-width 整体设置…

OpenGL入门002——顶点着色器和片段着色器

文章目录 一些概念坐标转换阶段顶点着色器片段着色器VBOVAO 实战简介main.cppCMakeLists.txt最终效果 一些概念 坐标转换阶段 概述: 模型空间、世界空间、视图空间和裁剪空间是对象在3D场景中经历的不同坐标变换阶段。每个空间对应渲染管道的一个步骤,…

LeetCode 684.冗余连接:拓扑排序+哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n)))

【LetMeFly】684.冗余连接:拓扑排序哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n))) 力扣题目链接:https://leetcode.cn/problems/redundant-connection/ 树可以看成是一个连通且 无环 的 无向 图。 给定往…

C语言指针与一维数组 Java动态初始化与常见问题(越界问题)

1./*int main(void) { int a[5] { 10,20,30,40,50 };//数组间的元素地址相连的 int* p; printf("a代表的地址:%d\n", a);//数组首个元素的地址 printf("a1代表的地址:%d\n", a 1);//偏移数组 printf("a2…

2023年SEO趋势分析与未来发展展望

内容概要 在2023年的数字营销环境中,搜索引擎优化(SEO)依然扮演着关键角色。随着技术的不断演进和用户需求的变化,SEO趋势也在不断变化。首先,核心算法的更新已开始影响网站排名,搜索引擎越来越注重网站内…

面试经典 150 题:189、383

189. 轮转数组 【参考代码】 class Solution { public:void rotate(vector<int>& nums, int k) {int size nums.size();if(1 size){return;}vector<int> temp(size);//k k % size;for(int i0; i<size; i){temp[(i k) % size] nums[i];}nums temp; }…

Linux云计算 |【第五阶段】CLOUD-DAY8

主要内容&#xff1a; 掌握DaemonSet控制器、污点策略&#xff08;NoSchedule、Noexecute&#xff09;、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP&#xff08;服务名自动发现&#xff09;、&#xff08;Nodeport、Headless&#xff09;、Ingress控制器 一…

智能网联汽车:人工智能与汽车行业的深度融合

内容概要 在这个快速发展的时代&#xff0c;智能网联汽车已经不再是科幻电影的专利&#xff0c;它正在悄然走进我们的日常生活。如今&#xff0c;人工智能&#xff08;AI&#xff09;技术与汽车行业的结合犹如一场科技盛宴&#xff0c;让我们看到了未来出行的新方向。通过自动…

Iceoryx2:高性能进程间通信框架(中间件)

文章目录 0. 引言1. 主要改进2. Iceoryx2 的架构3. C示例代码3.1 发布者示例&#xff08;publisher.cpp&#xff09;3.2 订阅者示例&#xff08;subscriber.cpp&#xff09; 4. 机制比较5. 架构比较6. Iceoryx vs Iceoryx2参考资料 0. 引言 Iceoryx2 是一个基于 Rust 实现的开…

NumPy安装

1.NumPy简介 NumPy(Numerical Python) 是 Python 语言的扩展程序库&#xff0c;支持大量维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早由 Jim Hugunin 与其它协作者共同开发&#xff0c;2005 年&#xff0c;Travis Oliph…

全自动一键批量创建站群网站插件 | Z-BlogPHP 堆词起站工具

在当今竞争激烈的数字营销世界&#xff0c;如何快速提升网站曝光率和流量&#xff1f;答案就是智能站群系统。 本文将结合实际效果&#xff0c;介绍一款功能强大的站群系统&#xff0c;重点讲述其堆词功能、泛目录管理、一键批量创建、内容转码、自定义标签和GPT内容生成与发布…

【深度学习】时间序列预测、分类、异常检测、概率预测项目实战案例

说明&#xff1a;本专栏内容来自于个人学习笔记、以及相关项目的实践与总结。写作目的是为了让读者体会深度学习的独特魅力与无限潜力&#xff0c;以及在各行各业之中的应用与实践。因作者时间精力有限&#xff0c;难免有疏漏之处&#xff0c;期待与读者共同进步。 前言 在当今…

第十五章 Vue工程化开发及Vue CLI脚手架

目录 一、引言 二、Vue CLI 基本介绍 三、安装Vue CLI 3.1. 安装npm和yarn 3.2. 安装Vue CLI 3.3. 查看 Vue 版本 四、创建启动工程 4.1. 创建项目架子 4.2. 启动工程 五、脚手架目录文件介绍 六、核心文件讲解 6.1. index.html 6.2. main.js 6.3. App.vue 一、…

Linux 进程终止 进程等待

目录 进程终止 退出码 错误码 代码异常终止(信号详解) exit _exit 进程等待 概念 等待的原因 wait 函数原型 参数 返回值 监控脚本 waitpid 概念 函数原型 参数 返回值 WIFEXITED(status) WEXITSTATUS(status) 问题 为什么不用全局变量获得子进程的退出信…

[MySQL]DQL语句(一)

查询语句是数据库操作中最为重要的一系列语法。查询关键字有 select、where、group、having、order by、imit。其中imit是MySQL的方言&#xff0c;只在MySQL适用。 数据库查询又分单表查询和多表查询&#xff0c;这里讲一下单表查询。 基础查询 # 查询指定列 SELECT * FROM …

Java 批量导出Word模板生成ZIP文件到浏览器默认下载位置

是不是你们要找的&#xff01;是不是你们要找的&#xff01;是不是你们要找的&#xff01; 先看效果&#xff1a; 1.word模板格式 2.模板位置 3.需要的依赖 <!--POI-TL实现数据导出到word模板--><dependency><groupId>cn.hutool</groupId><artifact…

Flarum:简洁而强大的开源论坛软件

Flarum简介 Flarum是一款开源论坛软件&#xff0c;以其简洁、快速和易用性而闻名。它继承了esoTalk和FluxBB的优良传统&#xff0c;旨在提供一个不复杂、不臃肿的论坛体验。Flarum的核心优势在于&#xff1a; 快速、简单&#xff1a; Flarum使用PHP构建&#xff0c;易于部署&…

CPU用户时间百分比

在计算机系统中&#xff0c;"CPU用户时间百分比&#xff08;CPU User Time&#xff09;"是一个性能监控指标&#xff0c;它描述了CPU在用户模式下执行的累积时间与总的CPU时间的比例。这个指标可以帮助我们了解系统在执行用户态程序时的负载情况。下面是一些关于CPU用…

ubuntu20.04安装ros与rosdep

目录 前置配置 配置apt清华源 配置ros软件源 添加ros安装源&#xff08;中科大软件源&#xff09; 设置秘钥 更新源 ros安装 安装ros 初始化 rosdep 更新 rosdep 设置环境变量 安装 rosinstall 安装验证 启动海龟仿真器 操控海龟仿真器 rosdep安装更新 安装 使用…