自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 传输层介绍

传输层是计算机网络中的第四层,也称为传输协议层。它的主要功能是提供的可靠数据传输服务,负责处理数据包的传输和可靠性问题。传输层通过使用传输层协议(如TCP和UDP)来控制和优化数据包的传输。:传输层通过端口来区分不同的服务或应用程序。每个网络连接都有一个源端口和目的端口,它们共同定义了一个唯一的网络会话。:传输层定义了两种主要的协议:TCP(传输控制协议)和UDP(用户数据报协议)。:它提供可靠的、面向连接的服务。TCP保证数据包的顺序传输,检测数据包丢失,并重新传输丢失的数据包。

2024-03-26 14:12:27 943

原创 网络层介绍

数据链路层是计算机网络中位于物理层之上的层次,也被称为链路层或数据链路层。它的主要作用是在物理层提供的传输媒介上实现可靠的数据传输,原始比特流转换为帧(Frame)并在物理层介质上进行传输。:数据链路层将原始比特流封装成帧,添加帧和帧尾,以便在物理层介质上进行传输。帧头包含数据链路层协议的特定信息,帧尾则包含校验和等错误检测信息。:数据链路层负责检测和物理层介质上的数据传输错误。它使用各种差错检测和纠正机制,如循环冗余校验(CRC)、奇偶校验、帧校验序列(FCS)等,以确保传输数据的正确性和完整性。

2024-03-05 20:14:00 1273

原创 linux中的线程局部存储(TLS)实现线程间的同步和互斥pthread_key_create、pthread_setspecific、pthread_getspecific

由于线程局部存储是基于操作系统的特性,因此它可能会受到操作系统实现的影响。不同的操作系统可能会有不同的线程局部存储实现和限制。

2024-02-21 18:32:17 1216 1

原创 汉诺塔问题——递归算法与非递归算法

汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

2024-02-15 18:52:20 1153

原创 stat系列函数介绍(stat,lstat,fstat)

结构体来获取文件或目录的状态信息。这些信息可以用于确定文件的访问权限、所有者、组和其他属性,以及文件的大小、创建时间等信息。函数是一个系统调用,用于获取指定文件的元数据文件的状态信息),如文件大小、访问权限、最近访问时间等。函数类似,也用于获取文件的元数据(文件状态信息),但是可以识别符号链接并获取符号链接文件本身的信息。在打印时,我们获取了符号链接文件本身的大小、访问权限、所有者的用户ID以及最近访问时间。接着,我们打印了获取到的文件大小、文件访问权限、文件所有者的用户ID以及最近访问时间。

2024-02-12 22:55:08 1539

原创 深入分析一下共享内存、消息队列和信号量

这个ipc_perm结构体用于存储权限和相关信息,如所有者、用户组、权限模式等。

2024-02-12 22:47:24 896 1

原创 mmap函数的详细讲解

addr如果addr为NULL,内核会自动选择一个起始地址作为映射的起点。如果addr不为NULL,则内核会尝试将映射放置在指定的起始地址处。如果指定的地址无效或与已有映射冲突,则mmap()调用会失败。通常情况下,最常用的做法是将addr设置为NULL,由内核选择一个适当的地址。lengthlength参数指定要映射的长度,可以是文件的长度或者是页的整数倍。对于文件映射,length一般为文件大小。对齐到页面大小可以获得最佳性能,因为页面是内存管理的最小单位。protprot。

2024-02-12 19:36:44 2432 1

原创 进程间通信IPC,管道、共享内存、消息队列、信号量原理介绍

System V IPC(Inter-Process Communication)机制是一种在Unix/Linux系统中实现进程间通信的机制。它提供了几种不同的通信方式,包括共享内存(Shared Memory)、消息队列(Message Queue)和信号量(Semaphore)等。核心组件:System V IPC机制的核心组件包括IPC对象(如共享内存、消息队列、信号量等)和IPC标识符(用于标识IPC对象的唯一数字)。

2024-02-12 11:19:31 1225 1

原创 进程间通信(管道与共享内存)

