【Linux】-一文带你深刻理解操作系统和进程的由来

在这里插入图片描述
💖作者:小树苗渴望变成参天大树🎈
🎉作者宣言:认真写好每一篇博客💤
🎊作者gitee:gitee
💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄

如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!


前言

我们在前面的博客中,把Linux相关的指令权限,工具都讲解完毕了,你可以在Linux下完成一些操作了,今天我们就才正式开始学习Linux,首先Linux是一款操作系统,和Windows一样,我们要学习操作系统,再来学习进程,笼统的来说操作系统是方便人和计算机硬件进行打交道的,我们的计算最终都是要通过硬件来实现的,所以我们前期必须把理论基础打好,后面才可以更好的学习,接下来我就给大家开始介绍操作系统和进程


我们先谈硬件,在谈软件,最后在谈进程,一层一层的理解

一、先谈硬件

首先我们要认识一个人,那就是冯诺依曼,他是我们计算机之父,大家可以去百度去查查他的事迹,我们的计算机就是依赖他的体系结构进行创造的,也叫冯诺依曼体系结构,我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系我们来通过画图,让大家理解:
在这里插入图片描述
接下来我将给大家介绍为什么要有存储器:
在这里插入图片描述
下面我将通过这个应用场景再来带大家理解一个冯诺依曼体系结构的工作原理:

从你登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程。如果是在qq上发送文件呢?

在这里插入图片描述

上面的一系列操作都是由操作系统去统筹协调,我们来看下一个专题介绍

二、再谈软件

我们的操作系统就是一款软件,是来控制我们刚才的各个单元的使用,每个硬件单元都有对应的功能,就好比银行里面的管理层,由主管,财务等等,但是这些人怎么干,什么时候干,都需要有一个人来进行领导,再我们的计算机里面也是,这个领导的人就是操作系统

他是一款管理软件(可以管理软件也可以管理硬件)
硬件什么时候控制数据,怎么使用数据,软件什么时后加载到内存里面都是由操作系统控制的。

我们先来看看概念:
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

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

接下来从两个方面再细细给大家介绍:
(1)为什么有操作系统
我们的计算机其实是一个层状结构:
在这里插入图片描述

通过上面的描述应该知道为什么要有操作系统了,就跟冯诺依曼体系结构为什么要有存储器是类似的道理,都是起到一个中和的作用,操作系统时一个管理者,那他怎么进行管理的呢??

(2)操作系统如何进行管理的?
这方面的内容我要通过一个现实案例让大家更好的理解:
在这里插入图片描述
通过上面的图解,我已经把操作系统的知识给大家铺垫好,但是我还要在把一个知识补充完毕,上面说为什么要有操作系统的时候,提到的系统调用,具体什么是系统调用呢??

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用

那我们平时写的程序,例如printf函数他是直接对标操作系统的吗??答案肯定不是的,我们的printf类似都会放在我们对应的库函数里面,这样库函数通过系统接口的调用来达到和操作系统交互的一个关系,为什么还要通过系统接口这个中间值来过度呢??系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。最终系统调用和库函数形成一个上下层的调用和被调用的关系,系统接口在下,库函数在上。通过计算机层状结构体我们也可以理解。

接下来我们才正式开始讲解什么是进程:

三、再谈进程

我们的一个程序要跑起来,必须先加载到内存上,这个过程就叫进程,我们可以通过我们的任务管理器看看
在这里插入图片描述
进程也叫做任务,大家也可以看到自己有那些进程在跑,我们在Linux上在看看:
在这里插入图片描述
我就把我自己运行的程序大家展示出来了,我们运行了两个程序,就要两个进程,一些参数看不到没有关系,后期会介绍,我们刚才只是说了什么样的叫进程,但是进程是什么还没有说,接下来我们就开始讲解什么是进程:

在这里插入图片描述

相信大家对进程的概念已经了解了,接下来就来谈谈Linux上的进程是什么样的


