4.1 保护模式概述
在本章大家会见到全局描述符表、中断描述符表、各种门结构,这是 CPU 提供给应用的,咱们用好就行。
保护模式强调的是“保护”,它是在 Intel 80286 CPU 中首次出现,这是继 8086 之后,Intel 紧接着退出的一款产品。
“想要啥就有啥”井不是真正的幸福,而是发自内心地感恩、珍惜目前所拥有的一切。
4.1.1 为什么要有保护模式
让我们看看 CPU 实模式的不幸,大家就清楚保护模式的幸福了。
实模式下操作系统和用户程序属于同一特权级;
用户程序所引用的地址都是指向真是的物理地址,也就是说逻辑地址等于物理地址;
用户程序可以自由修改段基...
3.3 让我们对显示器说点什么吧
3.3.1 CPU 如何与外设通信——IO 接口
IO 接口功能:
设置数据缓冲,解决 CPU 与外设的速度不匹配
设置信号电平转换电路
设置数据格式转换
设置时序控制电路来同步 CPU 和外部设备
提供地址译码
CPU 通过总线访问 IO 接口,但是同一时刻 CPU 只能和一个 IO 接口通信,当很多的 IO 接口同时想和 CPU 对话时,面对众多接口时 CPU 应该如何选择?这个工作不应该由 CPU 来做,CPU 太忙了,还是好刚使在刀刃上吧,既然分层能解决问题,咱们再加一层,这一层的责任是除了仲裁 IO 接口的竞争,还要连接...
针对汇编
几个知识点:
第 1 行和第 4 行的 mov 操作,机器码第 1 个宇节都是B8,而另外第 2、3 行同样是 mov 指令,机器码却有天壤之别,似乎找不到共性。原因是机器码是由很多部分组成的,比如指令前缀、主操作码字节以及寻址方式字节。寻址方式由 ModR/M 字节、SIB 字节、位移量、立即数组成。第 1 行和第 4 行的 mov 的机器码中第 1 宇节都是B8 ,其原因是寻址方式都是立即数。第 5 行的“无条件跳转 jmp”对应的机器码第 宇节是EB。 还有"小于时跳转 j1"、"等于时跳 je ",“不小于等于时跳转 jnl...
本文整理自《modeln C++ Tutorial:C++11/14/17/20》
右值引用是 C11 引入的与 Lambda 表达式齐名的重要特性之一。它的引入解决了 C 中大 量的历史遗留问题,消除了诸如 std::vector、std::string 之类的额外开销,也才使得函数对象容器 std::function 成为了可能。
什么是左值右值
要弄明白右值引用到底是怎么一回事,必须要对左值和右值做一个明确的理解。
左值 (lvalue, left value),顾名思义就是赋值符号左边的值。准确来说,左值是表达式(不一定是赋 值表达式)后依然存在的持久对象。
右值 (rval...
本文章介绍了对project-c 社区 linux-prjc 项目5.15 版本内核编译测试的准备工作。
纯净版内核编译:
123wget https://gitlab.com/alfredchen/projectc/-/raw/master/vm_kernel_config/5.15-pds-vm-mini-smt_nice.config?inline=falsecp 5.15-pds-vm-mini-smt_nice.config linux-prjc/.confignice -n 10 make -j8
KVM 准备工作
必须拥有 支持 VT-x(vmx)的 Intel 处理...
出现问题的原因
Linux Kernel 代码文件有用系统保留字aux命名的文件,导致 clone 名字中有aux、com1等保留字时就会失败;
Linux 文件名区分大小写,但 Win 下不区分大小写,导致当两个文件只是名字大小写不同时 win 就只能识别一个文件
解决方案
1. 开启文件区分大小写:
以管理员身份运行 PowerShell
1fsutil.exe file SetCaseSensitiveInfo D:\CLionProjects\linux-prjc enable
2. 克隆代码
1git clone https://gitlab.com/songqianl...
本文介绍了如何安装 Project-C 维护的带有Alternative CPU Schedulers的 Linux Kernel
下载源代码
下载 kernel 源代码,默认为 5.15-lts 分支
1git clone https://gitlab.com/songqianli/linux-prjc.git
安装软件包
1sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
内核代码配置
进入源代码目录
1cd ...
“零拷贝”技术
Sogou C++ Workflow:搜狗公司的 C++服务器引擎,支持 500k QPS
Reducing CPU scheduler latency in Linux:CPU 调度算法 BMQ 和 CFS 的对比
Linux kernel stable tree - 5.15 commit message:kernel5.15 版本更新日志
《Linux 内核观测技术 BPF》第四章
先了解 CPU 的两种工作模式:实模式和保护模式
实模式(英语:Real mode)是 Intel 80286 和之后的 x86 兼容 CPU 的操作模式。实模式的特性是一个 20 比特的区段存储器地址空间(意思为只有 1MB 的存储器可以被寻址),可以直接软件访问 BIOS 程序以及周边硬件,没有任何硬件等级的存储器保护观念或多任务。保护模式:寻址采用 32 位段和偏移量,最大寻址空间 4GB,最大分段 4GB (Pentium Pre 及以后为 64GB)。在保护模式下 CPU 可以进入虚拟 8086 方式,这是在保护模式下的实模式程序运行环境。
实模式的寻址方式是:cs<4+...
eBPF 技术简介
基于 eBPF 的网络检测实践
Chapter 2. Debian package management
2.1.6. Package dependencies
The Debian system offers a consistent set of binary packages through its versioned binary dependency declaration mechanism in the control file fields. Here is a bit over simplified definition for ...