半双工通信允许数据在通信双方之间单向传输,但不能同时进行双向传输。这意味着在半双工通信中,通信的两个实体可以轮流发送和接收数据,但不能同时进行发送和接收操作。在半双工通信中,数据的流动只能在一个方向上,而不能同时进行双向的数据传输。这是因为在通信系统中,数据传输需要使用共享的通信通道,如管道、电缆等。半双工通信机制通过在时间上分割发送和接收操作来实现单向的数据传输。半双工通信通常用于一些场景,其中只有一个实体可以发送数据,而另一个实体则负责接收数据。

2024-02-10 15:43:51 1012 1

原创 fork()函数介绍 原理解析

PCB中的进程地址空间指向的是父进程PCB的进程地址空间结构体地址,创建新的页表,子进程共享父进程页表的一部分页表项。系统调用的作用是在当前进程中创建一个新进程,新进程与当前进程具有相同的内存空间和文件描述符,但拥有独立的进程ID和资源。: 子进程和父进程之间存在一种父子关系,操作系统会维护这种关系,使得父进程可以等待子进程结束,或者子进程可以发送信号给父进程。这样子进程和父进程都会有一个独立的、可读写的页面,可以直接修改它们的内容。如果返回值是子进程的进程ID,表示父进程(一般是所在程序的进程)调用。

2024-02-10 15:33:56 961 1

原创 页表(进程管理和内存管理的纽带)

页表 在cpu中有专门的寄存器(cr3)来存储页表的地址,当进程离开cpu时会将页表一起带走(页表也是进程上下文的一部分)。 页表存储的位置是物理内存 页表是进程管理和内存管理之间的纽带,将进程管理模块和内存管理模块进行解耦合。 这里的解耦合: 解耦合进程管理和内存管理的方法主要有以下几种: 虚拟地址空间:虚拟地址空间是进程管理和内存管理解耦合的关键。每个进程都有自己的虚拟地址空间,可以独立地访问和管理自己的内存。这样可以实现进程之间的隔离和保护,避免

2024-02-10 15:29:59 1499 1

原创 PCB linux中进程管理

PCB(Process Control Block)进程控制块是进程在操作系统中的数据结构,用于存储进程状态、程序计数器、寄存器值等信息。每个进程都有一个与之对应的PCB,操作系统利用PCB来管理和调度进程。PCB由操作系统形成,代码数据由用户来提供。在PCB中存储的信息包括(进程属性的集合):进程ID:唯一标识一个进程的ID,用于区分不同的进程。进程状态:表示进程当前所处的状态,如运行、等待、阻塞等。:存储CPU下一条将要执行的指令的地址,用于实现进程的切换和恢复执行。

2024-02-10 15:26:01 1172 1

原创 C++中的类型转换

隐式类型转换和显式类型转换。隐式类型转换是指编译器在编译期间自动将一种类型转换为另一种类型。C++中的隐式类型转换通常发生在以下情况:赋值操作:当将一个值从一个类型赋给另一个类型时,如果目标类型的范围比源类型小,则编译器会自动将源类型转换为目标类型。例如,将一个int类型的值赋给一个float类型的变量时,int类型会被隐式转换为float类型。函数参数:在调用函数时,如果函数参数类型与实际传递的参数类型不匹配,编译器会自动将实际传递的参数类型转换为函数参数类型。

2024-02-08 18:52:24 871

原创 c++11的新特性:

是 C++ 标准库中的一个类模板,它是一种相对于的辅助智能指针。与不同,不拥有资源的所有权,它只是对由管理的资源进行弱引用。允许我们创建对管理的资源的非占有性引用。这意味着不会增加引用计数,也不影响资源的生命周期。当管理的资源被释放时,通过创建的弱引用对象也会自动失效。避免循环引用:在使用时,存在循环引用的风险,即两个或多个对象互相持有对方的。这会导致无法释放资源,从而产生内存泄漏。通过使用来替代某些引用,可以打破循环引用关系,正确释放资源。安全地获得:通过调用的lock()

2024-02-07 22:46:21 832 1

