![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 82
一口Linux
《从零开始学ARM》作者,长期分享嵌入式、linux、网络、arm知识。
展开
-
有的人为什么宁愿做员工也不愿做领导?网友的回答让我恍然大悟
我自己总结的经验,除非你有意承接这件事,或者对这件事后续有所准备,否则提建议或者意见要谨慎,因为既然是你提的,不说后续要你掌管,起码也要你搞个汇总报告之类的东西。慈不带兵,你过不了心理关,确实不好当领导,当领导并不是说要没事坑人,要的是需要坑人是不犹豫,没有心理负担,甚至从内心都不认为在坑人!确实,我们这个负责人连98块都没有,就升了个名头,然后所有事都找你,每周还要报告,谁主动干谁怨种。领导问你要不要带项目,带团队,说要锻炼一下自己,要有奉献精神,却总是忘记提报酬。是的,跳槽涨薪比原来干几年都强!原创 2024-05-17 20:38:59 · 372 阅读 · 0 评论 -
软件License授权原理
本文将介绍License的生成原理,理解了License的授权原理你不但可以防止别人破解你的License,你甚至可以研究别人的License找到它们的漏洞。可找回是指用户申请的License一旦丢失或者要续期,基于第一次申请License时创建的源文件,再一次生成新的License,新的License会携带用户当初申请时的信息。保密性是指License里携带的data信息具有一定的隐蔽性,这样可以防止想要破解License的人寻找到生成License的规律,进而伪造自己的License。原创 2024-02-22 21:03:20 · 4896 阅读 · 1 评论 -
Linux信号一门搞定
结构体中有一个结构体。结构体有一个**struct k_sigaction action[_NSIG]**结构体数组。该数组中,其中的**_sighandler_t sa_handler**保存的是信号的处理方式,通过改变其指向,可以实现我们对自定义信号的处理。原创 2023-02-13 21:43:32 · 2343 阅读 · 9 评论 -
C语言|图解指针变量
函数(如下例的funcForSpace())内定义局部变量(如下例的a)保存在一个函数的栈帧上,当一个函数执行完毕后,另一个函数(如下例的stackFrame_reuse())执行时,该空间会被stackFrame_reuse()重复使用,a所使用的空间将不复存在,所以当一个指针变量指向局部变量的内存空间时,其地址值传递给主调函数时,并不是一个有效值。二维数组是数组的数组,n维数组是n-1维数组的数组。指针变量的值就是其指向的空间的地址,指向的地址的空间大小就是指针变量指向类型的大小。原创 2022-10-18 23:34:07 · 2280 阅读 · 0 评论 -
网络工程师常用的命令整理-windows版,还不快收藏起来
例如如果计算机和所在的局域网使用了动态主机配置协议DHCP,使用ipconfig命令可以了解到你的计算机是否成功地租用到了一个IP地址,如果已经租用到,则可以了解它目前得到的是什么地址,包括IP地址、子网掩码和缺省网关等网络配置信息。③ netstat -e:-e选项用于显示关于以太网的统计数据,包括传送的数据包的总字节数、错误数、删除数、数据包的数量和广播的数量,这些统计数据既有发送的数据包数量,也有接收的数据包数量。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。原创 2022-09-29 21:52:28 · 981 阅读 · 0 评论 -
什么是RTMP 和 RTSP?它们之间有什么区别?
简单地说,流协议就是在两个通信系统之间传输多媒体文件的一套规则,它定义了视频文件将如何分解为小数据包以及它们在互联网上传输的顺序,RTMP 与 RTSP 是比较常见的流媒体协议。可以通过结合不同的协议来开发自己的视频流解决方案。RTMP和RTSP是最常用的流媒体协议,本文主要介绍了RTMP和RTSP的概念以及优缺点,对于RTMP和RTSP的选择,还是得看场景。有任何问题,欢迎在下方评论区与我讨论!!!原创 2022-09-28 23:26:18 · 21845 阅读 · 0 评论 -
uboot什么意思(uboot fastboot)
U-Boot、全名通用引导加载器是遵循GPL条款的开源项目。U-Boot的作用是引导系统。U-Boot是从FADSROM、8xxROM、PPCBOOT逐渐演化而来的。其源目录、编译格式与Linux内核非常相似。事实上,许多U-Boot源代码都基于相应的Linux内核源程序进行了简化。特别是某些设备的驱动程序可以通过U-Boot源代码的注释来指示。原创 2022-09-28 22:53:52 · 4010 阅读 · 0 评论 -
USB的前世今生
另一个是高带宽需求,图像时代的来临对传输带宽有了更高的要求,这也让我们不得不重新思考怎么才能让主机和设备更好地连接,USB是一个理想的选择,它不仅拥有高达10Gb/s的带宽,而且USB标准扩展的各种设备类可以让众多的图像传感器直连USB主机,实时的图像传输变得非常方便。USB PD就是USB Power Delivery(USB电力传输),是目前主流的快充协议之一,这也是由USB-IF组织制定的,该规范可实现更高的电压和电流,输送的功率最高可达100W,并可以自由的改变电力的输送方向。...原创 2022-08-29 19:51:54 · 1295 阅读 · 2 评论 -
定时器实现原理——时间轮
时间轮算法是通过一个时间轮去维护定时任务,按照一定的时间单位对时间轮进行划分刻度。然后根据任务延时计算任务落在该时间轮的第几个刻度上,如果任务时长超出了刻度数量,则需要增加一个参数记录时间轮需要转动的圈数。原创 2022-08-21 22:44:50 · 4471 阅读 · 0 评论 -
USB通讯原理
USB是轮询总线,USB主机与设备之间的数据交换都是由主机发起的,设备端只能被动的响应。USB数据传入或传出 USB 设备中的端点。USB 主机中的客户端将数据存储在缓冲区中,USB主机没有端点的概念。USB Host 和外围 USB Device 有不同的层,如下图所示。各层之间的连接是每个水平层之间的逻辑主机-设备接口。在逻辑连接之间使用USB Pipes传输数据。...原创 2022-08-04 23:48:13 · 7096 阅读 · 0 评论 -
CAN协议详解-01
由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯,特别地,CAN还会使用“位同步”的方式来抗干扰、吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常。举一个例子,正常的单线假设逻辑1是3.3V,逻辑0假设是0V,但是如果有噪声,把3.3V弄成了0V(极端),把0V弄成了-3.3V,此时就逻辑错误,但是有Can高/Can低一般都作用于两根线,所以两个虽然都有噪声影响,但是差值还是不变的。...原创 2022-08-01 23:39:57 · 5900 阅读 · 0 评论 -
有趣的USB接口和颜色分类
则是在某个标准实现下具体使用的物理接口(连接器),同一个标准会为不同的设备设计不同的接头。不过几家参与制定标准的大厂都是向着统一接口的目标努力的。每一种连接器有对应的公口和母口,并且我们用来连接两种不同设备的。)蓝色的USB接口是USB3.2Gen1(原USB3.0)其各自的小型化的连接器是。的是USB3.2Gen2(原USB3.1)版本中引入了支持正反面不区分插入的。线两端会用不同的连接器,这些内容在。从上面的内容中可以看出,所谓的。)关机后依然可以充电的接口。标准的命名,而所谓的。...原创 2022-08-01 23:03:50 · 17852 阅读 · 0 评论 -
Xshell&&putty配色方案
Xshell&&putty配色方案。原创 2022-07-17 20:12:10 · 541 阅读 · 0 评论 -
Shell 脚本中经典的13个面试题
我们知道计算机的运作不能离开硬件,但使用者却无法直接操作硬件,硬件的驱动只能通过一种称为操作系统(OS,Opertating System)的软件来管控。linux严格来说只是一个操作系统(OS),我们称之为内核(kernel)。使用者没有办法直接操作一个kernel,而是通过kernel的外壳程序,也就是所谓的shell,来与kernel沟通。shell是一个使用者与系统的交互界面(interface), 只能让使用者通过命令行(command line)来使用系统来完成工作。因此 ,shell最简单的原创 2022-07-10 22:12:02 · 9728 阅读 · 0 评论 -
USB通信协议深入理解
一个【传输】(控制、批量、中断、等时):由多个【事务】组成;一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。高速USB 总线的帧周期为125us,全速以及低速 USB 总线原创 2022-07-06 23:42:33 · 923 阅读 · 0 评论 -
死锁的处理策略—预防死锁、避免死锁、检测和解除死锁
(一)破坏互斥条件互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁。如果把只能互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态。比如: SPOOLing技术。操作系统可以采用 SPOOLing 技术把独占设备在逻辑上改造成共享设备。比如,用SPOOLing技术将打印机改造为共享设备…该策略的缺点:并不是所有的资源都可以改造成可共享使用的资源。并且为了系统安全,很多地方还必须保护这种互斥性。因此,很多时候都无法破坏互斥条件。(二)破坏不剥夺条件不剥夺条件:进程所获得的资源在未使用完之前,不能由其他原创 2022-06-29 22:51:31 · 6718 阅读 · 0 评论 -
掌握这28张图,面试再也不怕被问TCP知识了
做IT相关的工作,肯定都离不开网络,网络中最重要的协议是TCP。无论是实际工作还是笔试面试,你看哪里能少得了TCP?我看过RFC中与TCP相关的文档,也看过linux中TCP相关的源码,也看过不少框架中的TCP相关的代码,对TCP是有点感觉了。其实,搞透了TCP之后,发现它也就那么回事。考虑最简单的情况:两台主机之间的通信。这个时候只需要一条网线把两者连起来,规定好彼此的硬件接口,如都用USB、电压10v、频率2.4GHz等,这一层就是物理层,这些规定就是物理层协议 。我们当然不满足于只有两台电脑连接,因此原创 2022-06-27 22:48:23 · 539 阅读 · 0 评论 -
100个Linux面试题
100个Linux面试题原创 2022-06-24 23:56:13 · 520 阅读 · 0 评论 -
C语言和C++的区别和联系
C语言和C++到底是什么关系?首先C++和C语言本来就是两种不同的编程语言,但C++确实是对C语言的扩充和延伸,并且对C语言提供后向兼容的能力。对于有些人说的C++完全就包含了C语言的说法也并没有错。C++一开始被本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)发明时,起初被称为“C with Classes”,即「带类的C」。很明显它是在C语言的基础上扩充了类class等面向对象的特性和机制。但是后来经过一步步修订和很多次演变,最终才形成了现如今这个支持一系列重大特性的庞大编程语言。我们都知道原创 2022-06-20 08:32:35 · 3988 阅读 · 0 评论 -
RGB颜色空间、色调、饱和度、亮度、HSV颜色空间详解
本文章会详细的介绍RGB颜色空间与RGB三色中色调、饱和度、亮度之间的关系,最后会介绍HSV颜色空间!RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴奋,这样的信息传至大脑中枢,就产生某一种颜色的感觉。在显示器发明之后,从黑白显示器发展到彩色显示器,人们开始使用发出不同颜色的原创 2022-06-08 23:04:14 · 17352 阅读 · 0 评论 -
深入理解 netfilter 和 iptables
Netfilter (配合 iptables)使得用户空间应用程序可以注册内核网络栈在处理数据包时应用的处理规则,实现高效的网络转发和过滤。很多常见的主机防火墙程序以及 Kubernetes 的 Service 转发都是通过 iptables 来实现的。关于 netfilter 的介绍文章大部分只描述了抽象的概念,实际上其内核代码的基本实现不算复杂,本文主要参考 Linux 内核 2.6 版本代码(早期版本较为简单),与最新的 5.x 版本在实现上可能有较大差异,但基本设计变化不大,不影响理解其原理。原创 2022-05-28 11:39:27 · 5094 阅读 · 2 评论 -
数据结构中常见的树
哈夫曼树(Huffman Tree)哈夫曼树,又被称为最优二叉树,属于带权值二叉树的一种。它的真实节点全部分布在叶子节点中,是各种可能的组合中 WPL 值最小的形式。组合形式可能不唯一,但 WPL 值一定为最小。介绍一下 WPL(Weighted Path Length),也就是 带权路径长度,说简单一些就是【节点到根节点的路径长度 * 该节点的权值】。说白了就是权值越大的节点,离根节点越近就对了。WPL_A = 9x2+4x2+5x2+2x2 = 40WPL_B = 9x1+5x2+原创 2022-05-24 14:17:28 · 1932 阅读 · 0 评论 -
什么是温度传感器?温度传感器原理是什么?一文带你全部搞懂
在我们的日常生活中,大家应该都会经常见到温度计、热水器、微波炉、冰箱等。这些都会应用到一个重要的器件--温度传感器,这篇文章就来给大家介绍一下温度传感器、温度传感器原理、温度传感器的类型。什么是温度传感器?温度传感器是一种测量物体冷热程度的设备,以可读的形式通过电信号提供温度测量。比较常见的是热电偶和电阻温度检测器。温度传感器类型在实际应用中,有许多的温度传感器可以用,根据实际应用具有不同的特性,温度传感器由两种基本物理类型组成:接触式温度传感器类型——这些类型的温度传感器需要与被感测对原创 2022-05-16 22:08:12 · 7283 阅读 · 0 评论 -
一文读懂keepalive的工作原理
keepalive是基于vrrp协议实现接入层高可用组件,避免系统的单点故障。工作原理要想理解keepalive的原理,就需要理解vrrp协议的工作原理。概念解释:Vrrp(Virtual Router Redundancy Protocol),虚拟路由冗余协议,一种为了避免路由器单点故障的容错协议。网络架构如下图:工作原理多个路由器组成一个路由器组,即虚拟路由器。如图RouterA和RouterB组成一个虚拟路由器。 虚拟路由器使用虚拟IP与外网交互(如图中V.原创 2022-05-12 22:41:17 · 2671 阅读 · 0 评论 -
Linux中一个网络包的发送/接收流程
如果你对Linux是如何实现 对用户原始的网络包进行协议头封装与解析,为什么会粘包拆包,期间网络包经历了哪些缓冲区、经历了几次拷贝(CPU、DMA),TCP又是如何实现滑动/拥塞窗口 这几个话题感兴趣的话,不妨看下去吧~1. Linux发送HTTP网络包图像图像解析写入套接字缓冲区(添加TcpHeader)用户态进程通过write()系统调用切到内核态将用户进程缓冲区中的HTTP报文数据通过Tcp Process处理程序为HTTP报文添加TcpHeader,并进行CPU copy.原创 2022-05-11 21:00:24 · 1630 阅读 · 0 评论 -
Linux C基础——” Makefile “ 文件管理大师你拜访过嘛?
文章目录Make简介:Makefile基本结构:1. make是如何工作的2.makefile文件中的依赖关系理解3. Makefile书写规则4. Makefile 基础的使用3.makefile文件中的依赖关系理解4. 创建和使用变量5. Makefile的隐含规则Makefile 总述VPATH的用法1. Makefile的 VPATH2. Makefile 中 VPATH使用嵌套的MakefileMake简介:工程管理器,顾名思义,是指管理较多的文件Make工程管理器也就是个“自动编译管理原创 2022-05-07 22:45:59 · 946 阅读 · 1 评论 -
路由器是如何工作的?
什么叫路由?路由器的英文是 Router,也就是「找路的工具」。找什么路?寻找各个网络节点之间的路。换句话说,路由器就像是快递中转站,包裹会经过一个个的中转站,从遥远的地方寄到你家附近,数据包也是一样。路由器是连接两个网络的硬件设备,承担寻路功能,是网络的大门,因此,路由器又叫做网关设备(Gateway)。路由表路由器和交换机一样,也有自己的小本本,这个路由表上记载了到各个网络节点之间的路,会记录数据来源、相应的路由条目以及下一跳。路由表就相当于路由器原创 2022-05-01 12:16:58 · 7096 阅读 · 12 评论 -
进程间通信——System V IPC 之进程信号量
51.1 进程信号量51.1.1 信号量本质上就是共享资源的数目,用来控制对共享资源的访问 用于进程间的互斥和同步 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对所有信号量一次性操作。对信号量集中所有操作可以要求全部成功,也可以部分成功 二元信号量(信号灯)值为 0 和 1 对信号量做 PV 操作251.1.2 信号量集属性 51.1.3 创建信号量集 函数参数: key:用户指定的信号量集键值 nsems:信号量集中信号量个.原创 2022-04-30 16:35:23 · 562 阅读 · 0 评论 -
消息队列原理及选型
什么是消息队列消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。什么时候需要消息队列 异步处理:例如短信通知、终端状态推送、App推送、用户注册等 有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 数据同步:业务数据推送同步 重试补偿:记账失败重试 系统解耦:通讯上下行、终端异常监控、分布式事件中心 降原创 2022-04-29 20:30:06 · 2706 阅读 · 0 评论 -
共享内存 设计原理-shm
POSIX的shm_open()在/dev/shm/下打开一个文件,用mmap()映射到进程自己的内存地址 System V的shmget()得到一个共享内存对象的id,用shmat()映射到进程自己的内存地址 目前这里主要看System V的设计这里先说一说设计思路!! 进程A和进程B 由于地址空间是隔离的!!那么进程A怎样和进程B 能够相互访问同一个资源呢?? 此时就要考虑到进程的控制块PCB其访问的“”内核空间“”是相同的,也就是说如果内核空间申请一款资源 其地址可...原创 2022-04-29 20:03:30 · 2576 阅读 · 0 评论 -
Linux性能问题分析流程与性能优化思路
目录 排查顺序 方法论 性能分析工具 CPU分析思路 内存分析思路 IO分析思路 网络分析思路 基准测试工具 排查顺序整体情况:top/htop/atop命令查看进程/线程、CPU、内存使用情况,CPU使用情况; dstat 2查看CPU、磁盘IO、网络IO、换页、中断、切换,系统I/O状态; vmstat 2查看内存使用情况,内存状态; iostat -d -x 2查看所有磁盘的IO情况,系统I/O状态; iotop查看IO靠前的进程,系统的I/O状态原创 2022-04-28 23:07:53 · 624 阅读 · 0 评论 -
NAT穿透的工作原理
一、引言1.1 背景:IPv4地址短缺,引入NAT全球IPv4地址早已不够用,因此人们发明了NAT(网络地址转换)来缓解这个问题。简单来说,大部分机器都使用私有IP地址,如果它们需要访问公网服务,那么,出向流量:需要经过一台NAT设备,它会对流量进行SNAT,将私有srcIP+Port转换成NAT设备的公网IP+Port(这样应答包才能回来),然后再将包发出去; 应答流量(入向):到达NAT设备后进行相反的转换,然后再转发给客户端。整个过程对双方透明。更多关于NAT的内容,可参考(译原创 2022-04-23 21:24:36 · 8326 阅读 · 0 评论 -
USB的传输,编码,数据格式,掌握usb的必备知识
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。3、上行、下行:设备到主机为上行,主机到设备为下行下面以一问一答的形式开始学习吧。问题一:USB的传输线结构是如何的呢?答案一:一条 USB的传输线分别由地线、电源线、D+原创 2022-04-12 21:54:30 · 4197 阅读 · 2 评论 -
微电子专业 | 哪所大学芯片最强?强在哪?(深度盘点)
作者IC修真院今天来聊聊微电子高校,提到微电子专业,肯定不得不说9所首批示范性微电子学院,今天就来盘他们!类似于专业设置、培养方案、课程设置这类信息,在学校官网上都是可以直接搜索到的,就不和大家赘述了。这里主要就方向优势、科研能力和业内认可度等方面给大家做个整理。文里会提到入选ISSCC的论文篇数,这作为一个参考标准,但不是唯一标准。实验室、导师、方向、就业也都很重要,并非论文至上,诸位心中有数即可。北京大学北大目前有四个学院设有微电子相关专业:信息科学技术学院、软.转载 2022-04-09 13:15:23 · 5228 阅读 · 0 评论 -
浅谈汇编器、编译器和解释器
作者:硬核老王简单介绍一下编程方式的历史演变。-- Erik O'shaughnessy(作者)在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电气工程师来充当这个角色的。早期的计算机被用来快速解决复杂的数学问题,所以数学家天然就适合“编程”工作。什么是程序?首先来看一点背景知识。计算机自己是做不了任何事情的,它们的任何行为都需要程序来引导。你可以把程序看成是非常精确的菜谱,这种菜谱读取一个输入,然..转载 2022-04-07 23:11:30 · 3343 阅读 · 0 评论 -
Linux 异步 I/O 框架 io_uring:基本原理、程序示例与性能压测
io_uring是 2019 年Linux 5.1内核首次引入的高性能异步 I/O 框架,能显着加速 I/O 密集型应用的性能。但如果你的应用已经在使用传统 Linux AIO 了,并且使用方式恰当, 那io_uring并不会带来太大的性能提升—— 根据测试,即便打开高级特性,也只有 5%。除非你真的需要这 5% 的额外性能,否则 **切换**成io_uring代价可能也挺大,因为要重写应用来适配io_uring(或者让依赖的平台或框架去适配,总之需要改代码)。既然性能跟传统 AIO 差不多,那为什么.原创 2022-04-05 23:14:41 · 1425 阅读 · 0 评论 -
最全的Linux运维bash脚本常见用法总结
删除重复的数组元素创建临时关联数组。设置关联数组值并发生重复赋值时,bash会覆盖该键。这允许我们有效地删除数组重复。CAVEAT:需要bash4+示例功能:remove_array_dups() { # Usage: remove_array_dups "array" declare -A tmp_array for i in "$@"; do [[ $i ]] && IFS=" " tmp_array["${i:- }"]=原创 2022-03-23 23:54:52 · 1595 阅读 · 0 评论 -
MQTT、CoAP 还是 LwM2M?主流物联网协议如何选择
随着物联网技术的发展与普及,越来越多的智能设备具备了网络连接与数据传输能力。由于物联网场景复杂多样,设备端硬件条件、网络稳定性、流量限制、设备功耗以及设备连接数量等多方面因素造成物联网设备的消息传递与传统互联网场景有着很大不同,也因此产生了多种物联网通讯协议。本文将选取几种主流的物联网协议,从协议的技术特性、适用场景、相对优势以及市场情况等方面一一进行介绍,为物联网从业者提供参考,帮助大家在实际项目中选择合适的物联网协议。协议分类在介绍之前,我们对物联网协议进行一个简单分类,方.原创 2022-03-22 22:25:16 · 1170 阅读 · 0 评论 -
从零开始学nginx
1. nginx简介nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。nginx由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。原创 2022-03-03 22:53:18 · 759 阅读 · 0 评论 -
通过实战理解CPU上下文切换
Linux是一个多任务的操作系统,可以支持远大于CPU数量的任务同时运行,但是我们都知道这其实是一个错觉,真正是系统在很短的时间内将CPU轮流分配给各个进程,给用户造成多任务同时运行的错觉。所以这就是有一个问题,在每次运行进程之前CPU都需要知道进程从哪里加载、从哪里运行,也就是说需要系统提前帮它设置好CPU寄存器和程序计数器CPU上下文CPU上下文其实是一些环境正是有这些环境的支撑,任务得以运行,而这些环境的硬件条件便是CPU寄存器和程序计数器。CPU寄存器是CPU内置的容量非常小但是速度极快的存原创 2022-02-28 22:36:18 · 474 阅读 · 1 评论