Linux系统使用超详细(六)~进程管理

目录

一、认识进程

二、进程号 

2.1.进程号概念

2.2.进程号作用

三、进程查看

3.1. `ps`命令:

3.2. `top`命令:

3.3. `htop`命令:

3.4. `pstree`命令:

3.5. `pgrep`命令:

四、进程状态

五、进程优先级

六、进程优先级查看

6.1.使用 ps 命令:

6.2.使用 top 命令:

七、终止进程

7.1.kill:

7.2.killall:

7.3.pkill:


一、认识进程

在Linux中,进程是指计算机中正在运行的程序的实例。它是操作系统进行任务管理和资源分配的基本单位。每个进程都有自己的内存空间、代码、数据、文件描述符等资源。进程可以是用户启动的应用程序,也可以是系统自身运行的服务或守护进程。

进程的概念基于操作系统的多任务处理能力,它使得计算机可以同时执行多个任务。每个进程都拥有自己的执行上下文,包括程序计数器(用于记录下一条要执行的指令地址)、寄存器集、内存空间和打开的文件等。

进程之间通过操作系统提供的机制进行通信和同步,例如管道、信号、共享内存、消息队列等。进程可以创建子进程,形成进程树的层次结构。

操作系统通过进程调度算法按照一定的优先级和策略来分配CPU时间片给不同的进程,使得它们能够交替执行,给用户带来同时运行多个任务的错觉。

以下是进程的一些关键概念:

  1. 程序:程序是指存储在磁盘上的可执行文件,它包含了代码和静态数据。程序本身只是一个静态实体,没有执行过程。

  2. 进程:进程是程序的一个实例,具有自己的执行环境和资源。它由操作系统创建和管理,可以独立地运行和占用系统资源。每个进程都有一个唯一的PID,用于标识和管理进程。

  3. 进程控制块(PCB):PCB是操作系统中用于管理进程的数据结构。它包含了进程的状态信息、程序计数器、寄存器内容、进程优先级以及其他与进程相关的信息。操作系统使用PCB来跟踪和管理每个进程。

  4. 上下文切换:上下文切换是指当操作系统决定将CPU从一个进程切换到另一个进程时,保存当前进程的状态,并加载新进程的状态。上下文切换涉及将当前进程的寄存器、程序计数器和其他重要信息保存到内存中,然后加载新进程的信息,以便它可以继续执行。

  5. 父子进程关系:进程可以通过派生(fork)创建子进程。子进程从父进程继承了一些特性,并且可以执行不同的代码路径。父进程可以通过监视和管理子进程来实现进程间的通信和协作。

总之:

进程是多任务操作系统中最基本的单位,允许多个程序同时运行。操作系统通过并发调度算法来管理和分配系统资源,使得多个进程可以共享和竞争这些资源。进程的概念为操作系统提供了一种有效地组织和控制程序执行的方式。

进程是操作系统中运行的程序的实例,它具有独立的资源和执行上下文,通过操作系统的多任务处理能力实现并发执行和任务管理。 

二、进程号 

2.1.进程号概念

进程号(Process ID,PID)是操作系统为每个正在运行的进程分配的唯一标识符。每个进程在系统中都有一个独立的进程ID,用于在进程管理和通信中进行标识和操作,是进程在操作系统中的身份证。

进程号是一个非负整数,通常以十进制表示。进程号的范围通常是从1到32767,但在某些系统上可能会有所不同。

每个进程在创建时都会被分配一个唯一的进程号,该进程号在整个系统中是唯一的,没有重复。进程号在系统中的唯一性保证了每个进程的独立性和可识别性。通过进程号,可以在系统中唯一标识一个进程,并对其进行操作,如终止进程、查看进程状态、监控资源使用等。

进程号的分配和管理由操作系统负责,当进程启动时,操作系统会为其分配一个唯一的进程号。进程号可能会随着进程的终止而释放,以便给新的进程使用。

2.2.进程号作用

进程号的作用有以下几个方面:

  1. 进程标识:通过进程号,可以唯一标识一个正在运行的进程,使操作系统能够定位和管理它。

  2. 进程控制:进程号用于操作系统对进程进行控制和管理,如启动、停止、暂停、终止等。

  3. 进程间通信:进程号可以用于不同进程之间的通信和协作,例如父子进程之间的通信。

  4. 进程状态监控:通过进程号,可以跟踪和监控特定进程的状态和资源使用情况。

