![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 96
贝克街的流浪猫
公众号: 贝贝猫技术分享
展开
-
在 CentOS 上构建无线网络测试环境
引言前段时间,我负责的远程控制手机的功能新加了动态修改手机端网络延迟的功能(网络测试),所以当时 Infra 团队为我们构建了一个 WiFi 网络环境,并通过两台 Linux 主机进行实际的网络控制。不过后来我们对其软件解决方案进行了改善,使其不仅能够修改网络的延迟,还能够修改网络的带宽和丢包情况,本文就介绍了这整个实现方案。网络结构上图是整个 WiFi 网络环境的结构的简化图。同一 WiFi 由多个 AP 负责,它们使用同一个 SSID,密码,但是工作在不同的信道上。当任一 AP 故障时,连原创 2021-04-03 14:16:03 · 384 阅读 · 0 评论 -
Linux 简介
引言本文整理了 Linux 内核的相关知识。简介内核的任务内核是硬件与软件之间的一个中间层,它将计算机的硬件资源抽象到一个更高的层次上,帮助上层应用高效地使用资源,当若干个程序并发地运行时,内核扮演着一个资源管理器的角色,在这种情况下,内核将共享资源(CPU 时间,磁盘,网络等)分配到各个进程。实现策略操作系统的实现一般分为两个流派:微内核:最基本的功能由中央内核实现,其他功能将有一些独立的模块实现,这些模块可能包括(文件系统,内存管理等),理论上这种微内核的实现方案应该是最优的,它将系统原创 2021-04-03 14:15:43 · 211 阅读 · 0 评论 -
Linux 进程管理与调度
引言本文整理了 Linux 内核中进程管理与调度的相关知识。进程管理与调度现代操作系统都能同时运行多个进程,至少从用户的角度来看是这个样子的。每一个处理器上某一指定时刻只能有一个程序可以运行,在多处理器系统中,并行运行的进程数目取决于 CPU 的数量。内核和处理器相互配合,给用户以多任务并行的错觉,这是通过以很短的时间间隔在运行的应用程序之间不停地切换而做到的。因为切换的间隔足够短,所以用户根本感觉不到短时间内的停滞,从而觉得计算机能够同时做多件事。由于操作系统通过上述方式管理程序的运行,就引出原创 2021-04-03 14:15:32 · 456 阅读 · 0 评论 -
Linux 内存管理
引言本文整理了 Linux 内核中内存管理的相关知识。内存管理物理内存划分在介绍内存管理之前,我们先来了解一下目前主流的两类计算机,它们分别以不同的方式管理内存:UMA 计算机(一致内存访问,uniform memory access)所有 CPU 共用同一块连续内存,各个 CPU 访存速度相同。NUMA 计算机(非一致内存访问,non-uniform memory access)每个 CPU 都有本地内存,可以快速访问,各个处理器之间通过总线连接,以支持对其他 CPU 的本地内存的访问,距原创 2021-04-03 14:15:26 · 265 阅读 · 0 评论 -
Linux 进程虚拟内存
引言本文整理了 Linux 内核中进程虚拟内存的相关知识。进程虚拟内存虚拟地址空间各个进程的虚拟地址空间起始于 0,一直到 TASK_SIZE - 1,其上是内核地址空间。在 IA-32 系统上地址空间的范围是 4GB,按照默认比例 3:1 来划分的话,内核分配 1GB,各个用户进程可用的部分为 3GB。用户程序只能访问整个地址空间的下半部分,不能访问内核部分,同时用户进程也不能操作另一个进程的地址空间(除非共享内存),因为后者的地址空间不可见。进程虚拟地址空间由多个不同长度的段组成,用于不同的原创 2021-04-03 14:15:19 · 279 阅读 · 0 评论 -
Linux 系统调用
引言本文整理了 Linux 内核中系统调用的相关知识。系统调用实现既然前面在介绍缺页异常的时候引到了系统调用的知识,这里我们就紧接着介绍一下 Linux 的系统调用。从某种角度来看,可以将内核视作个综合性的库,它包含了各种可向用户层应用程序提供的功能。系统调用是应用程序与该库之间的接口。通过调用系统调用,应用程序可以向内核请求一个服务,内核接下来满足该请求。设计基础基本上,我们都是通过标准库来开发自己的软件,标准库提供了各种基本函数,这些基本函数下层可能就是组合了数个系统调用。因为通用编程语言正原创 2021-04-02 09:10:29 · 253 阅读 · 0 评论 -
Linux 锁与进程间通信
引言本文整理了 Linux 内核中锁与进程间通讯的相关知识。锁与进程间通讯前面介绍系统调用时就提到了信号这一进程间通讯手段,这一节我们详细的介绍各种进程间通讯的机制(IPC)。和 IPC 相关的多进程交互过程势必会牵扯到同步机制,所以在这一节中我们先会介绍锁的相关内容。锁在讲述内核的各种进程间通信 (inter process communication,IPC) 和数据同步机制之前,我们简单讨论一下相互通信的进程彼此干扰的可能情况,以及如何防止。假如两个进程通过共享内存的方式使用了同一计数器,原创 2021-04-02 09:10:23 · 304 阅读 · 0 评论 -
Linux 设备驱动
引言本文整理了 Linux 内核中设备驱动的相关知识。设备驱动与外设的通信通常称为输入输出(I/O),在实现外设的 I/O 时,必须着重处理三个问题:对硬件寻址提供访问设备的方法,而且要尽可能采用统一方案获取可用设备列表与外设的通信是层次化的,通过多层的抽象,使得上层应用在访问设备时,可以使用一套统一的接口。下图就展示了设备的分层抽象概念,我们可以看到,从最下层的设备开始,通过驱动程序作为粘合剂编入虚拟文件系统管理,从此设备在用户空间看来就是一个特殊的文件,而应用程序在访问各种设备时就如原创 2021-04-02 09:10:15 · 249 阅读 · 0 评论 -
Linux 虚拟文件系统
引言本文整理了 Linux 内核中虚拟文件系统的相关知识。虚拟文件系统为了支持各种本机文件系统,且同时允许访问其他操作系统的文件,Linux 内核在用户进程与实际文件系统实现之间引入了一个抽象层,该层称为虚拟文件系统。它的任务并不简单,一方面它要提供一套管理所有文件,目录的统一方法。另一方面它要和具体文件系统支持的功能达成妥协,因为每种文件系统实现都差别迥异。文件系统类型文件系统一般分为如下三种:基于磁盘的文件系统,在非易失介质上存储文件的经典方法。虚拟文件系统,内核生成的虚拟结构,可用原创 2021-04-02 09:10:09 · 190 阅读 · 0 评论 -
Linux Ext 文件系统
引言本文整理了 Linux 内核中 Ext 文件系统的相关知识。文件系统种类前面我们讨论了虚拟文件系统,它对所有下层文件系统进行了封装,统一了上层接口并粘合了下层文件系统,这时候应用开发者就接触不到硬盘的数据组织,但是大家一定很好奇,在文件系统这一层是如何组织并有效的利用硬盘的。接下来,我们将介绍 Ext 文件系统的实现方案,同时会顺带着介绍一下无持久存储的文件系统(/proc)。Ext 文件系统Ext 文件系统这里主要介绍 Ext2 和 Ext3,它们的特性如下:Ext2 文件系统: 该文原创 2021-04-02 09:10:04 · 934 阅读 · 0 评论 -
Linux 缓存与页交换
引言本文整理了 Linux 内核中缓存与页交换的相关知识。缓存与页交换从外部存储设备读取数据,比从物理设备读取数据要慢得多,因此 Linux 使用了缓存机制将已经读取的数据保存在内存中,供后续访问使用。而外部存储设备相较于内存来说容量一般大很多,所以当物理内存不够时,会将一部分物理内存中的内容暂存在外部存储中,在有需要的时候再取回来。这两个主题就是缓存与页交换,它们之间十分相似,又有很多联系,可以说缓存是页交换的逆操作,接下来我们就将详细地介绍一下它们。页缓存和块缓存缓存利用部分系统物理内存,确原创 2021-04-02 09:09:57 · 690 阅读 · 0 评论 -
Linux 中断
引言本文整理了 Linux 内核中断的相关知识。中断大家应该很清楚,系统在执行时可以处于两种可能的状态:核心态和用户态。之前我们讨论过的系统调用,就能使进程从用户态切换到核心态去执行某些任务,当执行成功后再回到用户进程中。大家可能还记得这是通过软中断来实现的,那么中断到底是什么呢? 接下来我将介绍与中断相关的一些知识。硬中断通常中断可以分为如下两个类别:同步中断和异常。这些由 CPU 自发地针对当前执行的程序产生的。异常可能因种种原因触发: 由于运行时发生的程序设计错误(除0),或由于出现了原创 2021-04-02 09:09:52 · 315 阅读 · 0 评论 -
Linux 时间管理
引言本文整理了 Linux 内核中时间管理的相关知识。时间管理到目前为止,我们已经谈论了许多关于时间相关的任务,比如延迟某一段时候后执行某个任务,又或者在超时时间内等待某一事件的到来,但是我们还没有介绍 Linux 如何管理时间的,如何实现和时间相关的工作。所以,接下来我们就来一一介绍它们。在早期的 Linux 中,时间系统中只包含一个低分辨率定时器,它会以一个固定的时钟周期工作(发出时钟中断),同时也可以预定在某个时钟周期激活指定的事件。但是这个方案有几个不好的地方:电力有限的设备(笔记本电原创 2021-04-02 09:09:46 · 499 阅读 · 0 评论 -
Linux 网络
引言本文整理了 Linux 内核中网络的相关知识。网络模块最后,我们介绍一下 Linux 的网络实现,Linux 以一种结构良好到令人惊讶的模型,整合了各种协议和底层硬件。互联的计算机计算机之间的通信是一个复杂的主题,引出了许多问题,诸如:如何建立物理连接?使用何种线缆?通信介质有哪些限制和特殊要求?如何处理传输错误?如何识别网络中的每一台计算机?如果两台计算机通过其他计算机连接,那么二者之间的数据交换如何进行?如何查找最佳的路由?如何打包数据,使之不依赖于特定计算机的特性?如果一原创 2021-04-02 09:09:40 · 536 阅读 · 0 评论