![](https://img-blog.csdnimg.cn/b169fe65f11d4563b6cdbfbbcd78749f.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux
文章平均质量分 92
持续更新Linux知识
Kai2026
大学生一枚,C/C++,Linux在学,热爱玩游戏。
展开
-
Linux --- 多路转接
select | poll | epoll原创 2024-03-31 19:39:46 · 1595 阅读 · 0 评论 -
Linux --- 网络层
Linux网络层原创 2024-03-28 15:30:40 · 857 阅读 · 0 评论 -
传输层 | UDP | TCP
传输层和网络层是在Linu内核中实现的,Linux提供了一系列的系统调用接口,可以实现TCP/UDP通信。原创 2024-03-17 12:21:28 · 1658 阅读 · 0 评论 -
Linux --- 传输层 | UDP
传输层和网络层是在Linu内核中实现的,Linux提供了一系列的系统调用接口,可以实现TCP/UDP通信。原创 2024-03-11 21:04:51 · 1107 阅读 · 0 评论 -
Linux --- 应用层 | HTTP | HTTPS
前面写的TCP/UDP客户端在访问服务端的时候,需要输入ip地址和端口号才可以访问, 但在现实中,我们访问一个网站是直接输入的一个域名,而不是使用的ip地址+端口号。比如在访问百度 https://www.baidu.com/的时候, 是使用的域名,浏览器会把域名进行解析成为ip地址+端口号。我们ping一下百度的域名,会得到来自百度的一个回复,然后我们可以访问这个ip地址就会得到百度的主页面。上面在进行网络请求的时候,并没有输入端口号,在输入ip地址之后,直接进入到了百度的主页面。把这里复制粘贴。原创 2024-03-03 15:10:57 · 1579 阅读 · 0 评论 -
Linux---守护进程
第1步:fork子进程,父进程退出子进程继承了父进程的进程组id,但具有一个新的进程id,这样就保证了子进程不是一个进程组的组长id,这对于下面要做的setsid函数的调用是必要的前提条件。第2步:子进程调用 setsid函数创建新会话调用这个函数以后该进程成为新会话的首进程,是会话的会长成为一个新进程组的组长进程,是进程组组长不受控制终端的影响。可以发现,这三个进程的会话id1351都是一样的,多个任务(进程组),在同一个sesion内启动的sid是一样的。将任务指派给进程组。任务都是由进程组去完成的。原创 2024-02-13 14:15:49 · 435 阅读 · 0 评论 -
Linux---网络套接字
当我们服务器有多张网卡的时候,这个IP地址可能就不是唯一的,其他IP地址也可以连接我们这个服务器,所以一般在绑定IP的时候,可以设为0,bind(IP:0), 凡是发给我这台主机的数据,我们都要根据端口号向上交付。现在用户要刷抖音,假如抖音的端口号为4321,获取一个抖音短视频,抖音应用通过协议连接到抖音服务器的IP地址,然后建立连接,抖音服务器传送短视频的数据到达用户的设备上。服务端的bind部分写了一大堆,客户端也需要绑定,服务器要找到客户端,所以也需要bind,只不过不需要用户显示的bind。原创 2024-02-12 13:26:23 · 1318 阅读 · 0 评论 -
Linux---网络基础
比如说在大学上课的时候,老师有时候会点名看考勤,当点到张三的名字的时候,教师中所有人都听到老师喊张三名字了。老师在点张三的名的时候,教师中的所有同学都收到了信息,其他同学收到信息之后,进行提取,将自己的名字和张三做对比,发现不是自己,然后将老师发送的报文全部丢弃了。如果说 你好 这个消息是要发给用户的,在经过应用层后,就要继续往下传递,经过传输层,传输层用来传递信息,就必须保证信息的完整性,可以在报文的前面带上序号。协议定义出来,就是要解决问题的,我们的问题是层状的,所以定义出来的协议也是层状的。原创 2024-02-09 13:26:00 · 1028 阅读 · 0 评论 -
Linux---线程
线程1读取数据,在读取的时候,线程可能会被切换,在任意时间,任意地点都可以切换。在这个pop函数当中,多个线程在wait中进行等待,生产者生产了一个数据在释放锁后,pop中在等待的线程获得了一个锁,然后通知生产者生产数据,并释放锁,此时,pop中wait中的线程会与生产者中的线程竞争这个锁资源,如果pop中的线程竞争到了这个资源,会继续往下执行代码,删除队列中的数据,此时上一个线程已经把队列中的数据给删除了,再次进行删除,就会删除错误的数据,如果队列中没有数据的话,再次进行pop操作,就会出现错误。原创 2024-02-07 16:48:53 · 1057 阅读 · 0 评论 -
Linux---信号
到饭点了,我点了一份外卖,然后又开了一把网游,这个时候,我在打游戏的过程中,我始终记得外卖小哥会随时给我打电话,通知我我去取外卖,这个时候游戏还没有结束。我在打游戏的过程中需要把外卖会打电话这件事给记录下来,这就是信号的保存。当外卖送到的时候我要去取外卖,这就是信号的处理过程。这个取外卖的过程,就是完整的信号的产生到处理的过程。而我们的进程必须能够识别和处理信号,即使信号没有产生,也要具备处理信号的能力,信号的处理能力,属于进程内置功能的一部分。原创 2024-02-04 15:17:52 · 1086 阅读 · 0 评论 -
Linux---进程间通信 | 管道 | PIPE | MKFIFO | 共享内存 | 消息队列
那么,进程A发送数据块,进程B也发送数据块,如何区分AB进程的数据块呢?每一个进程都有自己对应的内核数据结构,内核数据结构中的指针指向一个页表,通过页表的映射关系来找到物理内存,另一个进程也是通过页表的映射,来找到物理内存,那么理论上这两个进程就可以找到物理内存中的同一块内存来完成共享内存。可以,那如果一个进程打开文件,往文件里面写数据,另一个进程打开文件,读取文件里面的数据。曾经我们说过,每一个进程都有一个tack_struct,每一个文件再打开的时候,会有文件描述符,文件描述符在文件描述符表中。原创 2024-02-02 15:46:02 · 445 阅读 · 0 评论 -
Linux---进程
父进程在执行的时候,会有自己的代码和数据,这个代码是和子进程共享的,数据呢?CPU只有一个的情况下,存在多个进程,这些进程要竞争CPU的资源,这些资源要合理的分配,所以CPU要维护一个运行队列(struct runqueue),这些进程要想运行,要先链接到运行队列当中,因为PCB本来就是数据结构对象,运行队列中的头指针指向PCB,尾指针指向最后一个PCB。这些进程,加载到内存中,在创建PCB对象,PCB中存在指针,通过指针再将所有的进程的PCB链接在一块,在通过PCB中的指针,找到自己的代码和数据。原创 2023-10-10 18:58:01 · 295 阅读 · 0 评论 -
Linux---动静态库
在初学Linux的时候,简单的提到过动静态库,但当时只是简单的讲述了一下什么是动态库,什么是静态库,我们可以在此基础上更进一步---制作库。在使用gcc编译器的时候,是默认使用动态链接的。原创 2024-01-31 16:50:01 · 878 阅读 · 0 评论 -
Linux---文件
文件 = 内容 + 属性文件分为打开的文件和没打开的文件。打开的文件:文件是谁打开的 --- 进程,学习文件,本质上是学习 进程和文件的关系没打开的文件: 在哪里放着 --- 磁盘,我们最关注什么问题呢?没有被打开的文件非常多,也就是磁盘上的文件非常多,这些文件有序的放在目录里。文件时如何有序的放置好的呢?-- 我们要快速的对文件进行增删查改,在此之前,要先找到文件。学习C语言的时候,在使用文件操作的时候,如果文件不存在,会自动的在当前路径下创建一个文件。原创 2024-01-24 15:43:39 · 937 阅读 · 0 评论 -
冯诺依曼体系结构
首先,CPU的运算速度是非常快的,要远大于外设,那么我们进行输入之后,CPU很快就将问题给解决了,然后传递给输出设备,这个时候又有数据从输入设备进行输出,CPU解决之后,上一次的数据输出设备还没有输出完毕。将问题输入之后,由存储器来获取内存,然后CPU从存储器中获取要处理的数据,处理完成之后,将数据返回给存储器,再由外设接收,这样,无论什么时候,CPU只从存储器中获取数据,这样就能大大的提高计算机的效率。输入输出设备都是外设,有的设备纯是输入,输出,也有的设备既是输入也是输出。提出了计算机制造的三个。原创 2023-08-20 15:46:08 · 182 阅读 · 2 评论 -
Linux---gdb
程序的发布有两种,debug和release,而Linux gcc/g++出来的二进制程序,默认是release模式,release是无法使用gdb的,只有debug模式下才可以,使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项。它允许开发者对程序进行调试,以便找出程序中的错误、理解程序的执行过程和进行性能分析。在打完断点之后可以按r开始执行程序,在输入n/next 就可以单条执行。删除断点:delete breakpoints(删除所有断点)break 函数名:在某个函数开头设置断点。原创 2023-07-16 09:23:28 · 214 阅读 · 0 评论 -
Linux---函数库和Makefile
这使得动态库可以减小程序的内存占用,并允许多个程序共享相同的库,从而提高程序的可重用性和可维护性。当依赖关系中的任何一个文件发生变化时,Make 工具将自动执行对应的依赖方法,即执行与该目标相关的命令,以完成目标文件的构建。方法实现就是在库当中,库其实就是把源文件经过一定的翻译,然后打包,只给你提供一个文件计科,不用给你提供太多的源文件,也可以达到隐藏源文件的目的。通过定义正确的依赖关系和依赖方法,Make 工具能够自动判断源文件和目标文件之间的依赖关系,并根据需要执行对应的命令来生成最终的目标文件。原创 2023-07-11 10:06:21 · 326 阅读 · 0 评论 -
Linux---vim的使用
本章为大家带来Linux工具—vim。原创 2023-06-13 12:35:14 · 1880 阅读 · 0 评论 -
Linux---用户的权限
本章为大家带来用户的权限的讲解。原创 2023-06-01 15:03:34 · 796 阅读 · 1 评论 -
Linux---基本指令
掌握基本指令,学会linux的前提原创 2023-03-08 20:36:40 · 417 阅读 · 0 评论