linux
文章平均质量分 79
介绍linux系统及网络的知识
roboko_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux文件系统(三)
打开当前目录,查看当前目录的内容,可当前目录也是文件,访问当前目录也是只知道文件名,要访问当前目录,也得知道当前目录的inode号,所以还需要打开当前目录的上一级目录,于是,类似递归的,把所有目录全部解析,递归出口是 "/"目录。我们访问文件通常使用的是文件名而不是inode号,所以操作系统必须能够记录下两者的映射关系,由于文件都是属于目录的,所以这个映射关系是由 目录记录的,目录的文件数据就是inode号和文件名的映射关系。访问文件,必须加上路径,而根目录的inode号无需查找,系统开机后就知道。原创 2025-07-27 19:36:06 · 365 阅读 · 0 评论 -
Linux文件系统(二)
我们想要在硬盘上储⽂件,必须先把硬盘格式化为某种格式的⽂件系统,才能存储⽂件。⽂件系统的⽬的就是组织和管理硬盘中的⽂件。没有它就不能访问硬盘里的文件ext2将整个分区划分为同样大小的块组(Block Group),只要能管理好一个块组,就能管理整个分区,也就能管理好整个磁盘上图中启动块(Boot Block/Sector)的⼤⼩是确定的,为1KB,由PC标准规定,⽤来存储磁盘分区信息和启动信息,任何⽂件系统都不能修改启动块。启动块之后才是ext2⽂件系统的开始。原创 2025-07-27 17:55:13 · 709 阅读 · 0 评论 -
linux文件系统(一)
磁盘由一个个盘面组成,每个盘面上的一个个圆环就是磁道(cylinder),再将磁道分为一个个的扇区(sector),扇区就是磁盘存储数据的最小单位,大小通常为512字节,磁头(header)就是用来读写数据的。柱面是分区的最小单位,柱⾯⼤⼩⼀致,扇区个位⼀致,那么其实只要知道每个分区的起始和结束柱⾯号,知道每⼀个柱⾯多少个扇区,那么该分区多⼤就知道了。Linux下,保存⽂件属性的集合叫做inode,⼀个⽂件,⼀个inode,inode内有⼀个唯⼀的标识符,叫做inode号。”块”是⽂件存取的最⼩单位。原创 2025-07-27 17:12:05 · 1091 阅读 · 0 评论 -
TCP详解——流量控制、滑动窗口
窗口内的数据段都有可能丢,我们不妨先来回忆一下确认应答号的定义,确认应答号为i表示1~i-1的数据全部收到了,把left赋值为i,表示1~i-1的数据全收到了,如果i <= right,可以看出丢包了,那么i~right的每一个数据段,都有可能丢包了,但是,我们只需要处理最左边的数据段,即以left为开头的第一个数据段,把它重发即可。所谓窗口,就是你写算法题经常遇到的那个滑动窗口。这个窗口内所维护的就是待发送的数据段,窗口左边是确认收到应答的数据段,窗口右边就是以后再发的数据段。原创 2025-07-12 00:06:51 · 1235 阅读 · 2 评论 -
TCP协议详解——初识
这篇文章是初识,先理解部分字段的作用源和目标端口号意义明确。序列号和确认应答号后面再展开数据偏移字段是4位,意义是表明TCP首部有几个4字节,图上可以看出来一行是32bit也就是4字节,这个4位数据偏移字段相当于表明了有几行,由此可以算出TCP首部最大时4 * 15 = 60个字节控制位有8位,但是很多时候把前两位与保留位合并,之后的6位每个位表达不同的含义,从左到右依次是URG: 紧急指针是否有效ACK: 确认号是否有效PSH: 提⽰接收端应⽤程序⽴刻从TCP缓冲区把数据读⾛。原创 2025-07-11 19:47:23 · 812 阅读 · 0 评论 -
多路转接epoll原理详解
eventpoll结构体就是epoll模型,重点来看rdllist和rbr两个字段,rbr是一颗红黑树,节点存放了文件描述符和事件的映射关系,里面存放的都是用户传入的的文件描述符,而如果某个文件描述符上的事件就绪了,就会将这个节点插入到rdllist中。内核底层提供了一种回调机制,用于处理事件就绪时进行什么动作,默认这个回调是为空的,在epoll这里,这个回调被设置为当事件就绪后把节点插入就绪队列,于是,可以自动的在事件就绪时将节点插入就绪队列。为正数表示在timeout时间内事件就绪的文件描述符个数。原创 2025-04-24 18:01:44 · 837 阅读 · 0 评论 -
多路转接poll服务器
关于select的详解,可查看。原创 2025-04-22 21:18:18 · 616 阅读 · 0 评论 -
多路转接select服务器
前面介绍过多路转接就是能同时等待多个文件描述符,这篇文章介绍一下多路转接方案中的select的使用。原创 2025-04-22 19:46:03 · 986 阅读 · 0 评论 -
五种IO模型
一般系统提供的IO接口,实际上都在完成两件事,一件是等,等待数据就绪,如recvfrom会阻塞等待数据就绪,还有一件就是拷贝,把数据从内核缓冲区拷贝到用户缓冲区或者把数据从用户缓冲区拷贝到内核缓冲区。而可以想象,等待所消耗的时间肯定是远大于拷贝的时间,例如网络通信中大部分时间都消耗在等待上了,等待客户端的消息到达服务端,等待服务端的消息到达客户端。为了优化IO的效率,人们提出了五种不同的IO等待方式,这就是五种IO模型。原创 2025-04-16 16:16:59 · 585 阅读 · 0 评论 -
线程池设计
线程池实际上也是一个生产者消费者模型,线程池可以让多个线程去任务队列中取任务,执行任务,适用于需要大量的线程来完成任务且完成任务的时间较短。原创 2025-03-31 19:27:13 · 236 阅读 · 0 评论 -
信号量与基于环形队列的生产者消费者模型
信号量可用于线程间的同步,它可以用于将一整块资源切成一个个的小部分以供并发访问。它实际上是一个计数器,但特别之处在于支持原子性的++和--操作。在信号量中称为V操作和P操作举个电影院的例子来理解一下,电影院里有很多座位,而这些座位就相当于是整个电影放映会场所切成的小部分,以供多个观众进行预约。而观众关心的资源是座位,因此需要信号量来对剩余座位数计数,每有一个观众预约,这个信号量就--,减到0就阻塞住不再能预约,如果有观众退票,就将该信号量++,以便其他观众能再次预约座位。原创 2025-03-31 19:17:47 · 337 阅读 · 0 评论 -
Linux实现生产者消费者模型(基于阻塞队列)
生产者消费者模型是一种用于线程同步的模型,在这个模型中有两种角色,生产者生产数据,消费者消费数据。有三种关系,生产者与生产者,消费者与消费者,生产者与消费者。还有一个交易场所。超市就是生活中最常见的生产者消费者模型,工厂生产商品,超市充当缓冲区,消费者去超市消费同时取走超市中的商品。原创 2025-03-26 17:37:15 · 594 阅读 · 0 评论 -
Linux条件变量使用
条件变量用于线程间的同步,所谓同步就是使一些线程的执行按照时间先后进行。原创 2025-03-26 17:00:17 · 411 阅读 · 0 评论 -
Linux线程库原理解析
我们知道在Linux中使用线程相关的函数时需要在使用gcc编译时带上-lpthread选项,这就是因为pthread一系列函数不是Linux提供的系统调用,而是一个库。下面来详细讨论一下这个库到底做了什么,它是如何给我们提供对线程的相关操作函数的。原创 2025-03-23 17:05:05 · 460 阅读 · 0 评论 -
Linux互斥量操作以及实现原理
试想现在有几个线程竞争锁,几个线程在执行xchgb前被切走,有一个线程a执行到了xchgb指令,现在它al寄存器与mutex交换,%al为1,mutex为0,如果执行完这条指令后其它线程占据了cpu,线程a被切走,a的上下文被保存起来,而上下文包括了%al的值。现在其他线程执行xchgb指令(抢占到cpu的线程也有自己的上下文,里面包含%al的值并且一定是0,因为movb指令将%al置为0),由于mutex已经被线程a改为0,所以此时,%al = 0, mutex = 0。原创 2025-03-23 19:19:35 · 335 阅读 · 0 评论 -
Linux线程操作(创建,终止,等待,分离)
在使用Linux线程库时,需要包含头文件<pthread.h>,而且在链接时,需要包含-lphread选项。原创 2025-03-20 19:23:26 · 492 阅读 · 0 评论 -
Linux网络套接字编程——UDP服务器
前面已经介绍了网络套接字的创建和绑定,这篇文章会通过UDP套接字实现一个UDP服务器。先介绍将使用的接口。原创 2025-03-13 20:28:29 · 627 阅读 · 0 评论 -
Linux网络套接字编程——创建并绑定
如果将进程比作一个房子,那套接字相当于是一扇门,通向与外界通信的通道。在网络中,如何理解套接字呢,时刻记住套接字是为了标识互联网中的某一台主机上的某一个进程,因此它就是IP地址 + 端口号。现在你完全可以把套接字当成一个结构体,里面包含了这台主机的IP地址和端口号。(只为了方便理解,实际中可能并不止如此)在介绍套接字前,先来认识一下网络字节序。原创 2025-03-13 18:59:24 · 950 阅读 · 0 评论
分享