随笔分类 - Linux
摘要:linux内核 在比如管道通信、socket通信也好 其实会产生很多事件;缓冲区满,缓冲区空,缓冲区非空,缓冲区非满等四个场景;
上述场景 其实都是阻塞IO;阻塞IO一个线程只能处理一个IO流事件,效率相对不高,如果有多个事件,以串行思路处理;非阻塞IO意思是 当一个事件还没数据时,可以去处理其他IO事件于是有了select,poll 机制,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件时,就从阻塞态中醒来,于是我们的程序就会轮询一遍所有的流;因为不知道具体是哪个流可读或可写;而Epoll可以让我们知道具体是哪个流 可读或可写 复杂度变O(1)
阅读全文
摘要:在linux中 一切对象都被视为文件比如普通文件、目录文件、甚至socket(这个在网络通信中尤为重要)。FD(不了解这个的可以看下文章解释)文件描述符其实从内核的角度来讲 有一定的LIMIT 所以分配给进程的也不多 ,默认1024 。也就是拿socket 来说 连续新建socket数量在1024 时 进程会报错open too many files 。继续说下去,一个进程对应一个文件描述符列表或数组。FD是下标,数组内容是指向文件的索引,所以操作文件比如读、写,都要带上这个FD 找到数组下标索引 才能找到对应的文件,再对其进行读写操作。本文把进程、FD、文件的关系简单描述了一下
阅读全文
摘要:我们知道IO模型中有一个NIO模型,像我们平时接触到的dubbo类的RPC框架底层基于Netty作为通讯框架,而Netty实现的IO模型就是NIO模型。而NIO模型中 底层技术就用到了Linux的epoll,当然早起版本是select,这篇文章通过生活中等快递的比喻故事比较形象、生动的阐述了IO多路复用的原理、本质
阅读全文
摘要:当你经常在linux命令窗口开发程序时 对于一些平时经常用到的命令 有一个比较常用的命令 history它能记录历史一段时间的命令列表 特别是你忘了某些比较复杂的命令时 不至于为此查找命令浪费时间,还有你可以用Ctrl+R命令 支持模糊根据关键词查询你之前输入过的命令 右边会根据你的输入关键词 显示一些列的命令 非常方便
阅读全文
摘要:如何在 Linux 系统查询机器最近重启时间
阅读全文
摘要:Linux 如何选择要kill掉的进程 采用的是打分机制详情...
阅读全文
摘要:swap是干嘛的?
在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。
SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN。
当然,swap大小是有上限的,一旦swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。
阅读全文
摘要:我们在springboot以jar包启动方式时,一般都以这样的命令启动 nohup java -jar xx.jar & 形式。下面介绍一下nohup基本原理,了解它是怎么一回事!
我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。那有什么方式让发生网络断开或用户注销使运行进程不受影响呢,其中一个答案是nohup。让进程忽略 HUP 信号
nohup 的用途就是让提交的命令忽略 hangup 信号。格式nohup command &
阅读全文
摘要:这篇文章比较深入的从free为起点 折射出的一些概念;比如 buff/cache是怎么一回事[涉及内存页等话题]; available这个参数与free参数有什么联系[其实available可以理解为当内存不足时它会释放buffer内存补给应用程序进程使用];以及shared的概念 swap等 让你全方位的从操作系统层面了解free 的命令。平时查看可以用free -h 或间隔周期查询 free -h -s xxx
阅读全文
摘要:Linux top命令在生产环境的妙用
阅读全文
摘要:tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。
阅读全文
摘要:用户空间调用recvfrom命令 直到数据包到达且被复制到应用进程的缓冲区或发生错误时才返回,这个过程中 进程亦或线程一直处于等待阻塞状态。 2.非阻塞IO模型 用户空间调用内核指令recvfrom后 如果内核空间缓冲区没有数据话EWOULDBLOCK 进程反复(轮询)调用recvfrom命令调用
阅读全文