【Linux】进程基础入门指南(上)

 > 🍃 本系列为Linux的内容,如果感兴趣,欢迎订阅🚩

> 🎊个人主页:【小编的个人主页

>小编将在这里分享学习Linux的心路历程✨和知识分享🔍

>如果本篇文章有不足,还请多多包涵!🙏
>  🎀   🎉欢迎大家点赞👍收藏⭐文章

> ✌️ 🤞 🤟 🤘 🤙 👈 👉 👆 🖕 👇 ☝️ 👍


目录

🐼前言  

🐼现实生活中是如何管理的有条不理???

🐼操作系统是什么样的???

🐼为什么要有操作系统???

🐼什么是系统调用,为什么要有系统调用???

🐼进程是什么???

  🐼总结


🐼前言  

在上一节,我们认识了冯诺依曼体系结构,从计算机硬件的角度认识了计算机体系结构,本篇文章将继续分享,引入操作系统的层状结构,以及操作系统是如何管理的(小编会在这里举一个现实生活的例子),以及为什么要有操作系统,系统调用是什么?进程是什么?进程和操作系统的关系是什么???我们始终以这个问题是什么,为什么,怎么办的角度来思考问题

看完本篇文章,相信你一定能理解操作系统和进程概念!话不多说,直接开冲!


🐼现实生活中是如何管理的有条不理???

在我们现实生活中,比如一个大学校园,是如何管理的如此井然有序的,如此安全的,如此可靠的?

听我给大家讲个故事。

首先管理,就要有管理和被管理者。在一个学校最高的管理者,假设我们这里认为是校长,而我们都是被管理者,而我们的辅导员,是命令的执行者。

那么,校长是如何管理我的呢,我甚至连校长的面都没见过,但是校长却能将我管理的很好,不仅能够随时开除我,还能随时给我发奖学金,他怎么知道这个评判标准???

其实,管理,见面不是必然的,通过辅导员与我的沟通,他就能知道我的信息,甚至,他能专门让辅导员每天用一个记事本,来记录我们每一个人的表现,所以,他就能根据我的信息来管理我。所以,见面不是管理的本质,获取到我的信息才是管理的本质!!!所以,管理,本质上是对数据的管理!!!

故事继续,那如果班里同学有七八个人还好,如果班里同学有很多人,比如一个班50多个人,那么一个学校,就得差不多几千人。那这可把校长愁死了,这可咋办呢,这怎么能一下子把他们都管理好???这个学校还能不能开了???

校长说,还好我以前的专业是个程序员,此时,校长,就想到了,管理的无非就是每个学生的成绩,电话,姓名,表现,健康状态,身份证号....校长此时将学生的特征描述出来

​校长:我既然知道了学生的属性,那么我自已封装一个结构体,将学生的属性都放进来,让对学生的管理,变成对学生结构体的管理。如果我还想找到下一个学生的信息,我就将下一个学生的信息存起来。然后将他们的信息一个个串起来,不就是对链表的管理吗。链表里的节点就是每一个学生的信息和下一个学生的信息地址。

这样,将对学生的管理,就转换成了对链表的管理!!!!校长只需要完成对链表的增删查改,就能完成对学生的管理操作

所以,我们这里可以得出一个结论:管理的本质,就是对数据的管理

而管理的做法:永远都是先描述,再组织!

我们这个世界正是如此管理的,运作的,那么下降到编程语言,我们所使用的语言,不管是C/C++,python,java,都是来描述这个世界,这就是先描述而我们所学习的数据结构,不管是顺序表,链表,栈,队列,AVL红黑树,哈希桶等都是来管理我们这个世界,这是再组织

我们知道了现实生活中的管理方式,那么我们就来谈一谈计算机世界如何管理的。


🐼操作系统是什么样的???

那对于计算机来说,计算机也有自已的体系结构,当然,也需要一个像"校长"的管理者!它就是操作系统!!!

我们先来看一下操作系统的层状结构:

