Linux
文章平均质量分 81
Bulin_
这个作者很懒,什么都没留下…
展开
-
2021SC@SDUSC Linux内核—项目总结
项目总结通过我们小组的共同学习,我们已经基本掌握了Linux内核编译、Linux设备驱动程序的使用以及Linux内核中的密码子系统、 异步队列、内核多线程、模块等技术,掌握了核心代码dm-crypt的具体原理及实现。所以对于项目开始提出的问题:加密卡- -次只能处理一个sector (512字节)的数据,虽然利用I0技术提高了性能,但是对于更快的新加密卡,处理速度仍然很慢,想要使用异步和多线程机制完全发掘新加密卡的性能。通过这-学期的源码分析以及其他知识的学习,认为可以把队列中的相邻甚至不相邻的s原创 2021-12-27 16:36:33 · 387 阅读 · 0 评论 -
2021SC@SDUSC Linux内核—系统调用
系统调用一、什么是系统调用系统调用 跟用户自定义函数一样也是一个函数,不同的是 系统调用 运行在内核态,而用户自定义函数运行在用户态。由于某些指令(如设置时钟、关闭/打开中断和I/O操作等)只能运行在内核态,所以操作系统必须提供一种能够进入内核态的方式,系统调用 就是这样的一种机制。系统调用 是 Linux 内核提供的一段代码(函数),其实现了一些特定的功能,用户可以通过 int 0x80 中断(x86 CPU)或者 syscall 指令(x64 CPU)来调用 系统调用。二、进入系统调用原创 2021-12-27 16:25:40 · 88 阅读 · 0 评论 -
2021SC@SDUSC Linux内核—虚拟内存管理
Linux虚拟内存管理Linux的内存管理分为 虚拟内存管理 和 物理内存管理,本文主要介绍 虚拟内存管理 的原理和实现。在介绍 虚拟内存管理 前,首先介绍一下 x86 CPU 内存寻址的具体过程。x86 内存寻址Intel x86 CPU 把内存地址分为3种:逻辑地址、线性地址 和 物理地址。 逻辑地址: 也称为 虚拟地址,由 段寄存器:偏移量 组成(段寄存器 为16位,偏移量 为32位),偏移量 是应用程序能够直接操作的地址,比如在C语言中使用 & 操作符取得的变量地址就是 逻原创 2021-12-26 00:02:42 · 106 阅读 · 0 评论 -
2021SC@SDUSC Linux内核—物理内存管理
物理内存管理Linux的内存管理可分为物理内存管理和虚拟内存管理。所谓的虚拟内存就是指程序中使用的地址(32位系统可以使用4GB的虚拟内存地址),而物理地址是指计算机上真实安装的内存(例如我们安装了一条256MB的内存条,那么物理内存就只有256MB,但虚拟内存地址依然有4GB)。Linux内核需要通过一个映射关系才能把虚拟地址转换成物理地址,下面就来介绍Linux内存管理的细节。内存管理区Linux把物理内存划分为内存页进行管理, 一个内存页的大小为4KB, 所以在物理内存为1GB的电脑中可以原创 2021-12-25 23:54:55 · 447 阅读 · 0 评论 -
2021SC@SDUSC Linux内核—原生异步I/O(2)
提交异步 IO 操作提交异步 IO 操作是通过 io_submit 函数完成的,io_submit 需要提供一个类型为 iocb 结构的数组,表示要进行的异步 IO 操作相关的信息,我们先来看看 iocb 结构的定义:struct iocb { __u64 aio_data; // 用户自定义数据, 可用于标识IO操作或者设置回调函数 __u16 aio_lio_opcode; // IO操作类型, 如读(IOCB_CMD_PREAD)或者写(IOCB_CMD_...原创 2021-12-23 23:51:55 · 554 阅读 · 0 评论