随笔分类 -  Linux

摘要:1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的 阅读全文
posted @ 2019-03-06 10:37 小时候挺菜 阅读(650) 评论(1) 推荐(1) 编辑
摘要:一.静态库概念 1.库是预编译的目标文件(object files)的集合,它们可以被链接进程序。静态库以后缀为”.a”的特殊的存档(archive file)存储。 2.标准系统库可在目录/usr/lib与/lib中找到。比如,在类Unix系统中C语言的数序库一般存储为文件/usr/lib/lib 阅读全文
posted @ 2018-12-20 16:48 小时候挺菜 阅读(16463) 评论(0) 推荐(1) 编辑
摘要:在shell脚本设置了环境变量,如export LIBRARY_PATH=./lib/,执行了此脚本后, 在执行生成的可执行文件,提示错误 error while loading shared libraries: libww.so: cannot open shared object file: 阅读全文
posted @ 2018-11-13 16:57 小时候挺菜 阅读(32001) 评论(0) 推荐(4) 编辑
摘要:ELF文件 在学习之前我们先看看ELF文件。 ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。 下面我们就从整体上看看这3种格式从文件内容上存储的方式,spec上 阅读全文
posted @ 2018-11-08 12:30 小时候挺菜 阅读(1001) 评论(0) 推荐(0) 编辑
摘要:一、GCC简介: gcc的原名叫做GNU C语言 编译器(GNU C Compile),只能编译C语言程序,后来很快就做了扩展,支持了更多的编程语言,比如C+ Object-c ...,改名为GNC 编译器 套件(GNU Compile Collection) 支持很多的硬件和操作系统。 二、编译过 阅读全文
posted @ 2018-11-02 09:54 小时候挺菜 阅读(390) 评论(0) 推荐(0) 编辑
摘要:一、强符号和弱符号 在C语言中,如果多个模块定义同名全局符号时,链接器认为函数和已初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号。 根据这个定义,Linux链接器使用下面的规则来处理多重定义的符号名: 1.不允许有多个同名的强符号 2.如果有一个强符号和多个弱符号同名,那 阅读全文
posted @ 2018-10-31 15:34 小时候挺菜 阅读(557) 评论(0) 推荐(0) 编辑
摘要:GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。 1.include头文件路径 除了默认的/usr/include, /usr/local/include等include路径外,还可以通过设置环境变量来添加系统include的路径: C语言环境下环境变量 阅读全文
posted @ 2018-10-19 13:23 小时候挺菜 阅读(2047) 评论(0) 推荐(0) 编辑
摘要:在Linux中,轻量级进程可以是进程,也可以是线程。我们所说的线程,在Linux中,其实是轻量级进程之间共享代码段,文件描述符,信号处理,全局变量时; 如果不共享,就是我们所说的进程。 进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是减小多进程 阅读全文
posted @ 2018-10-18 12:45 小时候挺菜 阅读(389) 评论(0) 推荐(0) 编辑
摘要:在linux系统中,许多进程在诞生之初都与其父进程共同用一个存储空间。但是子进程又可以建立自己的存储空间,并与父进程“分道扬镳”,成为与父进程一样真正意义上的进程。 linux系统运行的第一个进程是在初始化阶段“捏造出来的”。而此后的线程或进程都是由一个已存在的进程像细胞分裂一样通过系统调用复制出来 阅读全文
posted @ 2018-10-18 12:25 小时候挺菜 阅读(2525) 评论(0) 推荐(0) 编辑
摘要:二、进程的生命周期 进程是一个动态的实体,所以他是有生命的。从创建到消亡,是一个进程的整个生命周期。在这个周期中,进程可能会经历各种不同的状态。一般来说,所有进程都要经历以下的3个状态: 在Linux系统中,将各种状态进行了重新组织,由此得到了Linux进程的几个状态: RUNNING:正在运行或者 阅读全文
posted @ 2018-10-18 11:58 小时候挺菜 阅读(356) 评论(0) 推荐(0) 编辑
摘要:一、进程和线程的概念 1.进程和线程的定义 进程并不只是一段可以运行的代码,也包含了运行代码所需要的资源。 在操作系统来看,进程是资源管理的最小单元,而我们又知道,线程是程序执行的最小单元。 话说回来,Linux系统至少有一个进程,一个程序可以对应多个进程,一个进程只能对应一个程序,一个进程包含一个 阅读全文
posted @ 2018-10-18 11:40 小时候挺菜 阅读(809) 评论(0) 推荐(0) 编辑
摘要:1、 GNU 上关于LIBRARY_PATH的说明: 2、 man7 上关于LD_LIBRARY_PATH的说明: 3、 StackOverflow 上关于 LIBRARY_PATH 和 LD_LIBRARY_PATH 的解释: 总结 1.Linux gcc编译链接时的动态库搜索路径 GCC编译、链 阅读全文
posted @ 2018-09-29 18:14 小时候挺菜 阅读(1285) 评论(0) 推荐(1) 编辑
摘要:一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又 阅读全文
posted @ 2018-09-29 17:08 小时候挺菜 阅读(3697) 评论(0) 推荐(1) 编辑
摘要:在C语言中只能通过malloc()和其派生的函数进行动态的申请内存,而实现的根本是通过系统调用实现的(在linux下是通过sbrk()系统调用实现)。 malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链 阅读全文
posted @ 2018-09-12 16:00 小时候挺菜 阅读(42269) 评论(4) 推荐(7) 编辑
摘要:一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序。 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM64T)已经开始广泛的使用起来了,甚至于你现在要是想买32位的处理器根本就没有。64位的系统在性能和 阅读全文
posted @ 2018-09-12 15:07 小时候挺菜 阅读(12255) 评论(1) 推荐(2) 编辑
摘要:前言 当我们要编写一个echo服务器程序的时候,需要对用户从标准输入键入的交互命令做出响应。在这种情况下,服务器必须响应两个相互独立的I/O事件:1)网络客户端发起网络连接请求,2)用户在键盘上键入命令行。我们先等待哪个事件呢?没有哪个选择是理想的。如果在acceptor中等待一个连接请求,我们就不 阅读全文
posted @ 2018-08-24 20:13 小时候挺菜 阅读(233) 评论(0) 推荐(0) 编辑
摘要:事件驱动和异步IO 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求; (3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求 上面的几种方式,各有千秋, 第(1 阅读全文
posted @ 2018-08-24 00:27 小时候挺菜 阅读(214) 评论(0) 推荐(0) 编辑
摘要:我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。 一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道 阅读全文
posted @ 2018-08-23 23:09 小时候挺菜 阅读(2283) 评论(0) 推荐(0) 编辑
摘要:网络相关的ioctl请求的request参数及arg地址必须指向的数据类型如下表所示: SIOCGIFCONF SIOCSIFADDR SIOCGIFADDR SIOCSIFBRDADDR SIOCGIFBRDADDR SIOCSIFNETMASK SIOCGIFNETMASK 获取所有接口列表 设 阅读全文
posted @ 2018-08-23 23:07 小时候挺菜 阅读(834) 评论(0) 推荐(0) 编辑
摘要:UDP多播服务器 多播 组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发 生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。 阅读全文
posted @ 2018-08-21 20:12 小时候挺菜 阅读(558) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示