
Linux
文章平均质量分 68
日常学习总结
子春_贰叁
Because we are young and fearless
展开
-
Linux下文件的X权限
Linux的文件和目录的权限,只有RWX三种r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需转载 2021-06-03 15:21:21 · 2710 阅读 · 0 评论 -
Linux常用指令
文章目录目录相关指令lspwdcdmkdirrmdirrmcpmv文件相关指令touchcatmorelessheadtail文件的压缩/解压缩指令tar文件的匹配查找指令findgrep其它指令mansuchmodchownchgrpumask目录相关指令ls语法:ls[选项][目录或文件]功能:对于目录,列出该目录下的所有子目录与文件对于文件,列出文件名和其它信息常用选项:ls -a列出目录下所有文件,包括以" . "开头的隐藏文件ls -r对目录反向排序原创 2021-02-06 14:48:09 · 485 阅读 · 0 评论 -
进程与线程间的区别
1.(根本区别)进程是系统分配资源的基本单位,线程是cpu调度执行的基本单位2.资源开销:不同进程之间会有独立的代码和数据空间,切换进程开销较大,而线程是轻量级的进程,同一线程组下的线程共享代码和数据空间,但是线程之间有着各自独立的运行栈与程序计数器,优先级,切换线程开销小3.内存分配:进程之间有着独立的地址空间和资源,同一进程组中的线程共享同组的地址空间与资源4.影响关系:一个进程崩溃后不会影响其它进程,但是一个线程崩溃后会导致整个进程崩溃5.执行过程:进程有着独立的程序入口,执行序列,程序出口.原创 2021-01-29 18:42:05 · 244 阅读 · 1 评论 -
多路转接IO之select,poll,epoll
文章目录selectpollepoll什么是多路转接IO用来实现大量描述符的就绪事件监控,可以在程序中能够只针对就绪的描述符进行IO操作,提高效率,避免对没有就绪的描述符进行操作导致的阻塞,避免对大量没有就绪的描述符进行操作带来的效率降低IO就绪事件:IO事件的就绪(可读/可写/异常)可读事件:一个描述符当前是否有数据可读,可写事件:一个描述符当前是否可以写入数据(一般对于socket来说)异常事件:一个描述符是否发生了某些异常(比如连接断开,挂起之类)selectselect系统调用是原创 2021-01-29 18:09:23 · 251 阅读 · 1 评论 -
IO模型之阻塞IO,非阻塞IO,信号驱动IO,异步IO,多路转接IO
阻塞IO为了完成IO操作,发起调用,调用结果返回之前则一直等待,直到完成,这个过程中为阻塞状态在等待的过程中,什么都不做,直到条件具备才进行下一步操作非阻塞IO为了完成IO操作,发起调用,若不具备完成条件,则立即报错返回(通常需要循环操作)当进程等待内核数据时,进程不断询问内核是否完成,直到内核数据准备完成,这个过程是一个轮询过程非阻塞IO代码操作#include<unistd.h>#include<fcntl>int fcntl(int fd,int cmd,..原创 2021-01-29 17:24:35 · 354 阅读 · 0 评论 -
静态链接和动态链接是什么?
程序的运行过程分为两个阶段,分别为编译阶段和链接阶段,而编译阶段又分为三部分:预编译,编译,汇编预编译(生成.i文件)展开头文件,宏替换,条件编译,去掉注释编译(生成.s文件)检查错误,语法分析,生成汇编代码汇编(生成.0文件)将汇编代码转换为二进制链接(生成.exe文件)合并段表,将目标文件链接到一起接下来看几个概念目标文件:在Linux系统下,由编译器将源代码编译后生成的文件叫做目标文件(Linux下的 .o 文件),所以目标文件指的就是源代码编译原创 2021-01-29 15:27:52 · 1857 阅读 · 0 评论 -
什么是单例模式及如何实现?
单例模式是什么?经典常用的一种设计模式,类中只有一份实例化的对象就叫做单例模式单例模式作用:防止多个相同的实例化对象可能带来的数据混淆有两种方法可以实现单例模式,饿汉方式和懒汉方式饿汉方式实现单例模式(空间换时间)饿汉方式:资源的程序初始化的时候就去加载–后边使用的时候就能直接调用(实例在程序初始化的时候完成资源加载初始化)这种就是饿汉方式通过static修饰资源,则所有对象共用一份资源,并且在程序初始化时就会申请资源–不涉及线程安全template <typename T>cl原创 2021-01-17 15:51:21 · 1000 阅读 · 2 评论 -
什么是线程池?
线程是什么?线程是进程中的一条执行流,在Linux下通过pcb实现,同一个进程中可以有多个线程,这些线程共用进程的大部分资源,共用同一个虚拟地址空间,所以也被叫做轻量级进程所以顾名思义,线程池就是线程的池子,有很多线程,但是数量不会超过池子的限制。需要用到多执行流进行任务出路的时候,就从池子中取出一个线程去处理,线程池就类似于一个实现了消费者业务的生产者与消费者模型线程池的应用场景:有大量的数据请求,需要多执行流并发/并行处理线程池优点:1.避免线程因为不限制创建数量导致的资源耗尽风险2.任务原创 2021-01-17 15:43:10 · 2076 阅读 · 1 评论 -
银行家算法及代码实现
如何避免死锁?在资源分配的过程中,防止系统进入不安全的状态中,避免死锁的发生安全状态:系统能按照某种进程推进顺序为每个进程分配其所需的资源,直到满足每个进程对资源的最大需求,使得每个进程都能获得其所需的资源在了解了什么是安全状态之后,就大概知道了避免死锁的基本思想,就是确保系统始终处于安全状态。当一个系统开始时处于安全状态时,有一个进程请求一个可用资源时,系统需对该进程的请求进行计算,若将资源分配给进程后系统仍处于安全状态,才将资源分配给进程。银行家算法银行家算法是最避免死锁的具有代表性的算法原创 2021-01-09 14:02:12 · 1513 阅读 · 0 评论 -
什么是死锁?
文章目录什么是死锁?如何导致死锁?如何预防死锁?如何避免死锁?银行家算法死锁的检测死锁的解除什么是死锁?死锁指的是两个或两个以上的进程在执行过程中,由于竞争资源或者因为访问推进的顺序不当,造成各进程之间互相等待导致流程无法推进,此时就造成了死锁,所以如果没有外力的作用下,就会构成导致无限循环等待的局面如何导致死锁?死锁产生的四个必要条件互斥条件一个资源每次只能被一个执行流使用不可抢占条件一个执行流因请求资源而阻塞时,对已经获得的资源保持不变请求和保持条件一个执原创 2021-01-09 13:56:47 · 171 阅读 · 0 评论 -
生产者消费者模型总结
什么是生产者消费者模型?生产者消费者模型是一种思想:将生产者与消费者分别放到不同的执行流(线程)中完成,中间增加一个数据缓冲区,一个线程作为生产者生产数据,另一个线程作为消费者处理数据,不同线程通过中间的数据缓冲区进行交互(这里的数据缓冲区常用一个阻塞队列),生产者生产出数据后,放到缓冲区中不需等待消费者,而消费者需要数据时直接从缓冲区中读取,平衡了生产者与消费者处理数据的能力生产者与消费者模型优点:1.解耦合2.支持忙闲不均3.支持并发 (并发:轮询处理,并行:同时处理)此处的原创 2021-01-08 11:22:52 · 600 阅读 · 0 评论 -
线程安全总结
文章目录线程安全线程安全互斥的实现线程安全同步的实现通过条件变量实现通过信号量实现线程安全在了解线程安全之前我们需要先了解两个名词临界资源:多线程执行流共享的资源临界区: 线程内部访问临界资源的代码线程安全是什么:多个执行流同时对临界资源争抢访问的操作不会造成数据二义性线程安全的实现:同步:通过条件判断保证对临界资源访问的合理性互斥:通过同一时间对临界资源访问的唯一性实现对临界资源访问的安全性线程安全互斥的实现互斥:同一时间只有一个执行流访问资源,保证临界资源的安全性互斥的实现:互原创 2021-01-06 16:19:13 · 172 阅读 · 0 评论 -
线程概念与线程控制总结
文章目录进程与线程的对比线程控制线程创建线程终止线程等待与分离什么是线程?线程是进程中的一条执行流,在Linux下通过pcb实现,同一个进程中可以有多个线程,这些线程共用进程的大部分资源,共用同一个虚拟地址空间,所以也被叫做轻量级进程在Linux下pcb可以实现程序的调度运行,因此在实现线程的时候,使用了pcb来实现创建线程会伴随在内核中创建一个pcb来实现程序的调度,作为进程中的一条执行流进程就是多个线程的一个合集,并且这个进程中的所有pcb共用进程中的大部分资源因此这些pcb在Linux下的线程实原创 2021-01-05 18:21:17 · 215 阅读 · 0 评论 -
进程信号总结
文章目录进程信号介绍信号的注册与注销信号的处理信号的阻塞信号的基本应用进程信号介绍什么是进程信号:是一个软件中断,操作系统通过信号告诉进程发生了某个事件,并且打断进程当前的操作,去处理这个事件1~31号信号:非可靠信号(有可能会信号丢失–事件丢失),每个信号都有具体的对应事件32~64号信号: 可靠信号(信号不会丢失),没有具体对应的事件信号的生命周期信号的产生->信号在进程中注册->信号在进程中注销->信号的处理信号的产生:硬件:ctrl + c / ctrl + z/原创 2021-01-05 17:50:07 · 189 阅读 · 0 评论 -
进程间通信总结
文章目录进程间通信方式管道匿名管道pipe命名管道fifo消息队列共享内存信号量什么是进程间通信? 进程间通信指的是在进程之间进行数据的传输(信息交换)为什么需要进程间通信?对于操作系统来说无论是应用程序还是系统程序,都需要针对其中不同的功能创建不同的进程,但是因为进程具有独立性,每一个进程都有着独立的虚拟地址空间,不同的进程无法访问同一块空间,所以进程之间无法直接通信。因而引入了进程间通信。操作系统会根据不同的通信场景而提供不同的通信方式进程间通信方式管道什么是管道?管道是一种以字节为单位原创 2020-11-20 22:55:05 · 311 阅读 · 0 评论 -
进程控制
文章目录进程创建进程终止进程等待进程替换进程创建什么是进程创建?进程创建通常为父进程创建子进程的过程为什么需要创建一个子进程?有时候需要父子进程同时执行不同的代码段,比如父进程在等待客户端请求时,需要子进程处理相关请求进程创建函数:pid_t fork(void); – 创建一个子进程—父子进程数据独有,代码共享fork函数返回值:父进程返回子进程的pid,子进程返回0getpid():函数可以获取子进程id;getppid():可以获取父进程id使用fork函数创建子进程是在内核中调用原创 2020-11-13 21:56:35 · 316 阅读 · 0 评论 -
什么是进程?
文章目录什么是进程?进程的虚拟地址空间什么是进程?进程是一个运行中的程序,是程序的动态描述,每一个进程都有它自己的地址空间(一般包括文本区域,数据区域,堆栈)。进程是操作系统基本的分配单元和执行单元,在Linux下进程是一个task_struct结构体,叫做PCB,里面存放着进程的相关信息(如进程当前的状态,执行到的位置信息等等)Linux下的task_struct结构体内容:名称作用标识符描述本进程的唯一标识符,用来区别其它进程优先级用来处理和其它进程之间的顺序原创 2020-11-13 21:14:26 · 1565 阅读 · 0 评论