关于中断:互联网中断检测技术窥览与讨论

如其余人造零碎一样,互联网的运行也会出现异常甚至中断。仅在2022年就产生了多起影响重大的互联网中断事件:1月15日汤加火山喷发三个小时后,全国断网,和外界的所有电话与网络分割都无奈接通;3月28日,产生了Twitter的 AS13414被俄罗斯JSC RTComm.RU的AS8342劫持事件;8月2日,某人窜访台湾,其间新浪微博产生断网,导致用户无奈应用;因为俄乌地区问题,乌克兰别离于9月11日、10月10日呈现大规模断网。互联网中断造成的损失通常代价低廉,据福布斯报道,2013年8月19日,亚马逊因为断网每分钟损失66,240美元。因为互联网自治运行的个性以及网络协议的局限性,在应答互联网中断事件时面临许多挑战,包含如何剖析互联网中断、如何检测互联网中断、如何量化中断的影响、如何量化网络的健壮性、如何评估互联网中断的危险、如何在互联网中断下生存下来并加重影响等。所以,检测正在进行的网络中断对于定性和定量地理解破坏性事件的类型、范畴、结果与及时激活缓解和补救流动就显得十分重要。  一、互联网中断的定义及起因分类因为成心或意外事件,位于特定天文区域的一个或多个网络元素不能失常工作或无奈达到时,互联网所处的特定状态,就称为互联网中断。从骨干网络服务商的视角,互联网中断起因包含:  保护:设施或链路的打算停机;路由器相干:包含解体/重启,线卡故障或重置,CPU过载,人为谬误配置;光设施相干:包含光学器件故障和电缆割伤; 其余多重链接:时间重叠且起因不明的故障;单链路高频率:包含因老化或长期测试/降级流动而完结应用的部署;单链路低频:起因不明的繁多故障。从网络故障的潜在触发因素,互联网中断起因包含:1. 大规模劫难(例如地震、飓风、流行病); 社会政治和经济挑战(例如恐怖主义、审查制度);相干故障(例如电力短缺);人为谬误(例如谬误配置);歹意攻打(例如前缀劫持攻打);异样但非法的流量(例如寻找突发新闻信息的人群);环境挑战(例如因为特设网络中节点的移动性);和平等等。后者是一个更宽泛更个别意义上的分类。二、互联网中断检测和剖析技术互联网中断检测和剖析技术分为两类:基于非流量和基于流量。 2.1基于非流量采纳与流量无关的根本技术时,通常查看非结构化数据源、半结构化数据源、结构化数据源。非结构化数据源包含技术博客(如Renesys)、邮件列表(如NANOG)和断网事件归档,以及最终用户收回的警报和通过微博社交网络的服务投诉等;半结构化数据源包含设施应用状况和谬误日志、客户邮件、品质告警、用户流动日志等;结构化数据源,如网络故障单,例如用文本开掘和自然语言解决来剖析中断邮件列表。 2.2基于流量基于流量相干的技术,又称在线中断检测,这些技术能够分为被动监测和被动探测。检测正在进行的网络中断对于定性和定量地理解破坏性事件的类型、范畴、结果与及时激活缓解和补救流动十分重要。无论是在物理中断的状况下(容许辨认和可能更换损坏的网络组件),还是在逻辑中断的状况下(容许网络管理员疾速复原令人满意的运行状态),这些办法都特地有用。检测网络中断通常须要四个步骤: 数据收集和预处理、网络中断检测、故障定位和根因剖析,大多数零碎只执行前两个步骤。这些零碎通过收集数据来继续监测网络,通常联合了被动监测技术或被动探测技术。在此步骤中,还将进行数据过滤和消毒,以便从数据中打消尽可能多的噪声。而后在第二步中,对精细化的数据利用不同的算法,以检测可能与Internet中断相干的大尺度和小尺度事件。 2.2.1被动监测技术大多数应用的被动监测技术都是基于管制立体信息,利用BGP协定收集管制立体数据。也有其余办法依赖于对数据立体流量的剖析,次要基于与停机事件相干的流量变动。 (1)管制立体公开BGP数据存储库对系统中断检测以及特定中断事件的剖析十分有帮忙。在数据收集步骤中从公共存储库(例如,Routeview、RIPE等)系统地爬取可公开取得的BGP数据,如RIB和UPDATE音讯。而后将该数据转换为适合的格局,以便进行后续剖析。BGP数据还可用于定位产生中断的AS。依赖BGP数据系统地检测网络中断时的次要毛病是大量的谬误警报,因为许多非法事件也可能确定门路或源前缀的扭转。基于管制立体检测的办法包含:1.Profile-based检测由Li和Brooks开发的一种用于检测网络中断并评估其影响的工具。其次要思维是对互联网的失常状态进行建模,而后在给定的一段时间内监控网络,以掂量互联网是否以及如何偏离这一状态。数据收集过程齐全基于私有BGP数据,而中断检测依赖于两阶段聚类办法。在BGP失常配置的状况下,将BGP以后属性值与参考值进行比拟。如果在固定的工夫窗口中存在显著差别,则检测到中断。BGP一般配置文件示意为一组一般BGP属性值的集群。当产生中断时,测量的BGP属性会被划分到一个独自的异样集群中。2.基于工夫的变化检测通过汇集与同一BGP事件相干的BGP更新,并将多个边界路由器上的事件关联起来,以便揭示异样,并尝试确定这些异样的根本原因。有两种不同的路径:(1)以互联网为观察点,通过剖析AS-AS的相互作用来跟踪异样;(2)以托管核心为观察点,洞察AS如何受到来自也有几跳之遥的内部AS的异样的影响。3.其余检测办法。如采纳张量合成法检测感兴趣的事件,采纳图论分析方法定位关注事件的源点等。 (2)数据立体这类检测办法不依赖于域间路由数据,而是依赖于其余基于流量的数据源。依据采集点在网络中的地位,这些办法能够分为基于外围(Core-based)的办法,即在直达网络中察看数据流量,以及基于边缘(Edge -based)的办法,即在末端网络或终端主机上察看数据。1.基于外围的办法基于流的连贯跟踪办法(FACT)依赖网络中所有边界路由器输入的流级数据来比拟流入和流出的流量。在数据收集过程中,FACT收集每个近程主机、网络或AS的Netflow记录和聚合流。要害思维是网络中断可能会导致:(1)到近程目的地(网络前缀、AS等)的不胜利单向连贯数量加(2)胜利的双向连贯数量缩小。2.基于边缘的办法该办法通常利用协同网络监测平台提供的多种网络故障排除工具。每个节点监督流和门路品质信息,如吞吐量、失落、提早,以本地检测事件,监督和关联终端用户应用程序的性能,以便裸露包含中断在内的网络事件。上述办法都波及保障用户隐衷的问题。 2.2.2被动探测技术许多其余中断检测零碎在数据采集过程中次要应用被动探测技术:1.依赖Ping和Traceroute从多个无利地位周期性地探测多个目标地址。2.断层扫描办法。这两种办法通常都依赖分布式被动测量平台。 1.基于Ping和Traceroute的办法该办法周期性地用ICMP echo申请(Ping)探测每个IP块,并将响应分为两大类:(1)必定的,如果收到ICMP应答;(2)否定的,如果ICMP应答表明网络不可达,或没有应答。否定的应答可能应答互联网中断2.层析扫描办法二值层析成像是通过发送协调的端到端探针来检测链路故障。网络断层扫描是一个弱小的工具。然而它也有局限性:疾速检测网络中断意味着高探测率,这在事实网络中是不可行的。此外网络动静可能会减弱注入的数据包正在遍历先前察看到的雷同链路的根本假如,同时负载平衡进一步加剧了这个问题。 2.2.3主被动混合办法哈勃(Hubble)零碎依据BGP公共数据在管制立体上存在达到目标网络的路由,但报文没有通过数据立体达到目标网络的办法来检测互联网的可达性问题。数据采集依赖于BGP数据、管制立体变动触发的Ping和Traceroute测量值。PoiRoot实时零碎,帮忙ISP精确定位任何影响其前缀的门路变动的根本原因。该零碎利用了BGP数据,但也联合了Traceroute等测量工具。主被动混合办法多见于学术研究,理论利用中较少应用。 2.2.4探讨依赖被动监控的互联网中断检测零碎十分高效,但容易呈现:(i)虚伪警报和(ii)与隐衷相干的重大问题。基于被动探测的解决方案较为无效,但伸缩性差。被动探测会向网络发送大量探测包,运行商往往不能容忍这种行为。此外,在指标目的地数量和采样周期之间的必要衡量导致中断检测零碎齐全依赖被动探测,可能只报告大型和长时间的网络中断。所以主被动混合办法仿佛是最好的抉择,因为它联合了被动监测和被动探测的长处。

