Linux mmap原理 前言 Linux段页式内存管理 mmap mmap内存映射原理 文字概述 mmap函数参数介绍 源码解析 1. 文件映射 2. ,但是并没有深入理解mmap在操作系统内部是如何实现的,原理是什么。 本文想要和大家一起来聊聊mmap的原理,本文整体脉络如下: linux段页式内存管理回顾 mmap原理 ---- Linux段页式内存管理 这里的段页式内存管理主要基于linux 0.11进行讲解 (作者本人并非主攻linux,所以只是对linux 0.11略有研究) 无论是现代操作系统还是最早的linux 0.11操作系统,在对于物理内存的管理,都是将物理内存按页划分,如下图所示: 下面我们通过一幅图来对 mmap 的原理进行阐述: 从上图可以看出,mmap 的原理就是将虚拟内存空间映射到文件的页缓存,我们可以知道:对文件进行读写时需要经过页缓存进行中转的。
系统调用 是 Linux 内核提供的一段代码(函数),其实现了一些特定的功能,用户可以通过 int 0x80 中断(x86 CPU)或者 syscall 指令(x64 CPU)来调用 系统调用。 二、进入系统调用 本文主要介绍的是 x86 CPU 进入系统调用的方式 Linux 提供了 int 0x80 中断来让用户程序进入 系统调用,我们来看看 Linux 对 int 0x80 中断的处理初始化过程 原理如下图(图片来源 https://developer.ibm.com/zh/technologies/linux/tutorials/l-system-calls/ ): ? Linux 使用寄存器来传递参数,参数与寄存器的关系如下: 第1个参数放置在 ebx 寄存器。 第2个参数放置在 ecx 寄存器。 第3个参数放置在 edx 寄存器。 而 Linux 进入中断处理程序时,会把这些寄存器的值保存到内核栈中,这样 系统调用 就能通过内核栈来获取到参数。
手把手教您从零开始搭建网站/Minecraft游戏服务器/图床/网盘、部署应用、开发测试、GPU渲染训练等,畅享云端新生活。
文章目录 1.epoll 的用法 2.epoll 的创建 3.epoll 对象结构 4.向 epoll 添加文件描述符 5.阻塞和唤醒进程 6.小结 参考文献 epoll 是 Linux 平台下的一种特有的 本文主要讲解 epoll 的实现原理。 1.epoll 的用法 先复习下 epoll 的用法。 epoll_create() 函数创建一个 epoll 的文件描述符,epoll_create() 函数原型如下: int epoll_create(int size); 参数 size 是由于历史原因遗留下来的,自 Linux ---- 参考文献 epoll_create(2) - Linux manual page - man7.org linux内核Epoll 实现原理 Linux source code (v6.0)
原标题:SSL的工作原理 SSL的工作原理中包含如下三个协议: 1、握手协议 握手协议是客户端和服务器用于与SSL连接通信的第一个子协议。握手协议包括客户端和服务器之间的一系列消息。 该协议允许服务器和客户端相互进行身份验证,协商加密和MAC算法,以及保密SSL密钥以保护SSL记录中发送的数据。在应用程序的数据传输之前使用握手协议。 2、记录协议 在客户端和服务器握手成功之后使用记录协议,即客户端和服务器相互认证并确定安全信息交换使用的算法,并输入SSL记录协议,该协议为SSL提供两种服务连接: (1)保密性:使用握手协议定义的秘密密钥实现 (2)完整性:握手协议定义了MAC,用于保证消息完整性 3、警报协议 客户机和服务器发现错误时,向对方发送一个警报消息。 证书的工作流程 1、用户连接到你的Web站点,该Web站点受服务器证书所保护。(可由查看 URL的开头是否为”https:”来进行辩识,或浏览器会提供你相关的信息)。
在Linux内核中,进程又称为任务(task),进程的虚拟地址空间可以分为用户虚拟地址空间和内核虚拟地址空间,所有进程共享内核虚拟地址空间,又各自拥有独立的用户虚拟地址空间。 C语言标准库进程和Linux的内核进程称呼有所区别,对应关系如下: C标准库 Linux内核 包括多个线程的进程 线程组 只有一个线程的进程 图片 Linux内核提供了一组宏值来表示进程的状态: TASK_RUNNING(可运行状态或就绪状态);Linux并没有严格区分运行态或就绪态,统一为TASK_RUNNING Linux不支持硬实时处理,至少在主流的内核中不支持。
显示命令执行时间 linux shell 具有history 功能,即会记录已经执行过的命令,但是默认是不显示命令的执行时间,命令的执行时间,history 已经记录,只是没有显示。
原理!gps网络时间服务器工作原理 原理!gps网络时间服务器工作原理 摘 要:首先对时间同步进行了背景介绍,然后讨论了不同的时间同步网络技术,最后指出了建立全球或区域时间同步网存在的问题。 其准确度和NTP服务器与用户间的距离有关,一般在国内或区域内可以获得1~50 ms的时间校准精度。 目前国际上有几百台一级时间服务器提供这种时间同步服务,其中以美国国家标准技术研究院(NIST)的性能最好。 图1是共视法的原理图。共视法是将各节点的时钟同时和标准时钟进行比较,节点时钟之间的时刻值误差通过随后的数据交换进行比较和修正。 图2是利用E1电路双向法进行标准时间传送实验的原理图。
我们经常需要通过类UNIX下连接我们的Linux服务器。比如我的Mac下经常需要连接上Linux服务器。
目录 一、服务器型号 二、操作系统 三、CPU 四、内存 五、硬盘 六、其他 一、服务器型号 dmidecode|grep "System Information" -A9|egrep "Manufacturer
Varnish 是什么 Varnish是高性能开源的反向代理服务器和HTTP缓存服务器 Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存 Squid是从硬盘读取缓存的数据,而Varnish 把数据存放在内存中,直接从读取内存,避免了频繁在内存、磁盘中交换文件,所以Varnish要相对更高效,但也有缺点,内存中的缓存在服务器重启后会丢失 Varnish 如何工作 初始化过程 Varnish 当有请求过来时,负责唤起一个工作线程来处理请求 工作线程会分析http请求的uri,知道了这个请求想要什么,就到缓存中查找是否有这个对象 如果有,就把缓存对象直接返回给用户 如果没有,会把请求转给后端服务器处理
1.Linux无论有多少个分区.分给哪一个目录,整个文件系统也只有一个根目录.它的每一个分区都是用来组成整个文件系统的一部分.Linux使用一种”载入”的处理办法.将分区和目录联系起来.这时要载入一个分区 ,将使它的存储空间在一个目录下获得. 2.Linux硬盘编号说明 Linux中的硬盘分为IDE硬盘,SCSI硬盘和SATA硬盘 硬盘编号格式为”sdXY”,其中”sd”表示硬盘为SCSI的类型(IDE类型为 可以通过lsblk查看硬盘分区和挂载情况 3.硬盘挂载和卸载操作 给当前linux系统添加一块新的硬盘(2GB),并挂载到指定的目录(/home/disk2-1目录) 执行步骤: 在虚拟机中添加一个新硬盘 对新硬盘进行分区 对新硬盘的分区进行格式化 格式化指令: mkfs -t ext4 需要格式化的磁盘分区文件 将分区挂载到linux对应的目录上 挂载指令: mount 分区文件 挂载目录 注意: 挂载到的目录需要提前创建
在 Linux 环境下编译出来的可执行文件都是遵循 ELF 格式,如果没有特殊处理,它会保留比较完整的 符号表。 就拿开头的程序来当例子,可以通过 readelf -s a.out 查看: ? /trace_test 22346 # 本文开头的进程 总结 关于断点的原理网上有很多文章提到,但比较多也是蜻蜓点水一笔带过,意犹未尽,干脆直接用最浅显的例子降低大家练手 成本!
Linux 通过 软中断 实现从 用户态 到 内核态 的切换。 用户态 与 内核态 是独立的执行流,因此在切换时,需要准备 执行栈 并保存 寄存器 。 在 Linux 中, 系统调用号 一般通过 eax 寄存器 来传递。
什么是控制群组 控制群组(control group)(在此指南中简写为 cgroup)是 Linux kernel 的一项功能:在一个系统中运行的层级制进程组,您可对其进行资源分配(如 CPU 时间、 ------------ 通过将 cgroup 层级系统与 systemd 单位树捆绑,Red Hat Enterprise Linux 7 可以把资源管理设置从进程级别移至应用程序级别。 ------------ 在 Red Hat Enterprise Linux 之前的版本中,系统管理员使用 libcgroup 软件包中的 cgconfig 指令来建立自定义 cgroup 层级。 cgroups文件系统 Linux 使用了多种数据结构在内核中实现了 cgroups 的配置,关联了进程和 cgroups 节点,那么 Linux 又是如何让用户态的进程使用到 cgroups 的功能呢 Linux内核有一个很强大的模块叫 VFS (Virtual File System)。 VFS 能够把具体文件系统的细节隐藏起来,给用户态进程提供一个统一的文件系统 API 接口。
前言 在网上可以搜索到 2 种在腾讯云服务器上安装kali系统的方法: 第一种方法: 通过挂载云硬盘到云服务器上,将kali镜像刻录到挂载的云硬盘中,利用VNC可视化安装kali系统;查看详情 第二种方法 0x01 安装前准备一个 kali linux 镜像:点击下载 一个腾讯云服务器:点击访问 一个 virtualbox 虚拟机软件:点击下载 0x02 安装 virtualbox 软件 双击运行 virtualbox virtualbox安装kali虚拟机 首先确定腾讯云的镜像格式要求如下 本文接下来所要演示的镜像格式为:RAW 格式 打开virtualbox,新建虚拟电脑,按要求填写,点击下一步 虚拟机内存大小根据你的云服务器的内存大小而定 然后点击自定义镜像,选择刚制作好的kali镜像,设置好密码,开始重装系统 重装完毕后,就可以选择VNC登陆kali系统 不出意外的话就可以看到kali的界面了 到此为止,kali成功部署到腾讯云服务器上了 而云服务器的硬盘一般都是有50G的大小,安装完kali系统只用了10G,我们需要将剩余近40G空间全分配给kali。 1.
accept() — 将侦听端口中的ESTABLISHED队列中取出那些连接 connect() — 客户端连接请求 客户端过程:socket() -> bind(optional) -> connect() 服务器过程 因此,listen是服务器的必须过程。 >>>> listen时如果客户端到达最大允许数了,对于新过来的SYN请求怎么处理?
Ceph OSD的架构实现由物理磁盘驱动器、Linux文件系统和Ceph OSD服务组成,对于Ceph OSD Deamon而言,Linux文件系统显性的支持了其拓展性,一般Linux文件系统有好几种, RBD:RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。 CEPH FS:CEPH FS通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统。 在说明CRUSH算法的基本原理之前,先介绍几个概念和它们之间的关系。 Cluster Map里的内容信息包括存储集群中可用的存储资源及其相互之间的空间层次关系,比如集群中有多少个支架,每个支架中有多少个服务器,每个服务器有多少块磁盘用以OSD等。
macvlan是Linux操作系统内核提供的网络虚拟化方案之一,更准确的说法是网卡虚拟化方案。
概述 什么是时间服务器 NTP:Network Time Protocol 网络时间协议,用来同步网络中各主机的时间,在linux系统中早期使用ntp来实现,后来使用chrony来实现,Chrony 应用本身已经有几年了 核心组件: chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。 clock gains/losses time. driftfile /var/lib/chrony/drift #用来记录时间差异,由于chrony是通过BIOS判断时间的,他会用这个时间与上层时间服务器进行对比 #local stratum 10 #即时自己未能通过网络时间服务器同步时间,也允许将本地时间作为标准时间同步给其他客户端 # Specify file containing keys for NTP 和防火墙关闭 要求: 192.168.2.100为内网时间服务器,192.168.2.200为客户端,200的客户端的时间要与100的时间同步 在192.168.2.100主机上 step1 检查时间服务器上是否有相关软件包
云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。
扫码关注腾讯云开发者
领取腾讯云代金券