Linux系列-进程的概念

news2024/11/6 11:10:20

🌈个人主页:羽晨同学 

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

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

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

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

主要包括三个部分:

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

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

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的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.coloradmin.cn/o/2230678.html

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

相关文章

Rust的enum枚举的强大用法

在Rust中,enum(枚举)是一种非常强大的类型,它可以包含多个变体(variants),每个变体可以是不同的类型,包括复杂类型。这使得enum在Rust中不仅用于表示简单的状态或选项集合&#xff0…

【初识Linux】

十点半的飞机快要到了,机场还是那么的拥挤.......................................................................... 文章目录 一、【初识指令】 1、 ls✔ 2、pwd✔ 3、cd✔ 4. touch✔ 5.mkdir✔ 6.rmdir✔ 7、rm ✔ 8.man✔ 9.cp✔ ​10、mv✔ 11、cat✔…

头歌——算法设计与分析(贪心法)

文章目录 第1关:贪心法代码 第2关:最小生成树代码 第3关:Huffman 编码代码 第4关:单源点最短路径代码 第1关:贪心法 相关知识 为了完成本关任务,你需要掌握:贪心法 ;。 贪心法,又称…

面试题:JVM(四)

new对象流程?(龙湖地产) 对象创建方法,对象的内存分配。(360安全) 1. 对象实例化 创建对象的方式有几种? 创建对象的步骤 指针碰撞:以指针为分界线,一边是已连续使用的…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现,必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)

项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景: 1.为企业招聘决策提供科学的依据和参考,可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求,从而做出更明智的招聘和求职决策。…

Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…

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

主要内容: 部署Dashboard、部署Prometheus、部署HPA集群 一、Dashboard介绍 Dashboard是基于网页的Kubernetes用户界面,可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。可以使用Da…

将Notepad++添加到右键菜单【一招实现】

一键添加注册表 复制以下代码保存为 Notepad.reg,将红框内路径修改为自己电脑的“Notepad.exe路径”后,再双击运行即可。 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\N…

Git下载-连接码云-保姆级教学(连接Gitee失败的解决)

Git介绍 码云连接 一、Git介绍 二、Git的工作机制 下载链接:Git - 下载软件包 三、使用步骤 创建一个wss的文件夹,作为‘工作空间’ 四、连接码云账号 五、连接Gitee失败的解决方法 一、Git介绍 Git是一个免费的、开源的分布式版本控制…

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

DataFlow v202410 版本更新 一站式数据处理平台

DataFlow 是 OpenCSG 推出的一站式数据处理平台,与 CSGHub 无缝集成,形成数据到模型的全生命周期闭环,助力持续优化。平台兼容多种数据格式与来源,支持本地、云端和网络数据接入,并提供高效转换和读取工具,…

【搜索引擎】俄罗斯搜索引擎yandex

俄罗斯搜索引擎yandex 1997年,俄罗斯搜索引擎Yandex(俄语意为:语言目录)首次上线,已发展成为全球第四大搜索引擎和第二大非英语搜索引擎 https://yandex.com/

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中,我们可能会遇到电脑没有声音的问题,这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件(声卡)与操作系统之间的桥梁,确保音频信号能够正常输入输出。那么,当电脑没有声卡驱动…

DEVOPS: 集群伸缩原理

概述 阿里云 K8S 集群的一个重要特性,是集群的节点可以动态的增加或减少有了这个特性,集群才能在计算资源不足的情况下扩容新的节点,同时也可以在资源利用 率降低的时候,释放节点以节省费用理解实现原理,在遇到问题的…

git 删除远程不存在本地命令却能看到的分支

要删除远程不存在但本地却能看到的分支&#xff0c;你可以按照以下步骤操作&#xff1a; 删除本地分支&#xff1a; 如果你确定要删除的分支已经没有用处&#xff0c;可以使用以下命令来删除本地分支&#xff1a; git branch -d <branch-name>这里的 <branch-name>…

《Python游戏编程入门》注-第4章6

《Python游戏编程入门》的“轮询鼠标”内容介绍了通过轮询鼠标实现实时显示鼠标位置和按键状态的游戏。 1 游戏介绍 实时显示鼠标位置和按键状态的游戏如图1所示。 图1 实时显示鼠标位置和按键状态 从图1中可以看到&#xff0c;游戏界面主要分为上下两部分。其中&#xff0c…

ENNSP中ACL的实验配置

ACL&#xff1a;访问控制列表 1访问控制----在路由器的入或者出的接口上&#xff0c;匹配流量&#xff0c;之后产生动作---允许或拒绝 2.定义感兴趣流量-----帮助其他软件抓流量 访问控制的匹配规则&#xff1a; 拓扑图如下 基础配置 基础配置弄好后&#xff0c;随便p…

C++设计模式结构型模式———装饰模式

文章目录 一、引言二、装饰器模式三、总结 一、引言 装饰模式是一种结构型设计模式&#xff0c; 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 该模式展现出了运行时的一种扩展能力&#xff0c;以及比继承更强大和灵活的设计视角和设计能力&#x…

第7章 内容共享

第 7 章 内容共享 bilibili学习地址 github代码地址 本章介绍Android不同应用之间共享内容的具体方式&#xff0c;主要包括&#xff1a;如何利用内容组件在应用之间共享数据&#xff0c;如何使用内容组件获取系统的通讯信息&#xff0c;如何借助文件提供器在应用之间共享文件…