January 16, 2023 · 1 min · jiezi

关于终端:一个终端工具竟然有AI功能使用了1天我立马把其他终端全卸载了太香了

前言平时工作须要频繁应用终端工具,有一个好的命令行终端工具是十分重要的。 尤其是应用mac的小伙伴,预计不少人都感觉iterm2才是最好的终端工具。 其实起初我也是这么感觉的,然而最近直到我应用了这款开源的终端工具,我能够负责任的说,iterm2能够放在角落吃灰去了。 我重度应用了2天,无论从颜值,性能,效率和翻新上,都碾压同类的终端工具。我齐全找不到任何理由来放弃这么优良的一款工具。整个应用的体验十分难受,甚至于感觉,这,就是我心中现代化终端工具该有的样子! 介绍这款终端工具叫:Warp 或者有的小伙伴在其余平台已经看到过。那没关系,我这里再给安利下。 这款工具是齐全开源的,开源托管仓库在github上: Github:https://github.com/warpdotdev... 官网:https://www.warp.dev/ 官网长这样: Github上更是领有将近8K的Star Warp是用Rust写的,号称是21世纪现代化的终端工具。UI设计确实是一股浓浓的现代化简洁暗黑风,这种格调我一眼就喜爱上了。 目前只反对了mac零碎,然而据官网介绍,不久之后也将会出windows版本和linux版本。应用windows的小伙伴能够再急躁等等。 对于装置,从官网右上角就能够间接下载到安装包。 预计有一些小伙伴因为国内网络的问题登陆不上官网或者github,没关系,我帮你们下载好并转存了,获取形式见文末。 颜值性能放一边,咱们先说颜值。 作为程序员除了天天在IDE写代码,预计看的最多的就是终端工具界面了吧。颜值作为一个硬通货,能晋升咱们在解决问题时候的舒适感,我感觉还是非常重要的。 Warp的颜值十分高,间接看图: 并且Warp内置了超多的主题,比方: 反正我是感觉每一款主题都很有意思。配合现代化的UI,让你敲shell命令的时候晋升数倍视觉感官。 速度我在用终端工具的时候,最影响我体验感的就是启动速度和顿挫感。 之前我在公号里有举荐过另一款终端工具:electerm。其实颜值和性能都不错,惟一让我有点不爽的中央是顿挫感有时比较严重。启动有提早,在关上新的窗口页和切换窗口页时,都感觉会有一点点的提早感,这让我的体验打了一点折扣。 然而我在应用Warp的时候,齐全没感触到这种顿挫感。所有都显得十分的丝滑。你就会感触到这款工具很轻量,很称手。如同关上一个文本编辑器那么轻快。 命令块只有你略微应用下,就会发现Warp和其余终端工具最大的不同在于,它把一行命令的输出和输入打包成了一个块,让你更加容易能分辨出每条命令的输出和输入。 Warp设计了不同的视觉效果来帮忙用户疾速辨认块中的内容,如果命令出错,那这个块就会显示红色背景和红色侧栏。失常的块就是失常背景。 并且每一个块你都能够去操作它,除了能够复制命令和后果以外,Warp反对对每一个块打上书签标记,对于打上书签的块,在右侧的滚动条里能够清晰的看到,鼠标放上去会显示其内容,点击会疾速定位到那个块。 Warp还容许分享你的命令块,选中块之后点击Create Permalink,会弹出一个分享块的提醒,而后能够生成一个url。通过这一个url,他人能够很不便的在网络上查看你分享的命令块并复制其内容。 历史命令Warp中的历史命令查看,我感觉十分人性化。 其余的终端的历史命令,通过高低键去查看,但按一次只能查看一条。 在Warp中查看历史也是按高低键,然而给出了一个浮层供选择,如果你关上了多个拆分窗口,Warp会隔离每一个shell会话里的历史记录,多个shell之间的历史命令不会串。这点十分赞。 命令提醒Warp里的命令提醒,也是独立浮层提醒。能够进行抉择,还有命令的解释极其用法提醒。 在git目录上面,甚至于能够提醒到分支名,这很粗疏了有木有 AI性能一款终端还有AI性能?没错,这就是Warp最骚的中央! 在Warp中集成了AI Command Search的性能,可能将自然语言转换成可执行的shell命令。这个性能须要联网来应用,由OpenAI的codex引擎提供反对。 这是我目前见过惟一一款有AI性能的终端。这对于我来说,太实用了! 因为我并非业余运维同学,所以有的简单的shell命令我本人并记不住,以前碰到记不住的命令总要查baidu,当初通过AI命令你能够间接输出你想要干什么,AI会主动解析你的自然语言并转成shell命令。 先打个样,比如说我要把零碎信息输出到一个sys.txt文件中,在Warp中按下Ctrl+\` 按键,会弹出一个AI输入框。 我输出:Output system information to sys.txt file,回车,会立马给出翻译进去的shell命令。 英文不怎么好?没关系,中文也是OK的。再比方: 还用说什么吗,自然语言到shell命令,是如此的不便。很弱小有木有。 结语Warp还有很多其余的性能,比方我的工作流能够把你本人的罕用的shell能够保留进去。不便调取。按Command+P能够随时调出命令面板进行命令查看和性能的调取。 须要说的是,AI性能在国内网络环境下可能不太容易体验,须要本人想方法。 对于有一些小伙伴可能因为网络起因获取不了安装包,那我曾经把安装包提前下载下来了。 关注公众号[元人部落]并回复WP获取下载链接。 国庆长假马上来了,最初祝大家国庆玩的开心。

