系统编程中的进程的概念No.1

news2024/11/14 14:21:35

引言:

北京时间2023/1/28,本小编04年1月9日出生,今天第一次理解到进程的概念,所以我们接下来就学习一下什么是进程以及和进程相关的一些知识。首先我们想要了解进程以及其相关的知识,我们要先理解一下其它方面的知识,进而便与我们更好的理解进程。所以我们接下来就开始学习一下有关硬件层面的知识,了解一下我们的电脑是怎样构成的。

从硬件开始学进程

1.讲到硬件,我相信大家和我一样,第一时间想到的就是我们的电脑本身,一般可以脱口而出的有键盘、显示屏、笔记本外壳、触摸板、主板,当然那些对电脑了解更深一点的同学还能说有电脑内部的磁盘、硬盘、CPU、显卡、内存等。
当然有的同学会说硬盘和磁盘不都是用来存储数据的吗?这两个不是同一个东西吗?
如果有这个问题的同学,请参考如下链接,带你分分钟搞定磁盘和硬盘的区别
磁盘和硬盘的区别
如果有同学不了解主板是什么,可以参考以下链接
主板详情

2.可以说主板是我们的笔记本电脑中最关键的硬件了,因为不管是我们的CPU、显卡、存储器还是各种的配套设施和系统,这些硬件都是依附在我们的主板之上的,所以我们的电脑就是一个依靠着我们键盘之下的主板就行使用的。

3.当然以上内容是带我们从电脑层面去看硬件,我们只知道有这些硬件,但是我们却不知道这些硬件是干什么的?为什么一定要有这些硬件?没有这些硬件中的某一个会怎样?这些硬件是如何构成我们的电脑体系的?这些硬件是单独运行还是合作运行?这些就是想要了解进程,我们需要解决的知识。

4.此处有的同学会想,为什么一定需要学习这些知识呢?我不可以直接花这些时间去把进程多学习几遍吗?这个问题的答案,我也无法给到,可能这也就是我为什么会写这篇博客的原因吧!进程是一个我们从来没有接触过的,并且涉及的知识面较广的一个知识点,我们一定要踏实的学,不然理解进程就容易导致似懂非懂的感觉。我本来也不打算总结这篇博客的,但是我发现了有的大佬是有总结成博客的,从而激发了我,我觉得确实是很有必要的。

5.所以你们接着往下看,我接着往下写

6.解决电脑中硬件之间关系的问题,我们通过一个上世纪就赫赫有名的理论体系来解决

冯诺依曼体系结构

冯诺依曼体系结构不是我用三言两语就可以说明白的,我们只能用一个体系结构图来进行概述,因为一个快100年过去还依然经典并且得到世界认可,在当今任然广泛使用的东西,不是我这个二愣子可以亵渎的,具体想要深入了解的同学可以参考链接冯诺依曼体系结构链接。

体系结构图:
在这里插入图片描述
参考上图我们进行冯诺依曼体系结构理解

冯若依曼体系电脑硬件
输入设备:键盘、摄像头、话筒、网卡、磁盘(外部储存设备)等
存储器:内存(内部储存设备)
运算器、控制器:CPU(中央处理器)
输出设备:显示屏、声卡、音响、网卡、磁盘(外部储存设备)等

此时我们对冯诺依曼体系中的输入设备、存储器、运算器、控制器、输出设备进行了与我们笔记本电脑中的硬件结合理解,现在我们对冯诺依曼体系就有了就一定的理解。
当然我相信大部分的同学应该对这些硬件设备都是比较了解或者说是听说过,但是我想肯定有大部分同学从小就对一件事情很好奇,就是为什么可以和远在天边的朋友打电话和发消息呢?这个位置我发起一个小投票。我第一时间想到的是网卡,会不会是因为有了网卡,我就可以实现这方面的功能了呢?所以我相信很多同学是不知道网卡具体到底是个什么东西的,所以有兴趣的同学可以参考以下链接:详解网卡,分分钟让你知道什么是网卡
不感兴趣的同学我也把网卡的主要功能给各位贴在这了哈!
在这里插入图片描述