原创 动静态库(编译的基本原理)

编译器会识别源代码中的符号定义,如变量的声明、函数的定义等,并提取出符号的名称、类型、作用域等信息。

2024-02-07 21:49:55 989 1

原创 文件基础 (进程的基石)

文件=内容+属性文件分为打开的文件和没打开的文件是谁在打开文件?进程和文件的关系没有打开的文件特别多,文件是怎么进行分类的?打开的文件非常多,是怎么快速的进行增删查改(定位文件)?文件是否也像进程一样在操作系统中是一个结构体。C语言的规定:字符串必须以“\0”结束,但是在文件中,不需要写\0,文件可以使用任何语言。文件写入的路径:在/proc目录中有当前工作目录的软连接,可以通过chdir来更改工作目录文件的底层,一定会封装系统调用。

2024-02-06 23:11:13 1007

原创 进程基础(命令的基石)

kill命令在Linux中用于向进程发送信号,可以用于控制和管理进程。它的基本语法是:以下是一些常用的kill-l:列出可用的信号列表。:指定要发送的信号编号或信号名称。SIGTERM(信号编号15):默认信号,用于终止进程。通常用于优雅地终止进程。SIGKILL(信号编号9):用于立即强制终止进程,进程无法捕获或忽略该信号。SIGHUP(信号编号1):终端挂起或断开连接时发送该信号。SIGINT(信号编号2):由终端发送的中断信号,通常由Ctrl+C生成。SIGSTOP。

2024-02-06 22:50:25 2219

原创 Linux中常用的工具

RPM(Red Hat Package Manager)RPM可以管理软件包的安装、更新和卸载,通过它可以让用户方便地安装、升级和删除软件。-i:安装软件包。-U:升级软件包。-d:显示详细信息。-f:强制执行。使用例子:安装软件包:升级软件包:显示详细信息:强制执行:RPM有时可能需要管理员权限才能执行某些操作,可以使用-f参数强制执行。例如,如果用户没有管理员权限但仍然需要安装软件包,可以使用以下命令:Git是一个分布式版本控制系统,主要用于跟踪文件变更和协调多人之间的代码修改。

2024-02-06 22:44:31 2011

原创 linux权限管理

子码是文件权限的一部分,它表示特定的权限,如读、写或执行。在Linux中,共有三个权限组:所有者(Owner)、所属组(Group)和其他用户(Others)。每个权限组都有自己的子码集合,可以用来表示该组的权限。注意:一个用户只能扮演一个角色 如果不是拥有者才会看所属组的权限 最后才会是其他用户的权限掩码(Mask)是用于组合子码的数字模式,用于确定文件的权限。在Linux中,使用数字0和1组成的掩码来表示不同的权限组合。0:没有任何权限1:只读权限2:只写权限3:读和执行权限。

2024-02-06 22:41:50 850

原创 指令初步讲解

指令的组成Linux指令:命令名称、选项和参数 命令名称:是指执行特定功能的命令的名称。例如,ls命令用于列出当前目录的内容,cd命令用于切换当前工作目录。 选项(Options):选项是用于修改命令行为或提供额外功能的标志。选项通常由一个短横线(-)或两个短横线(- -)引导,并跟随一个字母或单词。例如,ls命令的-l选项用于以长格式输出文件信息。 参数(Arguments):参数是指向命令传递数据或指定操作对象的值。参数通常跟在命令和选项之后。例如,在cp命令中,第一个参数

2024-02-06 22:40:00 874

原创 学习linux需要了解的前言知识

Linux学习准备知识点

2024-02-06 22:36:47 882

原创 PTA函数部分20题全部答案

【代码】PTA函数部分20题全部答案。

2022-12-02 18:48:13 2481 2

原创 逆序输出一句话(C语言指针初步)

逆序输出一句话(C语言指针初步)

2022-12-01 17:15:39 445 1

原创 本题要求实现一个函数,输出n行空心的数字金字塔。

本题要求实现一个函数,输出n行空心的数字金字塔。

2022-12-01 17:03:01 1071 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除