三、进程查看

在Linux中,有多个命令可以查看正在运行的进程。以下是一些常用的命令和选项:

3.1. `ps`命令:

`ps`命令用于显示当前系统中的进程快照。常用的选项包括:

  •    - `ps aux`:显示所有用户的进程列表,包括详细信息(用户、PID、CPU使用情况等)。

a   显示所有进程

u   显示有效的使用者

x   显示无终端控制的进程

  • USER     进程的拥有者
  • PID         进程号
  • %CPU    CPU的使用率
  • %MEM   内存的使用率
  • VSZ       进程使用的虚拟内存量
  • RSS       该进程占用的固定内存量
  • TTY        终端
  • STAT      状态位常见的状态字符
  • START   开始时间
  • TIME      执行命令花费的时间
  • COMMAND    命令名
  •    - `ps -ef`:显示所有进程列表,包括命令行参数。

-e  显示所有进程

-f  全格式显示

  • UID        进程的拥有者
  • PID        进程号
  • PPID     父进程号
  • C           CPU使用率
  • STIME   命令开始时间
  • TTY       终端
  • TIME     执行命令花费时间
  • CMD     命令名字

可以根据进程名查询进程号 :

ps -ef|grep postgres

可以查找僵尸进程:

ps aux | grep zombie

注意:

僵尸进程通常只是系统中的临时存在,因为它们不会持续消耗资源。通常,重点是找到导致僵尸进程产生的问题,并解决其根本原因。这可能涉及修复父进程的错误处理代码,确保及时正确地回收子进程资源。 

  •    - `ps -e --forest`:以树形结构显示进程及其关系。

-e 选项表示显示所有进程,包括用户和系统进程。

--forest 选项表示以树状结构显示进程。它会按照父子进程的关系将进程进行分组,并缩进显示。

  • PID        进程号
  • TTY       终端
  • TIME     执行命令花费时间
  • CMD     命令名字

3.2. `top`命令:

`top`命令以交互方式实时显示系统资源的使用情况和运行中的进程。它提供了一个动态更新的进程列表,以及按CPU或内存使用率排序进程的功能。按下键盘上的 `q` 键可退出 `top`。

  • 23:00:44 up 1:12:这表示系统已经运行了1小时12分钟,当前时间为23:00:44。

  • 2 users:当前有2个用户登录到系统中。

  • load average: 0.00, 0.01, 0.02:这是系统的平均负载情况。分别代表最近1分钟、5分钟和15分钟的平均负载值。在此示例中,负载值较低,表示系统目前没有太大的负荷。

  • Tasks: 107 total:共有107个任务(进程)。

  • 1 running:其中有1个正在运行的任务(进程)。

  • 106 sleeping:有106个任务(进程)正在休眠状态。

  • 0 stopped:没有停止的任务(进程)。

  • 0 zombie:没有僵尸进程。

  • %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st:这是关于 CPU 使用情况的统计数据,包括用户空间使用(us),系统内核空间使用(sy),空闲(id),等待 I/O 的时间(wa)等。

  • KiB Mem : 1862812 total, 1517268 free, 187480 used, 158064 buff/cache:这是关于内存使用情况的统计数据,包括总内存量、空闲内存、已使用内存和缓存内存。

  • KiB Swap: 4194300 total, 4194300 free, 0 used. 1513148 avail Mem:这是关于交换空间(Swap)使用情况的统计数据,包括总交换空间、空闲交换空间和可用交换空间。

  • 接下来是进程列表,每行表示一个进程。在本例中,以PID 296为例,它的用户(USER)是root,优先级(PR)为20,无调整优先级(NI),虚拟内存(VIRT)、常驻内存(RES)和共享内存(SHR)的使用情况,状态(S)为 S(休眠或睡眠),CPU 使用率(%CPU)为0.3%,内存使用率(%MEM)为0.0%,已运行时间(TIME+)为0:03.25,命令(COMMAND)是xfsaild/sda3。

 在 top 命令的输出中,对 0.0 hi, 0.0 si, 0.0 st 的解释:

  • hi:表示硬中断(Hardware Interrupts)的占用情况。硬中断是由硬件设备(如磁盘、网卡等)发出的信号,通知操作系统需要进行处理。这个字段显示了硬中断所占用的 CPU 时间。

  • si:表示软中断(Software Interrupts)的占用情况。软中断是由操作系统内核发出的信号,通常用于执行系统级别的任务和处理外部事件。这个字段显示了软中断所占用的 CPU 时间。

  • st:表示偷取时间(Steal Time)。当运行虚拟机时,如果物理主机的 CPU 资源不足,就会出现 CPU 被抢占的情况,即虚拟机无法正常使用分配给它的 CPU 时间。这个字段显示了被偷取的 CPU 时间。