了解了网卡也算是我们今天学到了一些有意思的东西吧!一天学一点,哈哈哈哈!乐观的我!


我们在这个位置先不对冯诺依曼体系进行进一步分析,我们先来了解一下我们的内存和磁盘
我相信大家对磁盘都是非常的了解的,因为我们在学校,每天不管是老师布置的word作业还是ppt作业,还是下载的各种软件,亦或者是每天写的代码,这些东西在你的电脑上都有相应的文件夹来存储,如果你是一个有强迫症的人,那么你的磁盘中的文件夹肯定是仅仅有条的,你的各种相关的文件和软件安装包你肯定是知道在什么什么位置的(这里我首先给你点个赞),所以我们对磁盘的理解肯定是比对内存的理解更加的深刻的,谁让我们天天都在使用磁盘呢?然而内存呢?你在你的电脑上见过内存吗?

如下图:是你可以在你自己电脑上见到内存情况的两种方式(快捷键Win+D,然后打开任务资源管理器)


深入学习

此时我们知道了上述知识,我们就来深入一点点的学习硬件和冯诺依曼体系结构

首先我们来复刻一下我们以前可能存在的一些认知

我相信很多同学都听说过CPU是从内存中获取数据的,我们的数据一定要写入到内存中才可以被CPU识别,被操作系统执行,并且再往后一步,有的同学肯定听说过有关缓存和寄存器的知识
,说CPU从寄存器中获取数据比内存中获取数据是更快的,这一系列的知识在我们同学中的脑海中肯定是都有印象的,并且印象应该挺深刻的。但是我相信有的同学,无论是根本没听说过,还是听说过忘记了的,还是认识比较浅的,都可以进入下链接,深入了解一下CPU和内存的那点破事
内存、缓存和寄存器的关系和区别
并且我相信,我们对CPU一定要从内存中获取数据的原因的理解是这样的:因为CPU的计算速度非常快,而我们的键盘输入数据非常慢,如果CPU直接从键盘获取数据就会导致电脑的计算速度变得非常的慢,并且有的同学可能还会想到曾经的那个木桶原理。
在这里插入图片描述
开始的时候我相信大部分同学都觉得是非常的有道理的,一个一个的心里面想着:sogasinei,sogasinei,大大的呦西
但是我又相信很多同学过了一会之后,会有一个疑问,如果按照这个原理,我先把我键盘中输入的数据放到内存里面,然后CPU再从我的内存中拿数据,在这个我们理解的这个线性过程中,前后的速度不是是一样的吗?(此原理类比成生活中的例子:三个同学接力比赛,路程固定,一个慢,两个快和两个同学接力比赛,路程固定,一个慢,一个快进行比较),可以发现,最后到达终点的时间应该是不会相差太多的。当我们有这个疑问的时候,我们发现凭借着我们当前所学到的知识,并不可以很好的理解和解决这个问题,所以感兴趣的同学可以参考以下链接,解决这个问题。
键盘和CPU、寄存器的关系

总:所以我们在此总结发现,CPU其实不单单是和我们的内存有关系的,其实还是起着很多的不为人知的作用,具体可能就是我们传说中的 IO

现在如果对IO感兴趣的同学可以参考以下链接:如何理解IO

有了前人对这些知识和结构的应用,我们就拥有了目前你脸上的,这个物美价廉的笔记本电脑啦!
所以无论你的电脑是什么品牌,什么处理器,什么显卡,就算是 i9 -13代 还是3090 ,你的笔记本电脑也只是一个性价比至上的产品,当然除非你告诉我你有512G的寄存器!

深入理解内存

我相信当我们看到下面这幅图的时候,大家都有一个疑问,内存储器是什么?
在这里插入图片描述
显然,内存储器就是我们的内存,所以我们发现我们的内存还可以分为ROMRAM两种
感兴趣的同学进入以下链接:深入理解内存1或者深入理解内存2


