linux
文章平均质量分 94
WoLannnnn
沉淀……
展开
-
TCP/IP协议簇之数据链路层
文章目录数据链路层认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响查看硬件地址和MTUARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式数据链路层用于两个设备(同一种数据链路节点)之间进行传递.真正实现“跳”是由数据链路层完成的。认识以太网“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控原创 2022-02-18 10:10:54 · 1476 阅读 · 17 评论 -
TCP/IP协议簇之网络层
文章目录网络层IP协议基本概念协议头格式IP中的分片分片与组装的需求如何分片与组装路径MTU发现网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由网络层在复杂的网络环境中确定一个合适的路径IP协议基本概念主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称;IP协议给通信双方提供了一种能力,从A主机将数据跨网络送到B主机的能力。但IP协议不保证可靠性,IP包丢了由上层的TCP重发。协议头格式I原创 2022-02-16 08:34:01 · 1161 阅读 · 16 评论 -
TCP/IP协议簇之传输层
文章目录传输层再谈端口号端口号范围划分认识知名端口号(Well-Know Port Number)两个问题netstatpidofUDP协议长链接与短链接UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议TCP协议TCP协议段格式确认应答(ACK)机制超时重传机制连接管理机制如何理解链接?为什么一定要是三次握手?理解TIME_WAIT状态解决TIME_WAIT状态引起的bind失败的方法理解 CLOSE_WAIT 状态TCP以段为单位发送数据滑动窗口流量控制拥塞控制原创 2022-02-14 08:32:46 · 698 阅读 · 10 评论 -
TCP/IP协议簇之应用层
应用层我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层.再谈 “协议”协议是一种 “约定”. socket api的接口, 在读写数据时, 都是按 “字符串”(字符串描述不准确) 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢?通过序列化与反序列化实现,我们发送数据至网络要进行序列化,将“结构化的数据”合为一个整体,网络发送数据给另一端接收时,要进行反序列化,将整体数据又转化为“结构化数据”。进行序列化的工具有json,xml网络版计算器例如原创 2022-02-12 09:31:39 · 967 阅读 · 24 评论 -
初识网络及socket编程基础
原创 2022-02-04 10:35:32 · 2208 阅读 · 6 评论 -
多线程(下)
Linux线程同步条件变量当一个线程互斥地访问某个变量时,它可能在其它线程改变状态之前,什么也做不了。例如一个线程访问队列时,发现队列为空,它只能等待,直到其它线程将一个节点添加到队列中。这种情况就需要用到条件变量。pthread库中,条件变量的类型是pthread_cond_t同步概念与竞态条件同步:在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步竞态条件:因为时序问题而导致程序异常,我们称之为竞态条件。在线程场景下,这种问题也不难理解条原创 2022-01-28 15:45:15 · 909 阅读 · 9 评论 -
多线程(上)
文章目录Linux线程概念什么是线程线程的优点线程的缺点线程异常线程用途Linux进程VS线程进程和线程关于进程线程的问题Linux线程控制POSIX线程库创建线程进程ID和线程ID线程ID及进程地址空间布局线程等待 为什么需要线程等待?线程终止分离线程Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口初始化互斥量销毁互斥量mutex的理解互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见不可重入的情况常见可重入的情况可重入与线程安全联系可重入与线原创 2022-01-25 08:39:54 · 1164 阅读 · 21 评论 -
进程信号——阻塞与捕捉信号
文章目录阻塞信号1.信号其他相关常见概念2.在内核中的表示总结信号从产生到递达3. sigset_t4. 信号集操作函数sigprocmasksigpending捕捉信号1. 内核如何实现信号的捕捉用户态和内核态的切换2. sigaction可重入函数volatileSIGCHLD信号阻塞信号1.信号其他相关常见概念实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持原创 2022-01-24 09:15:37 · 1564 阅读 · 14 评论 -
进程信号初识
文章目录信号入门1.生活角度的信号2. 技术应用角度的信号3.注意4. 信号概念5.用kill -l命令可以察看系统定义的信号列表6. 信号处理常见方式概览产生信号1.通过终端按键产生信号2. 调用系统函数向进程发信号3. 由软件条件产生信号4.硬件异常产生信号信号捕捉初识模拟一下野指针异常总结思考一下信号入门1.生活角度的信号你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时,你该怎么处理快递。也就是你能“识别快递”当快递员到了你楼下,你也收到快递到来的原创 2022-01-23 09:13:52 · 357 阅读 · 16 评论 -
进程间通信——共享内存
system V共享内存共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据共享内存示意图理解:共享内存是物理内存中开辟给进行通信的进程之间的共享内存,这样一个进程向内存里写了什么,另一个进程就能马上看到,因为它们都把共享内存当成了自己应有的内存,所以能够进行通信,并且减少了拷贝次数。共享内存数据结构struct shmid_ds {struct ipc_perm shm_per原创 2022-01-22 19:56:46 · 344 阅读 · 8 评论 -
进程间通信——管道
文章目录进程间通信介绍进程间通信目的进程间通信发展进程间通信分类管道什么是管道匿名管道实例代码用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则命令行中的 `|` 管道中,进程间是兄弟关系管道特点命名管道创建一个命名管道匿名管道与命名管道的区别命名管道的打开规则用命名管道实现server&client通信进程间通信介绍进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个原创 2022-01-22 11:50:13 · 2593 阅读 · 27 评论 -
进程等待与程序替换
进程等待子进程被创建,谁先运行谁先退出?谁先运行,是由调度器说了算那谁先退出呢?一般来说,我们通常要让子进程先退出。因为父进程可以很容易对子进程进行管理(垃圾回收).子进程处理业务,需要让父进程帮我们拿到子进程执行的结果所以,一般子进程是需要被等待的,具体是被父进程等待进程等待必要性之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill -9 也无能为力,因为谁也没有办法杀死一个已原创 2022-01-21 08:00:00 · 432 阅读 · 14 评论 -
理解文件系统及动静态库
理解文件系统我们使用ls -l的时候看到的除了看到文件名,还看到了文件元数据[root@localhost linux]# ls -l总用量 12-rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out-rw-r--r--. 1 root root 654 "9月 13 14:56" test.c每行包含7列:权限硬链接数文件所有者组大小最后修改时间文件名ls -l读取存储在磁盘上的文件信息,然后显示出来其实这个信息除了通过这原创 2022-01-20 19:03:37 · 1475 阅读 · 8 评论 -
Linux文件接口及文件描述符
系统文件I/O操作文件,除了C接口(当然,C++也有接口,其他语言也有),我们还可以采用系统接口来进行文件访问写文件:#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>int main(){ umask(0); int原创 2022-01-20 19:00:40 · 1118 阅读 · 6 评论 -
进程的创建与终止
文章目录进程创建fork函数初识fork函数返回值#fork为什么有两个返回值写时拷贝写时拷贝的触发如何理解子进程的创建fork常规用法fork调用失败的原因进程终止进程退出场景进程常见退出方法exit函数_exit函数exit和_exit的工作:return退出exit() vs return进程创建fork函数初识在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。#include <unistd.h>pid_t fork(原创 2022-01-18 20:28:14 · 909 阅读 · 20 评论 -
初始进程2.0
文章目录进程优先级基本概念优先级 vs 权限(自己的理解)查看系统进程PRI and NI查看进程优先级的命令用top命令更改已存在进程的nice:进程相关的其他概念环境变量基本概念常见环境变量查看环境变量方法测试PATHHOMEUSERHISTSIZESHELL和环境变量相关的命令环境变量的组织方式通过代码如何获取环境变量通过系统调用获取环境变量 ——getenv环境变量通常是具有全局属性的程序地址空间研究背景程序地址空间进程地址空间那么为什么需要虚拟空间呢?管理地址空间先描述再组织进程重定义补充tas原创 2021-12-21 21:46:17 · 970 阅读 · 8 评论 -
初识进程1.0
文章目录进程基本概念描述进程-PCBtask_struct——PCB的一种task_ struct内容分类组织进程查看进程通过系统调用获取进程标示符通过系统调用创建进程-fork初识理解进程创建fork父子执行顺序,及代码和数据复制的问题fork为什么有两个返回值进程状态看看Linux内核源代码怎么说进程状态查看Z(zombie)-僵尸进程僵尸进程危害孤儿进程进程基本概念课本概念:程序的一个执行实例,正在执行的程序等内核观点:担当分配系统资源(CPU时间,内存)的实体。自己的理解:程序原创 2021-12-21 21:32:07 · 385 阅读 · 6 评论 -
Linux开发工具使用
文章目录Linux编译器-gcc/g++使用背景知识gcc如何完成预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)链接(生成可执行文件或库文件)函数库静态函数库与动态函数库gcc选项Linux调试器-gdb使用背景使用Linux项目自动化构建工具-make/Makefile背景实例代码依赖关系依赖方法原理项目清理多文件的make以及makefileLinux编译器-gcc/g++使用背景知识预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)连接(生成可执行文件或库文原创 2021-11-14 09:08:10 · 3097 阅读 · 33 评论 -
Linux权限
文章目录Linux权限的概念Linux权限管理文件访问者的分类(人)文件类型和访问权限(事物属性)文件权限值的表示方法1)字符表示方法2)8进制数值表示方法文件访问权限的相关设置方法a)chmodb)chown关于sudoc)chgrpd)umaskfile指令:目录的权限粘滞位关于权限的总结Linux权限的概念Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命原创 2021-11-06 11:15:47 · 736 阅读 · 9 评论