
Liunx系统和网络
文章平均质量分 93
Liunx系统和网络
23级二本计科
这个作者很懒,什么都没留下…
展开
-
多路转接 select/poll epoll
poll 解决了 select 的 FD 数量限制问题,但仍然存在 O(N) 遍历的问题。 epoll 通过事件驱动机制,避免遍历所有 FD,提高了 epoll_wait() 的效率,适用于高并发。epoll 采用 ET 模式,可以减少 epoll_wait() 调用次数,提高吞吐量,但需要开发者正确处理 recv() / send()。原创 2025-03-18 15:57:53 · 675 阅读 · 0 评论 -
TCP 全连接队列 内核层理解socket
参数表示。那什么是全连接队列呢?accept()accept()accept()也就是说我们访问服务器会由内核自动进行3次握手,,服务端再。而listen的,如果服务器来不及调用accept()处理连接,连接会堆积在超过最大连接长度,再进行连接就会三次握手失败。所以全连接队列本质就是一种backlog不能太长也不能太短。1.太短,可能丢失大量连接(客户端需要重试,增加网络负担)。2.太长,一方面会让用户,另一方面会。原创 2025-03-14 12:30:00 · 1118 阅读 · 1 评论 -
五种 IO 模型 (异步IO同步IO)
任何 IO 过程中, 都包含两个步骤. 第一是等待, 第二是拷贝.IO=等待+拷贝而且在实际的应用场景中, 等待消耗的时间往往都远远高于拷贝的时间. 让 IO 更高效, 最核心的办法就是让等待的时间尽量少.即单位时间内,IO等待时间的比重越低效率越高。I/O 模型等待方式等待时间长短CPU 利用率适用场景阻塞 I/O(Blocking I/O)等待recv()返回长(进程完全被阻塞)低(进程无法做其他任务)小规模应用非阻塞 I/O(Non-blocking I/O)recv()轮询数据中。原创 2025-03-12 17:22:29 · 646 阅读 · 0 评论 -
NAT NAPT
通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。工作原理客户端将请求发送给正向代理服务器。正向代理服务器接收请求,并根据配置进行处理,如缓存查找、内容过滤等。正向代理服务器将处理后的请求转发给目标服务器。目标服务器处理请求,并将响应返回给正向代理服务器。正向代理服务器将响应返回给客户端。功能特点。原创 2025-03-10 18:11:43 · 747 阅读 · 0 评论 -
数据链路层 (以太帧 MAC地址 ARP协议)
"以太网" 不是一种具体的网络, 而是一种技术标准;既包含了数据链路层的内容, 也包含了一些物理层的内容.以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网, 无线LAN 等;原创 2025-03-10 13:30:00 · 1903 阅读 · 0 评论 -
网络层 IP协议
通过IP协议能把数据送到目标主机,原创 2025-03-09 13:30:00 · 947 阅读 · 0 评论 -
UDP协议 TCP协议(格式 超时重传 滑动窗口 拥塞控制...)
是。原创 2025-03-07 13:05:05 · 1213 阅读 · 1 评论 -
Linux网络_应用层自定义协议与序列化_守护进程
比如说我们传一个结构体data,里面包含 int x,char oper ,int y。我们不要一个一个传,可以把成员元素整合成一个字符串,再传。这个就是序列化但当我们获取到了这个字符串,怎么获取到里面包含的消息呢?我们可以自己进行规定,每个元素间用空格进行隔开,依次进行获取。根据制定的规则进行解包,获取元素,就是反序列化。序列化: 你将结构体的各个成员转换成某种格式的字符串,以便传输或存储。例如,使用空格分隔成员。反序列化: 接收端根据预定的规则解析字符串,并将其恢复为原始数据结构。原创 2025-03-03 19:42:16 · 606 阅读 · 0 评论 -
Linux网络_套接字_UDP网络_TCP网络
AF_INET网络 AF_UNIX本地AF_INETAF_INET6AF_UNIXAF_LOCALAF_PACKETAF_NETLINKSOCK_DGRAMSOCK_RAW0返回值-1errno错误代码。原创 2025-01-15 15:35:40 · 1131 阅读 · 0 评论 -
Linux网络_网络协议_网络传输_网络字节序
TCP/IP 协议的本质是一种解决方案TCP/IP协议和操作系统的关系不同主机的操作系统不同,但可以相互通信,就是因为所有主机的协议栈都是按标志进行相同实现的。传输层最著名的协议TCP 网络层最著名的协议IP而传输层 网络层两层必须实现在内核中,无论OS再怎么不同,这部分都要遵守协议,必须一样。因此,传输层和网络层协议在不同操作系统中确实必须遵循相同的标准,无论操作系统如何实现,它们的核心行为和协议功能应保持一致。问题:主机 B 能识别 data,并且准确提取 a=10,b=20,c=30 吗?原创 2024-12-01 17:53:08 · 978 阅读 · 0 评论 -
Linux线程_sem信号量_线程安全_饿汉 懒汉实现方式
1。原创 2024-11-27 18:42:07 · 1067 阅读 · 0 评论 -
Linux线程_线程互斥_线程同步
互斥锁和条件变量怎么搭配使用呢?先讲一个场景,生产消费者模型。有多个工厂向超市放资源,超市存入资源且大小有限,消费者从超市拿资源。可以理解为有多个线程向临界区存入资源,有多个线程从临界区取资源。在此过程中要保证临界区的安全,还有保证高效。1.生产者和生产者 两个生产者可以同时进入超市吗?不能,如果超市刚好差一个资源就满,那么就不能保证资源安全。所以生产者和生产者关系为:互斥2.消费者和消费者 两个消费者可以同时进入超市吗?不能,超市有只有一个资源的情况所以消费者和消费者关系为:互斥。原创 2024-11-23 19:51:36 · 1036 阅读 · 0 评论 -
Linux线程_线程控制_线程库
(并不是绝对访问不到,通过全局指针指向a线程栈上定义的变量,b线程也可以访问到,但不建议,有可能生命周期结束 访问到野指针)原创 2024-11-23 16:23:29 · 806 阅读 · 0 评论 -
Linux线程_线程概念
这个虚拟地址是一个字节的地址,如果访问结构体,还要知道结构体大小,再往后继续访问等大小字节的空间。原创 2024-11-16 18:39:26 · 604 阅读 · 0 评论 -
Linux信号_信号的保存_信号捕捉
我们知道向进程发送信号,进程并不是立即处理,而是等合适的时机进行处理。那么就需要保存信号。在信号的产生中说过信号保存在进程PCB里面的信号位图里,那信号位图到底是什么?原创 2024-11-06 21:55:26 · 809 阅读 · 0 评论 -
Linux信号_信号的产生
参数signum:要捕获的信号编号,例如SIGINTSIGTERM等。handler:指向信号处理函数的指针。(SIG_DFL (默认处理) SIG_IGN (忽略信号))#define SIG_DFL ((void (*)(int)) 0) // 默认处理#define SIG_IGN ((void (*)(int)) 1) // 忽略信号void (*handler)(int) handler是一个函数指针,表示接收一个参数为一个int的函数,返回值类型是void。(int参数是接收到的信号编号。原创 2024-11-06 18:11:14 · 947 阅读 · 0 评论 -
Linux 进程间通信 共享内存_消息队列_信号量
数据从外设读取到内核空间后,原创 2024-11-03 18:00:50 · 1230 阅读 · 0 评论 -
Linux 进程间通信 匿名管道_命名管道
那如果以该进程为父进程创建子进程会是什么样的?原创 2024-10-27 20:45:27 · 715 阅读 · 0 评论 -
Linux 基础io_ELF_虚拟物理地址_动态库加载
通过节的偏移量和大小,可以计算出每个节在ELF文件中的范围。原创 2024-10-25 11:39:29 · 961 阅读 · 0 评论 -
Linux 基础io_理解文件系统_软硬链接_动静态库
inode里面是整个小组的文件属性,包含i结点编号,文件的权限 创建时间 大小,以及blocks[NUM](用来找对应的文件内容)// 文件类型和权限// 文件拥有者的用户ID// 文件拥有者的组ID// 文件大小(字节)// 最后访问时间(Access time)// 最后修改时间(Modification time)// 最后状态更改时间(Change time)// 硬链接计数// 文件占用的数据块数// 文件标志(如只读等)// 指向数据块的指针(直接、间接、双间接、三级间接)原创 2024-10-24 18:18:37 · 1262 阅读 · 0 评论 -
Linux 基础IO_文件操作函数_文件描述符fd_重定向
1.它首先将数据写入用户缓冲区。4.fclose close区别,fclose在关闭文件时它会自动处理与该文件流相关的缓冲区,会把用户缓冲区的数据刷新到内核缓冲区。3.fwirte和wirte区别,fwirte会先把数据写到FILE结构体的缓冲区 (用户缓冲区),而wirte直接把数据写到文件的内核缓冲区。4.程序结束自动刷新缓冲区,但文件已经关闭 文件的内核缓冲区也关闭,用户缓冲区的数据不能刷新到内核缓冲区。3.close(fd)会把文件的内核缓冲区的内容刷新到磁盘,但不会把用户缓冲区的内容进行刷新。原创 2024-10-18 19:03:08 · 1289 阅读 · 0 评论 -
Linux_进程控制
查看最近一次进程退出码。原创 2024-10-14 18:33:22 · 1173 阅读 · 0 评论 -
Linux进程-2
g_val++;return 0;上面代码子进程对全局变量++,父进程不改变全局变量。可以看到子进程读取g_val时它的值一直变化,而父进程读取g-val永远是0,但是父子进程取得g_val的地址都是一样。这个地址是物理地址吗?不是,它是一种虚拟地址。是进程空间地址。原创 2024-09-28 21:40:31 · 834 阅读 · 0 评论 -
Linux进程-1
操作系统是如何管理进程的呢?先描述,再组织。原创 2024-09-24 18:57:53 · 723 阅读 · 0 评论 -
Linux调试器-gdb使用
生成myexe文件没有加-g选项,发布的是release版本。可以看到myexe-debug的debug版本内存更大,要包含调试信息。debug版本:程序本身会被加入更多的调试信息,以便于进行调试。release版本:不会添加任何调试信息,是不可调试的。n代表断点处,可以是行号也可以是函数名。我们先创建两个文件,用来测试gbc。不包含调试信息不能用gbc调试。原创 2024-09-13 13:52:06 · 656 阅读 · 0 评论 -
Linux基础环境开发工具gcc/g++ make/Makefile git
生成可执行文件hello首先先创建两个文件 code.c makefilemakefile原理原创 2024-08-20 21:13:42 · 936 阅读 · 0 评论 -
Linux基础环境开发工具yum vim
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器.原创 2024-08-17 10:53:06 · 686 阅读 · 0 评论 -
Linux权限的概念
l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件c:字符设备文件(例如屏幕等串口设备)s:套接口文件。原创 2024-08-15 14:49:21 · 1020 阅读 · 0 评论