我们这里揭晓谜底了,其中操作系统就像我们的"校长",驱动程序就好比我们的"辅导员",而我们作为最底层的硬件,是有资源的。校长不是很好直接与我沟通,这样不仅效率慢,而且不安全,执行起来也很慢,所以套了一层驱动层(辅导员)!让辅导员直接与我们交流,这样,就实现了不见面也能很好的管理我们。而为了管理大量的学习数据,就需要数据结构。因此我们可以得出结论:操作系统内部一定存在大量的数据结构!!!

底层硬件在上一节冯诺依曼体系结构我们已经认识了。驱动层就是底层硬件的上层。而上面的用户-用户操作接口,system call我们这里先不讨论。

我们一般将操作系统这一层叫做内核

Linux内核说的就是这一层,Windows内核也说得这一层,而习惯上把操作系统+用户-用户操作接口,system call等叫做广义的操作系统。不过,我们这里讨论的主要还是操作系统这一层,也就是Linux内核


🐼为什么要有操作系统???

为什么要有操作系统,我想大家心中已经有答案,操作系统就是为了给用户提供一个稳定的,安全的,可靠的运行环境。就像校长能够给我们提供一个好的环境去学习,吃饭,安全的住宿...日复一日,年复一年。

因此:操作系统对下管理好软硬件资源。这是操作系统的手段!!!

而管理的办法,就是先描述,再组织。借助大量数据结构。

如图:

因此,就经常会说操作系统是一款软硬件资源"管理"的软件.

那么,我们也可以再次得出结论,既然要管理,那么操作系统内部一定有大量的数据结构!!!

就像校长想要管理好大量的学生,就需要有链表的结构来管理!

操作系统做了计算机体系中作了承上启下的的"关键者",以后我们都默认讨论这一层。


🐼什么是系统调用,为什么要有系统调用???

再知道了操作系统这一层,我们再看它的上一层,系统调用层。我们再看一下这张图:

 系统调用层,它位于用户空间程序和操作系统内核之间,起到桥梁的作用。其主要功能是为用户程序提供一个接口,使其能够请求操作系统内核提供的服务。

那为什么要有系统调用层,不能直接让用户来与操作系统打交道,而是必须借助系统调用层我们间接来与操作系统打交道???

其实在现实生活中,也有这样的例子:比如在我们要去银行办理业务,为什么我们不直接和银行打交道。也就是,我们自已操作银行的业务,我们办理完就离开,这样可以吗???

现实生活中的例子,告诉我们,这是绝对不行的。

因为我们当中可能有"坏人"啊,如果这些人擅自将自已的信息修改,比如擅自修改自已的银行余额,这不是乱套了,你也可以改,我也可以改,大家都可以改,那这个银行还开不开了。

那银行既然要开,要给用户提供稳定,安全,可靠,高效的服务,并且又得保证自已的安全性,不能随意被修改,这该怎么办?

于是,就有了负责用户与银行之前沟通的桥梁,也就是银行柜台(窗口)出现了。柜台人员不仅能帮助我们办理自已的业务,并且也能保证银行内部的安全性。即提供了服务,也不影响自身!

"银行窗口"就相当于我们的系统调用,回归到我们的操作系统,就是为了保证操作系统的安全性,不被我们当中的"坏人"直接修改,所以在操作系统和用户之间套了一层系统调用。而用户想访问操作系统必须通过系统调用

系统调用就是为了保证操作系统的稳定,安全,可靠,高效的环境。不允许外部的人,直接访问操作系统的内部的相关数据。

用户程序通过系统调用直接与操作系统内核交互。系统调用,涵盖了内存管理,进程管理、文件管理、驱动管理。(这就好比一个学校的个个功能,比如食堂,宿管阿姨,门卫,教师,操场...)

不过,还有大部分不会直接操作的人群啊,比如一些老人。于此同时,为了我们这些小白能够直接和操作系统打交道,因此在系统调用之上封装了库!!!C/C++标准库封装了系统调用,为用户提供更高级、更友好的接口。标准库函数在用户空间运行,减少了直接调用系统调用的复杂性。我们能够直接调用库来写代码,再其之上进行开发!!!这样就大大减少了我们的学习成本。