September 30, 2022 · 1 min · jiezi

关于终端:手机termux跑漏扫工具随时随地做脚本小子

三个应用简略的扫描工具Kscan跑指纹/爆破afrog跑pocfscan一起跑Kscan是一款纯go开发的全方位扫描器,具备端口扫描、协定检测、指纹识别,暴力破解等性能。反对协定1200+,协定指纹10000+,利用指纹2000+,暴力破解协定10余种。 https://hub.fastgit.xyz/lcvvv...afrog 是一款性能卓越、疾速稳固、PoC 可定制化的破绽扫描工具 https://hub.fastgit.xyz/zan8i...fscan是一款内网综合扫描工具,不便一键自动化、全方位漏扫扫描。 https://hub.fastgit.xyz/shado...1、termux装置【termux官网】【ZeroTermux】 ZeroTermux换源(可跳过)sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list && apt update && apt upgrade2、termux装置Linux发行版Alpine装置 curl -LO https://raw.githubusercontents.com/Hax4us/TermuxAlpine/master/TermuxAlpine.shbash TermuxAlpine.sh启动alpine startalpine3、Alpine装置漏扫工具wget https://download.fastgit.org/shadow1ng/fscan/releases/download/1.8.1/fscan_arm64wget https://download.fastgit.org/zan8in/afrog/releases/download/v1.3.6/afrog_arm.tar.gzwget https://download.fastgit.org/lcvvvv/kscan/releases/download/v1.76/kscan_linux_arm.zipunzip kscan_linux_arm.ziptar -xzf afrog_arm.tar.gzchmod +x afrog_arm kscan_linux_arm fscan_arm64工具简略应用命令Kscan ./kscan_linux_arm -t 192.168.1.1/24./kscan_linux_arm -t http://127.0.0.1./kscan_linux_arm -t 文件门路afrog ./afrog_arm -t http://127.0.0.1./afrog_arm -T URL文件门路## 更新poc./afrog_arm --up fscan ./fscan_arm64 -h 192.168.1.1/24./fscan_arm64 -u http://127.0.0.1./fscan_arm64 -hf IP文件门路./fscan_arm64 -uf URL文件门路

