《Operating Systems: Three Easy Pieces》学习笔记(十二) 分段
结合上一篇文章,堆和栈之间有一大块“空闲”空间,如果没被使用,也占用了物理内存。如果虚拟内存地址空间很大,对物理内存也是极大的浪费,回想一下,进程确实有权力拥有这么大的空间,最大可以拥有最大段大小的地址空间,进程完全可以声明自己需要这么大空间,但可能不会使用,操作系统总得给它预留这么多。 分段:泛化的基址/界限 为了降低物理内存浪费,我们对段做细分,原来每个进程对应一个段,现在让每个进程...
结合上一篇文章,堆和栈之间有一大块“空闲”空间,如果没被使用,也占用了物理内存。如果虚拟内存地址空间很大,对物理内存也是极大的浪费,回想一下,进程确实有权力拥有这么大的空间,最大可以拥有最大段大小的地址空间,进程完全可以声明自己需要这么大空间,但可能不会使用,操作系统总得给它预留这么多。 分段:泛化的基址/界限 为了降低物理内存浪费,我们对段做细分,原来每个进程对应一个段,现在让每个进程...
高效、灵活地虚拟化内存。需要一种基于硬件的地址转换(hardware-based address translation),简称为地址转换(address translation)。将指令中的虚拟(virtual)地址转换为数据实际存储的物理(physical)地址。 虚拟地址映射 用户进程在物理内存中并不是从 0 地址开始的 动态(基于硬件)重定位(dynamic relocat...
在本章中,我们将介绍 UNIX 操作系统的内存分配接口 内存类型 栈内存 它的申请和释放操作是编译器来隐式管理的,所以有时也称为自动(automatic)内存。比如,一个函数的局部变量,在进入函数时分配,退出时释放。 堆内存 申请和释放都是显式的,比如 C 语言的malloc。 malloc()调用 malloc 的用法...
早期系统 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址 0 开始),然后有一个正在运行的程序(进 程),目前在物理内存中(在本例中,从物理地址 64KB 开始), 并使用剩余的内存。这里几乎没有抽象。 多道程序和时分共享 3 个进程(A、B、C),每个进程拥有从 512KB 物理内存中切出来给它们的一小部分内存。假定只有一 个 CPU,操作系统选择运...
固件 使用 Armbian focal cli 版本,基于 Ubuntu server 20.04 armbian 官网 存储 外置 USB 硬盘 自动休眠 修改 etc 配置 # /etc/hdparm.conf /dev/sda { write_cache = on spindown_time = 120 } 立刻休眠 # 省电standby hdpa...
s1 Scope s3 Terms, definitions and abbreviations and symbols s3.1 General DLMS/COSEM definitions s4 Information exchange in DLMS/COSEM s4.1 General s4.2 Comm...
本章将介绍一种不同的调度方法–比例份额(proportional-share)调度,有时也称为公平份额(fair-share)调度程序。比例份额算法基于一个简单的想法:调 度程序的最终目标,是确保每个工作获得一定比例的 CPU 时间,而不是优化周转时间和响 应时间。 比例份额调度程序有一个非常优秀的现代例子,由 Waldspurger 和 Weihl 发现,名为彩票调度(lottery s...
s4.1 基本概念 s4.1.2 Referencing methods logical names (LN referencing):The reference for an attribute is: class_id, value of the logical_name attribute, attribute_index.The reference for a method is...
本文将会介绍如何使用 C++实现设计模式中的 DAO(数据访问对象模式) DAO 介绍 什么是 DAO 在计算机软件中,数据访问对象(data access object,DAO)是为某种类型的数据库或其他持久性机制提供一个抽象接口的对象。通过映射应用程序对持久层的调用,DAO 提供一些特定的数据操作,而无需暴露数据库细节。这种隔离支持单一功能原则。 数据访问对象模式(Data Ac...
本文将会介绍现代容器技术的原理,以及容器如何与边缘计算和云原生结合起来,实现基于容器技术的物联网框架 容器定义 操作系统层虚拟化(Operating system–level virtualization),亦称容器化(Containerization),是一种虚拟化技术,这种技术将操作系统内核虚拟化,可以让我们在一个资源隔离的进程中运行应用及其依赖项 运行应用程序所必需的组件都将打包...