首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux进程信号()

,如果没有立马处理这个信号,需要进程具有记录信号的能力 ---- 信号的产生对于进程来讲是异步的 异步为两者互相做自己的事,互不干扰 如:你正在上课,外卖小哥给你打电话告诉你快递到了,因为快递有重要的东西...在键盘中输入 CTRL C ,终止运行程序,本质也是向对前台进程发送信号 ---- Linux通过远程终端访问时,只允许一个进程处于前台,默认情况是bash, 所以在自己的程序运行时输入指令没有任何反应...\ 代表3号信号 ,此时虽然2号信号被置为自定义动作了,但是三号信号还没有,所以依旧能终止进程 ---- 修改mysignal.cc文件内容,加入对于3号信号的自定义动作 ---- 再次运行可执行程序时...---- 修改mykill.cc文件内容 计算1S中计算机会将整数累计到多少 ---- 在这次计算中,count只有11万,非常不符合我们的预期 因为要打印到显示器,以及网络问题,非常拖延速度...---- 修改count为全局变量,在发送信号时,自定义方法中输出count值 这时count的值就变成5亿 两者相比之下,说明IO效率非常底下

12620

Linux进程概念()

实际Linux 中定义 task_struct 结构体的时候,首先先定义一个双链表的结构体: struct dlist { struct dlist* next; struct...首先我们先了解一下 fork() 在做什么,fork() 创建子进程,系统中会一个子进程,os 会以父进程为模板,为子进程创建一个 PCB,而父进程会与子进程共享代码和数据,所以 fork() 之后,...因为子进程的 pid 具有唯一性,是为了方便父进程对不同的子进程进行区分管理;而给子进程返回 0 是因为子进程的父进程也是有唯一性,它们都是同一个父进程的,对于进程而言,只需要知道是否成功即可。...假设我们启动一个qq,启动微信,启动浏览器,这些都是进程,终止qq或者微信的进程,浏览器的进程还在吗?答案是肯定在的;如果是对于父子进程来说,父进程被终止,子进程还在吗?或者反过来呢?答案是在的!...每一个进程并不是占有CPU就一直运行,每隔一段时间,会自动被从CPU剥离下来,这段时间称为时间片;但是Linux内核中不仅仅只有时间片,因为只有时间片的话会显得太呆板,假设每个进程都运行1ms就下来,

8810
您找到你想要的搜索结果了吗?
是的
没有找到

Linux进程信号(

那么,进程与人处理信号的方式有什么异同呢?信号又是如何产生的呢?本文我们来了解Linux中的进程信号。...信号的发送和接收,实际就是改变PCB中的信号位图。...2.系统调用 用键盘向前台进程发送信号,前台进程会影响shell,Linux规定跟shell交互时只允许有一个前台进程,实际上当我们运行自己的进程时,我们的进程就变成了前台进程,而sbash会被自动切到后台...但,实际这种方式效率较低,因为打印在屏幕是需要访问外设的,而外设的运行速度较慢。...本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

15320

Linux 进程间通信 : 共享内存(

在这主要介绍的就是用mmap进行多进程的内存共享功能。Linux产生子进程的系统调用是fork,根据fork的语义以及其实现,我们知道新产生的进程在内存地址空间跟父进程是完全一致的。...实际对于XSI的共享内存,其key的作用就类似文件的文件名,shmget返回的int类型的shmid就类似文件描述符,注意只是“类似”,而并非是同样的实现。...对于一个XSI的共享内存,其key是系统全局唯一的,这就方便其他进程使用同样的key,打开同样一段共享内存,以便进行进程间通信。...对于刚接触共享内存的程序员来说这可能需要适应一下。实际共享内存的生存周期根文件更像:进程对文件描述符执行close并不能删除文件,而只是关闭了本进程对文件的操作接口,这就像shmdt的作用。...对于Linux系统来说,使用XSI共享内存的时候可以通过shmget系统调用的shmflg参数来申请大页内存(huge pages),当然这样做将使进程的平台移植性变差。

11K33

Fkill –在Linux搜索并终止进程

通常,我使用“ top”命令或“ ps -ef | grep ”或“ pidof ”来查找进程ID,并使用命令“ kill -9 ”将其kill掉。...后来我发现,Fkill程序可以找到正在运行的进程,并可根据需要杀死一个或多个进程。它使用Nodejs编写,并且支持Linux、Mac OS和Microsoft Windows。...安装Fkill Fkill在AUR中可用,因此您可以在Arch Linux及其变体使用任何AUR帮助器进行安装,例如Yay。...$ yay -S fkill 在其他Linux发行版,请确保按照以下链接中的说明安装了Nodejs。 如何在Linux安装NodeJS 安装Nodejs后,运行以下命令以安装fkill。...$ npm install --global fkill-cli 在Linux使用Fkill交互式搜索并杀死多个进程 要搜索并终止进程,只需运行: $ fkill 此命令将启动交互式UI,您可以在其中找到正在运行的进程列表及其端口号

2.3K10

linux 操作系统的进程调度() -- 进程调度算法的演进

引言 一篇文章中,我们介绍了内核调度的基本概念,知道了调度器设计中最核心的两个指标 -- 周转时间与响应时间: linux 操作系统的进程调度() -- 进程调度的基本概念 本文,我们就继续顺着上文的思路...SJF 算法的理想虽然很美好,但在实际系统执行过程中,却往往存在着两个致命的问题: 在进程执行过程中,新的任务随时都有可能到来,如果任务不是同时到来的,那么 SJF 算法事实就退化成了 FCFS 算法...多级反馈队列 MLFQ 针对 RR 算法存在的问题,结合我们一篇文章中介绍的 IO 密集型与 CPU 密集型进程的区别: IO 密集型:频繁 IO,但占用 CPU 的时间不多; CPU 密集型:进程执行过程中很少执行...从这三条原则,我们看出,操作系统必须在运行过程中区分一个进程究竟是 IO 密集型还是 CPU 密集型,并且在正确区分它们的基础,需要增加优先级概念,从而让 IO 密集型进程更为优先和频繁地被分配到 CPU...结语 正是有了多级反馈队列算法,现代生产级操作系统中的进程调度器才得以真正建立起来。 下一篇文章,我们就来深入 linux,来了解具体的 linux 进程调度器的发展历史和实现机制,敬请期待。

1.6K10

Linux 使用 jps 命令检查 Java 进程

image.png 系统运行着诸多进程,通过 jps 命令能够快速有效识别 Java 进程。 在 Linux 中,有一些用于查看系统运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统运行进程最简单的方法。...CMD   4486 pts/0    00:00:00 bash  66930 pts/0    00:00:00 ps 你也可以通过 ps 命令,并配合结果输出管道符进行 grep,从而查看系统运行的...Java 虚拟机进程状态Java Virtual Machine Process Status(jps)工具可以帮你扫描系统所有运行的 Java 虚拟机(JVM)实例。

2.6K20

Linux 使用Systemd 来进程守护Net应用

Linux 使用Systemd 来进程守护Net应用 Systemd Service 的方式,用于在 Linux 系统管理和运行服务。...几乎所有主流的 Linux 操作系统都使用 Systemd 作为默认的系统和服务管理器,因此在这些系统,您都可以使用相同的方式来管理和运行服务。...除了 Ubuntu,其他常见的 Linux 发行版,如 Debian、CentOS、Fedora、Red Hat Enterprise Linux 等都支持 Systemd。...进程守护步骤 创建一个 .service 文件在 /etc/systemd/system/ 目录下创建一个名为 myapp.service 的文件,使用文本编辑器打开并添加以下内容: [Unit] Description...-开始 sudo systemctl status miniapi.service --停止 sudo systemctl stop miniapi.service --禁用 [此命令将停止应用程序的进程并停止服务

75920

linux内核学习(三)之init进程学习(

上次讲解到linux内核启动分析的前期准备,还没有去分析linux内核具体启动分析过程,这里我换一种方式来分享,在linux启动后,linux系统接下来会如何进行工作?...一、init进程完成了从内核态向用户态的转变: 1、一个进程2种状态: 这里所说的一个进程两种状态,说的是进程状态的转换;首先在介绍这种状态的转换之前,我们来了解一下什么是init进程,它其实是linux...系统在启动后运行的第一个进程(这里关于进程的学习,可以去看我之前分享的linux应用编程专辑,有很详细的介绍);而init进程刚开始运行的时候是内核态,它属于一个内核线程,然后他自己运行了一个用户态下面的程序后把自己强行转成了用户态...打个不恰当的比喻,比如大家都知道的建房子,在这之前,你必须打好地基,打好了地基之后,你才能开始动工在地基砌砖头了,也就是各种操作了。 3、用户态下做了什么?...windows任务管理器里面就可以看到如下图所示: 在我们linux系统里面的话,在init进程转换为用户状态下后,后面有一些我们比较熟悉的进程操作:login进程、命令行进程、shell进程(shell

1.5K20

深入理解Linux内核之进程睡眠(

1开场白 环境: 处理器架构:arm64 内核源码:linux-5.10.50 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 无论是任务处于用户态还是内核态,经常会因为等待某些事件而睡眠...睡眠对于任务来说究竟意味着什么?内核是如何管理睡眠的任务的?我们会结合内核源代码来分析任务的睡眠,力求全方位角度来剖析。...注:由于篇幅问题,文章分为上下两篇,且这里不区分进程和任务,统一使用任务来表示进程。 主要讲解以下内容: 睡眠的三种状态 睡眠的内核原理 用户态睡眠 内核态睡眠 总结 2....注:睡眠状态描述见一小节! 3.2 记录睡眠的任务 这一步也非常有必要,内核会将即将睡眠的任务记录下来,要么加入到链表中管理,要么使用数据结构记录。...2.即将睡眠的任务是cpu的当前任务(curr指向)。3.调用主调度器后,即将睡眠的任务不会再次加入cpu运行队列,除非被唤醒。

1.4K20

Linux 使用 jps 命令检查 Java 进程

Linux 中,有一些用于查看系统运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统运行进程最简单的方法。...CMD 4486 pts/0 00:00:00 bash 66930 pts/0 00:00:00 ps 你也可以通过 ps 命令,并配合结果输出管道符进行 grep,从而查看系统运行的...Java 虚拟机进程状态(Java Virtual Machine Process Status)(jps)工具可以帮你扫描系统所有运行的 Java 虚拟机(JVM)实例。

2.2K30

Linux| |对于UDP的学习

端口 https服务器,使用443端口 操作系统动态分配的端口号 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配 查看端口号 less /etc/services //就可以查看Linux...,也就是进程和端口号是一对的关系 当我们写一个程序使用端口号的时候,要避开这些知名端口号 【问题】 1.一个进程是否可以bind多个端口号呢?...,从而完成计算机之间的通信 计算机之间的通信: 主机A的某个进程与主机B的另一个进程进行通信 网络字节序转换 对于数据在网络中传输的时候有着自己遵循的传输规则大端传输 对于主机上的数据的传输序列有着两种...: 大端:即高位字节序放在低地址 小端:即低位字节序放在低地址 传输:均是先传输低地址的数据然后是高地址的数据 所以对于主机上的数据传输的时候传输到网络的时候有可能导致数据错误(例如主机上是小端的时候...实现本地通信 服务器 只需要服务器创建一个套接字 使该套接字对于本地地址(127.0.0.1)进行绑定,并且绑定一个端口号(1024–65535)就行了 绑定本地地址是为了对于本地计算机的两个进程进程通信

3.1K30

linux 操作系统的进程调度() -- 进程调度的基本概念

,想象一下,你移动了一下鼠标,CPU 由于被 CPU 密集型进程占用着,而让你的鼠标在屏幕一顿一顿地移动,这显然太过于糟糕。...在 Linux 操作系统中,系统会为每个进程打一个分,这个分就是 PR 值,它是 Priority 的前两个字母。...通过 PR 值的范围,linux 换分出了两类进程: 实时进程 -- PR 值在 0 到 99 之间,PR 值越大,优先级越高; 普通进程 -- PR 值在 100 到 139 之间,PR 值越小,优先级越高...对于这些顾客而言,缩短周转时间是他们的核心诉求,但对于超市来说,综合考虑不同顾客对于排队时长的特殊诉求,合理安排所有顾客的排队顺序,才能够降低系统周转时间,拥有良好的用户体验。...结语 本文,我们从操作系统的整体层面,了解了操作系统进程调度的基本概念和设计思想,但我们尚未触及核心部分,到底 linux 系统中的调度器是如何设计的,又有着怎样的历史沿革,出现了哪些算法?

1K10

Linux| |对于UDP的学习

端口 https服务器,使用443端口 操作系统动态分配的端口号 客户端服务器的端口号,这个范围的端口号操作系统可以对其进行分配 查看端口号 less /etc/services //就可以查看Linux...,也就是进程和端口号是一对的关系 当我们写一个程序使用端口号的时候,要避开这些知名端口号 【问题】 1.一个进程是否可以bind多个端口号呢?...,从而完成计算机之间的通信 计算机之间的通信: 主机A的某个进程与主机B的另一个进程进行通信 # 网络字节序转换 对于数据在网络中传输的时候有着自己遵循的传输规则大端传输 对于主机上的数据的传输序列有着两种...: 大端:即高位字节序放在低地址 小端:即低位字节序放在低地址 传输:均是先传输低地址的数据然后是高地址的数据 所以对于主机上的数据传输的时候传输到网络的时候有可能导致数据错误(例如主机上是小端的时候...ip地址和端口号,这个ip地址和端口号也就是要知道客户端要发送消息给哪一个服务器进行发送 启动服务器 必须要给服务器绑定一个ip地址和端口号,也就是要注意该服务器处于该计算机上的哪一个进程

2.8K20

linux通过进程名杀死进程_linux关闭进程命令

笔记:根据一个进程的名字或启动此进程的命令(连续的一部分即可)杀死进程 一、使用单条命令 ps -ef | grep 进程名/启动进程的命令 | grep -v grep | awk ‘{print $2...}’ | xargs kill -9 执行结果: [1]-  已杀死               sleep 200 [2]+  已杀死               sleep 200 二、编写脚本 linux.../bin/bash # 脚本名:kill_process.sh # 脚本功能:强制杀死进程 方式kill -9     # 1通过ps查询进程的id     # 2使用kill -9 强制终止进程...函数功能:根据进程名杀死程序     参数:进程名     返回值:无 !...————————————————————— # 根据进程名查询包含进程名的进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

15.8K20

Linux进程间通信()之管道、消息队列实践

通信是一个广义的意 义,不仅指大批量数据传送,还包括控制信息的传送,但是使用的方法都是大同小异的。 ? 如图所示进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信。...管道是Linux支持的最初Unix IPC形式之一,管道与管道之间通信其实就是一个文件,但它不是一个普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统而且只存在内存中。...消息读写操作非常简单,对于开发人员来说,每个消息都类似如下的数据结构: struct msgbuf { long mtype; char mtext[1]; }; 3.1、msgget函数 该函数用来创建或者访问一个消息队列...(3)获取消息队列中的信息 msgrecv.c 在上面msgsend.c的基础,这个例程将上面发送到消息队列的信息读取回来。...消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点,相对于管道通信有很大的改观,而且消息队列对数据的顺序处理也是非常有条理性的不会产生混杂性。

2.2K10

Linux进程学习【进程状态】

,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样的 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习的正是 Linux 中的 进程 状态 进程是何种状态,取决于此进程的PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往的认知来说...运行了,但我们 很难捕捉到 对于 CPU 来说,将这么简单的一句话输出到屏幕是一件很小的事,可能几毫秒就完成了 而其他大多数时间,进程 都在外设等待队列中 排队 当我们将打印语句和睡眠语句屏蔽后,进程...不一定在 CPU 运行 ️睡眠 S 睡眠 S 的本质就是 进程阻塞,表示此时进程因等待某种资源而暂停运行;睡眠 S 又称为可中断休眠,当 进程 等待时间过长时,我们可以手动将其关闭,应用卡死后强制关闭也是这个道理...恢复运行,恢复后的 进程 在后台运行 注意: 进程 在后台运行时,是无法通过 ctrl+c 指令终止的,只能通过 kill -9 PID 终止 在 gdb 中调试代码时,打断点实际就是 使

19430
领券