说白了,就是方便我们这些小白使用的!!!

所以大概逻辑是这样的:

因此,我们可以得出结论,库和系统调用是上下层关系

 那我们也就知道了,为什么说安卓是基于Linux内核的,不就是自已封装了安卓的库,自已在用户操作接口,用户层进行了封装,打造自已的产品,图形化界面...,来提供给更多的人来使用,带来商业价值。所以有了这一套体系结构,我们只需要在其之上进行开发。


🐼进程是什么???为什么要有进程

既然知道了以上概念,那么进程到底是什么呢。进程就是加载到内存的的程序吗???

这句话不完全对。

我们再来看这张图,首先,根据冯诺依曼体系结构,必须要将可执行程序加载到内存。因此,由于可执行程序不止一个,我们就知道系统内部具有大量的进程。那么既然要管理这么多进程,通过校长管理学生的例子我们就知道,校长对学生的管理转换成了一个个对学生信息链表的管理,维护,那么系统就必然要有大量的数据结构,那怎么管理???

那不就是先描述,再组织!!!

因此,我们就知道,进程一定也有自已的结构。

比如这样:

因此,操作系统管理进程一定是这样的。

将进程加载到内存,再交给CPU处理,处理好交给内存。

所以操作系统对内存的管理,就转换成了对一个个进程链表的管理

那所谓的进程排队是什么呢???是一个个二进制可执行程序在排队吗???

并不是,进程排队本质上就是PCB节点在排队,因此,一定有一个处理PCB节点先后被CPU处理的队列,哪个PCB节点排在最前面,就最先被CPU执行。关于进程优先级,我们在后面认识

就是把PCB中的节点拿走,放入到调度队列中,然后CPU执行,那么PCB所携带的数据呢,PCB一定会可以找到自已的数据(资源)。

而在Linux下,进程的结构是一个叫做struct_task的东西,这就是我们后续学习的目标。

因此我们可以得出结论,什么是进程?

进程 = PCB/task_struct(内核数据结构)+代码片段和数据

我们可以把PCB和task_struct当成一个东西。

那为什么要有进程要有PCB?因为操作系统要管理进程,而进程有多个,因此要有PCB,所以操作系统不就是对进程管理,转换成对PCB管理,对PCB的增删查改。操作系统管理进程的办法,就是先描述进程,再把进程组织起来

为什么要有进程???1.因为我们想使用一款稳定,安全,高效的操作系统,操作系统就必须要能管理好软硬件资源,因此我们有进程来帮助操作系统管理,目的就是方便操作系统管理!

2.进程就是完成特定任务功能的,我们将一个个任务交给进程来完成!!!


  🐼总结

我们通过一个校长的例子,也知道为什么要有进程:因为操作系统要管理。而管通的本质是对数据的管理,通过将对进程的管理转换成了对PCB(task_struct)的增删查改。知道了操作系统是如何管理的?先描述再组织。并且操作系统中一定有大量的数据结构。我们后面就要描述比如进程,内存,文件等...的属性,操作系统存在的意义就是为了给用户提供一个稳定的,安全的,可靠的运行环境。等等,这样一套体系结构,之后我们就开始描述进程的属性,再用数据结构组织起来!

   感谢你耐心地阅读到这里,你的支持是我不断前行的最大动力。如果你觉得这篇文章对你有所启发,哪怕只是一点点,那就请不吝点赞👍,收藏⭐️,关注🚩吧!你的每一个点赞都是对我最大的鼓励,每一次收藏都是对我努力的认可,每一次关注都是对我持续创作的鞭策。希望我的文字能为你带来更多的价值,也希望我们能在这个充满知识与灵感的旅程中,共同成长,一起进步。如果本篇文章有错误,还请大佬多多指正,再次感谢你的陪伴,期待与你在未来的文章中再次相遇!⛅️🌈 ☀️     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值