unix高级环境编程
hello&Code
贵有恒何必三更起五更睡;最无益,只怕一日曝十日寒
展开
-
网络 IO 模型
大纲1 阻塞与非阻塞--开胃菜 阻塞 我们知道在调用某个函数的时候无非就是两种情况,要么马上返回,然后根据返回值进行接下来的业务处理。当在使用阻塞IO的时候,应用程序会被无情的挂起,等待内核完成操作,因为此时的内核可能将CPU时间切换到了其他需要的进程中,在我们的应用程序看来感觉被卡主(阻塞)了。阻塞IO传统阻塞IO模型传统阻塞IO模型特点: 通过阻塞式IO获取输入的数据 其中每个连接都采用独立的线程完成数据输入,业务处理以及数据返回的操作 ..转载 2020-09-23 10:17:14 · 315 阅读 · 0 评论 -
BGP为什么全网状连接下就可以关闭同步
先说2个概念:1.什么是IBGP? IBGP的本质是BGP,所以它牵涉的路由表必然是BGP的路由表,一个AS中哪些路由器可以看作是IBGP路由器,取决于你定义了哪些路由器之间的BGP对等体关系,如果你没定义,那么即使是在一个BGP的AS中,那它也不过是一个普通的IGP路由器。2.什么是全网状互联?这是一个IBGP的概念,即你把一个AS里的所有路由器都定义了彼此的对等关系,即它们是平等的,它们都运行了BGP协议。全网状未必是真的物理上的全互联,只要通过TCP可以到达对等体则可 ,所以是一个..转载 2020-07-11 09:38:11 · 984 阅读 · 0 评论 -
Linux系统调用原理
操作系统通过系统调用为运行于其上的进程提供服务。当用户态进程发起一个系统调用,CPU将切换到内核态并开始执行一个内核函数。 内核函数负责响应应用程序的要求,例如操作文件、进行网络通讯或者申请内存资源等。原文地址:https://learn-linux.readthedocs.ioQQ交流群:278378501。微信公众号:小菜学编程(coding-fan)举一个最简单的例子,应用进程需要输出一行文字,需要调用write这个系统调用:#include <str...转载 2020-07-07 14:58:52 · 235 阅读 · 0 评论 -
IO多路复用之epoll总结
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:#include <sys/epoll.h>int epoll_create(int size);int ep转载 2020-07-07 14:57:06 · 170 阅读 · 0 评论 -
用户空间与内核空间,进程上下文与中断上下文
用户空间与内核空间,进程上下文与中断上下文[总结]1、前言 最近在学习linux内核方面的知识,经常会看到用户空间与内核空间及进程上下文与中断上下文。看着很熟悉,半天又说不出到底是怎么回事,有什么区别。看书过程经常被感觉欺骗,似懂非懂的感觉,很是不爽,今天好好结合书和网上的资料总结一下,加深理解。2、用户空间与内核空间 我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以转载 2020-07-07 14:40:02 · 210 阅读 · 0 评论 -
可重入函数与不可重入函数
在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。相反,肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。一个可...转载 2019-11-18 15:58:49 · 98 阅读 · 0 评论 -
线程分离
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情...转载 2019-11-14 20:00:42 · 254 阅读 · 0 评论