![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 84
胡LiuJia
这个作者很懒,什么都没留下…
展开
-
平时碰到的各种感觉难以理解或者容易混淆的概念的总结-持续
1.软中断:软中断和正常的中断类似,也需要注册中断服务程序,程序发出一个软中断后,这个消息会在某个地方存储,比如内核用一些bit来组织,每个注册的软中断对应一位,CPU会在某个时间点(比如定期)查看这些bit,如果bit置1说明该软中断被发出了,然后CPU再决定要不要处理终端原创 2015-01-28 21:43:57 · 746 阅读 · 0 评论 -
Linux内核学习笔记(二)内存管理
综述本文首先介绍和内存管理相关的一些概念如page,zone,然后介绍多种获得内存的方式,最后介绍Linux的slab层(slab分配器)。页(page)页是Linux内核进行内存管理的基本单元。MMU和虚拟内存也都使用页作为基本管理单元。不同的架构有不同的页大小,绝大部分的情况是32-bit使用4KB页大小,64-bit使用8KB页大小。这意味着如果一台机器的物理内存为1GB大小,大...原创 2018-04-24 15:33:05 · 1905 阅读 · 0 评论 -
Linux内核学习笔记(一) 虚拟文件系统VFS
什么是VFSVritual Filesystem 是给用户空间程序提供统一的文件和文件系统访问接口的内核子系统。借助VFS,即使文件系统的类型不同(比如NTFS和ext3),也可以实现文件系统之间交互(移动、复制文件等),从用户空间程序的角度来看,VFS提供了一个统一的抽象、接口。这使得用户空间程序可以对不同类型的文件系统发起统一的系统调用,而不需要关心底层的文件系统类型。从文件系统的...原创 2018-04-20 17:32:20 · 4404 阅读 · 0 评论 -
Linux内核学习笔记(四)进程管理
进程简介进程(Process)是Unix操作系统最基本的抽象概念之一。进程是正在执行的程序,同时也是操作系统进行资源管理的最小单位,进程需要管理打开的文件、挂起的信号、内核内部数据、处理器状态等。线程(Thread)是进程中正在执行的程序片段,是操作系统进行调度的最小单位,一个线程指的是进程中一个单一顺序的控制流。Linux中线程只是一个特殊的进程,并没有对进程和线程进行专门的区分。进...原创 2018-05-09 17:10:40 · 2601 阅读 · 0 评论 -
Linux内核学习笔记(五)进程地址空间
**# 进程地址空间简介Linux是一个虚拟内存操作系统,系统中的所有进程以虚拟方式共享内存。从一个进程的视角来看,它独占系统中所有的物理内存,并且一个进程的地址空间可以远远大于物理内存的大小。进程的地址空间由可寻址的虚拟内存组成,进程通过地址空间中的地址访问内存。一个进程可以选择和其他进程共享地址空间,这样的进程就是我们说的线程。尽管进程最多可以寻址4GB的虚拟内存(在32-bit的...原创 2018-05-10 10:37:25 · 1654 阅读 · 0 评论 -
Linux内核学习笔记(三)Block I/O层
块设备(Block Device)简介块设备是一种以块(block)为单位可以进行随机存取的硬件设备。常见的块设备有硬盘,软盘,闪存等。块设备的最小寻址单元是扇区(sector),一个扇区是2\^n个字节,512Bytes是最常见的扇区大小。内核的文件系统使用块(block)作为最小寻址单元。block的大小是sector的2\^n次方倍(n可以为0),但是不大于page size. 常见...原创 2018-04-27 19:55:04 · 14558 阅读 · 2 评论 -
Linux内核学习笔记(八)Page Cache与Page回写
综述Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能。此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page writeback)。一个inode对应一个page cache对象,一个page cache对象包含多个物理page。对磁盘的数据进行缓存从而提高性能主要是基于两个因素:第一,磁盘访问的速度...原创 2018-06-02 23:38:19 · 26582 阅读 · 3 评论 -
Linux内核学习笔记(九)中断和中断处理程序
中断为了对计算机的硬件(键盘,硬盘,鼠标等)进行管理,内核需要和这些硬件通信。一种方式是使用轮训(polling)的方式,这种方式周期性地查看所有硬件设备的状态并做相应处理,这会造成很多不必要的系统开销。Linux内核使用中断的方式来管理硬件设备,中断本质上是一种电信号,设备通过和中断控制器引脚相连的总线发出电信号来发出中断。中断控制器是一种控制芯片,多个设备的中断请求线同时连接到中断控制器上...原创 2018-06-04 23:35:49 · 2155 阅读 · 1 评论 -
Linux内核学习笔记(六)进程调度
综述内核调度子系统负责进程调度,调度程序决定让哪个进程运行、什么时候运行、运行多久。调度程序的目标有两个:一个是最大化系统资源的利用率,一个是减少和用户的交互延迟,让用户觉得多个进程在同时运行。这两个目标是冲突的,需要做trade-off。多任务操作系统多任务操作系统指的是指可以多个进程同时交错执行的操作系统。在单处理器机器上,用户会产生有多个进程同时在不同的处理器上在同时执行的错...原创 2018-05-29 13:16:55 · 2019 阅读 · 0 评论 -
Linux内核学习笔记(七)系统调用
综述用户空间进程通过内核提供的一套接口和系统进行交互,这些接口让用户空间进程能够受控地访问系统资源、创建新的进程以及和其他进程通信等。受控表示用户进程不能不受限制地做任何想做的事情,这对保证系统的稳定非常关键。在Linux系统中,系统调用是除了exception和trap之外用户空间和内核交互的唯一方式。API,POSIX 和 C LibraryAPI(Application Pr...原创 2018-05-30 23:05:51 · 1405 阅读 · 0 评论 -
Linux内核学习笔记(十)中断处理的下半部(Bottom Halve)
为什么需要下半部中断处理程序有如下局限性:中断处理程序是异步中断,被其中断执行的代码(包括别的中断处理程序)可能正在执行非常重要的任务,为了避免被中断进程停止过长时间,中断处理程序的执行应该越快越好。中断处理程序会禁用其服务的中断线(没有设置IRQF_DISABLE),这是最好的情况。最坏的情况下会禁用当前处理器上所有中断(设置了IRQF_DISABLED)。禁用中断期间,硬件设备无法...原创 2018-06-06 23:06:58 · 1750 阅读 · 0 评论 -
Linux内核学习笔记(十一)内核同步方法(自旋锁,信号量,互斥锁,完成变量,顺序锁,禁止抢占)
原子操作Linux内核提供了多种同步机制,这些机制本质上都是通过原子操作来实现的。原子操作可以保证指令以原子方式执行,不会被中途打断(中断也不会打断一个指令,处理器只有在当前指令完成后才会去处理中断)。内核提供了两套原子操作的接口,一套用于整数原子操作,一套用于进行位原子操作。这些接口的实现是和架构相关的,Linux系统支持的所有架构都实现了这些接口。大部分架构为简单的算术运算提供了原子版本的...原创 2018-06-09 02:18:34 · 2827 阅读 · 1 评论 -
《C和C++程序员面试秘笈》中存在的错误
最近在复习C++面试的考点,所以购买了《C和C++程序员面试秘笈》这本书(人民邮电出版社2014.3 ISBN:978-7-115-34113-6)。书整体上是非常不错的,知识点覆盖比较全面,很符合我的需求。美中不足的是书中的错误有点多。阅读的过程中自己做了一个总结,现在贴上来供大家参考。总结的形式比较简单,仅供参考。同时限于本人的水平,总结中可能存在一些错误,欢迎指正。因为我只选择性...原创 2018-04-12 13:07:06 · 3408 阅读 · 9 评论 -
VFS中的数据结构(superblock、dentry、inode、file)
VFS简介VFS的理念是使用统一的数据结构在内核中保存不同类型文件系统的信息(含操作)。VFS是一个介于用户程序和文件系统实现之间的一个抽象层,VFS既给了不同类型的文件系统支持Linux系统的公共接口,也给用户程序提供了一个统一的调用接口。VFS背后的核心idea是引入了通用文件模型(common file model),该模型其实就是Unix原生文件系统的一个镜像(这样可以在Uni...原创 2018-04-14 16:18:21 · 3164 阅读 · 2 评论 -
一些常见的容易混淆的词汇
1.并发和并行:从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。原创 2015-07-15 16:43:36 · 642 阅读 · 0 评论 -
逻辑地址、虚拟地址、物理地址、总线地址的区别
1 逻辑地址逻辑地址是最为模糊的概念。《understanding the linux kernel》上的解释是与虚拟地址相关,基于硬件MMU与软件内存管理的一个概念,具体可以看UTLK的第二章内存寻址,有很详细的解释。但是工作中之前用到的MIPS架构的处理器的解释却有出入,在《MIPS体系架构透视》一书中,逻辑地址是跟MMU无关的,MIPS地址空间划分中,Kseg0 Ks转载 2015-01-27 16:17:22 · 795 阅读 · 0 评论 -
TCP/IP illustrated 阅读笔记(四) UDP协议和IP分段
1. 什么是UDP协议UDP协议,user datagram Protocal,是一个简单的、面向datagram的传输层协议,特点:可以保存消息边界(message boundaries),没有错误纠正、有序送达、重复包消除、流量控制、拥塞控制。所以说他简单啊。。。。。2. UDP的Header:UDP的首部非常简单,总共8个字节Source Po原创 2016-01-17 21:56:58 · 2002 阅读 · 0 评论 -
TCP/IP illustrated 阅读笔记(三) IP协议
1.什么是IP协议:Internet Protocol,工作在网络层,是TCP/IP协议族中的workhorse协议(意思就是IP是个搬砖的),是一个提供最best-effort(尽最大努力)的无连接的协议(无连接指不会维护连接状态,比如建立连接之类的)。IP协议不只IPv4 和IPv6,只是IPv4使用最为广泛,而IPv6是IPv4的继承者2. IPv4首部说明首部后面跟着的数据原创 2016-01-10 17:33:22 · 2232 阅读 · 2 评论 -
TCP/IP illustrated 阅读笔记(二) 网络地址架构
1、Basic IP Address Structure1.1 classful Addressing:这是早期的网络地方划分方式,现在已经被CIDR取代。分为A B C D E五类,A B C都是单播地址,D是广播地址,E保留,A B C主要区别在于网络号和主机号所占的字节不同 1.2网络地址分类:unicast address:最普遍的ip地址,每个连接至Int原创 2016-01-10 11:10:40 · 1483 阅读 · 0 评论 -
TCP/IPillustrated 阅读笔记(一) introduction
What is End-to-End Argument:书上说的挺多,我理解的意思,不同的功能放在合适的层实现,因为放在不合适的层可以无法实现,或者导致灵活性变小(这一块还没有完全明白作者的意思,挖个坑先)What is Fate Sharing:意思就是把维持不同层的状态记录放在各自的层,自己的事自己管OSI七层协议:图来自:https://en.wikipedia.org/原创 2015-12-23 11:40:06 · 1328 阅读 · 0 评论 -
TCP/IP illustrated 阅读笔记(五) ARP协议
1. ARP协议简介Address Resolution Protocol,用于建立和维护IPv4(IPv6使用NDP协议)地址和MAC地址的动态映射。在一个局域网中(LAN),数据包通过MAC地址来寻址的(网络层的数据包被封装在二层数据帧中进行传输),但是IPv4是用IP地址来寻址。只知道IP地址,不知道MAC地址,数据包是无法发送(不能寻址)的,这个时候就使用ARP协议获得IP地址对应的M原创 2016-05-26 17:56:50 · 6397 阅读 · 1 评论 -
网络的混杂模式
promiscuous mode: promiscuous mode (often shortened to "promisc mode" or "promisc. mode") is a mode for a wired network interface controller (NIC) orwireless network interface controller (WNIC) that...原创 2016-06-12 17:36:17 · 2482 阅读 · 0 评论 -
TCP/IP illustrated 阅读笔记(六) ICMP协议
1. ICMP简介(ICMPv4)ICMP全称为Internet ControlMessage ProtocolICMP为IP协议提供控制信息和diagnosticICMP装在IP数据包中,但是不是传输层协议(该层的协议为应用进程提供端到端的通信服务)也不是网络层协议(网络层提供路由和寻址的功能),算2.5层需要注意的是,路由器由于拥塞丢包的行为不会生成ICMP me原创 2016-10-30 11:12:54 · 1578 阅读 · 0 评论 -
STL容器之vector
vector是C++中使用频率非常高的容器之一,本文总结了vector的常用用法,仅作为编程时的参考,详细的用法可以参考http://www.cplusplus.com/reference/vector/vector/vector实现STL没有规定vector应该怎么实现,一般采用动态数组来实现,每次插入时如果数组溢出,就将动态数组的大小(capacity)增加1倍(如0->1-...原创 2018-03-19 12:37:32 · 623 阅读 · 0 评论 -
所有结点对最短路径算法:Floyd-Warshall算法
背景知识图简介图由节点和边组成,边有方向的图称为有向图,边没有方向的图称为无向图,最短路径算法里可以把无向图视为双向连接的有向图。 边有权重的图称为有权图,边没有权重的图称为无权图,无权图可以视为边的权重均为1的图。点对点最短路径求图中任意(所有)两点之间的最短路径,Floyd-Warshall算法概述点对点路径可以通过将每个点作为源点使用Dijkst...原创 2018-01-20 18:15:20 · 2118 阅读 · 0 评论 -
书签 of 技术文章
经常会读到一些优质的技术文章,本文负责整理这个,慢慢积累。HDFSHadoop核心之HDFS 架构设计原创 2018-08-02 22:42:17 · 222 阅读 · 0 评论