在这些字段中,显示的数值为百分比。如果它们的值为 0.0,则表示当前没有或仅有微弱的硬中断、软中断或被偷取时间。这通常是一个好的指标,代表 CPU 在可用状态下,并且没有其他任务占用太多的处理时间。

详解进程列表:

  • PID:进程的ID,是唯一标识一个进程的数字。
  • USER:进程的所属用户,表示进程属于哪个用户。
  • PR:进程的优先级,数值越小优先级越高。
  • NI:进程的优先级调整值,负数表示较高优先级,正数表示较低优先级。
  • VIRT:进程使用的虚拟内存大小,包括进程的代码、数据和堆栈等。
  • RES:进程使用的物理内存大小,表示进程实际占用的物理内存。
  • SHR:进程使用的共享内存大小,表示进程与其他进程共享的内存。
  • S:进程的状态,包括R(运行)、S(睡眠)、D(不可中断的睡眠)、Z(僵尸)等。
  • %CPU:进程使用的CPU占比,表示进程在当前时间片内使用CPU的时间比例。
  • %MEM:进程使用的内存占比,表示进程占用系统总内存的比例。
  • TIME+:进程的累计CPU使用时间,表示进程已经使用CPU的总时间。
  • COMMAND:进程的命令行,表示进程是通过哪个命令启动的。

3.3. `htop`命令:

`htop` 是 `top` 的增强版,提供了更美观和交互性更好的界面。它显示的信息更为详细,并允许通过键盘快捷键进行操作,如杀死进程、筛选进程等。

3.4. `pstree`命令:

`pstree`命令以树形结构显示当前运行的进程及其关系。这对于理解进程之间的父子关系非常有用。

3.5. `pgrep`命令:

`pgrep` 命令以给定条件搜索正在运行的进程,并返回匹配的进程ID。

备注:

在Linux中,ps命令是静态查看进程的命令,而tophtop命令是动态查看进程的命令。

  • ps命令用于显示当前系统中的进程快照。它提供了一次性的进程列表,显示当前运行的进程及其详细信息。ps命令只会输出一次结果,并不会实时更新进程信息。

  • tophtop命令则是动态地查看正在运行的进程。它们以交互方式实时显示系统资源的使用情况和进程状态。这两个命令会持续更新并显示当前的进程列表,可以实时查看进程的CPU、内存和其他资源使用情况。

因此,如果你需要查看当前系统中的进程列表一次性的快照,可以使用ps命令。

如果你需要实时监视系统资源和进程的状态,并随时查看最新的进程信息,可以使用top或者htop命令。

四、进程状态

进程可以处于不同的状态,每个状态表示了进程当前的运行情况和状态变化。以下是 Linux 中常见的进程状态:

  1. 运行(Running):进程正在执行或准备执行。

  2. 等待(Waiting):进程被挂起,等待某个事件的发生,例如等待输入、等待系统资源或等待其他进程完成。

  3. 停止(Stopped):进程被暂停执行并进入停止状态,可以通过发送信号(如 SIGSTOP 或 SIGTSTP)来实现。

  4. 退出(Exited):进程已经正常终止并退出。

  5. 僵尸(Zombie):进程已经终止,但其父进程尚未处理完该进程的退出状态,使得进程成为僵尸进程。僵尸进程将占用系统资源,直到父进程获取其退出状态。

  6. 前台(Foreground):进程在前台运行,并且接收来自用户的输入。

  7. 后台(Background):进程在后台运行,不接收来自用户的输入。

  8. 停滞(Dormant):进程处于休眠状态,等待某些条件的发生才会恢复执行。

  9. 跟踪(Traced):进程正在被调试器跟踪。

五、进程优先级