我们所以的操作系统的进程都是像我刚才说的那种模式,先描述再组织,这是计算机发展的规则,都叫PCB,但是每款操作系统再实现上还是有所差异的,再Linux上进程不叫PCB,而叫task_struct,他是PCB的一种,接下里我们就来看看什么是task_struct:
Linux操作系统下的PCB是: task_struct
在Linux中描述进程的结构体叫做task_struct,它会被装载到RAM(内存)里并且包含着进程的信息,然后再采用最基本的双向链表的方式组织起来,再操作系统中采用的数据结构可能不是单纯的,像Linux中最基本的是采用双向链表,每个节点可能又是一种数据,非常的复杂。

task_ struct内容分类:

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

大家先了解一下就好了,接下来就具体来带大家看看Linux中的进程是咋样的

在这里插入图片描述
我们可以看到我们由两个进程,第三个是什么呢??因为我们是通过管道将进程筛选出来的,grep也是程序,也形成的了进程,刚好和我们想要的进程名冲突了所以也显示出来了,我们先不用管,我们看上面的两个就好了,我们举要先了解两耳光就好了进程id(PID),父进程id(PPID),目前只看第一个,这个进程编号,是进程的表示符,我们可以通过ls /proc来查看进程:
在这里插入图片描述
其余的也是系统进程,启动我们的机器,操作系统就有了这些进程,我们来具体查看这些进程里面都有一些什么:
在这里插入图片描述
这些就是我刚才写的程序,里面包含的进程属性,还是非常多的,我们现在只来看其中两个属性,其他属性以后在说

exe:表示程序再那个路径下面
cwd表示:当前进程的工作目录

解释一下当前目录:我们进行touch的时候,为什么创建的文件再当前目录,原因就是touch也是程序,是程序就要形成进程,因为有了cwd的存在,我们touch test.c其实就是放在cwd/test.c下面了,所以我们再该目录下创建文件,就默认放在当前目录下了,这下大家应该明白了吧

四、总结

这篇博主花了一定的时间,就是想把原理给大家讲解清楚,这样才可以方便以后的学习,对操作系统和对进程模糊的小伙伴这下应该非常清楚了,希望大家下来可以更好的学习到进程相关的知识,我们下篇再见
请添加图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
操作系统是计算机系统中的核心组成部分,负责管理和协调计算机硬件和软件资源,提供程序运行环境。在CSDN上有很多关于操作系统的专题文章,以下将从操作系统的基本概念、功能和常见类型等方面简要介绍一下。 首先是操作系统的基本概念。操作系统是一种系统软件,它是计算机硬件和应用软件之间的桥梁,提供给应用程序一系列的服务和资源,同时负责调度和管理系统资源。它为用户屏蔽了底层的硬件差异,提供了一个统一的、易于使用的界面。 操作系统主要有四个基本功能。首先是处理器管理,负责将处理器分配给系统中的各个进程,并进行进程切换,实现多道程序并发执行。其次是内存管理,管理计算机的内存资源,包括分配、回收和保护等操作。再次是文件管理,负责管理文件的存储、命名和保护等操作,提供了文件操作的接口。最后是设备管理,负责管理计算机的各种设备,包括输入输出设备和存储设备等。 常见的操作系统有多种类型。最主流的是Windows、Linux和Mac OS等桌面操作系统。此外还有服务器操作系统,如Windows Server和Linux等,用于管理和部署服务器。还有嵌入式操作系统,如Android和iOS等,用于移动设备和物联网设备。操作系统也有实时操作系统,用于需要实时控制和响应的系统,如工控系统和航空航天系统等。 总之,操作系统是计算机系统中不可或缺的重要组成部分,通过CSDN上的相关文章,我们可以更深入了解操作系统的基本概念、功能和不同类型。这些知识对于理解计算机系统的工作原理和提升编程能力都有着重要意义。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘柚!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值