来到这里我们发现我们此时已经了解了很多的有关硬件的知识(掌握不敢说),只能说了解,你会发现,原来我们以前认知中的一个复杂的电脑也不过如此,打电话、发消息也不过如此,电脑的运行原理也不过如此(夸张的写一下),然后我们带着这么多,这么牛的知识,来搞定一个进程肯定也洒洒水啦!所以接下来具体讲解一下我们的冯若依曼,从而更好的理解硬件。

具体的冯若依曼体系理解

我们以一个具体的情景来理解
情景:你要表白一个女生

你会发现,你发消息的过程是一个非常神奇的过程,我们具体凭借冯若依曼体系来理解一下消息是如何在该体系结构中流动的

                                    微信/QQ

在这里插入图片描述
首先我们要经过一系列的思想斗争之下,脑袋中的两个小恶魔彼此争论,但是发现你还是不知道怎么办,最终你在你的身体激素的刺激下,你做出了选择。你紧张的打开了电脑,此时你的电脑也发现了你的紧张,开始忙忙碌碌的运作起来,各种硬件随时准备待命,然后你点击相应的聊天软件,就在这点击的过程你的操作系统检测到了这一行为,马不停蹄的就把你的聊天软件给加载到了内存中,此时你的硬件变得更加的紧张,并且你的软件也发现了你的紧张,软件也不敢偷懒,快速的运行起来,等待你输入你想要发的消息,你从键盘中准备打字,你手抖并且颤颤巍巍的输入了"xxx" 到了聊天框中,此时因为聊天软件已经被加载到了内存中,所以你输入的消息直接就被聊天软件快速的也加载到了相应的内存处,对内存说"这个烫手的山芋你赶紧的给我拿去,不要待会出了事,我要背锅",内存听到这句话,心里一紧,啊!完了完了,我要完了!谁来救救我!此时我们的"百米飞人",“风一般的男子”,外籍华人CPU出现了,对内存说,小妹妹,我来救你,不要怕!快把炸弹(消息)给我,内存听到这句话,顿时喜笑颜开,刚准备把炸弹给传递出去,却没想到CPU这个色狼,已经把手伸到了自己的被窝里,在CPU一顿猛如虎的操作之后,终于醉翁之意不在酒的把炸弹放进了自己的工具包中,然后自豪的说,不就是一个炸弹吗?看给你们吓的,在CPU的一顿操作之后(加密操作),炸弹就跟被拆解了一般,变得非常的安全,这下没人可以看到主人羞羞的消息啦!哈哈哈!不愧是主人手下的第一神U,一夫当关,万夫莫开!此时身为第一神将的CPU认为自己功高盖主,把安全的炸弹又还给了内存妹妹的同时,对其又进行了一系列的操作,内存妹妹委屈,但却又不知道跟谁诉说,此时内存妹妹也心生一计,把显示屏小哥哥和网卡小哥哥给叫到了一起,把定情信物(炸弹)一分为二,给了二人一人一份,此时我也就可以在自己的聊天软件上看到我想要发送的消息了,但是此时网卡生气了,心想,内存妹妹心里怎么可以还有别人,我不服,于是一气之下就把定情信物(炸弹)给了混世魔王(网络),此时的混世魔王根据地址找到了另一个更高更帅的网卡哥哥,网卡哥哥一看手中的炸弹,心想以我的能力还看不到内部数据,所以就把它给了内存,内存说,我也看不了,内存就把它给了CPU,CPU说,哈哈哈,你们都是……,看我的,一通操作(解密),看到了内部的数据,CPU惊呼,内存内存,快来,我这有大宝贝,你快点拿走,然后转交给显示器那个混小子,不然你我都可能有灭顶之灾,急呼,快快快!此时我的消息就在女方的电脑屏幕上显示了。预知后续剧情,请点赞回复666。

