0
点赞
收藏
分享

微信扫一扫

【Linux】进程概念知识点大总结---学到就是赚到

柠檬果然酸 2022-01-21 阅读 99

文章目录


进程概念总共分为六个部分学习
在这里插入图片描述

👩‍🏫part Ⅰ

在这里插入图片描述

冯诺依曼体系结构

2.输出设备:进行数据输出

3.存储器:进行数据中间数据缓冲

4.运算器:进行数据运算

5.控制器:进行设备管理
运算器+控制器就是CPU中央处理器


✅2.图解

在这里插入图片描述


✅3.所有的设备都是围绕存储器工作的


  • cpu不会直接从输入设备获取数据进行处理,而是先把数据放到存储器中,cpu从存储器中获取数据处理
  • cpu不会直接将数据交给输出设备进行输出,而是先把数据放到存储器中,控制输出设备从存储器中获取数据输出

📍既然所有的设备都是围绕着存储器工作的,那存储器是什么呢?

📍我们熟知电脑还有个叫硬盘的东西,为什么存储器是内存而不是硬盘呢?

📍那内存的速度那么快,为什么内存只用于缓冲,不使用内存存储数据,而用硬盘存储呢?


👩‍🏫part Ⅱ

在这里插入图片描述

操作系统

  • 外部应用


  • ✅3.为什么需要操作系统来管理


    • 用户是无法直接访问内核的,只能通过系统调用接口来访问,用户直接访问内核的危险性太高了
    • 为了控制风险,“听系统的话”,操作系统会向外提供访问内核的接口,这个接口就称为系统调用接口

    ✅4.操作系统怎么管理


    操作系统给管理方法叫:先描述 在组织

    ✔举例

    为了更好的理解,我们引入一个例子

    学校管理体系大致分为三部分:管理者,被管理者,执行者

    ✔校长是怎么管理学生的呢?

    假如有一个学生非常不听话,要被开除,怎么样才叫被开除呢?

    • 解法一:把这个学生踢出学校,再也进不了学校的大门
    • 解法二:在这个学生后背贴上”已被退学“
    • 解法三:在这个学生的学籍档案上盖章——勒令退学

    这样我们可以大致了解校长是通过什么管理学生的----学籍档案

    学籍档案是什么

    这就是你被描述起来了

    光有学籍档案就可以管理了嘛,全国有那么多学生,我要从中多的档案中找到你,得花不少时间吧

    这就要谈到组织了

    现在知道是怎么管理的嘛

    其实操作系统就是差不多的管理过程啦

    ✔计算机管理硬件

    ✔流程看图解

    在这里插入图片描述

    ✅5.理解系统调用和库函数

    👩‍🏫partⅢ

    在这里插入图片描述

    进程概念

    ✅1.操作系统是怎么管理进程的呢?

    我们可以看一下自己的任务管理器,它显示了我们有哪些正在运行的进程

    在这里插入图片描述

    ✅2.那什么是进程?

    🙌没听懂,有必要深入了解一下

    • 一个程序运行起来,有数据和指令需要被CPU执行处理
    • 根据我们所学的冯诺依曼体系结构(忘记了可以去上面复习)点击跳转冯诺依曼,CPU不会直接去硬盘上找程序文件进行执行处理
    • 他会先将程序的数据信息加载到内存中,然后CPU从内存中获取数据以及指令进行执行处理

    ✔操作系统中的进程都是同时运行的

  • 所以CPU进行程序处理的时候不会一次性的将一个程序运行完毕才会运行下一个,而是每个程序都运行一个很短的时间,这叫分配时间片,时间片运行完毕,由操作系统进行调度,让另一个程序的代码数据在cpu上进行处理

  • ✔补充

    ✔什么是调度

    总结

    • cpu分时机制实现cpu轮询处理每一个运行中的程序,而程序运行调度由操作系统进行管理

    • 回到第一个问题,操作系统是怎么管理的呢

    ✔图解

    在这里插入图片描述

    ✔所以什么是进程

    进程PCB

    ✔Linux下的PCB

    task_struct

    task_struct内容分类

    并行:cpu资源不够的情况下,采用cpu分时机制,任务轮询处理

    并发:多核cpu,多个进程同时占据cpu进行数据处理

    👩‍🏫partⅣ

    在这里插入图片描述

    进程状态

    为了弄懂正在运行的进程是什么意思,我们需要在知道进程的不同状态

    ✅1.Linux对进程状态进行细分

    ✔补充

    口说无凭,让我们真实的看一下

    ✅2.通过ls /proc命令查看系统文件夹的进程信息

    在这里插入图片描述

    ✅3.创建新进程fork

    利用fork创建新进程,运行的代码与调用fork的进程一样,而且运行位置也相同,调用进程称为父子进程,子进程是通过拷贝父进程的上下文数据程序计数器内存指针来创建的

    在这里插入图片描述

    ✔通过返回值分辨父子进程

    ✔父子进程图解

    📍我们怎么能知道谁是父进程谁是子进程呢,光从返回值判断就行了?

    1. 首先./fork,查看结果
      在这里插入图片描述

    2. 新建一个此渠道的会话,查看进程状态
      在这里插入图片描述

    ✔子进程存在意义

    ✅4.显示进程信息ps aux

    在这里插入图片描述

    ✅5.状态相互转化

    👩‍🏫partⅤ

    在这里插入图片描述

    环境变量

    ✅1.概念

    ✅2.作用

    ✅3.常见的环境变量

    📍为什么有时候一些指令可以直接执行,不需要带路径,而我们的二进制程序需要带路径才能执行?

    ✔补充PATH

    PATH是典型的环境变量,用来存储程序默认的搜索运行路径

    但是我们可以认为的将程序所在路径,加入到PATH中,例如将当前路径加入到PATH中

    PATH:$PATH:.
    

    ✅4.命令操作

    ✅5.通过代码获得环境变量

    main函数的第三个参数

    ✅6.代码中设置环境变量

    👩‍🏫partⅥ

    在这里插入图片描述

    程序地址空间


    程序地址空间通常被称为进程地址空间


    进程中访问的都是虚拟地址,如何通过虚拟地址找到物理内存呢?

    • 通过段号对应的物理内存段起始地址以及虚拟地址中的偏移量组成一个完整的物理内存,找到对应的物理内存单元

    ✔图解

    在这里插入图片描述


    ✔优点

    • 对编译器的地址管理比较友好

    ✔缺点

    • 没有解决数据连续存储内存利用率低的问题,因为一个段管理了很多变量数据,这些变量就都从同一个起始位置进行偏移,也就在物理地址中使用了连续的地址空间
    • 分段号式管理中,同一个段内数据都使用了连续的地址空间,每个段之间不用连续,但是段内是连续的

    ✅2.分页式


    ✔方法

    • 因为通常物理块比较小,并且不要求同一个进程的多个数据必须在同一块内,因此分页式腾空出世

    • 页表会在进行内存访问的时候进行内存访问控制,判断是否有权限

    • 页表放的是页表项,每个页表项保存的都是一个虚拟内存页与对应物理内存块的映射关系


    ✔图解

    在这里插入图片描述


    ✔分页式管理的优点:

    • 实现数据离散式存储,提高内存利用率,并且通过页表进行内存访问控制
    • 实现了数据在物理内存中的离散式存储

    ✔计算

    • 在32为系统中,若页表大小是4096,则页表项有1024*1024个,也就是2^20
    • 虚拟地址中页号占据虚拟地址的高20 位

    分页式与分段式各有优缺点,所以我们用段页式

    举报

    相关推荐

    0 条评论