• 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

  • 相关阅读:
    golang 和rabbitMq 这个代码写的也很好呀!
    二分查找算法(代码实现) [数据结构][Java]
    InnoDB常用锁总结(行锁、间隙锁、临键锁、表锁)
    ceph源码阅读 erasure-code
    【Redis】压缩列表
    Linux 基础
    计算机毕业设计Java租车管理系统(源码+系统+mysql数据库+lw文档)
    GD32F30x gpio 模拟串口
    Qt对话框
    visionTransformer window平台下报错
  • 原文地址:https://blog.csdn.net/iwkxi/article/details/126593576