
操作系统
文章平均质量分 92
孤独剑0001
这个作者很懒,什么都没留下…
展开
-
到底该如何理解socket的阻塞/非阻塞/同步/异步
转载自:https://blog.youkuaiyun.com/voidccc/article/details/8619514这4个名词的解释网络上有很多种版本和很多种比喻,个人不太喜欢打比方的方式来理解技术问题,因为很难有贴切的比喻,稍不注意就把人带到沟里.我们这里只通过技术模型来理解这4个术语,忽略这些名词广义上的定义,通过分析下面这个具体的场景来分享下我对他们的理解:场景:假设要通过一个socket发送...转载 2018-05-11 18:53:07 · 344 阅读 · 0 评论 -
linux进程空间、页缓存和虚拟文件系统图
linux内核与实现中分别大致介绍了内核子系统的各个模块,并给出了该模块下重要的数据结构。但是,阅读过本书之后(感觉底层确实欠缺)发现只是对各个子系统分别有了一个大致的印象,单凭自己的理解难以将各个系统之间串联起来,尤其是每个内核子系统总是涉及较多的数据结构。趁着即将元旦假期,花点时间将内核中的虚拟文件系统、进程地址空间、页缓存以及内存映射之间的关系建立一个大致的框图。有关于各个子...原创 2018-04-28 14:55:54 · 1516 阅读 · 2 评论 -
逻辑地址、线性地址和物理地址之间的转换
首先说明一点,本篇的文章是根据自己的理解总结,但是图可能是在已有的博客中截图的,在此对那些对我理解该部分知识提供帮助的博客博主表示感谢! 在逻辑地址、线性地址和物理地址一节中,已经对逻辑地址、线性地址和物理地址的概念做了详细的讲解。现在在这篇文章中,我们可以详细的对段式、页式、段页式内存管理方式以及三种地址之间的转化做一个详细且深入的说明。 文章按照由简单到深...原创 2018-04-28 15:25:20 · 15406 阅读 · 0 评论 -
linux文件体系结构和虚拟文件系统
linux中的虚拟文件系统(Virtual File System, VFS)是一种采用面向对象编程策略(尽管书写操作系统的C语言本身不支持面向对象编程,但是思想还是可以借鉴的),是对该操作系统所支持的所有实际物理文件系统的一种抽象,用于提供给用户进程或者系统调用操作当前系统中所有文件统一的接口,而不用关心当前操作系统中存在哪几种实际的物理文件系统。也可以这么说VFS实际提供了面向...原创 2018-04-28 15:59:05 · 2110 阅读 · 0 评论 -
基数树结构---radix_tree
最近在学习linux中内存管理相关的章节,其中页缓存相关的结构体中遇到了成员数据结构radix_tree_root和radix_tree_node,由于以前没有遇见过这两种数据结构,因此在此处针对这两种数据结构在linux内核的内存管理中的应用做一个简要的记录。一、概述 linux radix树最广泛的用途是用于linux的 内存管理,结构address_space通...原创 2018-04-28 16:09:54 · 5059 阅读 · 1 评论 -
linux中的页缓存和文件IO
虽然仔细看过《linux内核设计与实现》,也参考了很多的博客,并且做了linux进程空间、address_space和文件的关系图(设为图1,参考博客),但是对于页缓存和文件IO之间关系的细节一直不是特别明朗。趁着元旦假期看的博客中思路还算清晰,写下当前对于页缓存的理解及其和文件IO之间的关系。 首先明确的一点是,本文所述的是针对linux引入了虚拟内存管理机制以后所...原创 2018-04-28 16:37:47 · 11001 阅读 · 2 评论 -
内存映射mmap
内存映射是linux中的一个重要机制,它和虚拟内存管理和文件IO都有直接的关系,本篇将详细介绍linux中内存映射的原理。mmap基本概念 在介绍内存映射之前,首先知道现代计算机系统普遍采用虚拟内存的方式管理物理内存。在32位机器上每个进程都有自己的4G虚拟内存空间,其中0-3G属于用户空间,是该进程独有的;3-4G之间的是内核空间,是计算机中的所有进程的内核空间和内...原创 2018-04-29 09:47:13 · 1444 阅读 · 1 评论 -
linux系统下的软连接与硬链接
前几天在linux系统下安装mongoDB,然后运行脚本导入数据的时候遇到了链接库查询不到的情况,如图 1所示。当时是通过创建软连接的方式解决的这个问题。虽然,通过网上的教程解决了这个问题,但是对于软连接和硬链接始终不是很明白。趁着周末的时间补补课,将软连接和硬链接的概念、特点以及创建的限制系统的学习一下。图 1 缺少文件的提示 Linux下的连接文件分为两种,一种是类似于windows的快...原创 2018-04-29 09:47:40 · 602 阅读 · 0 评论 -
进程间通信---管道
虽然看过APUE这本书,但是还是实践出真知。虽然看过相关的内容,但是只是停留在理论的层面,今天遇到的问题还是在大牛的提示下了解了原因所在---进程之间的管道通信导致进程阻塞。 问题是这样的,使用资源管理器rigger -ng启动nginx的过程中,卡在nginx的语法校验一步而无法再继续向下进行,导致nginx无法启动。一开始我和同事折腾半天以为是nginx的配置问题,后来才发现是进程之间的...原创 2018-04-29 09:47:27 · 319 阅读 · 0 评论