摘要:
前言 Linux POSIX IPC的可移植性是不如System V IPC的,但是我们只用Linux,并且内核版本高于2.6.6的话就不存在该问题了。也因为POSIX IPC出现的比较晚,借鉴了systemV IPC的长处,规避其短处,使得POSIX IPC的接口更易用。进程间通信的手段很多,除了 阅读全文
摘要:
前言 上一篇说过,系统会为线程mmap一块内存,每个线程有自己的私有栈,使用局部变量没啥问题。但是实际场景中不可避免的需要线程之间共享数据,这就需要确保每个线程看到的数据是一样的,如果大家都只需要读这块数据没有问题,但是当有了修改共享区域的需求时就会出现数据不一致的问题。甚至线程2的任务在执行到某个 阅读全文
摘要:
线程是操作系统进程调度器可调度的最小粒度的执行单元 执行ps -eLF查看线程 UID PID PPID LWP C NLWP SZ RSS PSR STIME TTY TIME CMD root 103724 103680 103724 0 14 23667 40048 1 Jan24 ? 00: 阅读全文
摘要:
进程是程序运行的实例,操作系统为进程分配独立的资源,使之拥有独立的空间,互不干扰。 空间布局 拿c程序来说,其空间布局包括如下几个部分: 数据段(初始化的数据段):例如在函数外的声明,int a = 1 block started by symbol(未初始化的数据段):例如在函数外的声明,int 阅读全文
摘要:
前言 简单来讲I/O多路复用就是用一个进程来监听多个文件描述符(fd),我们将监听的fd通过系统调用注册到内核中,如果有一个或多个fd可读或可写,内核会通知应用程序来对这些fd做读写操作,select、poll、epoll都是用于处理此类问题的系统API,只不过注册和调用的方式略有不同。 例如tel 阅读全文
摘要:
socket是进程通信机制的一种,与PIPE、FIFO不同的是,socket即可以在同一台主机通信(unix domain),也可以通过网络在不同主机上的进程间通信(如:ipv4、ipv6),例如因特网,应用层通过调用socket API来与内核TCP/IP协议栈的通信,通过网络字节实现不用主机之间 阅读全文
摘要:
TCP TCP提供一种面向连接、可靠的字节流服务。 面向连接:两端各自维护一份数据结构,传输数据之前,先进行数据结构部分信息的状态同步,就是去建立连接,建立好之后才能传输数据,不需要的时候断开连接,然后释放相关数据结构 可靠性: 由TCP将报文段分段为合适的大小后交给IP层 TCP发出段后启动定时器 阅读全文
摘要:
网络层主要实现点对点通信,路由器通过路由表和IP地址进行路由控制,再委托数据链路层将数据包发送到最终目标地址,在连接到网络的不同数据链路中进行通信,是实现全球网络互联的关键部分。 IP 相关概念 IP地址的格式我们都知道,通过CIDR将32位的IP地址分为网络号和主机号。网络寻址所需要的网络号可以通 阅读全文
摘要:
主要物理传输介质:线路/网卡/二层交换机(网桥) 以太网 封装好的以太网帧由网卡添加前导码和FCS -> 由对端网卡接收后去掉前导码并使用CRC校验,如果帧损坏则丢弃,如果没有损坏则交给软件驱动处理 -> 以太网驱动接收物理层传输过来的包读入内存 -> 查看源mac和目的mac,如果是发给自己的则根 阅读全文
摘要:
dhcp(Dynamic Host Configuration Protocol):配置一段共享IP地址,为新上线的机器分配IP地址,回收下线机器的IP地址。 正常情况下主机(DHCP client)和DHCP server交互通过四个数据包完成IP的配置,分为DHCP Discover、DHCP 阅读全文