July 28, 2022 · 1 min · jiezi

关于终端:SecureCRT-ssh终端仿真工具

SecureCRT是一款弱小的ssh终端仿真工具, 通过高级会话治理进步了工作效率,并提供了一系列节省时间和简化重复性工作的办法。SecureCRT为组织中的每个人提供平安的近程拜访,文件传输和数据隧道。无论您是要更换Telnet还是终端,还是须要更弱小的平安近程拜访工具,SecureCRT都是您能够全天应用的应用程序。

July 7, 2022 · 1 min · jiezi

关于终端:阅后即焚python-pip-下的安装

Python第三方库的获取和装置的学习,非常重要,在Python编程学习中波及各种各样的库装置。这里将三类装置(次要是pip installs),倡议读者按程序应用。电脑配置为32位设置,_FILES装置报错。 三个办法是:pip工具装置、自定义装置和文件装置。 pip 工具装置自定义装置文件装置pip 工具装置pip不愧为最罕用最高效的Python第三方库装置形式。pip是Python官网提供并保护的在线第三方库装置工具。应用pip工具首先须要联网。装置一个库的命令格局如下: :\>pip install pygame...Installing collected packages: pygameSuccessfully installed pygame-1.9.2b1pip工具与操作系统也有关系,在MacOS X 和Linux等操作系统中,pip 工具简直能够装置任何Python 第三方库。 自定义装置自定义装置指依照第三方库提供的步骤和形式装置。以科学计算用的numpy为例,开发者保护的官方主页是: http://www.numpy.org浏览该网页下载链接http://www.scipy.org/scipylib...按批示步骤装置。自定义装置实用于在pip中没有注销或是装置失败的第三方库。 文件装置因为Python某些第三方库仅提供源代码,通过pip下载文件后无奈在Windows零碎编译装置,会导致第三方库装置失败。 登入界面 http://www.lfd.uci.edu/~gohlk...而后抉择第三方库,例如scipy库对应内容。抉择其中的.whl文件下载,这里选用实用于Python3.5版本解释器和32为零碎的对应文件:scipy-0.17.1-cp35-cp35m-win32.whl下载到D:\pycodes目录而后,在终端pip命令装置该文件。pip install D:\pycodes\scipy-0.17.1-cp35-cp35m-win32.whl这三种办法装置Python第三方库,就能够不必放心装置不上的问题。这里倡议装置pip在新文件夹下(program_files)以配合%_ FILED的PATH的环境变量。

June 3, 2022 · 1 min · jiezi

关于终端:Warp21世纪的终端

Warp 是一个齐全从新设计的,用 Rust语言编写的,疾速的终端程序,其目标是使终端程序可能像一个古代应用程序一样工作。2022年4月初,其曾经凋谢给所有 macOS 用户下载应用(后续会提供 Windwos 和 Linux 版本)。 因为国内互联网的非凡状况,在下载后无奈失常注册,在 issue #906 的探讨中,有人给出相似上面解决方案: export HTTP_PROXY=http://127.0.0.1:1087export HTTPS_PROXY=http://127.0.0.1:1087/Applications/Warp.app/Contents/MacOS/stable相似 VSCode,Warp 提供了通过 CMD-P 呼出 Command Palette 的性能,具体应用办法见 Warp 文档;其 Autosuggestions 性能可用,但与 Aloxaf/fzf-tab 比拟,差距还是很显著的;其 Workflow 和 A.I. Command Search 才是亮点,通过含糊查问可能疾速找到适合的命令,即便对于相熟命令行的用户也是十分有吸引力的。 总而言之,Warp 可能在不须要深刻学习和简单配置的状况下,为用户提供了一个比拟高效的终端环境,后续值得关注。

April 8, 2022 · 1 min · jiezi

关于终端:恒源云Gpushare如何获取实例SSH端口号技巧大放送7

