• Linux进程


    进程是程序执行时的一个实例。在过去,一个进程在地址空间中执行一个单独的指令序列。现在的Linux允许在相同的地址空间执行多个指令序列。地址空间是指允许进程引用的内存地址集合。

    目前的Linux系统是一个多用户系统,在这个执行环境里,若干个进程并发活动,竞相争夺系统资源(CPU,内存等)。允许多个进程并发活动的系统被称为多道程序系统,也叫多处理系统。

    很多人分不清进程与程序的区别:几个进程能并发地执行同一程序,而同一个进程能够顺序地执行几个程序。在单CPU的计算机上, 同一时刻只能执行一个指令序列。如果是多个CPU的,那么同一时刻也只能有有限个指令序列在同时被执行。

    Linux内核有一个调度程序,它能够决定哪个进程能够执行。在多用户系统中的进程,如Linux的,它必须是可抢占的。Linux系统会记录下每个进程占用CPU的时间,并周期性地激活调度程序。这样就可以在有限的CPU的资源下,执行更多的进程。

    Unix也是一个抢占式的多用户系统,在没有用户登录时,也会有好几个系统进程在执行。主要是用于监视。比如,当有用户输入用户名时,对应的监听进程就会运行一个程序来验证用户的输入。如被证实,就会再创建一个进程来执行shell程序。如果是一个图形界面被激活,那么就一相应的进程来执行窗口管理器,每一个窗口通常都会有一个单独的进程来执行。对于每一个输入的命令,shell进程都会创建相应程序的另一个进程。这就是一个典型的多个进程可以执行同一个程序的例子。

    Linux中的进程发出系统调用,硬件就会把特权械从用户态转入内核态,内核开始代替用户进程去与硬件打交道,或完成一些需要在内核中完成的工作,完成后迫使硬件从内核态回到用户态,最后进程从系统调用的下一条指令开始继续执行。在这个进程调用系统调用到返回的过程中,Linux系统会在进程执行的上下文中发挥作用。

    Linux是单块结构,就是所谓的大内核,它的每一个内核层都被集成到内核程序中,并代表当前进程在内核态下运行。

    微内核与大内核是相对的。微内核只在内核中存在少量的函数集:调度程序、进程间通信机制等很小一部分。诸如内存分配程序、设备驱动程序、系统调用处理程序都是运行在微内核之上的几系统进程。因为不同层次之间的消息传递需要一定的代价,所以微内核一般比大内核的效率要低。

    微内核操作系统的每一层都是一个相对独立的程序,这就迫使程序员必须采用模块化的方法。这必要求程序员必须定义好软件的接口与其他层之间的交互。

    在微内核的操作系统中,与硬件相关的部分会被写进内核中,因此微内核很容易就可以移植到其他体系结构上。大内核的代码会在开机后常驻内存,而微内核可以把那些暂时不需要执行的系统进程调出内存或撤销。所以微内核比大内核更加充分利用了内存。

    Linux系统也吸收了微内核模块化的优点,所以它提供了模块,这是一个目标文件,它的代码可以在运行时链接到内核或从内核上解除链接。这个目标文件通常由一组函数组成,用于实现文件系统、驱动程序或其他的内核功能。

  • 相关阅读:
    【前端笔记】ant-design-vue 3.x使用modal.method()自定义content内容小记
    从零复现PyTorch版(3)
    vue3学习笔记--1.
    数字图像处理大作业
    vtk对二维图像构造三维
    Java学习笔记3.6.2 final关键字 - final修饰方法
    CAMx的空气质量模拟及污染来源解析丨大气臭氧来源解析模拟与臭氧成因分析
    Fast DDS之Publisher
    MATLAB算法实战应用案例精讲-【集成算法】集成学习模型stacking(附Python和R语言代码)
    Linux基础命令 逻辑卷扩容
  • 原文地址:https://blog.csdn.net/weixin_40763897/article/details/127960834