
Linux知识的相关总结
one-77
https://www.cnblogs.com/xieqijiang/p/10949941.html
https://www.linuxprobe.com/linux-command-skill.html
展开
-
Linux下的虚拟地址空间布局图
在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Address-Aware Executables标志也可为1:3)。这并不意味着内核使用那么...原创 2019-07-26 18:41:56 · 576 阅读 · 0 评论 -
Linux下的强大工具gdb的使用(详细)
首先先说一下gdb是什么东西?gdb是GNU开源组织发布的一个强大的UNIX下的程序调试工具。一般来说,gdb主要帮忙你完成下面四个方面的功能:启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所设置指定的断点处停住。(断点可以是条件表达式)当程序被停住时,可以检查此时你的程序中所发生的事。动态的改变你程序的执行环境。让我们在了解两个版本:De...原创 2019-08-02 15:09:36 · 1375 阅读 · 0 评论 -
Linux中主函数的参数和缓冲区的理解
Linux中的主函数如下所示:int main(int argc,char*argv[ ],char *envp[ ]);argc:是传递的参数列表中参数的个数。argv[ ]:是传递的参数列表。envp[ ]:是环境变量。#include <stdio.h>#include <stdlib.h>#include <unistd.h>...原创 2019-08-01 20:06:12 · 185 阅读 · 0 评论 -
Linux中的库函数与系统调用函数详解
库函数:是高层的,完全运行在用户空间,为程序员提供调用真正的在幕后完成实际事务的系统调用的更方便的接口。系统调用函数:通常是用于底层文件的访问,由用户态进行调用,但是在内核态执行。系统调用函数和库函数的区别:1.从程序完成的功能来看:函数库提供的函数通常是不需要操作系统的服务. 函数是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到内核态的。而系统调用是要求操作系统为用户...原创 2019-08-01 19:17:41 · 754 阅读 · 0 评论 -
Linux下的用户态到内核态的切换
对于任何操作系统来说,创建一个进程是核心功能。创建进程要做很多工作,会消耗很多物理资源。比如分配物理内存,父子进程拷贝信息,拷贝设置页目录页表等等,这些工作得由特定的进程去做,所以就有了特权级别的概念。最关键的工作必须交给特权级最高的进程去执行,这样可以做到集中管理,减少有限资源的访问和使用冲突。inter x86架构的cpu一共有四个级别,0-3级,0级特权级最高(内核态),3级特权级最低(用户...原创 2019-08-01 16:39:04 · 521 阅读 · 0 评论 -
静态库和动态库的区别(面试题)
目前以lib为后缀的库有两种,一种为静态链接库,另一种则为动态连接库的导入库。则他们的区别如下:静态库静态函数库的扩展名一般为(.a或.lib),这类的函数库通常扩展名为libxxx.a或xxx.lib 。这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件体积会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,代码装载效率高,移植比较方便,而不再需...原创 2019-08-01 14:59:32 · 2374 阅读 · 1 评论 -
详解软链接和硬链接的区别
软链接:又称符号链接,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。 软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那...原创 2019-08-01 14:18:42 · 586 阅读 · 0 评论 -
线程和进程的区别
线程和进程的区别:线程共享创建线程的进程的地址空间,而进程有各自独立的地址空间; 线程可以直接访问他进程中的数据段,而进程直接从父进程继承数据段,有数据段的拷贝; 线程可以和他进程中的其他线程直接进行通信,进程必须使用进程间通信与同胞进程进行通信; 线程几乎没有开销,而进程有相当可观的开销; 容易创建新的线程,而进程需要父进程的复制; 线程可...原创 2019-08-01 02:06:39 · 145 阅读 · 0 评论 -
Linux下的Makefile的使用(完整)
Makefile,是不是很多Windows下的编程人员没有听说过这个东西,因为那些Windows的IDE都为你做了这个工作。下面我来谈论一下linux下的Makefile的使用。在linux下,makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,你可以在makefile文件中可以定义一系列的规则来指定,哪些文件需要先编译,哪些文...原创 2019-08-01 00:49:19 · 504 阅读 · 0 评论 -
操作系统对进程的管理方式、僵尸进程和孤儿进程
我们在上篇博客中提到了进程的概念,进程是运行中的程序(磁盘上的二进制文件)。今天我们来谈一下操作系统对进程的管理方式。进程控制块(PCB):用来标识一个进程的,它包含了该进程的各个信息。它是task_struct这个结构体。进程的控制符:全称为Process Identifier,就是标识进程唯一的身份标识,所以也成为进程标识符。进程控制符有pid和ppid两种,pid表示进程的id,...原创 2019-07-31 21:38:05 · 298 阅读 · 0 评论 -
linux中的ps命令和top命令的详细区别(完整)
众所周知,在Linux系统中ps和top命令都是用来查看进程信息的。但是他们具体有什么区别呢,接下来我们详细谈一下:ps命令只看到的是命令执行瞬间的进程信息,而top可以持续的监视。ps只是查看进程,而top还可以监视系统性能,如平均负载,cpu和内存的消耗。另外top还可以操作进程,如改变优先级(命令r)和关闭进程(命令k)ps主要是查看进程的,关注点在于查看需要查看的进程。...原创 2019-07-31 20:03:44 · 5206 阅读 · 0 评论 -
Linux上的有关进程管理的命令
在看命令之前,我们先看一下有关进程的概念:进程:运行中的程序(是一个动态的过程概念)执行时,将程序加载到内存上。 程序:存储在磁盘上的可执行的二进制文件。进程的执行方式:时间片轮转法:CPU的执行时间划分为很小的时间片,每个进程在CPU上运行,一次只分配一个时间片。在Linux系统上,/proc虚拟目录,以内存为单位存储内存映射。操作系统为了唯一标识一个进程,会给...原创 2019-07-31 19:53:26 · 564 阅读 · 0 评论 -
(Linux)文本编译器命令模式下的一些操作(光标的移动)+文件的打包和压缩操作
首先,让我们先输入vi/vim进入文本编译器中,在命令模式下,光标的移动命令操作如下:shift+4 :将光标移到本行最后一个位置shift+6 :将光标移到本行第一个位置gg:将光标移到本文件第一行G / shift+g:将光标移到最后一行行号n+shift+g(G):将光标移到第n行如果出现文本过长的情况,一页不能显示完全,可使用以下方法对该页内容进行操作:①s...原创 2019-07-31 18:35:50 · 473 阅读 · 0 评论 -
Linux下的文件操作命令(最详细)
Linux下的文件操作命令,接下来我们分普通文件和目录文件来进行讨论:1. 创建文件:普通文件:touch Filename(需要带上扩展名)例如:touch main.c目录文件:mkdir Firname(不需要扩展名)例如:mkdir Gaorutao2.删除文件:普通文件:rm Filename例如:rm main.c目录文件:rmdir Gaoruta...原创 2019-07-31 18:17:00 · 688 阅读 · 1 评论 -
Linux的目录文件以及文件的操作
Linux和Windows都是操作系统,不同之处在于Linux是基于命令行的OS,Windows是基于图形化界面的OS,在Linux上一切皆文件。在linux下文件类型可以分为:普通文件、目录文件、管道文件、链接文件、设备文件。接下来讲一下lInux的目录。/home:普通用户的家目录,每个用户都会在/home下有一个同名目录/bin:命令对应的可执行文件/etc:配置目录 ...原创 2019-07-31 15:23:43 · 295 阅读 · 0 评论 -
Linux基础与命令大全(完整版)
首先,先介绍一下什么是Linux?和Windows操作系统软件一样,Linux也是一个操作系统软件。但是和Windows不同的是,Linux是一套开放源代码程序的、并可以自由传播的类Unix操作系统软件(Unix系统是Linux系统的前身,具备很多优秀特性)。其在设计之初,就是基于Intel x86系列CPU架构的计算机的。它是一个基于POSIX的多用户、多任务并且支持多线程和多CPU的操作系...原创 2019-07-31 14:50:58 · 2774 阅读 · 2 评论 -
fork()函数详解以及进程创建的过程
进程控制块(PCB):用来标识一个进程的,它包含了该进程的各个信息。它是task_struct这个结构体。那这个task_struct结构体是怎样在内核中存在的呢?接下来我来说一下。内核在为每一个进程分配PCB的时候,实际上是分配了两个连续的物理页面(共8K),这两个页面的底部1K空间用作进程的PCB结构,剩余7K就是这个进程的系统空间堆栈了,如图:内核把进程的列表存放在任务队列的...原创 2019-08-02 17:51:35 · 1758 阅读 · 0 评论 -
浅谈Linux中的fork和vfork的区别
业界的各位同行都知道,fork函数和vfork函数都是进行创建一个进程的。但是呢,各位知道它们之间有什么区别吗?接下来就让我给大家阐述一下: 我总结了一下几个区别:fork()创建的子进程拷贝了父进程的代码段,数据段,堆栈;而vfork()创建出来的子进程和父进程共享数据段; fork()创建的子进程执行次数不确定,操作系统对他们进行交替执行,而vfork()创建出来的必须要保证子进...原创 2019-07-25 16:59:20 · 283 阅读 · 0 评论 -
进程间通讯(IPC)(1)———管道
提出疑问每个进程有自己独立的用户地址空间,一个进程的全局变量在另一个进程中可以看到吗?我们用下面这个程序来进行测试:验证结果:可以看出:在父进程中的全局变量,如果在子进程中去改变这个全局变量,则子进程中被改变的这个值不会去影响父进程,因为子进程中的所有数据都是通过写时拷贝拷自父进程的,这两个进程的地址空间就是不同的了。进程间通信概念:进程用户空间是相互独立的,一般而言是...原创 2019-08-18 21:13:10 · 252 阅读 · 0 评论