![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
liunx
文章平均质量分 80
liunx技术
万物皆为二叉树
这个作者很懒,什么都没留下…
展开
-
Linux HTTP协议
GET 方法也可以传输实体的主体,但一般不用 GET 方法进行传输,而是用 POST 方法。第二部分包含多行内容叫 请求报头:每一行包含很多请求属性,都是KV形式的,例如 Key: value(注意:和value中间有空格)注意:http协议请求时大小写是忽略的,例如请求行的 GET / HTTP/1.1 和get / http/1.1 都一样。注意:前三部分(请求行,请求报头,空行)都为http协议的报头;http协议:http协议是超文本传输协议,是一个 无链接,无状态的应用层协议。原创 2024-05-16 19:40:27 · 361 阅读 · 0 评论 -
Linux套接字编程详解
前16位是标志,是数据结构的名字。通用数据类型sockaddr,sockaddr_in和sockaddr_un是sockaddr是他们的统一形式,为了方便传参。原创 2024-04-24 22:03:13 · 778 阅读 · 0 评论 -
Liunx进程信号
信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。原创 2024-04-05 22:21:35 · 615 阅读 · 0 评论 -
Linux 多线程与线程控制(程序均有详细注释)
死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态死锁四个必要条件互斥条件:一个资源每次只能被一个执行流使用请求与保持条件:一个执行流因请求资源而阻塞时,对已获得的资源保持不放。(即:保持着自己的锁,还要要对方的锁)不剥夺条件:一个执行流已获得的资源,在末使用完之前,不能强行剥夺循环等待条件:若干执行流之间形成一种头尾相接的循环等待资源的关系,即:两个线程各自占用一个锁后,还竞争对方的锁,叫环路等待解决死锁解决理念。原创 2024-04-04 22:49:22 · 782 阅读 · 0 评论 -
liunx 进程控制
在程序中,如果我们使用fork后,父进程会创建一个子进程,子进程可以通过if(x==0)进行分流,分流结束后,exit(0)退出。并且发生了神奇的现象,父子进程的同一个变量,有不同的数值。默认的行为是挂起调用进程,直到有子进程终止。在等待子进程终止的同时,如果还想做些有用的工作,这个选项会有用。用fork创建子进程后,子进程执行的是和父进程相同的程序(但有可能执行不同的代码分支),若想让子进程执行另一个程序,往往需要调用一种exec函数。注意:wait的等待是父进程的等待,并且一直等待直到子进程退出。原创 2024-03-19 14:08:51 · 979 阅读 · 1 评论 -
Liunx进程间通信
共享内存让不同进程看到同一份资源的方式就是,在物理内存当中申请一块内存空间,然后将这块内存空间分别与各个进程各自的页表之间建立映射,再在虚拟地址空间当中开辟空间并将虚拟地址填充到各自页表的对应位置,使得虚拟地址和物理地址之间建立起对应关系,至此这些进程便看到了同一份物理内存,这块物理内存就叫做共享内存。进程间通信通过共享资源来实现,这虽然解决了通信的问题,但是也引入了新的问题,那就是通信进程间共用的临界资源,若是不对临界资源进行保护,就可能产生各个进程从临界资源获取的数据不一致等问题。原创 2024-03-19 13:54:14 · 832 阅读 · 2 评论 -
Liunx文件系统和基础IO
open函数在上层为用户申请FILE结构体变量,并返回该结构体的地址(FILE*),在底层通过系统接口open打开对应的文件,得到文件描述符fd,并把fd填充到FILE结构体当中的_fileno变量中,至此便完成了文件的打开操作。一个扇区的大小为512字节,但是操作系统认为512字节太小了,访问效率太慢了,所以操作系统将连续的8个扇区作为一个基本数据块,即4KB, 所以这4KB就是IO的基本单位,也就是说只要需要修改数据,哪怕再小,操作系统也要将这4KB拿出来做修改再放回去,这就是所谓的基本单位。原创 2024-03-13 13:04:22 · 1096 阅读 · 0 评论 -
liunx 进程地址空间
当子进程刚刚被创建时,子进程和父进程的数据和代码是共享的,即父子进程的代码和数据通过页表映射到物理内存的同一块空间。例如,子进程需要将全局变量g_val改为200,那么此时就在内存的某处存储g_val的新值,并且改变子进程当中g_val的虚拟地址通过页表映射后得到的物理地址即可。子进程和父进程在页表中虽然有相同的虚拟地址,但是映射关系不一样,则子进程和父进程就可以映射不同的地址。再谈到进程控制块时, 现在我们知道了,进程地址空间,进程控制块都是结构体,通过指针关联了进程地址空间。命令行参数,以及环境变量。原创 2024-03-08 18:14:21 · 374 阅读 · 0 评论 -
liunx操作系统 环境变量
其实,在我们使用的基本命令,比如 ls -al 什么的都是用到这个接口。环境变量可以很好的帮助系统、用户、应用程序和脚本进行配置和运行。系统下的环境变量非常多,这里我们先认识下PATH、PWD、USER、HOME的功能。我们每次makefile执行完之后获得程序必须加上路径才可以运行,然而系统自带的程序不需要加上路径,这是因为系统提前为他们设定好了路径。这样会干掉我们所有的环境变量。我们只需要重启就好了。这样就加入了我们自己的环境变量。如果我们的变量也被进来了 ,那么我们的命令也就不需要加路径了。原创 2024-03-07 22:30:06 · 707 阅读 · 0 评论 -
liunx自动构建化工具make/makefile
依赖方法:依赖方法是文件之间相互作用的方法。依赖关系:依赖关系是文件之间的关系。原创 2024-03-06 19:51:06 · 332 阅读 · 0 评论 -
liunx操作系统 进程的基本概念
在没有存储器之前,所有的信息都是直接进入CPU,这样效率很差,因为读入,写出的速度远远慢于cpu计算的速度。在操作系统的管理下,操作系统用结构体描述结构体的,该结构体描述了设备的重要特性,通过管理特性数据管理你,比如设置你关机,你就关机。神奇的是 test并不是r状态,而是s状态,s状态是浅度睡眠,浅度睡眠是可以打断的睡眠。当5次循环结束后,子进程结束,子进程并不会直接被干掉,而是变为僵尸进程,僵尸进程是等待父进程接受退出数据用的。进程的概念:进程是操作系统最重要的概念,他在书上都是说他是运行起来的程序。原创 2024-02-28 21:57:08 · 932 阅读 · 0 评论 -
liunx gcc编译器 以及编译过程
就像hello.c中使用到了C标准库的东西“printf”,但是编译过程只是将源文件翻译成二进制文件而已,这个二进制文件还不能直接执行,还需要一个动作:将翻译成的二进制文件与需要用到的库绑定在一块。gcc -c hello.c -o a.o 是将源文件翻译成二进制文件,类Unix系统编译的结果生成.o文件,Windows系统生成的是.obj文件。(2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些。由于a.o是机器码,不能以纯文本的形式打开(vim打开是乱码的)。原创 2024-02-24 19:58:31 · 383 阅读 · 0 评论 -
liunx文件权限和内核
在liunx中内核可以想象成一堆软件。由于内核过于复杂,我们并不想直接操作内核。因为内核1. 内核过于复杂,操作困难。2.内核也不想都去直接操作,导致各种问题。就像开车,我并不关心,方向盘怎么操作变向的,我只需要知道转向大方向。此时shell应运而生,shell就是方向盘,内核就是车前轮。我们想转弯只需要转方向,并需要关心车轮怎么变的。liunx操作系统中,又两种用户,普通用户和root用户。t就是粘滞位 粘滞位限制该文件内的所有文件,只有拥有者和root可以删除,其他人不能删除。liunx内核模拟图。原创 2024-02-23 16:27:47 · 361 阅读 · 0 评论 -
Liunx基础指令 一
注:文件系统中的inode: 在文件系统中,特别是类Unix文件系统,每个文件和目录都有一个唯一的inode号。通过inode,文件系统可以快速定位和管理文件的元数据(例如权限、所有者、修改时间等),而无需查找文件名。如 ls -al a:显示隐藏文件 l: 显示详细信息。但是 此时的重定向删除了我们的原来的内容,这时我们应该使用追加重定向 >>touch命令是修改文件的命令 包括修改时间 创建文件。ls -d ls是只显示目录,不显示目录文件。ls -ld 就是ls -l±d 同时命令。原创 2024-02-21 21:59:24 · 296 阅读 · 0 评论 -
Liunx基础指令 二
管道是链接两个进程的工具,前一个进程的结果是后一个进程变量。相当于 fun2(fun1)的关系。find 作用为查找文件位置 ,必须是在指定目录下查找。date ——显示当前自己机器的时间。grep是在指定文件中查找关键字的工具。后面会重点学,我们举个简单的例子。sort命令就是按照阿斯科码排序。我们要拿到 第五,第六行的方法。uniq 是不显示重复行用的。原创 2024-02-22 12:51:48 · 360 阅读 · 0 评论