综上所述:数据的流动一定是遵守我们的冯若依曼体系的,并且我们的CPU是不直接和外设打交道的,而是只和内存打交道,外设也只会和内存打交道。


从软/硬件层面看操作系统

1.我相信大家都知道Windows是个什么东西,但是我也相信大家不知道Windows是个什么东西,所以Windows到底是个什么东西呢?
可以这么说,我只知道我的电脑是由各种硬件和各种软件构成的,并且我知道我的电脑上有Windows这个东西,所以得出结论,从软件和硬件的角度看,Windows是一个软件。这个想法我觉得很有道理,所以我们可以从Windows是个什么,进而知道操作系统是个什么。

2.操作系统其实就是一款对软硬件进行管理的软件(我这么说是不是显得我很有文化)

3.所以我们设计操作系统的目的,应该呼之欲出了吧!(操作系统对下,对硬件和软件进行管理,对上,给用户提供安全、高效、稳定的执行环境)

以上就是操作系统的表层理解


深入操作系统

我们如果想要深入理解操作系统,那么就要把操作系统是什么给理解明白,显然操作系统就是一款对软硬件进行管理的软件 ,画关键词语,小学语文老师常常让我们干的事情,你认为那个词是我们深入操作系统最重要的。我觉得就算是叫钟xx(从小语言能力有障碍的一个人),她都能答对,不错,就是管理二字。

从硬件层面深入管理二字

为什么要深入管理,我就不多说了,因为我们……
此处如果我们从管理的概念来理解管理,那么是不好理解的,所以我们就跟学习进程一样,我们从别的角度来学习什么是管理,我们接下来就再通过一个学校中的情景来了解一下管理。
情景:开学啦!开学啦!我们开学啦!简简单单,听到这个消息,我们可以想到,肯定有两种人:
一种是想开学的人
一种是不想开学的人
想开学的人,一般有几种原因,想和某些人见面了(同性:舍友,异性:xxx),期末考考的非常的好,家里很无聊等。不想开学的人逆向思考。当我们的期末考试没有考好的时候,是非常的不想开学的,因为只要你一开学,你就会被辅导员叫过去谈话(场面一度复杂)。并且当你的期末考试没有考好的时候,你会发现那些奖学金之类的东西就跟你无缘了,为什么呢?因为假如我们把奖学金的发放权力给到校长,校长此时想要从我们当中选择一个成绩最好的学生发放奖学金,作为奖励。此时校长会怎么想,怎么做呢?当然校长就会叫辅导员把学生的成绩做一个统计,得到所有学生的成绩之后校长再根据这些成绩,通过对这些成绩的排序和组织,从而整理好所有的成绩,然后选择出成绩最好的同学,最后假如我们的奖学金就给到了钟xx同学(一个品学兼优的好学生)

从上述情景我们提取出我们需要的词语进行理解

校园中计算机中
校长:操作系统
同学:软硬件
辅导员:驱动程序
成绩:数据

所以我们可以得出结论,在计算机中,我们的操作系统是不会直接和我们的硬件交互的,而是和驱动程序进行交互。

总:这也就涉及到我们为什么要学数据结构这门课,因为我们生活中的一切,都可以类比学校的形式,而我们学校的形式又和我们的计算机中的模式如出一辙,从而我们以后使用计算机解决生过中的问题,本质上就还是在解决数据结构中的问题啦!无论是数据管理还是数据处理。

并且此时涉及几个问题
我们为什么要进行数据的排序?
我们应该怎样存储这些数据?
我们如何对存储的数据进行排序?
从这几个问题我们就可以引出我们的终极目标,管理的本质

管理的本质

管理的本质:先描述,再组织
先描述:指的就是我们应该把数据用什么样的方法存储起来(例:用结构体的方式一个一个数据的存起来)
再组织:指的就是我们应该怎样去处理这些被存储起来的数据(例:用单链表的形式把这一个一个的结构体给链接在一起)

从软件层面深入管理二字

