Skip to content

【计算机网络】I/O多路复用:select、poll、epoll #2

Description

@TenYearsWay

最简单的socket模型

如何服务更多的用户?

可以通过以下方法简化记忆内存占用和网络带宽的单位及关系:


1. 内存占用单位

  • 基础单位

    1 Byte (B) = 8 bits (b)
    记法:"B > b" (1 Byte 包含更多信息)。

  • 进制规律(1 KB = 1024 B):

记法:"K-M-G-T"(每升一级乘 1024)。

1. KB:Kilobyte(千字节)  
2. MB:Megabyte(百万字节)  
3. GB:Gigabyte(十亿字节)  
4. TB:Terabyte(万亿字节)

2. 网络带宽单位

  • 基础单位

记法:"b = 带宽小写;B = 存储大写"

1. 1 bps:1 bit per second  
2. 1 kbps:1 kilobit per second = 1000 bps(注意<font style="color:#DF2A3F;">带宽单位是十进制</font>,不是 1024)。  
3. 1 Mbps = 1000 kbps = 1,000,000 bps

3. 快速记忆对比

类型 单位 缩写 进制
内存存储 Byte (字节) B 1024
网络带宽 bit (比特) b 1000

记住:

  • 存储用 B(Byte),容量较大,按 1024 递增。

  • 带宽用 b(bit),流量较小,按 1000 递增。

  • 单位大写区分性质:B(存储);b(传输)

多进程模型

多线程模型

I/O 多路复用

从一对一,为了服务更多用户,如何做呢?多对一。

  • 多进程模型。多个客户端,对应一台服务器上的多个进程。一个客户端对应一个进程。
  • 多线程模型。多个客户端,对应一台服务器上的一个进程的多个线程。一个客户端对应一个线程。
  • 多路复用。多个客户端,对应一台服务器上的一个进程,但是不需要像多线程模型一样,开那么多个线程。只需要开一个线程就可以了。多个客户端对应这一个线程,这一个进程就可以。

参考文章:小林coding 9.2 I/O 多路复用:select/poll/epoll

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions