随笔分类 -  Linux内核

应该知道的Linux技巧
摘要:这篇文章来源于Quroa的一个问答《What are some time-saving tips that every Linux user should know?》—— Linux用户有哪些应该知道的提高效率的技巧。我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解。 首先,我想告诉大 阅读全文

posted @ 2018-03-04 09:55 AlanTu 阅读(143) 评论(0) 推荐(0) 编辑

你可能不知道的Shell
摘要:Shell也叫做命令行界面,它是*nix操作系统下用户和计算机的交互界面。Shell这个词是指操作系统中提供访问内核服务的程序。 这篇文章向大家介绍Shell一些非广为人知、但却实用有趣的知识,权当品尝shell主食后的甜点吧。 科普 先科普几个你可能不知道的事实: Shell几乎是和Unix操作系 阅读全文

posted @ 2018-03-04 09:55 AlanTu 阅读(276) 评论(0) 推荐(0) 编辑

AWK 简明教程
摘要:有一些网友看了前两天的《Linux下应该知道的技巧》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。况且,AWK是贝尔实验室1977年搞出来的文本出现神器,今年是蛇年,是AWK的本命年,而且 阅读全文

posted @ 2018-03-04 09:53 AlanTu 阅读(237) 评论(0) 推荐(0) 编辑

sed 简明教程
摘要:awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了。所以 林妹妹跳了个Topless,他的哥哥sed坐不住了,也一定要出来抖一抖。 sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,相当的hacker啊。sed基本上就是 阅读全文

posted @ 2018-03-04 09:52 AlanTu 阅读(165) 评论(0) 推荐(0) 编辑

一个fork的面试题
摘要:前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的: 题目:请问下面的程序一共输出多少个“-”? 1234567891011121314151617181920212223242526 阅读全文

posted @ 2018-03-03 23:18 AlanTu 阅读(323) 评论(0) 推荐(0) 编辑

Unix考古记:一个“遗失”的shell
摘要:谨以此文纪念伟大的计算机科学巨匠Ken Thompson和Dennis Ritchie,并同时向其他所有为Unix发展做出贡献的黑客致敬。 历史的尘埃 Unix作为一个举世闻名的操作系统已有40余年的历史,围绕着这个古老的操作系统的发展又衍生出了一系列外围软件生态群,其中一个非常重要的组件就是she 阅读全文

posted @ 2018-03-03 23:13 AlanTu 阅读(337) 评论(0) 推荐(0) 编辑

伙伴分配器的一个极简实现
摘要:提起buddy system相信很多人不会陌生,它是一种经典的内存分配算法,大名鼎鼎的Linux底层的内存管理用的就是它。这里不探讨内核这么复杂实现,而仅仅是将该算法抽象提取出来,同时给出一份及其简洁的源码实现,以便定制扩展。 伙伴分配的实质就是一种特殊的“分离适配”,即将内存按2的幂进行划分,相当 阅读全文

posted @ 2018-03-03 23:03 AlanTu 阅读(292) 评论(0) 推荐(0) 编辑

vfork 挂掉的一个问题
摘要:在知乎上,有个人问了这样的一个问题——为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不会?并给出了如下的代码,下面的代码一运行就挂掉了,但如果把子进程的return改成exit(0)就没事。 我受邀后本来不想回答这个问题的,因为这个问题明显就是RTFM的事,后来,发现这个 阅读全文

posted @ 2018-03-03 22:55 AlanTu 阅读(253) 评论(0) 推荐(0) 编辑

fcntl函数用法详解
摘要:功能描述:根据文件描述词来操作文件的特性。 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int c 阅读全文

posted @ 2018-03-02 11:13 AlanTu 阅读(2564) 评论(0) 推荐(0) 编辑

进程在Linux内核中的角色扮演
摘要:在Linux内核中,内核将进程、线程和内核线程一视同仁,即内核使用唯一的数据结构task_struct来分别表示他们;内核使用相同的调度算法对这三者进行调度;并且内核也使用同一个函数do_fork()来分别创建这三种执行线程(thread of execution)。执行线程通常是指任何正在执行的代 阅读全文

posted @ 2018-02-28 12:15 AlanTu 阅读(275) 评论(0) 推荐(0) 编辑

