Linux那些事儿
沐浴凌风
这个作者很懒,什么都没留下…
展开
-
Linux EXT 文件系统 详解
上几章我们讲到了Linux启动的一些问题,接下来我们来看一下硬盘分割和EXT格式文件系统的问题。前面提到了分区表的问题,分区表位于MBR, 占用64个字节。所谓的硬盘分区也就是对硬盘进行规划,填写分区表的配置。硬盘默认分区表仅能写入四组分区信息。这四个主要分区我们称之为主分区和拓展分区,而后拓展分区里面又可以划分多个逻辑分区。 先让我们模拟一块硬盘:dd if=/dev/zero of=zero原创 2017-01-03 15:22:35 · 771 阅读 · 0 评论 -
gdb的多线程调试
info threads 可以查看当前进程有哪些线程thread ID 可以切换到线程IDbt 查看当前线程堆栈set scheduler-locking on多线程调试过程中, 线程会来回切换, 使用它即可锁定一个线程。当程序被打断点时, 所有线程都会停下 如果不希望其他线程也停下, 可以设置gdb如下(版本要7.0 以上):set target-async 1set paginat原创 2017-10-30 10:24:51 · 258 阅读 · 0 评论 -
makefile 中=与:=的差别
1、“=” make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子: x = foo y = $(x) bar x = xyz 在上例中,y的值将会是 xyz bar ,而不是 foo bar 。 2、“:=” “:=”表示变量的值决定于它在makefile中的位置,而不是整个转载 2017-09-15 11:38:55 · 228 阅读 · 0 评论 -
epoll中accept的使用细节
accept 要考虑 2 个问题 (1) 阻塞模式 accept 存在的问题 考虑这种情况:TCP连接被客户端夭折,即在服务器调用accept之前,客户端主动发送RST终止连接,导致刚刚建立的连接从就绪队列中移出,如果套接口被设置成阻塞模式,服务器就会一直阻塞在accept调用上, 直到其他某个客户建立一个新的连接为止。但是在此期间,服务器单纯地阻塞在accept调用上,就绪队列中的其他描述符原创 2017-09-06 16:04:37 · 2250 阅读 · 0 评论 -
linux下的一个简单线程安全内存池实现
这里提供一个简单线程安全内存池, 基于linux pthread 如下图: 具体的数据结构: typedef struct LocMap{ char * point; int len; }LOCMAP;//每个数据块的起始指针和大小 int size; //内存池的大小 int datanum; //内存池内数据 int freemem; //剩原创 2017-08-23 15:10:43 · 1240 阅读 · 0 评论 -
linux下软件安装apt-get yum dpkg rpm 的使用
Ubuntu Debian系统安装软件一般都是deb包, apt-get install * 也就是从源服务器下载deb包然后安装 ,它和Redhat中的yum install一样都可以帮你轻松的解决依赖性问题。Ubuntu系列软件管理:apt-get install * //安装某个软件包apt-get remove/autoremove * //移除软件包apt-get purge * /原创 2017-04-18 13:11:02 · 1136 阅读 · 0 评论 -
Makefile中的变量和shell变量
我们在写makefile时 多多少少会用到shell脚本, 对于变量的在shell中的使用有一些要注意的细节。让我们从一个简单的makefile来看看。 注意makefile中一定要有一个目标,且一定要有一个终极目标,若想要有多个目标应该设立一个伪目标。如下:all: hello hello2 hello3hello: hello.c gcc ....hello2: hello2.c原创 2017-01-12 13:29:54 · 2563 阅读 · 0 评论 -
Linux启动 grub 虚拟文件系统initrd详解(三)
在内核找到硬盘的/sbin/init后,就开始了第一号进程,此进程的主要目的是:准备软件执行的环境,包括系统的主机名,网络配置,语系处理,文件系统格式及其他服务的启动。主要是通过/etc/inittab来规划。 我们可以看到它默认选择3运行级别。 之后会使用/etc/rc.d/rc.sysinit进行系统初始化 大致是用来读取网络环境和主机类型;测试与挂载内存设备/proc和usb设备;用户原创 2016-12-31 16:10:45 · 662 阅读 · 0 评论 -
Linux启动 grub 虚拟文件系统initrd详解(二)
上文我们分析了启动和grub的一些东西,这节让我们讨论一些linux内核加载启动和虚拟文件系统initrd的问题。 首先还是grub的menu.lst 其中关于default 和timeout的讲解网上都有说明 这里的root(hd0,0) 代表的以下的kernel和initrd文件系统所在的位置是第一块硬盘的第一个分区,这个可以根据自己内核存放位置设置,但是要注意grub的文件系统类型。ke原创 2016-12-30 18:10:35 · 2122 阅读 · 0 评论 -
Linux启动 grub 虚拟文件系统initrd详解(一)
Linux的启动时一个复杂的过程: 加载 BIOS 的硬件资讯与进行自我测试,并依据配置取得第一个可启动的装置; 读取并运行第一个启动装置内 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序); 依据 boot loader 的配置加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序; 在硬件驱动成功后,Kernel 会主动呼叫 i原创 2016-12-30 16:59:07 · 1809 阅读 · 0 评论 -
epoll 惊群(Nginx 类似处理方案)
#include <sys/types.h>#include <sys/socket.h>#include <sys/epoll.h>#include <netdb.h>#include <string.h>#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <stdlib.h>#include <errn原创 2017-10-24 16:42:35 · 572 阅读 · 0 评论