文章起源 | 恒源云社区 原文地址 | 【小技巧-端口篇】 1、如何获取实例SSH主机名、实例SSH端口号、实例明码?关上恒源云控制台,复制登录指令和明码,而后粘贴到文本或编辑器中。 粘贴实现后如下所示: 登录指令:ssh -p 6666 root@i-1.gpushare.com明码:vKExWbBWnVkszkwaFdh4cPABADSNFGuS命令拆解如下:实例SSH主机名:i-1.gpushare.com实例SSH端口号:6666实例用户名:root实例明码:vKExWbBWnVkszkwaFdh4cXXXXXXXXXXX2、利用如何对外裸露端口服务?实例并不提供公网 IP 地址,服务是通过端口映射到公网接入点提供链接的。 须要时须要进行 JupyterLab 或 TensorBoard 服务,并且将利用端口配置成和 JupyterLab 或 TensorBoard 雷同的 8888 或 6006 端口上,监听地址须要应用 0.0.0.0。 # 进行 JupyterLab 或 TensorBoard 服务supervisorctl stop tensorboardsupervisorctl stop jupyterlab# 设置开机不启动 JupyterLab 或 TensorBoardgrep -E "autostart" /etc/supervisor/conf.d/tensorboard.conf || echo "autostart = false" >>/etc/supervisor/conf.d/tensorboard.confgrep -E "autostart" /etc/supervisor/conf.d/jupyterlab.conf || echo "autostart = false" >>/etc/supervisor/conf.d/jupyterlab.conf# 更新配置supervisorctl update接下来将利用启动监听在 0.0.0.0:6006 或 0.0.0.0:8888 上。内部调用与拜访是通过控制台实例中 JupyterLab 或 TensorBoard 工具链接。 ...

April 7, 2022 · 1 min · jiezi

关于中断:笨叔点滴12面试必考如果在中断处理函数里发生了缺页中断会怎样为什么

“ 小明同学去BAT公司面试。 面试官:叫神马名字 小明:小明 面试官:啥是时钟中断? 小明:就是手表坏了,不跑了 面试官: ???这也行 面试官接着问:如果时钟中断处理程序产生了缺页中断,怎么办? 小明嘟囔:咋手表坏了还会缺液,这啥手表。。。液压手表?要加几号油... 面试官:小明同学,滚。。。 ” 下面是一个段子,然而这是一个面试必考题目,考查大家对中断和异样解决的了解,如果你对中断和异样了解不透彻,很难胜任Linux相干的研发工作的。如果能把这个问题的前因后果想进去,去面试BAT或者其余大公司一点问题都木有。 凑巧,明天在笨叔的VIP奔跑群里,有人问了这样一个问题,在中断处理函数ISR中,能够产生缺页中断吗?产生缺页中断会怎么样? [如果你也想参加到VIP奔跑群里和笨叔进行交换,请点击“浏览原文”订阅旗舰篇] 01 啥是缺页中断? 首先咱们先搞清楚两个事件: 一个是中断 另外一个是缺页中断 他们是否一样都是中断呢? 答案显然是否定的。中断和缺页中断是兄弟,然而不是同一个人。在大部分的体系结构里,缺页中断其实是缺页异样,英文叫做“Page Fault”,笨叔不晓得从哪个教材开始“page fault”都清一色叫做缺页中断,其实翻译成缺页异样会更适合,否则学生还天真的认为缺页中断和一般的外设中断没啥两样。 在ARM32处理器里中断和异样是分的比较清楚的,中断有IRQ和FIQ中断,咱们常说的一般的外设中断就是IRQ中断。而异样,分成data abort、undefine abort、预取异样这几种异样。大家从异样向量表就能够看出,当中断和异样产生的时候,他们的解决的入口是不一样的。 当一个外设中断产生的时候,它的解决步骤是这样的: 跑到IRQ的向量表里 在vector_IRQ汇编函数,保留以后lr和spsr到中断栈 跳转到SVC模式 在SVC模式里,判断中断产生在内核态还是用户态 保留中断产生那个工夫点上下文到过程的内核栈里(SVC模式) 跳转到do_IRQ函数里去执行中断处理函数 判断是否须要抢占 中断返回 下面是笨叔总结的IRQ中断产生,上半部解决要经验的一些事件(咱们这里探讨疏忽了中断下半部)。这次点滴那个小伙伴问的问题是,当在第6步的时候产生了缺页中断。也就是在do_IRQ函数里,拜访的内存不存在,或者页的属性不对,导致产生了一个缺页异样,那怎么办? 通过笨叔下面这么一剖析,咱们就get到了这个问题的实质了。 [对于中断解决的全过程,倡议大家去看《奔跑吧Linux内核》第5.1章内容] 02 不能够哟 假如在中断过程的第6步产生了缺页异样,你拜访了不该拜访的内存,捅了马蜂窝,那会产生什么事件? (在ARM处理器里大略有两种的缺页异样,一种是过程地址空间的缺页异样do_page_fault,另外一种是vmalloc的缺页异样do_translation_fault。后者比较简单,vmalloc缺页中断仅仅是把init_task过程的页表拷贝到以后过程而已,咱们临时思考更为简单的前者)。 首先一点,异样解决的汇编代码局部和中断是差不多的,都是通过异样模式的栈,而后跳转到以后过程的内核栈外面。然而异样模式有一个不一样的中央,就是处理过程是开中断和容许睡眠和调度的。 所以当在外设中断ISR处理过程中产生异样,会呈现上面状况。 如图所示,在产生中断的那个current过程的内核栈里,会呈现一个一个栈框,最下面的是产生中断那个现场点的上下文的栈框,接着是do_IRQ的栈框,接着是具体硬件外设ISR处理函数的栈框。 接下来就是产生异样时候,保留下来的栈框。 因为在异样处理函数里,它是容许开中断的和睡眠的,那“层层嵌套”,套路太深,猴年马月能力返回到 最后那个中断上下文呢? 如图所示,在①这个中央产生了中断A,而后在保留了这个现场的上下文。而后在②这个中央产生了异样,也保留了这个现场的上下文,在异样处理过程③的中央,又产生了中断B,这时候保留产生中断B的上下文。 假如中断B返回的时候产生了调度,那猴年马月能返回到③这个中央呢? 假如在异样解决的时候产生了调度,也是一样的,猴年马月能返回到③这里呢? 下面场景产生的话,中断A啥时候能力返回呢?因为中断控制器还在期待程序媛给他一个吻,这个吻叫做“EOI”,英文叫做“end of interrupt”。兴许望眼欲穿了,也等不到这个吻了。。。 下面场景如果产生在时钟中断里的话,大家想想会有啥结果? 所以,为了避免异样解决产生的套路很深的陷阱,咱们看一下Linux内核做了哪些限度? 在do_page_fault()函数里,有判断以后上下文是否在中断上下文中,通过in_atomic()函数来判断。如果在中断上下文里,就跑到do_kernel_fault里,通常就打印oops谬误了。 那in_atomic()怎么判断以后是否在中断上下文呢? 这里次要是去判断thread_info外面的preempt_count计数。 [这里preempt_count计数是啥意思呢?笨叔在这里就不解释了,倡议大家去看《奔跑吧Linux内核》第3章的图3.2] ...