每个进程都有一个优先级(priority)值,它决定了进程在系统中的调度顺序。Linux 使用了一个动态优先级范围,将优先级值分配给进程。以下是常见的 Linux 进程优先级:

  1. 实时优先级(Real-time priority):实时优先级用于实时进程,这些进程需要以可预测和确定性的方式响应系统事件。实时优先级范围从0到99,值越小表示优先级越高。

  2. 静态优先级(Static priority):静态优先级适用于普通的用户进程,它们使用默认的优先级规则进行调度。静态优先级范围从100到139,值越小表示优先级越高。

  3. 动态优先级(Dynamic priority):动态优先级根据进程的行为和资源利用情况进行动态调整。它指示了进程相对于其他进程的调度优先级,并且可能随时间变化。动态优先级范围从100到139,与静态优先级相同。

在 Linux 中,可以使用 nice 命令来设置进程的优先级。较低的数值表示更高的优先级。例如,nice -n 10 command 将以较低的优先级运行 commandrenice 命令用于更改正在运行的进程的优先级。

注意:

修改进程的优先级需要超级用户权限(root 或使用 sudo)。

六、进程优先级查看

要查看进程的优先级,可以使用 ps 命令或者 top 命令。以下是两种方法:

6.1.使用 ps 命令:

运行以下命令来查看进程列表及其优先级:

ps -eo pid,ni,cmd

在输出中,ni 列显示了进程的动态优先级(nice 值)。较小的数值表示更高的优先级。

运行 ps -l 命令,可以获得更详细的进程信息,并且可以方便地查看进程的状态、资源使用情况和相关属性。 

该命令用于显示进程的详细信息和格式化输出。该命令将以长列表(long format)的方式显示进程的信息,以下是列注释:

  • F:进程的标志位,表示进程状态。

  • UID:进程的用户 ID,即启动该进程的用户。

  • PID:进程的 ID,唯一标识一个进程。

  • PPID:父进程的 ID,表示创建当前进程的父进程。

  • PRI:进程的动态优先级(priority)

  • NI:进程的 NICE 值,用于调整进程的静态优先级

  • SZ:进程使用的物理内存大小(以页面为单位)。

  • RSS:进程使用的实际物理内存大小(以 KB 为单位)。

  • WCHAN:进程在等待的事件或条件。

  • S:进程的状态,如 S 表示睡眠(sleeping)、R 表示运行(running)、Z 表示僵尸(zombie)。

  • TTY:与进程关联的终端设备。

  • TIME:进程已经使用的 CPU 时间。

  • CMD:进程的命令行。

备注:

进程的 PRI(Priority)默认值和 NICE 值的取值范围在不同的 Linux 系统中可能会有所不同。以下是一般情况下的默认值和取值范围:

  1. PRI(Priority)默认值:它表示进程的相对调度优先级。默认情况下,大多数进程的 PRI 默认值是 0。这意味着它们具有普通的优先级。

  2. NICE 值的取值范围:NICE 值的范围通常是 -20 到 +19,其中负数表示更高的优先级,而正数表示较低的优先级。较小的负数表示更高的优先级。在这个范围内,数值越小,进程的优先级就越高。较小的 NICE 值表示更高的优先级。超过 0 的 NICE 值(如 5)表示更低优先级,而小于 0 的 NICE 值(如 -15)表示更高优先级。

    在某些系统中,只有特权用户(root)可以设置负的 NICE 值。非特权用户只能将 NICE 值设置为 0 或者正值。

6.2.使用 top 命令:

运行以下命令来打开实时进程监视器 top,并按下 Shift + P 键按照 CPU 使用率进行排序。

top

 在 top 的进程列表中,你可以找到 NI 列,它显示了进程的动态优先级。

七、终止进程

有几个命令可以用来终止进程,以下是常用的终止进程的命令: 

7.1.kill:

kill 命令用于向进程发送信号以请求其终止。默认情况下,使用 kill 命令发送的信号是 TERM(终止)信号。而 kill 命令用于输出特定的信号给指定进程号(PID)的进程并根据该信号完成指定的行为,其中可能的信号有进程挂起、进程等待、进程终止等。

例如,要终止进程 ID 1234 的进程,可以运行以下命令:

kill 1234

如果需要查看当前系统中支持的信号类型以及它们的编号,可以执行以下命令:

kill -l 

每个信号都有一个唯一的编号和一个与之对应的名称。这些信号用于与进程进行交互,例如发送信号请求终止进程、中断程序的执行、重新加载配置等。

通过运行 kill -l 命令,你可以快速查看当前系统所支持的信号列表,并了解每个信号的标识符。这对于了解进程管理和与进程通信的操作非常有用。

注意:

kill -l 命令只是用于列出信号列表,并不会实际发送任何信号给进程。要向进程发送信号,你需要使用 kill 命令并指定相应的信号编号或名称。

例如 :

通过执行kill -SIGTERM PID 将发送 SIGTERM 信号给指定的进程 ID(PID)以请求其正常终止。

通过执行 kill -9 <PID>,可以向指定的进程发送 SIGKILL 信号,强制终止该进程。 

其中SIGKILL 是 Linux 中的一个预定义信号,编号为 9。它是一种不能被忽略或捕获的信号,它会立即终止目标进程,无论进程当前的状态如何。使用 kill -9 命令相当于对进程施加了“武力终止”。

注意:

由于 SIGKILL 是一种非常强制的终止方式,它不会给进程执行清理操作的机会。进程在收到 SIGKILL 后将立即被终止,可能导致未完成的操作和数据丢失。因此,建议在正常情况下首先尝试使用其他信号(例如 SIGTERM)来请求进程的终止,以便进程有机会进行适当的清理和处理。

需要谨慎使用 kill -9 命令,只在必要时才使用,因为-9是强制杀死进程,没有挽回余地,谨慎使用可以避免意外的数据损坏或其他不可预见的后果。

7.2.killall:

killall 命令也根据进程名称来终止匹配的进程,但与 pkill 不同,它只接受精确的进程名称而不支持模式匹配。

例如,要终止所有名为 "myprocess" 的进程,可以运行以下命令:

killall myprocess

7.3.pkill:

pkill 命令根据进程名称或其他属性来终止匹配的进程。

例如,要终止名为 "myprocess" 的进程,可以运行以下命令:

pkill myprocess

注意:

终止进程可能影响系统的稳定性和正在进行的任务,在进行任何进程终止操作时,请谨慎使用,并确保你知道终止哪个进程以及它可能产生的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

neo4j图数据库安装和测试

neo4j图数据库安装和测试 1. 下载合适的neo4j软件版本。 https://we-yun.com/doc/neo4j/ https://neo4j.com/deployment-center/#enterprise 2. 下载JAVAJDK 由于neo4j是一个用Java编写的图形数据库&#xff0c;因此在安装和运行Neo4j之前&#xff0c;需要先安装Java Developm…

真机调试HarmonyOS应用报错

问题表现&#xff1a; 01/04 19:00:01: Launching com.example.simplevideo $ hdc shell am force-stop com.example.simplevideo $ hdc shell bm uninstall com.example.simplevideo $ hdc file send E:\harmony\SimpleVideo\entry\build\default\outputs\default\entry-defau…

docker (portainer 安装nginx)

汉化版步骤可以参考&#xff1a;写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/135258056 一、创建容器 二、配置端口&#xff0c;以及容器卷挂载 挂载目录配置&#xff1a;(下方截图的目录如下&#xff0c;docker 改为 mydocker&#xff0c;用docker作为根…

使用KVM命令集管理虚拟机

1、KVM基本功能管理 1&#xff09;查看命令帮助 [rootlocalhost ~]# virsh -h ......//省略输出内容 2&#xff09;查看KVM的配置文件存放目录&#xff08;rhel7.1是虚拟机系统实例的配置文件&#xff09; [rootlocalhost ~]# ls /etc/libvirt/qemu autostart networks r…

《设计模式》之策略模式

策略模式定义 比如对象的某个行为&#xff0c;在不同场景有不同实现方式&#xff0c;可以将这些行为的具体实现定义为一组策略&#xff0c;每个实现类实现种策略&#xff0c;在不同场景使用不同的实现&#xff0c;并且可以自由切换策略。 策略模式结构 策略模式需要一个策略…

react antd,echarts全景视图

1.公告滚动&#xff0c;40s更新一次 2.echarts图标 左右轮播 60s更新一次 3.table 表格 import { useState, useEffect } from react;import Slider from react-slick; import slick-carousel/slick/slick-theme.css; import slick-carousel/slick/slick.css;import Layout fro…

springboot项目 java -jar xxx.jar 没有主清单属性解决方法

1.在pom文件中添加如下 <plugins><!--解决SpringBoot打包成jar后运行提示没有主清单属性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork…

el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端

最近遇到一个项目,里面有2个需求我觉得挺常见的,第一个需求是一个表单里,当用户在输入名称后,前端调接口发请求获取到关联名称的企业名称,并展示,然后当用户选中企业后,前端调接口获取选中企业的具体信息,并填充到表单里;第二个需求是,表单里有个上传图片的功能,前端…

