秒懂:环境变量 回答:在Linux当中,存在一些全局变量的设置(环境变量),告诉命令行解释器(bash进程),应该去那些路径底下去寻找这些可执行程序。☞综下:ls不用带路径,因为ls所在的路径在环境变量当中。
秒懂:进程上下文切换 由进程的程序块、数据块、运行时的堆和用户栈(两者通称为用户堆栈)等组成的用户空间信息被称为用户级上下文。由进程标识信息、进程现场信息、进程控制信息和系统内核栈等组成的内核空间信息被称为系统级上下文。处理器中各寄存器的内容被称为寄存器上下文(也称硬件上下文),即进程的现场信息。
秒懂:进程切换——O(1)调度算法 上面这张图展示的就是Linux内核中的调度队列示意图,那么具体是如何进行队列调度的呢?首先,图中有两个queue[140],这个就是所谓的队列结构,(蓝色和红色扩出来的)其中有一个就是所谓的运行队列,也就是直接向CPU上进行调度的结构。
秒懂:进程状态 当一个进程被创建时,它处于创建状态。在这个阶段,操作系统为进程分配必要的资源(将代码和数据拷贝到内存,创建PCB结构体等),并为其分配一个唯一的进程标识符(PID)。进程就绪状态是指进程已经满足了运行的条件,进程PCB被调度到CPU运行队列中,排队等待系统分配CPU资源来执行的状态。进程PCB被调度到CPU运行队列中且已被分配CPU资源,就叫做运行态。在这个阶段,进程的指令会被执行,它可以访问CPU和其他系统资源。只有运行状态下的进程才能占用CPU资源。
秒懂:父子进程 这样做可以节省内存,并提高效率。在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程的PID,使用 getppid() 系统调用来获取当前进程的父进程的PID。在子进程中,fork 也会返回一个值,但是返回的是 0,子进程是通过复制父进程的地址空间而创建的,因此子进程从父进程继承了大部分的内存布局和数据。:在父进程中,fork 返回新创建子进程的进程 ID(PID),这个 PID 是子进程的标识符,该系统调用返回调用进程的父进程的PID,即当前进程的父进程的PID。