Linux进程概念

1. 硬件(冯诺依曼)

image-20220823135002267

输入:键盘,话筒,摄像头,磁盘,网卡…

输出:显示器,音响,磁盘,网卡,显卡…

(运算器+控制器)[CPU]:算数计算+逻辑计算

存储器:就是内存

1.1 为什么要有内存?

  • 技术角度

​ CPU的运算速度 > 寄存器的速度 > L1~L3寄存器 > 内存 >> 外设(磁盘) >> 光盘磁带

​ 数据角度:外设不能和CPU直接交互,而是和内存交互,CPU也是如此

​ 内存在我们看来,就是体系结构的一个大的缓存 适配外设和CPU速度不均衡的问题!

​ 依据木桶理论来看,计算机整体的效率不是取决于CPU,而是取决于"最短的那块木板",也就是内存。

  • 成本角度

​ 寄存器 >> 内存 >> 磁盘(外设)

​ 计算机能够遍布全世界,就是因为有效且便宜,而内存起到一个折中的关键作用!

我们自己写的软件,编译好之后想要运行,必须先加载到内存,这个加载的过程是根据局部性原理完成的。为什么?这是体系结构规定的!

局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

几乎所有的硬件只能被动的完成某种功能,不能主动的完成某种功能,一般都是要配合软件完成的(OS+CPU)。

实际上开机就是在内存中预加载操作系统。

1.2 消息和文件是如何发送和接收的?

image-20220823141946423

2. 软件(操作系统)

我们知道操作系统是一款搞管理的软件,那么管理具体值什么?怎么理解?

2.1 管理1

我们假设校长是学校的管理者,校长连学生的面都很少见,他是如何管理这么多的学生的?

管理学生要和学生打交道吗?他是怎么做到的?

管理的本质:对数据进行管理!

不是对被管理对象进行直接管理,而是只要拿到被管理对象所有的相关数据,我们对数据的管理就能体现对人的管理。

image-20220823142617129

2.2 管理2

我们知道Linux内核是C语言写的。抽取所有同学的属性,描述对应的同学,c中,有没有一种数据类型,能够达到描述某种对象的功能?如此多的数据是如何管理的?

我们通过struct结构体就能描述一个学生的信息,再加两个指针就能想链表一样管理大量学生的数据,通过增删查改。

image-20220823143124437

所以管理的本质是对数据做管理——>对数据的管理——>对某种数据结构的管理!!

管理的核心理念:先描述,再组织

人是通过属性认知世界的!一切皆对象,一切事物都可以抽取对象的属性来达到描述对象的目的。

所以像Java、c++等面向对象的语言必定会成为编程语言的主流!

2.3 什么叫进程

操作系统分别有4大管理模块:内存管理、进程管理(PCB: process ctrl block)、文件管理以及驱动管理。

简单理解进程是一个运行起来的程序,管理进程需要有PCB(task_struct),为什么?

我们知道对于Linux来说一切皆文件,程序也是文件,文件在磁盘中。操作系统里可能同时存在大量的进程!对进程的管理本质就是对大量进程数据进行管理。PCB就是这样一个能够管理进程数据的内核数据结构。这也符合我们先描述后组织的观念。

什么是进程?进程 = 可执行程序 + 该进程对应的内核数据结构

image-20220823144304379

所以我们学习进程就是学习进程控制块中有什么属性!

2.4 什么是OS

类比银行系统,银行是不相信任何人的!银行给所有人提供服务的方式是通过窗口提供的。而内核是用C语言写的!接口:用C语言给我们提供的函数调用!

操作系统也是不相信任何人,要防止少数人,又要给多数人提供服务。操作系统是通过给用户提供接口的方式来进行服务的!

image-20220823144832060

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yuucho

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

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

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

打赏作者

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

抵扣说明:

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

余额充值