April 2, 2022 · 1 min · jiezi

关于终端:Mac安装ohmyzsh终端更改终端背景

背景目前Mac自带的终端不是很好用,好多惯例的Linux命令都不反对 比方:ll命令;那么咱们能够装置第三方的终端 装置国内地址: sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)" 应用成果如下: 后续如果装置其余的命令须要更改zsh环境变量的话 输出如下命令: vim ~/.zshrc 更改终端背景关上终端偏好设置 关上形容文件选中文本 点击图像-》点击选取 选取本地图片 如果成果不是很好能够调节字体和背景透明度 整体成果如下

April 15, 2021 · 1 min · jiezi

关于物联网:IAP物联网终端软件升级技术

摘要:IAP是利用本人的程序代码实现降级程序(新的APP)从内部接口(能够是串口、I2C、SPI、网口等等)写入到flash中,再通过flash读写操作,将新的APP笼罩原有APP程序,在从新从新的APP入口地位启动咱们的应用程序,同时也负责IAP代码的批改和迭代。本文分享自华为云社区《物联网终端软件降级技术---IAP(因芯片类型较多,本文仅针对STM32的Cortex-M系列)》,原文作者:o0龙龙0o 。 当初降级曾经成为IoT畛域边缘降级的根本技术,宽泛被当初风行的OTA技术就是其中之一。因为物联网终端会和互联网技术相干,软件迭代速度会比传统制造业高很多,这样就对非现场降级提出了要求,在行业内造成以OTA为支流的降级形式及降级规范。 物联网终端多应用的经济型的MCU,这个类的MCU个别有三种程序写入形式: ISP:In System Programing 在零碎编程(应用芯片提供的疏导程序(Bootload)加上外设接口进行烧录)IAP:In applicating Programing 在利用编程(软件本身实现在线电擦除和编程的办法,不应用任何工具。程序通常分成两块,别离为疏导程序和应用程序)ICP:In Circuit Programing 在电路编程(应用JTAG/SWD接口进行烧录,如J-Link烧录器和J-Flash软件配合应用)ICP、ISP都是用在厂家在调试过程烧录程序和成片烧录程序的芯片编程办法,在制成后个别利用IAP的形式更加自在的对本人的芯片就行降级。 IAP若由ROM执行程序,如反对IAP的单芯片可能使用自批改代码进行程序降级,也能对负责IAP性能的代码进行批改或删除从而失去IAP性能。IAP不须要芯片厂家给出非凡的反对,只须要提供FLASH操作、通信接口操作、中断矢量偏移操作和复位操作就能够了。 IAP的原理与实现IAP是利用本人的程序代码实现降级程序(新的APP)从内部接口(能够是串口、I2C、SPI、网口等等)写入到flash中,再通过flash读写操作,将新的APP笼罩原有APP程序,在从新从新的APP入口地位启动咱们的应用程序,同时也负责IAP代码的批改和迭代。 在这里,首先在咱们的代码空间,一部分的是咱们用于降级的程序IAP,另一部分是咱们的应用程序APP,例如如下图进行调配:IAP通过ISP或是ICP形式进行烧录,APP初版通过三种形式进行烧写,在须要降级时通过IAP进行降级。 咱们先来看看 Cortex失常的程序运行流程,如下图所示:外部闪存(FLASH)地址起始于 0x08000000,个别状况下,程序文件就从此地址开始写入。 此外芯片是基于Cortex-M内核的微控制器,其外部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序实现启动,而这张“中断向量表”的起始地址是 0x08000004。 当中断降临,芯片的外部硬件机制亦会主动将 PC 指针定位到“中断向量表”处,并依据中断源取出对应的中断向量执行中断服务程序。 芯片复位后,先从 0X08000004 地址取出复位中断向量的地址,并跳转到复位中断服务程序,如图标号①所示;在复位中断服务程序执行完之后,会跳转到咱们的main 函数,如图标号②所示;而咱们的 main 函数个别都是一个死循环,在 main 函数执行过程中,如果收到中断请求(产生重中断),此时芯片强制将 PC 指针指回中断向量表处,如图标号③所示;而后,依据中断源进入相应的中断服务程序,如图标号④所示;在执行完中断服务程序当前,程序再次返回 main 函数执行,如图标号⑤所示 当基于IAP设计的程序启动流程如下图:芯片复位后, 还是从 0X08000004 地址取出复位中断向量的地址,并跳转到复位中断服务程序,在运行完复位中断服务程序之后跳转到 IAP 的 main 函数,如下图标号①所示,在执行完 IAP 当前(行将新的 APP 代码写入事后定义的 FLASH,灰底局部。 新程序的复位中断向量起始地址为 0X08000004+N+M),跳转至新写入程序的复位向量表,取出新程序的复位中断向量的地址,并跳转执行新程序的复位中断服务程序,随后跳转至新程序的 main 函数,如下图标号②和③所示,同样 main 函数为一个死循环,并且留神到此时芯片的 FLASH,在不同地位上,共有两个中断向量表。 main 函数执行过程中,如果 CPU 失去一个中断请求, PC 指针仍强制跳转到地址0X08000004 中断向量表处,而不是新程序的中断向量表,如下图标号④所示;程序再依据咱们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中,如图标号⑤所示;在执行完中断服务程序后,程序返回 main 函数持续运行,如图标号⑥所示。这样就实现程序设计和跳转的动作。 LiteOS的OTA计划LiteOS是利用华为云实现物联网终端的降级的工作,底层的原理与下面介绍的移植,不过因为是物联网,所以程序是通过Wi-Fi、4G、NB等无线通讯技术下载到芯片实现软件的降级,具体能够在博客检索相干关键词获取,有很多对应的解释。大抵原理如下图:分为SOTA和FOTA两种技术,即固件和软件都能够别离进行降级操作,而后将程序编译好的bin文件,通过华为云IoT平台进行打包发送到物联网终端进行降级操作。 ...

