Linux高性能服务器编程 前台进程是什么
前台进程是什么 前台进程的定义 前台进程是指在操作系统中,与用户当前正在交互的进程。这些进程通常拥有最高的优先级,因为它们直接影响用户体验,是用户正在关注或者正在使用的应用程序对应的进程。 例如,当你在手机上打开一个游戏应用并正在进行游戏时,这个游戏应用对应的进程就是前台进程;在桌面系统中,你正在使用的文本编辑器,其进程也是前台进程。 前台进程的特点 资源分配优先级高: 操作系统会为前台进程分配更多的 CPU...
Linux高性能服务器编程 网络字节序本地字节序点分十进制转换函数总结 两种初始化socket并bind的步骤
网络字节序本地字节序点分十进制转换函数总结&&两种初始化socket并bind的步骤看完这些转换可以去看初始化socket的步骤,会印象更加深刻一些 ##1.网络字节序、本地字节序和点分十进制的数据长啥样 1.点分十进制常用来表示ip,就是192.168.120.139这样的字符串 2.本地字节序(主机字节序)和网络字节序字节存储顺序主要分为大端序(Big-endian)和小端序(Little-endian),区别如下 Big-endian:高位字节存入低地址,低位字节存入高地址 Little-endian:低位字节存入低地址,高位字节存入高地址 例如,将12345678h写入1000h开始的内存中,以大端序和小端序模式存放结果如下: 现代 PC...
Linux高性能服务器编程 5. Linux服务器程序规范
5. Linux服务器程序规范1.进程 PID进程的PID(Process ID)是操作系统中用于唯一标识一个进程的整数值。每个进程在创建时,操作系统都会分配一个唯一的PID,用来区分不同的进程。 PID的特点1.唯一性: 在操作系统运行的某一时刻,每个进程的PID都是唯一的。不同进程不会共享同一个PID。即使一个进程终止后,该PID可以被回收并分配给新创建的进程,但在同一时刻不会有两个进程拥有相同的PID。 2.进程生命周期: PID 的生命周期与进程的生命周期相对应。当一个进程被创建时,操作系统为它分配一个PID;当进程终止时,该PID被释放,并可能被分配给后续的新进程。 3.系统管理和调试: PID 在进程管理和调试中起着重要作用。系统管理员和开发者可以通过PID来监视、控制和调试进程。例如,使用 ps 命令可以查看系统中所有进程的PID,以及它们的状态、资源使用等信息。使用 kill 命令可以通过PID来终止指定的进程。 PID的分配PID 是由操作系统内核管理和分配的,通常是一个非负整数。PID...
Linux高性能服务器编程 4. 高级 I/O 函数
4. 高级 I/O 函数1.文件描述符文件描述符(File Descriptor, FD)是操作系统中用于访问文件的一个抽象概念。它是一个非负整数,通常由操作系统分配,用来标识被打开的文件或输入输出资源(如管道、网络连接等)。文件描述符在操作系统和应用程序之间充当桥梁,允许程序通过文件描述符来读取、写入文件或进行其他I/O操作。 1.文件描述符的类型文件描述符通常分为三类标准描述符: 标准输入(Standard Input,FD 0): 默认情况下与键盘关联,通常用于从用户那里接收输入数据。 标准输出(Standard Output,FD 1): 默认情况下与终端窗口关联,通常用于向用户显示输出数据。 标准错误(Standard Error,FD 2): 默认情况下也与终端窗口关联,但通常用于显示错误消息或诊断信息。 2.文件描述符的使用在UNIX和类UNIX操作系统中,文件描述符用于各种I/O操作,包括: 打开文件:open() 系统调用返回一个文件描述符,表示已打开的文件。 读取文件:read()...
Linux高性能服务器编程 6. 高性能服务器程序框架
6. 高性能服务器程序框架**《Linux 高性能服务器编程》**一书中,把这一章节作为全书的核心,同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后,正式进入了 Web 服务器项目的核心部分的学习 按照服务器程序的一般原理,服务器可以解构为三个主要模块: **I/O处理单元:**四种I/O模型,两种高效事件处理模式。 **逻辑单元:**两种高效并发模式;逻辑处理方式——有限状态机。 **存储单元:**服务器程序的可选模块,其内容与网络编程本身无关。 1.服务器模型C/S...
Linux高性能服务器编程 多进程并发服务器
多进程并发服务器基于该视频完成 11-多进程并发服务器思路分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是,阻塞是真的阻塞了,而这个方式是一直在问有没有请求有没有请求 1.核心思路&功能实现一个服务器可以连接多个客户端,每当accept函数等待到客户端进行连接时 就创建一个子进程; 核心思路:让accept循环阻塞等待客户端,每当有客户端连接时就fork子进程,让子进程去和客户端进行通信,父进程用于监听并使用信号捕捉回收子进程;(子进程关闭用于监听的套接字lfd,父进程关闭用于通信的cfd) **功能:**客户端输入小写字符串,服务器转成大写返回给客户端 2.代码实现warp.h12345678910111213141516171819202122232425262728293031323334353637383940414243#ifndef __WRAP_H_#define...
Linux高性能服务器编程 多线程并发服务器
多线程并发服务器基于该视频完成 12-多线程并发服务器分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是,阻塞是真的阻塞了,而这个方式是一直在问有没有请求有没有请求 linux | c | 多进程并发服务器实现-CSDN博客 可以先看看这篇博客,思路和功能都一样 1.核心思路&功能实现一个服务器可以连接多个客户端,每当accept函数等待到客户端进行连接时 就创建一个子进程; 核心思路:让accept循环阻塞等待客户端,每当有客户端连接时就fork子进程,让子进程去和客户端进行通信,父进程用于监听并使用信号捕捉回收子进程;(子进程关闭用于监听的套接字lfd,父进程关闭用于通信的cfd) **功能:**客户端输入小写字符串,服务器转成大写返回给客户端 2.代码实现warp.h12345678910111213141516171819202122232425262728293031323334353637383940414243#ifndef __WRAP_H_#define...
Linux高性能服务器编程 1.IP协议
1. IP协议TCP / IP 模型主要分为以下四层:应用层、传输层、网络层、网络接口层。 IP 协议 (IPv4)IPv4 的首部长度通常为 20B,除非含有可变长选项的部分。 IP 协议为上层协议提供无状态、无连接、不可靠的服务。 无状态(stateless)指 IP 通信双方不同步传输状态信息。这种服务的最大缺点是无法处理乱序和重复的 IP 数据报。优势是简单、高效。 无连接(connectionless)是指 IP 通信双方都不长久的维持对方的任何信息。上层协议每次发送数据的时候,都必须明确指定对方的 IP 地址。 不可靠是指 IP 协议不能保证 IP 数据报准确地到达接收端,只承诺尽最大努力交付,但会返回一个 ICMP 差错报文(超时、终点不可达、源点抑制、参数问题等等) 头部结构 主要字段 标识(identification)占 16 位,用来产生 IP 数据报的标识。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但这个 “标识”...
Linux高性能服务器编程 2. TCP协议
2. TCP协议传输层的协议主要有两个:TCP 和 UDP 协议。TCP 协议相对于 [UDP 协议](https://so.csdn.net/so/search?q=UDP 协议&spm=1001.2101.3001.7020)的主要特点是:面向连接、面向字节流和可靠传输。 使用 TCP 通信的双方都必须建立连接,并分配必要的内核资源。TCP 连接是全双工的,双方的数据读写可以通过同一个连接进行。TCP 连接是一对一的。 [TCP 协议](https://so.csdn.net/so/search?q=TCP 协议&spm=1001.2101.3001.7020)采用发送应答机制,发送端发送的每个 TCP 报文段都必须得到接收方的应答,才认为传输成功。且采用超时重传机制,发送方在发出一个 TCP 报文段后启动定时器,定时时间内未收到应答,将重发。 由于 TCP 报文段会被封装成 IP 数据报发送,而 IP 数据报到达接收端可能会乱序、重复,因此 TCP 协议还会对接收到的 TCP 报文段重排、整理,再交付给应用层。 UDP 协议则和 IP...
Linux高性能服务器编程 3.Linux网络编程基础API
3. Linux网络编程基础API 1.主机字节序和网络字节序现代 CPU 的累加器一次都能装载(至少)4个字节(对于 32 位的机器),即一个 int 类型。那么这4个字节在内存中排列的顺序将影响它被累加器装载的整数值,这就是字节序问题。 字节存储顺序主要分为大端序(Big-endian)和小端序(Little-endian),区别如下 Big-endian:高位字节存入低地址,低位字节存入高地址 Little-endian:低位字节存入低地址,高位字节存入高地址 例如,将12345678h写入1000h开始的内存中,以大端序和小端序模式存放结果如下: 现代 PC 大多采用小端字节序,因此小端字节序又称为主机字节序; 而在两台不同字节序的主机之间传递数据时,发送端总是把要发送的数据转化成大端字节序数据后再发送,因此大端字节序也被称为网络字节序。 网络字节顺序是TCP / IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用大端排序方式。 “大同小异 ”:大端字节序的...