情景:我们去银行存钱(自己想象银行存钱情景,这里不多做赘述)
我们可以发现一个现象,在银行存钱是不可以直接把我们的钱放到金库中的,只能通过一个一个的柜台我们才可以把我们的前间接的放到金库中去。

所以通过这个现象我们再来理解操作系统和软件的关系,就会发现答案呼之欲出了。

我们的操作系统的系统调用,就是把自己的一些接口暴露给我们,我们只能使用相应的功能的接口,不能访问操作系统本身,通过以接口的形式使用操作系统,完成相应的操作。 并且因为我们的操作系统是C语言写的,所以此时的这些接口就是我们的一个一个的函数,这些函数就可以执行我们相应的功能,为用户提供相应服务。
但是此时的这些系统调用的接口,就像是我们在银行进行的存钱操作,不是人人都会(台阶还比较高,要学了才会),所以此时就有人帮我们对这些操作系统的接口进行二次开发,把其弄的更优,这就是面向用户的接口二次开发,也就是我们的图形化界面的由来(例:早期qq消息的发送和接收之类的),所以面对接口进行二次开发,得到图形化界面,我们就得到当今电脑中的Windows操作系统。

如图:
在这里插入图片描述
结合这幅图,我们就可以知道我们想要通过软件和硬件交换,我们就离不开我们的操作系统,我们的操作系统就是汉堡包中的那个不可或缺的肉肉!

总结:我们学习完了操作系统和相关的软硬件的知识,接下来我们就可以更好更轻松的学习我们有关进程的知识啦!

以下是我们将要学习的知识:

1.深入理解进程概念,了解PCB
2.学习进程状态,学会创建进程,掌握僵尸进程和孤儿进程,及其形成原因和危害
3.了解进程调度,Linux进程优先级,理解进程竞争性和独立性,理解并发和并行
4.理解环境变量,熟悉常见环境变量及相关指令,getenv/setenv函数
5.理解C内存空间分配规律,了解进程内存映像和应用程序区别,认识地址空间
6.Linux2.6 krenel,O(1)调度算法架构

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

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

相关文章

【2】Linux基础命令

学习笔记目录 初识Linux--入门Linux基础命令--会用Linux权限管控--懂权限Linux实用操作--熟练实战软件部署--深入掌握脚本&自动化--用的更强项目实战--学到经验云平台技术--紧跟潮流 Linux的目录结构 Linux的目录结构是一个树形结构,没有盘符这个概念&#x…

常用算法分类

按照使用场景分类排序算法,如冒泡排序,快速排序等,用于将一组数据按照特定规则排序。搜索算法,如二分查找算法,深度优先搜索算法等,用于在一组数据中查找特定元素。图论算法,如最短路径算法&…

Claude的2022年终总结——关于2022和Claude的四个问题

文章目录前言1. 我算是合格的开发者了吗2. 我算是正式的游戏人了吗3. 我算是成熟的社会人了吗4. 我算是什么样的写作者呢最后前言 2022年的这个时候,我也是在准备着年终总结,只不过应公司要求,准备述职晋升,是抱着升职加薪&#…

行为型模式 - 命令模式Command

模式的定义与特点 命令模式(Command Pattern),是将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。命令模式是把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方…

设计一个消息队列的思考点

