【Linux】总结2-进程篇1

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

冯·诺伊曼结构

  • 冯·诺依曼提出了计算机制造的三个基本原则即采用二进制逻辑、程序存储执行以及计算机由五个部分组成输入设备、存储器、运算器、控制器、输出设备这套理论被称为冯诺依曼体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrytciCL-1691498472260)(C:\Users\姬新羽\AppData\Roaming\Typora\typora-user-images\image-20230807213100972.png)]

  • 输入输出设备统称IO设备负责数据和程序的输入输出
  • 存储器存储程序和数据指内存所有的数据都是采用二进制进行存储运算产生的数据都是存储在内存当中
  • 中央处理器由运算器和控制器组成运算器负责数据按照程序的处理办法进行计算控制器控制程序的逻辑一个CPU在同一时刻只能计算一份数据

操作系统

  • 任何计算机系统都包含一个基本的程序集合称为操作系统OS操作系统 = 操作系统内核 + 一堆应用操作系统内核也是代码程序这些代码完成进程管理、内存管理、文件管理、驱动管理等一堆应用是指依附在操作系统内核上完成某些功能比如微信等应用
  • 操作系统管理计算机的软硬件资源硬件资源包括CPU、内存、硬盘、网卡、显示器等等软件资源包括进程资源、驱动程序等
  • 操作系统通过管理来完成对计算机软硬件资源的管理管理 = 描述(结构体) + 组织(串连起结构体)从代码的角度理解描述就是结构体组织是通过链表的方式完成的
  • 操作系统提供的函数被称为系统调用函数这些函数在库函数中被调用

什么是程序什么是进程

  • 程序源代码经过编译产生的可执行文件这个文件是静态的
  • 进程程序运行起来的实例是动态在运行的进程是能独立运行、独立获得资源、独立接受调度的基本单位

操作系统是如何来管理进程的

  • 进程的管理 = 描述(PCB) + 组织的方式(链表)
  • PCB是进程控制块在操作系统中用PCB来描述进程的基本情况以及运行变化的过程PCB是进程存在的唯一标识这意味着一个进程的存在必然会有一个PCB如果进程消失了那么PCB也会随之消息不同的PCB通过链表组织起来

PCBstruct task_struct{…}

  • 机器中的进程数量远大于CPU数量而且一个进程想要向后执行自己的代码必须拥有CPU进行计算执行代码那进程是如何获得CPU资源的呢操作系统调度进程获取资源它有自己的调度策略先来先服务、短作业优先、长作业优先、高优先级优先、时间片轮转

  • 从CPU的角度来理解进程的状态可以分为三种就绪/运行/阻塞

    • 运行进程占用CPU并在CPU上运行即进程正在使用CPU来执行自己的代码
    • 就绪进程已经具备了运行的条件但还没有被分配CPU可以理解为进程已经将运行前的准备工作全部做好了万事俱备只欠被操作系统调用占用CPU资源了
    • 阻塞进程因等待某件事的发生而暂时不能运行就绪例如等待IO输入、调用某些阻塞接口
  • 状态间转换

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rvz0e0Jb-1691498472262)(C:\Users\姬新羽\AppData\Roaming\Typora\typora-user-images\image-20230808110915473.png)]

  • 进程是抢占式执行在计算机中进程多的情况是常态操作系统在调度的时候要做到雨露均沾让每一个进程都能运行上但是操作系统在调度的时候是从就绪队列当中获取进程进行运行也就是说哪个进程准备好了就绪了原则上就可以调度谁所以进程为了自己可以被执行都是抢占式执行不会互相谦让。这种狼多肉少的状态也是进程有不同状态的原因之一

    并发多个进程在一个CPU下采用进程切换的方式各自独占CPU运行各自的代码交替运行让多个进程都得以被推进称为并发多个岔路要汇合到主路各车道交替进入

    并行多个进程在多个CPU下同时运行各自的代码称为并行车道足够各进程跑在各自的车道上

    在一个多核CPU的机器当中并发和并行是同时存在的

  • 细分的进程状态

    • R运行状态处于R状态 有可能在执行代码有可能在就绪队列中等待
    • S可中断睡眠状态进程正在睡眠被阻塞等待资源到来被唤醒也可以通过其他进程信号或时钟中断唤醒进入运行队列
    • D不可中断睡眠状态通常等待一个IO结束
    • T暂停状态(ctrl+z)ctrl+z暂停一个进程 ctrl+c可终止一个进程
    • t跟踪状态调试程序的时候可以看到
    • X死亡状态我们用户看不到在PCB被内核释放的时候进程会被置为X紧接着进程就退出了
    • Z僵尸进程
  • 程序计数器保存程序下一条执行的指令

  • 上下文信息保存寄存器当中的内容。在多进程的系统当中操作系统调度进程获取CPU之后进行现场恢复继续执行后面的代码

  • 上下文切换Linux是多任务的操作系统它的进程数远大于CPU数它能支持远大于CPU数量的任务同时运行但实际上同一时刻只会有CPU数量的进程在运行等CPU时间片到了之后进程调度器就会把CPU资源分配给其他进程在这个过程就涉及到了进程之间的切换这时候就需要把当前进程的上下文信息保存下来随后加载被调度进程的上下文信息这就是上下文切换。

    上下文信息既包括虚拟内存、栈、全局变量等用户态的资源也包括内核堆栈、寄存器等内核态的资源不同类型的上下文切换会涉及到不同类型资源的切换例如同一进程不同线程的切换只需要切换内核态的资源而不需要切换用户态的资源

    上下文切换的类型进程上下文切换、线程上下文切换、中断上下文切换

  • PCB是描述一个进程的数据块在内核中对应struct task_struct{…}中的代码我们列举一小部分其中的内容进程标识符进程号、进程状态、程序计数器、上下文指针、内存指针、记账信息(使用CPU时长占用内存大小)、IO信息(保存进程打开文件的信息)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux