
Linux系统编程
本专栏中是Linux进程、线程、进程间通讯方式、线程同步及vim、gcc、g++等编程工具,还包括makefile文件的书写
Keen_hard
Just a developer
展开
-
Linux_进程和线程的区别
1.进程是运行中的程序,线程是进程内部的一条执行序列。2.进程是资源分配的最小单元,线程是执行的单元,CPU调度的最小单元。3.进程是一个独立的实体、线程是进程内部的执行序列。4.进程切换效率低,代价大;线程切换效率高,代价小。5.一个进程程可以包含多个线程。一个进程至少有一个线程,6.进程拥有资源多,线程拥有资源少。...原创 2019-08-20 17:58:23 · 331 阅读 · 0 评论 -
Linux_进程间通讯方式
管道有名管道:在磁盘上有一个文件标识,创建管道文件,但是交互的数据并不会存储到磁盘中,管道文件不会占据磁盘空间。有名管道没有在磁盘上存真正的信息,而是在内存中存放,2个进程结束后自动丢失,通信结束后有名管道的文件路径本身存在,这是和无名管道区别的地方。无名管道:首先创建一个管道文件,无名管道是一种特殊类型的文件,在内核空间中对应的资源即是一段内存空间,内核在这段空间以循环对列的方式临时存入...原创 2019-09-14 21:35:16 · 205 阅读 · 0 评论 -
Linux_硬中断和软中断的区别
中断中断本质上是-一种特殊的电信号,由硬件设备发向处理器。从物理学的角度看,中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚中一中断控制器是个简单的电子芯片,其作用是将多路中断管线,采用复用技术只通过一个和处理器相连接的管线与处理器通信。当接收到一个中断后,中断控制器会给处理器发送一个电信号。处理器一经检测到此信号,便中断自己的当前工作转而处理中断。此后,处理器会通知操作系统已...原创 2019-08-22 00:46:07 · 1114 阅读 · 0 评论 -
Linux_静态库和动态库的区别
静态库在编译的时候会被直接拷贝一份到目标程序里,这段代码在目标程序里就不会再改变了。动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。且同一份库可以被多个程序使用(动态库也被称作共享库)。静态库没有外部依赖,动态库使得程序依赖于外部环境。动态库运行时才载入的特性,可以随时对库进行替换,而不需要重新编译代码,...原创 2019-08-20 18:21:19 · 259 阅读 · 0 评论 -
Linux_系统调用过程及意义
系统调用Linux内核中设置了一组用于实现各种系统功能的接口,称为系统调用。为了方便使用操作系统,操作系统预留出了一些接口,这些接口就是系统调用函数。用户可以通过系统调用命令在自己的应用程序中调用它们。从某种角度来看,系统调用和普通的函数调用非常相似。区别仅仅在于,系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。系统调用号在Linux中,...原创 2019-08-22 01:40:03 · 536 阅读 · 0 评论 -
Linux_TCP和UDP的区别
1.TCP面向连接的,UDP是无连接的。2.TCP提供可靠的流式服务,UDP提供不可靠的数据报服务。3.TCP对系统资源的要求比较多,UDP比较少。4.UDP的程序结构比TCP要简单。5.TCP保证数据正确性,UDP可能丢包;TCP保证数据顺序,UDP不保证。...原创 2019-08-20 17:54:41 · 145 阅读 · 0 评论 -
Linux_进程与线程
什么是进程呢?Linux程序设计中是这样定义的,进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。即运行中的程序。也可以理解为是一组有序指令、数据、和资源的集合。进程中有哪些结构?进程中有代码段、数据段、堆栈区域,也就是由程序、数据、进程控制PCB(Process Control Block)组成。进程控制块是进程存在的惟一标识,系统通过PCB的存在而感知进程的...原创 2019-07-25 22:44:17 · 216 阅读 · 0 评论 -
Linux_编译链接原理及4G虚拟地址空间内存布局
预处理(预编译) 删除注释 宏替换 展开include 编译 查错:对语义语法词义词法进行查错。汇编 翻译:翻译为机器可以识别的语言。链接 找符号...原创 2018-11-15 22:37:22 · 308 阅读 · 0 评论 -
Linux_堆和栈的区别
堆栈的区别要从虚拟地址空间说起,在虚拟地址空间的布局中,有(.text)段、(.data)段、(.bss)段、堆、栈、命令行参数、环境变量等,如图所示从图中可以看出,堆栈是俩快完全不不同的内存。栈内存是由操作系统分配和释放的,同时是以函数为单位进行分配的,函数栈帧、局部变量、形参变量都是在存放栈内存上的;而堆内存是由程序员自己管理的,如果操作不当,会造成内存泄漏,栈内存由系统管理,所以不会产...原创 2019-07-19 18:16:56 · 370 阅读 · 0 评论 -
Linux_gcc与g++的区别
gcc和g++都是编译器,可以编译(.c)和(.cpp)文件,但是俩者也有不同:gcc可以编译(.c)和(.cpp)文件,(.c)文件按照C语言的规则处理的,(.cpp)文件按照C++规则处理的,但是默认的情况下,gcc不链接相应的C++库,需要手动链接C++的库 -lstdc++。g++也可以编译(.c)和(.cpp)文件,但都是按照C++的规...原创 2019-07-19 17:48:49 · 145 阅读 · 0 评论 -
Linux_目标文件里有什么?
**1、目标文件的格式** 目标文件就是源代码编译后但未进行链接的那些中间文件(例如windows下的.obj文件,Linux下的.o文件)。从广义的角度看,目标文件和可执行文件的格式其实几乎时一样的,在Windows下,将它们统称为PE-COFF文件格式;在Linux下,将他们统称为ELF文件。其实,除了目标文件和可执行文件按照可执行文件格式存储,还有动态链接库和静态链接库也是按照可执行文件...原创 2019-07-06 23:02:18 · 237 阅读 · 0 评论