存储映射I/O
摘要:一个进程拥有独立并且连续虚拟地址空间,在32位体系结构中进程的地址空间是4G。不过,内核在管理进程的地址空间时是以内存区域为单位。内存区域是进程整个地址空间中一个独立的内存范围,它在内核中使用vm_area_struct数据结构来描述。每个内存区域都有自己访问权限以及操作函数,因此进程只能对有效范围 阅读全文

posted @ 2018-02-28 12:11 AlanTu 阅读(1172) 评论(0) 推荐(0) 编辑

从汇编角度来理解linux下多层函数调用堆栈运行状态
摘要:我们用下面的C代码来研究函数调用的过程。 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int bar(int c, int d) { int e = c + d; return e; }int foo(int a, int b) { return  阅读全文

posted @ 2018-02-26 13:36 AlanTu 阅读(541) 评论(0) 推荐(0) 编辑

read/write函数与(非)阻塞I/O的概念
摘要:一、read/write 函数 read函数从打开的设备或文件中读取数据。 #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件 阅读全文

posted @ 2018-02-26 13:34 AlanTu 阅读(5100) 评论(0) 推荐(0) 编辑

可重入函数、线程安全、volatile
摘要:一、 POSIX 中对可重入和线程安全这两个概念的定义: Reentrant Function:A function whose effect, when called by two or more threads,is guaranteed to be as if the threads each 阅读全文

posted @ 2018-02-26 13:32 AlanTu 阅读(318) 评论(0) 推荐(0) 编辑

Linux进程地址空间和虚拟内存
摘要:一、虚拟内存 先来看一张图(来自《Linux内核完全剖析》),如下: 分段机制:即分成代码段,数据段,堆栈段。每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低特权级(用户),每当程序试图访问(权限又分为可读、可写和可执行)一个段时,当前特权级CPL就会与段的特权级进行比 阅读全文

posted @ 2018-02-26 13:30 AlanTu 阅读(2392) 评论(0) 推荐(0) 编辑

C 标准库IO缓冲区和内核缓冲区的区别
摘要:1.C标准库的I/O缓冲区 UNIX的传统 是Everything is a file,键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。用户程序调用C标准I/O库函数读写 阅读全文

posted @ 2018-02-26 13:28 AlanTu 阅读(2205) 评论(1) 推荐(1) 编辑

文件描述符file descriptor与inode的相关知识
摘要:每个进程在Linux内核中都有一个task_struct结构体来维护进程相关的 信息,称为进程描述符(Process Descriptor),而在操作系统理论中称为进程控制块 (PCB,Process Control Block)。task_struct中有一个指针(struct files_str 阅读全文

posted @ 2018-02-26 13:26 AlanTu 阅读(636) 评论(0) 推荐(0) 编辑

C 标准IO 库函数与Unbuffered IO函数
摘要:先来看看C标准I/O库函数是如何用系统调用实现的。 fopen(3) 调用open(2)打开指定的文件,返回一个文件描述符(就是一个int 类型的编号),分配一 个FILE 结构体, 通常里面包含了: 文件fd 缓冲区指针 缓冲区长度 当前缓冲区读取长度 出错标志 返回这 个FILE 结构体的地址。 阅读全文

posted @ 2018-02-26 13:25 AlanTu 阅读(415) 评论(0) 推荐(0) 编辑

计算机体系结构一点基础知识
摘要:下面这张图来自《深入理解计算机系统》: IO桥部分一般还分为北桥和南桥,北桥当然是靠上的了。 •CPU –主频: CPU的时钟频率,内核工作的时钟频率 –外频: 系统总线的工作频率 –倍频: CPU外频与主频相差的倍数 –前端总线: 将CPU连接到北桥芯片的总线 –总线频率: 与外频相同或者是外频的 阅读全文

posted @ 2018-02-26 13:24 AlanTu 阅读(1209) 评论(0) 推荐(1) 编辑

套接字socket 的地址族和类型、工作原理、创建过程
摘要:注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早 阅读全文

posted @ 2018-02-26 11:01 AlanTu 阅读(1907) 评论(0) 推荐(0) 编辑

导航