- 博客(7)
- 收藏
- 关注
原创 Linux高性能服务器编程-进程间通信
Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。
2024-11-26 19:32:43
1649
原创 Linux高性能服务器编程-信号
如果为0,表示SIGINT信号没有被当前进程阻塞,这个信号需要被处理,内核会对SIGINT信号进行处理(执行默认动作,忽略或者执行用户自定义的信号处理函数),并将未决信号集中编号为2的位置上将1变为0,表示该信号已经处理了,这个时间非常短暂,用户感知不到。进程A给进程B发送信号,进程B收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行,取处理信号,处理完毕后再回来继续执行。如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。产生和递达之间的状态。
2024-11-25 21:26:35
893
原创 Linux高性能服务器编程-文件I/O和进程
所以fork函数的两个返回值并不是一个进程返回的,父进程返回一个,子进程返回一个。所有打开的文件都有一个当前文件偏移量(current file offset), 通常是一个非负整数, 用于表明文件开始处到文件当前位置的字节数. 读写操作通常开始于文件偏移量, 并且使移量增大, 增量为读写的字节数. 文件被打开时, 偏移量会被初始化为 0, 除非使用了 O_APPEND。Linux中每一个运行的程序(进程)操作系统都会为其分配一个0~4G的虚拟地址空间(进程是正在运行的程序,是动态的,程序是静态的)。
2024-11-21 21:05:24
508
1
原创 Linux高性能服务器开发-Linux网络编程基础API
当两台不同字节序的主机之间通信时,为了避免两台不同字节序的主机通信时传递的数据被错误的解释。发送端主机要将主机字节序转换位网络字节序,接受端可以根据自身采用的字节序来决定是否对接受到的数据进行转换。从已连接队列中获取一个新的连接, 并获得一个新的文件描述符, 该文件描述符用于和客户端通信. (内核会负责将请求队列中的连接拿到已连接队列中)。当调用socket函数以后, 返回一个文件描述符, 内核会提供与该文件描述符相对应的读和写缓冲区, 同时还有两个队列, 分别是请求连接队列和已连接队列。
2024-11-19 20:21:41
1837
原创 Linux高性能服务器编程-1
首先源主机发出ARP请求,询问“IP地址是xxx.xxx.xxx.xxx的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。
2024-11-18 22:48:24
400
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