当前位置: 首页 > news >正文

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.mrgr.cn/news/64293.html

相关文章:

  • 树莓派开发相关知识七 -串口数码管
  • OpenCSG传神社区月度功能更新
  • 正点原子ATK-ESP8266 WIFI模块接线及固件烧写
  • 什么是过拟合和欠拟合?什么会导致过拟合或欠拟合?
  • 后端开发中的分层思想,DAO、Service、Controller、Mapper,VO、DTO、DO、PO每层的作用及调用关系
  • springboot获取七牛云文件上传凭证token
  • 02LangChain 实战课——安装入门
  • 支付宝批量转账工具--企业资金快速流转的安心之选
  • pytorch使用pyinstaller编译报错:找不到源代码
  • 轻松理解操作系统 - Linux 文件系统的心脏是什么?
  • 分享一下面试中常用的10 个面试点全解析,面试成功的秘诀
  • go语言回调函数的使用
  • 抓包sslpinning绕过
  • 代码随想录第十八天
  • C语言之写一个修改数组内容的函数
  • 优化外贸管理 解锁全球业务流畅双效
  • 原子操作(atomic operation)
  • Kotlin协程suspend的理解
  • 【JavaEE初阶】网络原理(4)
  • Linux云计算 |【第五阶段】CLOUD-DAY10
  • 国产操作系统卖疯了!最营收7.84亿,最低1.5亿
  • 每日OJ题_牛客_排序子序列_模拟_C++_Java
  • 2022美亚杯复现(部分)
  • 【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)
  • 034_Structural_Transient_In_Matlab结构动力学问题求解
  • 学习GCC