Linux知识总结
文章平均质量分 79
码农印象
修炼的过程中,最好有人和你并肩而行,共同成长!努力做一个文邹邹的工具人,你做得越多,你知道的越多......
展开
-
Linux系统高级编程系列教程
01、什么是系统调用? 02、Linux系统调用之I/O操作(文件操作) 03、文件描述符的复制:dup(), dup2() 多进程实现多任务 04、进程的介绍 05、Linux可执行文件结构与进程结构 06、多进程实现多任务(一):fork() 07、多进程实现多任务(二):vfork() 08、进程的控制:结束进程、等待进程结束 09、Linux特殊进程之僵尸进程 10、Linux特殊进程之孤儿进程 11、Linux特殊进程之守护进程 12、进...转载 2020-11-24 12:05:35 · 1173 阅读 · 0 评论 -
【shell】` `和$()的区别及eval命令
命令代换在shell编程中,一共有两种命令代换方式:反引号和$()。shell先执行该命令,然后将输出结果立刻代换到当前命令行中。比如:我们用反引号替换date命令,$()代换pwd:当然,``和$()仅仅是命令代换,相当于多产生了一个别名,而并没有将原先命令替换。既然是两种命令代换,那么是否有什么区别或适用场景吗?在多层次的符合代换命令中,反引号需要添加"\"转义,而$()则不需要,...原创 2019-11-04 23:20:03 · 546 阅读 · 0 评论 -
【Linux】Linux较Window的优越性
前言1. Linux2. Linux系统的特点?3. win系统的特点4. 区别5. 总结:Linux和Windows是两种操作系统,对于服务器运维的人来说,在为服务器选择操作系统系统的时候,是选择Linux还是Windows是让人困惑的事?从用户群来说Linux是一个以开发者为中心的操作系统,而windows是以消费者为中心的操作系统,这也是两个操作系统作为根本的区别。简单来讲,两个系统的选...原创 2019-03-09 18:18:25 · 324 阅读 · 0 评论 -
【Linux】浅析进程池与线程池
前言一、池的引入二、进程池与线程池三、简单线程池的模拟实现池是一种用·空间换时间的行为,比如我们常见的计算机的本地缓存、代理服务器、高速缓存等都是池或池的变种,它有效的避免了不同设备之间的频繁切换,从而提高了运行效率。一、池的引入池是·一组资源的集合,有静态、动态资源分配之分。一组资源在服务器启动之初就完全被创建并初始化,称之为静态资源分配。当服务器运行时,如果需要资源,就可以直接从池中获...原创 2019-03-21 17:44:04 · 942 阅读 · 0 评论 -
【Linux】内存管理
转自: https://www.cnblogs.com/ralap7/p/9184773.html前言进程与内存进程内存空间进程内存管理进程内存的分配与回收如何由虚变实!系统物理内存管理物理内存管理(页管理)内核内存使用内核非连续内存分配(Vmalloc)程序里主要应解决两个问题:摘要:本章首先以应用程序开发者的角度审 视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理...转载 2019-03-12 00:47:21 · 192 阅读 · 0 评论 -
【Linux】进程调度算法
前言1. 先来先服务 (FCFS,first come first served)2. 最短作业优先(SJF, Shortest Job First)3. 最高响应比优先法(HRRN,Highest Response Ratio Next)5. 时间片轮转算法(RR,Round-Robin)6. 多级反馈队列(Multilevel Feedback Queue)1. 先来先服务 (FCFS,fi...转载 2019-03-17 00:51:02 · 223 阅读 · 0 评论 -
【Linux】进程同步方法
进程同步的四种方法1、临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。优点:保证在某一时刻只有一个线程能访问数据的简便办法缺点:虽然临界区同步速度很快,但却只能用来同步本进程内的线程,而不可用来同步多个进程中的线程。 2、互斥量(Mutex):为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似...转载 2019-03-17 18:57:32 · 2237 阅读 · 0 评论 -
【Linux】malloc 与共享内存原理区别
本文主要分析内存以及I/O相关的系统调用和库函数的实现原理,根据原理给出在使用过程中需要注意的问题和优化的侧重点,本文涉及到的系统调用包括readahead,pread/pwrite,read/write,mmap,readv/writev,sendfile,fsync/fdatasync/msync,shmget,malloc。本文先简单介绍应用程序对内存的使用以及I/O系统对内存的使用的...原创 2019-12-13 18:22:27 · 776 阅读 · 0 评论 -
【Linux】十问 Linux 虚拟内存管理
Linux 的虚拟内存管理有几个关键概念:每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址虚拟地址可通过每个进程上页表与物理地址进行映射,获得真正物理地址如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。基于以上认识,这篇文章通过本人以前对虚拟内存管理的疑惑由浅...原创 2019-12-13 18:21:21 · 235 阅读 · 0 评论 -
【Linux】守护进程 : 充满正能量的Orphan
前言守护进程的基本特性守护进程的创建规则守护进程的两次fork继僵尸与孤儿进程之后,我们终于迎来了一个充满正能量的进程,但是很可惜,它仍旧是一个孤儿进程。但守护进程用途很广泛,大多数的Linux服务器都是用守护进程来实现的,比如Internet服务器inetd,Web服务器httpd等。守护进程的基本特性守护进程也称·精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且...原创 2019-07-19 20:56:33 · 295 阅读 · 0 评论 -
【Linux】线程安全与可重入函数
前言线程安全可重入函数多线程程序处于一个多变的环境当中,可访问的全局变量和堆数据随时可能被其他线程改变。数据同步从根本上说是一个很难的问题,它引出了在普遍的顺序中不会出现的问题,线程安全应运而生。线程安全线程安全是多个线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取结束,其他线程才可使用,保证了数据的一致性。与之对应的则是线程不安全,...原创 2019-07-23 13:44:52 · 279 阅读 · 0 评论 -
【Linux】多线程编程
前言一、创建、等待、分离与结合1. 多线程的引入2. 线程的共享与私有3. 线程执行模型4. 创建线程5. 等待线程一、创建、等待、分离与结合在·Linux kernel中是不存在线程的,或者说没有真正意识上的线程,Linux下的线程是用进程来模拟的,线程的实现就是多个共享数据信息的进程,我们称之为轻量级进程。1. 多线程的引入多线程是指操作系统在单个进程内支持多个并发执行路径的能力,线程...原创 2019-07-23 13:56:59 · 309 阅读 · 0 评论 -
【Linux】生产者消费者模型
前言生产者消费者模型(一)(模拟单线程的互斥与同步)1. 条件变量2. 生产者消费者模型3. 生产者消费者模型的三大特性4. 基于单线程的生产者消费者模型生产者消费者模型(二)(基于环形队列)1. 多元信号量2. 环形队列模拟生产者消费者模型生产者消费者模型(一)(模拟单线程的互斥与同步)在实现的软件开发过程中,经常会碰到如下情景:·某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的...原创 2019-07-23 14:59:42 · 324 阅读 · 0 评论 -
【Linux】进程间通信之管道
前言原创 2019-03-02 17:26:22 · 426 阅读 · 0 评论 -
【Linux】进程间通信
一、进程间通信目的二、进程间通信种类三、管道四、消息队列五、共享内存1. 共享内存初识在Linux中,每个进程都有属于自己的进程控制块(PCB)和地址地址空间(Addr Space),并且都有一个与之对应的页表,负责将进程的虚拟地址与物理地址进行映射,通过内存管理单元(MMU)进行管理。两个不同的虚拟地址通过页表映射到物理空间的同一块区域,它们所指向的这块区域即共享内存。共享内存是最...原创 2019-03-02 17:31:29 · 264 阅读 · 0 评论 -
【Linux】gcc编译过程
gcc编译过程: 在使用gcc编译程序时,编译过程分为4个阶段。 (1)预处理 (2)编译 (3)汇编 (4)链接 Linux程序员可以根据自己的需要让gcc在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其他常用的编译器一样,gcc也提供了灵活...原创 2018-08-21 13:11:30 · 851 阅读 · 0 评论 -
【Linux】exit(0)&exit(1)&return
exit()与return的区别: exit(0):正常运行程序并退出程序,调用时程序运行正常结束; exit(1):非正常运行导致退出程序,调用时程序运行非正常结束; return():返回函数,若在主函数中,则会退出函数并返回一值,在其他函数中意味着函数调用完毕,并返回一个值。 本质上: return返回函数值,是关键字; exit 是一个函数。...原创 2018-08-20 18:41:26 · 9170 阅读 · 0 评论 -
【Linux】CGI机制和CGI程序
1. CGI机制 CGI(common gateway interface)——通用网关接口,是一个web服务器提供信息服务的接口。 通过CGI接口,web服务器就能获得客户端提交的信息,转交给服务器端的CGI程序,最终将结果返回给浏览器。 组成CGI通信系统有两部分:一部分是HTML页面,就是客户端浏览器显示上显示的页面,另一部分是服务器上的CGI程序。 CGI是连通w...原创 2018-08-22 20:06:59 · 2196 阅读 · 0 评论 -
【Linux】用mv命令替换rm命令
前言:众所周知,很多人都使用过这个命令 “rm -rf” 命令 ,但当使用不当时,那种感觉真的爽爆了,因为可以使自己长时间的心血,顿时灰飞烟灭。 但经过琢磨思索,我们可以修改rm命令,将rm命令改为mv命令,移动到指定文件夹而不再是强力删除。今天,特此在此记下笔记,以提醒自己,更重要的是可以让后继者可以避开这个弯路,直奔光明顶。敲黑板啦 !!!重点来了因为在网上搜了一些教...原创 2018-09-04 22:48:22 · 4496 阅读 · 3 评论 -
【Linux】更新yum源及Linux有趣的命令
前言在使用Linux过程中,自带的yum源包,不能满足的情况下,这个时候就可以考虑升级yum源了。国内用的比较多的是163镜像地址为http://mirrors.163.com/.help/centos.html 。(阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/)如笔者在运用yum安装时出现如下情况:[Hunter@localhost /]...原创 2018-09-08 22:55:57 · 11215 阅读 · 3 评论 -
【Linux】Linux调试器-gdb
前言:1.gcc/g++编译出来的二进制程序,默认是release版本的,没有调试信息,且是动态链接2.要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项,产生调试信息3.使用gdb调试的程序一定是运行时错误,语法错误会在编译时候报错gdb的使用:在学习gdb的过程中一定要和在vs中调试代码对应起来:gdb 可执行文件开始调试Ctrl+d或者q退出gdb下边是...原创 2018-09-17 22:02:10 · 307 阅读 · 0 评论 -
【Linux】开发工具
专题vim查找资料, 配置插件.查找资料, 调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).为什么调试的时候需要编译选项中添加 -g. 调研readelf命令.在Linux下实现进度条程序. 通过makefile进行编译. 完成一个彩色的进度条.调研Li...原创 2018-09-26 15:20:44 · 1809 阅读 · 0 评论 -
【Linux】设置粘滞位((Sticky Bit))权限/ACM的修改
前言Linux下有一个用于存放临时文件的目录/temp,每一个用户产生的临时文件都存放在/temp目录下,而且每个用户都对于这些文件具有写权限,为了防止用户对于除自己之外的其他用户的文件进行删除操作,所以产生了粘滞位。粘滞位简洁普通文件的sticky位会被Linux内核忽略,目录的sticky位表示这个目录里的文件只能被owner所有者和root超级管理员删除。粘滞位(Sticky Bit...原创 2018-09-28 00:56:56 · 1791 阅读 · 0 评论 -
【Linux】使用gdb快速定位core dump
段错误原创 2018-09-28 15:35:11 · 7520 阅读 · 0 评论 -
【Linux】gdb调试多线程与多进程
前言在多线程编程时,当我们需要调试时,有时需要控制某些线程停在断点,某些线程继续执行。有时需要控制线程的运行顺序。有时需要中断某个线程,切换到其他线程。这些都可以通过gdb实现。下图为多线程与多进程调试的通用常用命令,应该熟练掌握下面几种命令的使用。gdb调试多线程多线程调试的主要任务是准确及时地捕捉被调试程序线程状态的变化的事件,并且GDB针对根据捕捉到的事件做出相应的操作,其实最终的...原创 2018-09-28 17:51:44 · 1308 阅读 · 0 评论 -
【Linux】进程控制
前言一、进程概念二、进程调度算法1、先来先服务和短作业优先调度算法1.1、先来先服务调度算法1.2、短作业(进程)优先调度算法2、高优先权优先调度算法2.1、优先权调度算法2.1.1、非抢占式优先权算法2.1.2、抢占式优先权算法2.2、高响应比优先调度算法3、基于时间片的轮转调度算法3.1、时间片轮转法3.2、多级反馈队列调度算法三、剖析task_struct结构体, 理解结构体中的各个字段的含...原创 2018-10-23 15:40:16 · 605 阅读 · 0 评论 -
【Linux】基础/IO
前言一、open/read/write/close等文件相关系统调用接口二、纵向对比fd与FILE结构体三、编写简易版shell,支持输入/输出/追加重定向功能四、编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用。1.什么是静态库和动态库2.动态库和静态库的优缺点及区别一、open/read/write/close等文件相关系统调用接口谈到系统调用接口,首先回顾一下...原创 2018-10-25 17:08:46 · 248 阅读 · 0 评论 -
【Linux】文件搜索命令find/which/whereis/grep/locate的用法/关机重启命令。
@原创 2018-10-28 19:44:44 · 491 阅读 · 0 评论 -
【Linux】信号处理机制
那就原创 2018-11-10 00:40:29 · 3454 阅读 · 0 评论 -
【Linux】多线程详述
前言一、线程的概念(复习)-铺垫1.理解(Linux平台)2.线程的资源3.线程优点4.线程缺点二、Linux线程ID和进程ID一、线程的概念(复习)-铺垫进程是分配系统资源的基本单位线程是一个标准的进程(一个执行流的进程)Linux线程图解1.理解(Linux平台)线程是在进程的内部运行的:线程是在进程的地址空间内运行的,共享一份虚拟地址空间。线程大部分资源都是共享的。(共用...原创 2019-03-04 23:25:08 · 259 阅读 · 0 评论 -
【Linux】初踏足Linux的大门
前言: 对于长期扎根在Windows这样普罗大众系统中的我,以前并没有任何不适,实话说,如果不是我们学期末课设需要学习CentOS,我应该也不会这么快踏进Linux的大门,从昨天装系统到今天,要说真正体验到了CentOS的快捷那是有点不太现实,但是它确实给了我很多惊喜。Linux下权限、重要命令及各文件夹的用途介绍: 进入目录需要哪些权限, 在目录中执行增删查(cd, ...原创 2018-07-06 23:44:54 · 784 阅读 · 0 评论