March 24, 2021 · 1 min · jiezi

关于终端:npm在没有sudo的情况下抛出错误

我只是通过nodejs.org上的包装置了node和npm,每当我试图用npm搜寻或装置某个货色时,它就会抛出以下谬误 npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ECONNRESET: request to https://registry.npmjs.org/utf8 failed, reason: Client network socket disconnected before secure TLS connection was establishednpm WARN registry Using stale data from https://registry.npmjs.org/ due to a request error during revalidation.npm WARN rm not removing /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/.bin/rimraf as it wasn't installed by /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/rimrafnpm WARN rm not removing /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/.bin/semver as it wasn't installed by /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/semvernpm ERR! code EACCESnpm ERR! syscall rmdirnpm ERR! path /Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20cenpm ERR! errno -13npm ERR! Error: EACCES: permission denied, rmdir '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'npm ERR! [OperationalError: EACCES: permission denied, rmdir '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'] {npm ERR! cause: [Error: EACCES: permission denied, rmdir '/Users/yuezonglun/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'] {npm ERR! errno: -13,npm ERR! code: 'EACCES',npm ERR! syscall: 'rmdir',npm ERR! path: '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'npm ERR! },npm ERR! stack: "Error: EACCES: permission denied, rmdir '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce'",npm ERR! errno: -13,npm ERR! code: 'EACCES',npm ERR! syscall: 'rmdir',npm ERR! path: '/Users/youname/Desktop/mfbb/mfbb-rn/node_modules/@react-native-community/cameraroll/android/build/.transforms/9cbc27bddbf53510e68e9fe85a8d20ce',npm ERR! parent: 'mfbb-rn'npm ERR! }npm ERR! npm ERR! The operation was rejected by your operating system.npm ERR! It is likely you do not have the permissions to access this file as the current usernpm ERR! npm ERR! If you believe this might be a permissions issue, please double-check thenpm ERR! permissions of the file and its containing directories, or try runningnpm ERR! the command again as root/Administrator.npm ERR! A complete log of this run can be found in:npm ERR! /Users/youname/.npm/_logs/2020-12-02T14_18_12_826Z-debug.log这看起来像是主目录中的权限问题。要发出.npm目录的所有权,请执行: ...

December 2, 2020 · 2 min · jiezi

关于终端:22款终端生产力工具效率飞起值得收藏

