
Linux
文章平均质量分 75
分享Linux的基本操作指令和一些常见的Linux用法
、山有木兮木有枝
语法只是工具,算法才是灵魂
展开
-
Linux下 &、&&、|、||、>、>>的区别
1. & 表示将任务放后台运行log.text & // 把log.text放在后台运行2. && 表示当上一条命令执行成功时,才会执行下一条命令(如果上一条命令未执行成功,下一条命令则不会进行)cd XX/ && vi test.c //进入XX目录后创建test.c3. | 管道符(将上一条命令的输出当作下一条命令的输入参数)ps -aux | grep xxx // 在ps打印出的原创 2021-04-14 10:52:42 · 1435 阅读 · 0 评论 -
Linux 下的多路转接/复用技术和四种典型的高级IO介绍
多路转接/复用概念多路复用是指以同一传输媒质(线路)承载多路信号进行通信的方式。各路信号在送往传输媒质以前,需按一定的规则进行调制,以利于各路已调信号在媒质中传输,并不致混淆,从而在传到对方时使信号具有足够能量,且可用反调制的方法加以区分、恢复成原信号。作用:用于针对大量描述符进行 IO 就绪事件的集中监控,让我们的进程能够针对就绪的描述符进行操作,避免了对没有就绪的描述符进行操作而导致的阻塞,同时也避免了对大量没有就绪的描述符进行操作而带来的效率低下。四种典序的IO模型1.阻塞IO发起原创 2020-08-16 22:56:06 · 488 阅读 · 0 评论 -
协程实现网络服务器
1. 协程介绍2. 函数介绍3. 项目代码原创 2020-07-30 13:42:01 · 791 阅读 · 0 评论 -
网络基础总结 (TCP/IP模型及常见协议解析)
OSI 七层参考模型应用层表示层会话层传输层网络层数据链路层物理层后来因模型太过繁琐被压缩成了 TCP/IP 五层参考模型。TCP/IP 五层参考模型应用层负责应用程序之间的沟通;是七层模型中最靠近用户的一层,为用户提供应用接口,也为用户直接提供各种网络服务。包含的协议有:HTTP、DNS、HTTPS、FTP、SNMP、DHCP、TELNET、TFTP等。传输层负责应用程序之间的数据传输;是通信子网和资源子网的接口和桥梁,主要向用户提供可靠的端到端的差错和流量控制,保证原创 2020-07-12 19:48:19 · 2521 阅读 · 0 评论 -
Linux下模拟 TCP 套接字编程
TCP套接字编程步骤客户端创建套接字绑定地址信息(不推荐,因为系统会帮你绑定,这样能预防端口冲突)向客户端发送连接请求发送/接收数据关闭套接字服务端创建套接字绑定地址信息(客户端必须自己绑定,系统不会帮你)将套接字设为监听状。此状态下一旦接收到连接请求,就会创建一个新的 socket 并放入未完成连接队列里面去,等到连接建立完成,就会将它再次转到已完成连接队列里去。(若未完成连接队列已满则新的连接请求会被丢弃,直到腾出空间才再次建立连接)获取新连接。从已完成连接队列中取出一个套接原创 2020-06-03 23:43:40 · 709 阅读 · 2 评论 -
Linux下 模拟 UDP套接字编程
套接字(socket)概念套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。通信的实质两个主机之间的通信,可以认为是两个进程的通信,也可以认为其实是两个socket 套接字之间的通信。通信五元组源 IP 地址源端口号目的 IP 地址目的端口号传输层协议(通过通信五元组就能够标识一条通信道路)流程图示套原创 2020-05-27 12:24:50 · 473 阅读 · 0 评论 -
Linux下信号量概念解析及简单代码演示
信号量概念用于实现进程、线程间的同步和互斥关系(主要用来实现同步),本质上是由一个计数器和一个 pcb 等待队列构成。同步通过自身的计数器堆资源数目进行计数,并通过计数判断进程、线程是否满足访问临界资源的条件,若满足则进行访问,若不满足则阻塞等待直到被唤醒。互斥只需要保证计数器的计数不大于 1 即可保证一个资源在同一时间内只被一个进程、线程所访问。(<= 0 都进等待队列)函数功能接口1. 定义信号量 sem_t sem; 2. 初始化信号量 int sem_ini原创 2020-05-17 18:41:50 · 500 阅读 · 0 评论 -
Linux下线程的单例模式和简单代码演示
单例模式概念常用的一种典型的设计模式,单例模式的方法创建的类在当前进程中只有一个实例,一份资源只能被申请加载一次。实现饿汉模式:在资源的程序还在初始化的时候就会加载,保证后面能够直接进行使用。(不涉及线程安全问题 )优:使用的过程流畅缺:可能会加载很多不需要的资源,导致程序初始化缓慢懒汉模式: 资源在使用的过程中发现还没加载则申请加载。(游戏中常用且涉及线程安全)优:程序初始化快缺:使用过程中衔接不流程,并且在第一次运行某个模块时会比较缓慢,因为此时正在加载相应的资源需注意的问题原创 2020-05-16 23:13:29 · 182 阅读 · 0 评论 -
Linux下线程池概念详解以及代码演示
线程池概念多个线程的组合,但是总数量不会超出池子的限制。是多执行流并发/并行处理,每当任务到来都会从池子里取出一个空闲的线程去进行处理。产生原因线程若是不限制数量的创建,在峰值的压力下,线程创建过多,会导致系统资源耗尽,所以创建线程池来约束线程数量。处理一个线程的总时间(T) = 创建线程的时间(T1) + 任务的处理时间(T2) + 销毁线程的时间(T3) , 若是 T2/T 所占比不够高的话会造成大量的时间浪费,所以创建线程池来统一创建和销毁线程,节约了时间成本,提高了效率。构成原创 2020-05-16 21:42:09 · 303 阅读 · 0 评论 -
Linux 下同步与互斥、死锁的概念及其操作详解、生产者消费者模型代码演示
同步概念通过同一时间内访问的唯一性保证临界资源访问的安全性。互斥的实现通过 互斥锁/互斥量 来实现。互斥锁本身是一个只有 0/1 的计数器,描述了一个临界资源当前的访问状态。所有的执行流在访问临界资源前都必须判断当前的临界资源是否允许访问。如不允许访问则执行流等待,否则可以访问临界资源,但是在访问期间需要将临界资源的访问状态改为不可访问状态,防止其他的外来访问干扰。函数接口 #...原创 2020-04-28 17:43:13 · 310 阅读 · 0 评论 -
Linux 下多线程的概念及其具体操作
多线程目的多了实现多任务处理方式。多任务处理多创建几个进程,能够串行化的完成多个任务;以前我们说一个进程就是一个 pcb ,是操作系统对一个运行中程序的描述。而现在我们说的线程其实是进程中的一条执行流,该执行流在 Linux 下通过 pcb 实现,因此实际上线程就是一个 pcb, 然而 pcb 却代表一个进程,并且 Linux 下的 pcb 共用一个虚拟地址空间,相较于传统 pcb 更加...原创 2020-04-28 13:29:14 · 218 阅读 · 0 评论 -
Linux下信号捕获/信号阻塞/未决信号/可重入/不可重入/volatile关键字/原子操作/CSA/乐观/悲观锁 的概念解析
信号作用:信号是进程间传递信息的一种方式,是一个软中断,用来通知进程发生了异步事件。比如:下课铃声就是一个信号,它提醒你该中断学习的状态去娱乐放松干一些其他的事情。以下就是 Linux 下的所有信号:进程的分类:1 ~ 31 号信号: 每一个都具有对应的系统事件(非可靠信号,会丢失事件)。34 ~ 64 号信号: 后期扩充的信号,无对应的系统事件(可靠信号)。32 ~ 33 号...原创 2020-04-13 16:39:27 · 497 阅读 · 0 评论 -
Linux下 打包 、 下载软件 、文件操作指令详解
压缩/解压缩作用: 将文件/文件夹进行打包,或者将打包的文件进行解包处理// 压缩/解压缩 有3中格式1. zip/unzip (常用) 2. tar (常用) 3. gzip/gunzip 4. bzip2/bunzip2 鉴于其他两种不怎么常用,下面就主要列举 tar 和 zip 的参数1.tar参数作用-c建立压...原创 2020-04-11 12:18:17 · 335 阅读 · 0 评论 -
IPC--命名/匿名管道通信详解
进程间的通信(IPC)为什么要提供进程间的通信呢?因为进程具有独立性,每一个进程都有自己独立的虚拟地址空间,所有的操作都在自己的虚拟地址空间内完成,因此进程之间无法直接通信,所以就有了管道的出现。如何提供通信方式呢?给多个进程之间提供一个大家都能够进行访问的传播介质,并且该介质也会根据不同的通信场景提供不同的通信方式,大家就能够进行通信了。通道:本质:是内核中的一块缓冲区,若干进程可访...原创 2020-04-11 10:56:21 · 472 阅读 · 2 评论 -
IPC--共享内存操作详解
共享内存特性: 进程间最快的通信方式。本质: 在物理内存上开辟一块内存空间,多个进程可以将同一块物理内存空间映射到自己的虚拟空间中,再通过自己的虚拟地址直接访问此空间,通过此方式实现数据的共享。生命周期: 生命周期随着Linux系统内核变化,不会随着进程的退出而释放。需要重启系统内核或者手动释放,否则将一直存在于系统内核。共享内存的操作流程:1> 创建虚拟内存空间 ---- 在物理...原创 2020-04-06 23:02:15 · 1793 阅读 · 0 评论 -
Linux下动/静态库的打包、数据的存储、软/硬链接详解
Linux下数据的存储文件系统:超级块 / inode bitmap / data bitmap / inode / data文件的存储流程通过超级块获取到各区域的地址,然后通过节点位图(inode bitmap )和数据位图( data bitmap)在二者的区域中快速找到空闲的 inode 节点和空闲的数据块将文件数据存储到空闲的数据块中;在将文件的元信息存储到 inode 节点中。...原创 2020-04-04 22:56:28 · 244 阅读 · 0 评论 -
Linux下标准IO接口和系统调用IO接口结构和用法详解
标准IO接口1. fopen 和 fclose 函数作用:打开指定文件和关闭指定文件FILE * fopen ( const char *pathname, const char *type);pathname : 想要打开的文件名称和路径type :文件的打开方式返回值 : 成功返回文件指针,失败返回NULLFILE * fclose ( const char *pathname...原创 2020-04-02 22:28:09 · 537 阅读 · 0 评论 -
Linux中用户和组的管理常用命令
用户1.useradd此命令用来添加用户账号,并为该账号设置用户名、用户组、主目录、登陆Shell等,语法格式:useradd [选项] 用户名命令选项含义-d指定用户登陆时的起始目录-c给用户加上备注文字-e指定账号的有效期限-f指定密码过期后多少天即关闭该账号-g指定用户所属的群组-s指定用户登入后所使用的Shell...原创 2020-03-14 20:21:46 · 721 阅读 · 0 评论 -
Linux 下进程属性(fork、exit、wait、execve)/进程控制函数/虚拟地址/内存管理方式/缺页中断的概念详解
进程的属性1.进程标识符(PID): 进程描述task_struct 结构体中的 pid 字段可以唯一标识一个进程,称为进程标识符PID。进程最主要的属性就是进程号(PID)和它的父进程号(PPID),两者都是非零正整数。每个进程的PID不会相同,系统调用 getpid 来获得进程标识符。一个PID唯一地标识一个进程。一个进程创建一个新进程称为创建子进程,创建子进程的进程称为父进程。所有的进程......原创 2020-03-11 22:04:29 · 1614 阅读 · 0 评论 -
进程概念(含PCB)和操作系统以及Shell的简单介绍
进程的概念进程:操作系统对一个运行中的程序的描述,通过这个描述实现对程序的调度,进程也可以理解成是一个PCB。程序:一系列有序的指令集合。二者的区别:1)进程是动态的,而程序是静态的。(2)进程有一定的生命期,而程序是指令的集合。没有建立进程的程序不能作为一个独立单位得到操作系统的认可。(3)一个程序可以对应多个进程,但一个进程只能对应一个程序。操作系统和Shell操作系统: 内核...原创 2020-03-11 19:25:14 · 516 阅读 · 0 评论 -
进程的概述和系统环境变量
进程的分类根据进程在Linux不同模式下运行分为两类:内核态进程和用户态进程。内核态进程:这类进程运行在内核模式下,执行一些内核指令(Ring 0)。运行在该模式下的代码,可以无限制地对系统存储、外部设备进行访问。用户态进程: 这类进程运行在用户模式下,执行用户指令(Ring 3)。它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务段(TSS)的 I/O...原创 2020-03-11 20:24:29 · 363 阅读 · 0 评论 -
项目管理工具:make/Makefile
Makefile:作用:记录项目构建规则流程的文本文件。格式如下图:声明伪对象: 不管对象是否是最新的,每次都能重新生成。格式: .PHONY : 对象名eg : .PHONY : cleanmake作用:Makefile的解释器,逐行解释执行项目构建规则,完成项目的构建。从当前所在的目录找到Makefile,在Makefile中找到第一个目标对象后 执行命令;完毕后,...原创 2020-03-11 18:04:45 · 443 阅读 · 0 评论