![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux操作系统
文章平均质量分 77
凌晨四点起,海棠花未眠
iOS开发、嵌入式开发
展开
-
高位和低位的概念
关于0x12345678在小端节序是先读78的解释:在小端字节序(Little-Endian)系统中,多字节数据的最低有效字节(Least Significant Byte, LSB)存储在最低的内存地址上,而最高有效字节(Most Significant Byte, MSB)则存储在较高的内存地址上。如果发送方和接收方使用了不同的字节序,那么在接收方收到数据后,通常需要将其从网络字节序(大端字节序)转换为主机字节序(可能是小端或大端),或者从主机字节序转换为网络字节序。,因为它是最低有效字节(LSB)。原创 2024-05-29 19:10:43 · 1387 阅读 · 0 评论 -
生产者消费者线程用互斥锁
通常情况下,条件变量需要和互斥锁一起使用,以保护共享资源的访问。在等待条件变量之前,线程通常会先获取互斥锁,然后在条件不满足时等待条件变量,直到另一个线程通过释放互斥锁并发送信号来通知条件满足。条件变量提供了一种线程等待的机制,它允许一个线程等待另一个线程满足特定的条件,然后在条件满足时通知等待的线程继续执行。是 POSIX 线程库中定义的条件变量的数据类型,用于线程之间的同步和通信。来实现生产者和消费者之间的同步,确保在缓冲区满或者空的情况下,生产者和消费者线程能够正确地等待和唤醒。:等待条件变量满足。原创 2024-05-29 19:02:50 · 140 阅读 · 0 评论 -
Linux 系统中,把一切都看做是文件(一切皆文件)
Linux 系统中,把一切都看做是文件(一切皆文件),当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。文件描述符(File Descriptor)是一个用于表述指向被打开的文件引用的抽象化指标。在Unix、Linux和其他类Unix操作系统中,文件描述符是一个非负整数,用于指代被打开的文件。原创 2024-05-29 19:00:05 · 783 阅读 · 0 评论 -
程序、进程、线程、协程结构图
线程是进程的最小执行单元,一个进程可以包含多个线程,它们共享进程的地址空间和资源,是操作系统调度的基本单位。协程是轻量级的线程,是线程的最小执行单元,它在用户空间中实现,不依赖于操作系统的线程调度。协程之间可以自由切换,但不会被操作系统调度,而是由程序自身控制。这种区分可以帮助我们理解它们在并发编程中的不同作用和特点。原创 2024-05-29 18:57:52 · 568 阅读 · 0 评论 -
Linux中僵尸进程和孤儿进程概念
Linux中僵尸进程和孤儿进程概念僵尸进程(Zombie Process)僵尸进程是指已经结束执行但父进程尚未调用wait()或waitpid()来获取其终止状态的子进程。在进程表中仍然保留其进程号和退出状态。僵尸进程占用系统资源,但不再执行任何代码。僵尸进程等待父进程来获取其终止状态。孤儿进程(Orphan Process)孤儿进程是指父进程终止或者被终止,而子进程尚未被回收的进程。孤儿进程将被init进程(进程号为1)收养。init进程会负责回收孤儿进程,防止其成为僵尸进程。原创 2024-05-29 18:54:05 · 128 阅读 · 0 评论 -
分析多路IO复用的原理
多路I/O复用是现代网络编程中非常重要的技术,允许一个单独的线程或进程同时监视多个文件描述符(通常是套接字),从而能够在这些描述符之一准备好进行I/O操作时进行相应的处理。系统调用允许程序监视多个文件描述符,等待其中的一个或多个变为"就绪"状态(可读、可写或异常)。时,程序可以指定三个文件描述符集(可读、可写和异常),以及一个超时时间。调用后,程序会检查哪些文件描述符已就绪,并对其进行处理。的示例程序,演示了如何将监听文件描述符加入集合,并在。的简单案例,展示了它的基本使用方法。(在Linux上)。原创 2024-05-29 18:49:08 · 552 阅读 · 0 评论 -
分析进程、线程实现TCP服务端多任务的原理、步骤以及优缺点
选择进程还是线程实现 TCP 服务端多任务需要根据具体应用场景权衡。如果追求稳定性且系统资源充足,可以选择进程方式。如果对性能要求较高且能合理处理线程同步问题,可以选择线程方式。)创建线程来处理每个客户端连接。每当有新的客户端连接到来,服务器会创建一个新的线程,由该线程处理客户端的请求。在 Linux 中,实现 TCP 服务端多任务的方式主要有两种:通过进程(如。创建子进程来处理每个客户端连接。每当有新的客户端连接到来,服务器会调用。创建一个新的子进程,由子进程来处理该客户端的请求。原创 2024-05-29 18:47:36 · 575 阅读 · 0 评论 -
总结多路IO复用
多路IO复用是Linux系统中处理多个文件描述符(FD)的一种机制。它允许一个程序在单个线程中同时处理多个输入/输出事件,从而提高效率和性能。主要的多路IO复用机制包括select和epoll。原创 2024-05-29 18:45:21 · 325 阅读 · 0 评论 -
使用 select 实现的简单 TCP 服务器
这段代码展示了如何使用select系统调用管理多个客户端连接。服务器在每个连接上循环接收数据并处理客户端断开的情况。通过select,服务器能够同时处理多个连接,而不会阻塞在单个 I/O 操作上。原创 2024-05-29 18:43:13 · 706 阅读 · 0 评论 -
使用epoll管理多个客户端连接的TCP服务器
在这个示例中,我们将定义一个(无头)链表来管理在线客户端。链表节点将包含客户端的文件描述符和其他必要信息,如客户端的地址信息。我们还会编写相关的函数来管理这个链表,包括添加客户端、移除客户端和遍历客户端列表。// 链表节点结构int fd;// 添加新客户端到链表// 从链表中移除客户端if (temp!free(temp);return;// 遍历链表并打印客户端信息= NULL) {// 清理链表。原创 2024-05-29 18:41:36 · 641 阅读 · 0 评论