导图所以主要考虑的点是:P1.1. MQ 要有基础的消息管理能力(CRUD)P1.2. MQ 要有产消日志P2. MQ将消息存储成功才能响应成功P3.1 MQ将消息存储 分片存储P3.2 扩容的实现思路(如何在扩容的时候更方便高效)P4.1 数据要有副本(分片副本…

【27】C语言 | 指针进阶

目录 一、指针概念 二、字符指针 三、指针数组 四、数组指针 五、数组参数、指针参数 六、函数指针 七、函数指针数组 八、回调函数 一、指针概念 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。2.指针的大小是固定的4/8个字节(32位平…

Java ccflow 代码

草稿规则目录概述需求:设计思路实现思路分析1.URL管理参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. happ…

盖子的c++小课堂——第十四讲:指针

前言 作者:大家好鸭,想必大家看到标题都有感到有一丝奇怪吧,其实,今天主要讲一些运算符 粉丝:啊……嗯嗯嗯 作者:那开始吧~~ 内存地址运算符& 粉丝:讲这个干嘛,我都会了~~ …

Jmeter场景组合测试——多个线程组的设计方案

我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作,今天我来重点讲解一下jmeter多个线程组在测试中的应用,这也是关于jmeter性能测试面试过程中的进阶问题,希望能够帮到大家来解决工作中不同的测试需求。线程组中的…

Rust个人学习之有意思的所有权

在Rust中是没有内存垃圾回收机制(GC)的,那Rust是如何保障内存安全的呢?这就引出了“所有权”这个概念。 我们看下下面这段伪代码 let s "helloString"; t s; print(s); 在之前我们学习的语言中,比如C语言,对于上述伪…

人工智能原理复习 | 产生式系统

文章目录 一、概述二、八数码问题三、特殊的产生式系统四、一些补充CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 通过学习人工智能原理课程了解基本的人工智能问题的求解方法和原理。 一、概述 产生式系统(Production System):是构造知识型系统和建立认知模型时常用的知…

用canvas绘制微信小程序海报页面并保存相册-适用微信原生

微信小程序绘制海报并保存相册 tip:代码中使用的是uni的api 如果使用原生微信小程序开发,可以把uni更换成wx使用 文章目录微信小程序绘制海报并保存相册前言一、分析需求二、准备数据三、编码开始html部分解析:js部分1、准备好数据后开始绘制…

王道操作系统笔记(三)———— 处理机调度

文章目录一、调度的概念1.1 调度的基本概念1.2 调度的层次1.3 补充:七状态模型二、调度的时机、切换与过程2.1 进程调度的时机2.2 狭义进程调度、进程切换、广义进程调度2.3 进程切换的过程2.4 补充:闲逛进程三、进程的调度方式四、调度算法的评价指标五…

【通信原理(含matlab程序)】实验四 升余弦滚降基带传输

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

【Novel AI】使用绘画AI构建unity游戏资源

请勿在商业用途中使用下面的示例图中的任何资源! 1. 设想: 首先根据自己的设想,创造一些角色原型,角色特点等等 这里我根据网络上找的一些参考,我大概想要的是比较特别的一个警察的猫人形的动物角色; 2…

网络编程(TCP+UDP)(1)

咱们的一个TCP服务器,是否可以让一个UDP客户端连接上呢? 1)TCP和UDP,他们无论是API代码,还是协议底层的工作过程,都是差异巨大的,不是单纯的把流转化成数据包就可以的; 2)描述一次通信&#xff…

武器系统中的自主性(国防部指令3000.09)

批准:负责政策的国防部副部长办公室2023年1月25日可以公开发布。可在指令司网站https://www.esd.whs.mil/DD/查阅。国防部指令3000.09,“武器系统中的自主性”,2012年11月21日国防部副部长凯瑟琳希克斯(Kathleen H. Hicks)目的:本指令:•建立开发和使用武…

教育数字化转型 看低代码怎么构建实现

数字经济和数字社会的发展,推动教育培养目标和内容的发展与变革。经过教育信息化1.0和2.0的建设,我国数字技术与教育经历了起步、应用、融合、创新四个阶段,目前正处于融合与创新并存的时期。教育数字化教育数字化转型是教育信息化的特殊阶段…

C 程序设计教程(20)—— 数组和指针(三):数组与指针的关系

C 程序设计教程(20)—— 数组和指针(三):数组与指针的关系 该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用…

RESTful应用

AJAX技术 浏览器是多进程的,简单的说就是,浏览器每打开一个标签页,就相当于创建了一个独立的浏览器进程。但是js是基于单线程的,而这个线程就是浏览器的js引擎,浏览器无论在什么时候都只且只有一个线程在运行JavaScri…