程序员在搞开发时,终端CLI工具的应用必不可少,往往都是生产力工具,所以明天在此给大家举荐一下比拟好用的终端工具。先给大家列个举荐清单,如下图。 高频 CLI 工具举荐 1、fish shell毋庸置疑,在终端工具中,Shell 是应用最频繁也最重要的工具。过来,我已经应用过 Bash 和 Z Shell,而现在,这个Fish Shell,也是一个十分优良的终端 Shell 工具,领有许多开箱即用的性能,例如语法主动举荐补全、语法高亮显示或应用快捷键在最近拜访的文件夹之间来回切换。 下载地址:https://fishshell.com/2、Starship如果必须要从本篇文章中抉择一个我最喜爱的终端工具——那非 Starship 莫属。Starship 能够实用于任何 Shell。你只须要装置它,而后在相应的配置文件.bashrc/.zshrc/config.fish增加一行配置,剩下的工作交给它来实现就好了。 它能够做到: 依据你是否在代码仓库中增加了新文件、是否批改了文件、是否暂存了文件等状况,用相应的符号示意 git 仓库的状态。依据你所在的 Python 我的项目目录,展现 Python 的版本号,这也实用于 Go/Node/Rust/Elm 等其余编程语言环境。展现上一个命令执行所用的工夫,指令运行工夫必须在毫秒级别。如果上一个命令执行失败,会展现相应的谬误提示符。 还有成千上万的其余信息能够展现。然而,它能以更加敌对的模式智能地给你出现!比方,如果你不在 git 存储库中,它将暗藏 git 信息。如果您不在 Python 我的项目中,则不会有 Python 版本信息,因为显示它没有什么意义。它永远不会给你展现多余信息,始终保持终端的好看,优雅和简洁。 下载地址:https://starship.rs/3、z“z” 能够让你疾速地在文件目录之间跳转。它会记住你拜访的历史文件夹,通过短暂的学习后,你就能够应用z path_of_the_folder_name命令在目录之间跳转了。 比方,如果我常常拜访 ~/work/src/projects,我只须要运行 z pro ,就能够立马跳转到那里。z 的原理参考了 frecency 算法——一个基于统计 frequency 和 recency 进行剖析的算法。如果它存储了你不想应用的门路文件夹,你随时能够手动将其删除。它进步了我在罕用的不同文件门路之间频繁切换的效率,帮我节俭了键盘击键次数以及大量的门路记忆。 下载地址:https://github.com/rupa/z4、fzffzf — fuzzy finder,即含糊查找器。它是一种通用工具,可让你应用含糊搜寻来查找文件、历史命令、过程、git 提交等。你键入一些字母,它会尝试匹配后果列表中任何地位的字母。输出的字母越多,后果也就越精确。 下载地址:https://github.com/junegunn/fzf5、fd 下面动图是 find 命令(左)和 fd 命令(右)的应用比照。 ...

November 24, 2020 · 2 min · jiezi

关于终端:item2-默认打开当前文件夹

item2 是 MAC 下的一个终端工具, 绝对于原生的终端, 提供更丰盛的 features。item2 在新开一个 Tab 页的时候, 默认关上的是 home 文件夹。 然而工作须要,我常常须要在新开的窗口到以后文件夹。 配置以当前目录关上 Tab 点击 iTerm2 => Preferences => Profiles在 "Working Directory" 一栏, 选中 "Reuse previous session’s directory"从新关上一个 Tab 页, 会发现曾经间接进入到当前目录, 而不再是 $HOME 文件夹更多高级配置能够批改以下新开窗口的关上门路: New WindowsNew TabsNew Split Planes通过点击 "Preferences" => "Profiles" => "General" => "Working Direcgtory" => "Advanced Configuration", 而后进行相应配置

October 1, 2020 · 1 min · jiezi

关于终端:powershell-终端美化-git-分支名乱码解决办法

之前通过 on-my-posh 曾经丑化过一次了然而 如果我 git 分支名中有中文那么他显示的还是乱码,所以当初想让他失常显示 通过如下命令找到主题文件 关上之后搜查一番发现 ps 脚本我不太懂,看这个文件大抵能够猜出来终端中下面那一行就是 $prompt 输入后的后果,当初的问题放大到如何让 $prompt 内蕴含的中文输入后失常显示? 通过尝试上图红框出输出中文输入的也是乱码,网上搜查无果,忽然想起来gb2312 这个货色,将该文件应用gb2312编码保留代码内的中文能够输入了 但右侧分支名还是乱码,猜想应该是一样的问题,那么应该会有这几种解决方案 让powershell 反对utf-8。这个因为其余问题之前试过,尽管utf-8 的是失常显示了但导致原本中文能失常输入的反而不行了最好的办法应该是间接让这个脚本能够输入utf-8的字符分支名转 gb2312 再输入接下来就是去网上找文档看有没有方法解决或者能实现我下面提出的两个计划 在 https://www.zhihu.com/question/54724102/answer/1035566559 发现了解决方案1的实现办法 步骤如下 输出 $profile 失去powershell配置文件地址 增加 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding 中文分支名正确显示! 另外的问题,显示 emoji我想在最后面放一个 emoji 在线编码工具 http://tools.jb51.net/transcoding/decode_encode_tool 这个三角形的编码就是 0x1F4D0 但打印进去后后面多了问号,不晓得什么起因,但前四位为0的emoji是能够失常显示的,可能是因为组合字的缘故。 这个问题没有想到比拟好的办法,望理解者不吝赐教(´▽`♡ƪ) 。我只能临时先用单个码点的emoji了

August 31, 2020 · 1 min · jiezi