JVS规则引擎和智能BI(自助式数据分析)1.3新增功能说明

规则引擎更新功能 新增: 1、数据源新增Excel数据源&#xff1b; Excel数据源功能允许用户将Excel文件作为数据源导入&#xff0c;并进行数据清洗、转换和处理&#xff0c;以实现数据的集成、可视化和深度分析&#xff0c;为决策提供强大支持&#xff0c;同时保持良好的交互性…

新一代爬取JavaScript渲染页面的利器-playwright(一)

Playwright的使用 Playwright是微软在2020年初开源的一款新一代自动化测试工具&#xff0c;其功能和**Selenium**、Pyppeteer类似&#xff0c;都可以驱动浏览器进行自动化操作&#xff0c;但是也具备了Selenium、Pyppeteer不具备的更好的API&#xff0c;是新一代爬取JavaScrip渲…

HbuilderX中的git的使用

原文链接https://blog.csdn.net/Aom_yt/article/details/119924356

CentOs 环境下使用 Docker 部署 Ruoyi-Vue

CentOs 环境下使用 Docker 部署 Ruoyi-Vue RuoYi-Vue 项目下载地址 RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分离权限管理系统&#xff0c;同时提供了 Vue3 的版本 (gitee.com) Docker 部…

Java 流程控制语句

程序设计中规定的三种流程结构&#xff0c;即&#xff1a; 顺序结构 程序从上到下逐行地执行&#xff0c;中间没有任何判断和跳转 分支结构 根据条件&#xff0c;选择性地执行某段代码 有 if…else 和 switch-case 两种分支语句 循环结构 根据循环条件&#xff0c;重复性的执…

DRF从入门到精通九(权限控制)

文章目录 一、权限控制模型1) ACL(Access Control List,访问控制列表)2) RBAC(Role-Based Access Control,基于角色的访问控制)应用前后台权限控制实操 3) ABAC(Attribute-Based Access Control,基于属性的访问控制) 一、权限控制模型 1) ACL(Access Control List,访问控制列表…

郑州大学算法设计与分析实验2

判断题 1 #include<bits/stdc.h> using namespace std;const int N 50; int f[N], n;int main() { // freopen("1.in", "r", stdin);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;f[1] 1; f[2] 1;for(int i 3; i &l…

ARM Cortex-Mx 权威指南笔记

用于中断或异常屏蔽特殊寄存器细节 1、PRIMASK 在许多应用中,可能都需要暂时禁止所有中断以执行一些时序关键的任务&#xff0c;此时可以使用PRIMASK寄存器。PRIMASK寄存器只能在特权状态访问。PRIMASK 用于禁止除NMI和 HardFault 外的所有异常它实际上是将当前优先级改为0(最…

图解设计模式-中介者模式(Mediator)

中介者模式 定义 使用一个中介者对象&#xff08;mediator&#xff09;集中封装多个具有依赖/关联关系的对象&#xff08;colleague&#xff0c;同事对象&#xff09;之间的交互&#xff0c;使各对象之间不再互相引用&#xff0c;降低对象之间的强耦合程度&#xff0c;对象之…

CTF之Misc杂项干货

目录 一、常见编码 二、文件分析与处理 三、隐写工具与命令 四、隐写术实例 一、常见编码 1、base家族 2、进制转换 3、摩斯、希尔、凯撒、仿射、栏栅、维吉尼亚、培根、键盘、rabbit、rot13、AES、md5、RSA等 &#xff08;md5、RSA可能不会出现在杂项里&#xff0c;但…

pytorch集智-1安装与简单使用

1 安装 1.1 简介 pytorch可用gpu加速&#xff0c;也可以不加速。gpu加速是通过cuda来实现&#xff0c;cuda是nvidia推出的一款运算平台&#xff0c;它可以利用gpu提升运算性能。 所以如果要装带加速的pytorch&#xff0c;需要先装cuda&#xff0c;再装pytorch&#xff0c;如…

2023年第2季社区Task挑战赛贡献者榜单

基于FISCO BCOS及Weldentity&#xff0c;实现SSO单点登录服务&#xff1b;提供食品溯源、电商运费险7天退保、电子病历等智能合约库业务场景案例&#xff1b;基于FISCO BCOS更新游戏体验&#xff1b;体验并分析解读最新发布的分布式数据协作管理解决方案DDCMS&#xff0c;提供相…