该实验报告基本按照参考文献,但改正了一些笔误/错误并按照我实际运行结果修改了部分值。
实验目的
深入理解操作系统的段、页式内存管理,深入理解段表、页表、逻辑地址、线性地址、物理地址等概念;
实践段、页式内存管理的地址映射过程;
编程实现段、页式内存管理上的内存共享,从而深入理解操作系统的内存管理。
实验任务
用 Bochs 调试工具跟踪 Linux 0.11 的地址翻译(地址映射)过程,了解 IA-32 和 Linux 0.11 的内存管理机制;
在 Ubuntu 上编写多进程的生产者—消费者程序,用共享内存做缓冲区;
在信号量实验的基础上,为 Linux 0.11 增加共享内存功能,并将生产者—消费者程序移植到 Linux 0.11。
文件名
介绍
hit-操作系统实验指导书.pdf
哈工大OS实验指导书
Linux内核完全注释(修正版v3.0).pdf
赵博士对Linux v0.11 OS进行了详细全面的注释和说明
file1615.pdf
BIOS 涉及的中断数据手册
hit-oslab-linux-20110823.tar.gz
hit-oslab ...
大学生涯
未读1. 离散存储管理方式描述 (分页、分段、段页式)离散存储管理允许将一个进程的地址空间分散地存放到内存的多个不一定连续的物理区域中。这克服了连续分配的主要缺点——外部碎片。
a) 分页式存储管理 (Paging)
基本思想:
将进程的逻辑地址空间划分为大小相等的页 (Page)。
将物理内存划分为与页大小相等的帧 (Frame) 或页框 (Page Frame)。
以页为单位进行内存分配,可以将逻辑上连续的页存放到物理上不连续的帧中。
内存分配与回收:
分配: 系统维护一个空闲帧列表。当需要为进程加载 n 页时,从空闲帧列表中查找 n 个空闲帧,将页加载到这些帧中。同时,为该进程建立一个页表 (Page Table),记录逻辑页号到物理帧号的映射关系。页表的基地址和长度(或只记录基地址,长度隐含在进程控制块中)存放在进程控制块 (PCB) 中。
回收: 进程结束时,将其占用的所有物理帧归还到空闲帧列表中,并撤销其页表。
地址变换:
逻辑地址结构: (页号 P, 页内偏移量 W)
变换过程:1. 硬件 (MMU) 根据逻辑地址自动分离出页号 P 和页内偏移量 W。2. 系统根据 ...
复现transformerday1 配置环境&下载数据集123conda create --name transformer python=3.8 -yconda activate transformerpip install torch torchvision torchaudio
1pip install datasets
如果没有安装上
1conda install -c conda-forge datasets
然后配置环境变量修改到国内镜像
12pip install -U huggingface_hubexport HF_ENDPOINT=https://hf-mirror.com
数据集:https://huggingface.co/datasets/wmt/wmt14
运行代码下载
12345678from datasets import load_datasetds = load_dataset("wmt/wmt14", "de-en")print(ds)print(ds['train'][0:5])
数据集下载在了
1~/.cache/huggin ...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1hexo new "My New Post"
More info: Writing
Run server1hexo server
More info: Server
Generate static files1hexo generate
More info: Generating
Deploy to remote sites1hexo deploy
More info: Deployment
算法竞赛
未读曼德布罗集 Mandelbrot Set程序基本情况和目标
曼德布罗集(Mandelbrot Set)是一个集合,定义如下:公式解释:对一个特定的复数 ,初始 ,经过 连续迭代后,如果 数列收敛于 附近(不是发散到无穷远),则 属于曼德布罗集。
一般可以认为,曼德布罗集中复数C的实部在 至 之间,虚部在 至 之间,在进行迭代计算中,如果 和原点 的距离超过 ,认为 趋向发散,如果连续经过 次迭代,距离仍不超过 ,则认为 趋向收敛(即 属于曼德布罗集)。
由于复数可以对应到坐标平面上的点,因此曼德布罗集可以直观地使用图形来展示,目标是可视化曼德布罗集。
主要功能模块迭代和迭代次数计算功能:输入点坐标,计算迭代次数。作业要求中已有几乎完整的迭代次数计算函数,但有一定错误和优化空间,需要阅读理解后进行更正和优化。
RGB映射功能:在Mand06作业中,要求支持256+种颜色且低值域敏感。考虑制作一个通解的RGB非对称映射函数。
图像文件生成功能:如题。作业要求中已有几乎完整的图像文件生成函数,但具体的像素点RGB设置依然需要根据不同的作业要求完成。
输入功能 ...
以一种对新手比较友好的方式写了一下代码和注释*一定不是因为我是蒟蒻所以只能这么写(
这道题算是比较简单的字典树,理解了字典树就很好做。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384#include<bits/stdc++.h>#define int long longusing namespace std;class trie {public: struct trie* nxt[26]; int cnt = 0; //给字典树放入新字符串 void ad(string s) { trie* tmp = this; for (char ch : s) { //cout<<ch; int i = ch ...
分治+笛卡尔树碎碎念原题(codeforces)
赛时这题wa了。赛后看到d题大多题解都是栈啊什么的,我没看懂,最终看到一个跟我思路完全相同的一个题解,检查发现没有特判如下的情况(其实是画蛇添足),魂都被气飞了。
1211
新人第一发题解wa了,第二发求过(
题解
首先观察整个数列 定义 是最小值的下标。显然你不能删除最小值,并且删除 左侧和 右侧的元素是独立事件。因此答案就是 和 答案的乘积。
那么如何处理一般化的数列 呢?显然我们只有两种选择:保留 ( 中最小值的下标),或者使用 或 (如果它们存在)来删除 。
定义 , 分别是 和 的答案。不论何时,我们可以有 种方法来保留 。如果 , 我们有 种方法来删除 。如果 , 我们有 种方法来删除 。如果 且 , 我们重复计算了删除 中所有元素的情况,因此我们需要再减去 。
原本我使用 min_element 求最小值,经群 u 提醒(指直接上手 hack )构造单调序列可以 tle ,因此我们需要预处理一个笛卡尔树。
原文 by TheScrasse
Solve the problem ...








