计算机系统漫游

        经过昨天的游泳,虽然早上起来有些疲惫,但还是看了《深入了解计算机系统》的书的第一章,在今天的学习中,我对缓存的概念有了重新的认识:寄存器是L1缓存的缓存,L1缓存是L2缓存的缓存,L2缓存是主存的缓存,主存是本地磁盘的缓存,本地磁盘是网络上远程服务器硬盘的缓存。虽然以前对缓存的概念很清楚,但从没想的这么全面具体。

        我还明白了一些操作系统的概述,比如文件是I/O设备的抽象,虚拟存储器是主存储器和文件的抽象,而进程是处理器和虚拟存储器的抽象,这些概念是我之前所不知的。同时也对程序的调用有了理解,操作系统是通过context switching 机制进行交错执行的,而再表面看来是一个一个完成的。

        线程是进程的组成部分,多出现于现代操作系统,虽然知道了基本线程的定义,也得知对线程的编程很重要,却还不了解具体情况,还要继续看书。

        今天学习的内容不是很多,但很基础,或者说是要求了解的基础知识吧。

        明天决定装上linux,开始做点实验,更深入的了解系统

### LAB1 计算机系统漫游教程介绍 #### 一、实验目的 通过完成LAB1计算机系统漫游,学习者能够深入了解计算机系统的各个组成部分及其工作原理。这不仅有助于提高编程能力,还能增强对底层硬件的理解[^1]。 #### 二、环境搭建 为了顺利开展本实验室项目,需要准备如下软件工具: - 安装有Linux操作系统的虚拟机或实体机; - GCC编译器用于编写C/C++程序; - GDB调试器帮助分析代码执行过程中的问题; 对于具体的安装方法可以参照官方文档或其他在线资源获取更多信息[^2]。 #### 三、核心知识点讲解 ##### (一)汇编语言基础 掌握基本的x86指令集架构,熟悉如何查看并解释由高级语言转换而来的机器码形式。这部分内容通常会涉及到寄存器的操作以及内存寻址方式等概念。 ##### (二)链接与加载机制 理解目标文件格式(ELF),学会利用`objdump`, `readelf`命令来解析可执行文件内部结构;同时也要知道动态库静态库的区别及应用场景。 ##### (三)I/O子系统探究 探索标准输入输出函数背后隐藏的秘密——缓冲区管理策略、终端设备驱动模型等内容,在此基础上尝试实现简单的字符设备读写功能。 #### 四、实践案例分享 以一个具体的小型工程项目为例,如编写一段计算斐波那契数列前N项值的多线程版本程序,并对其进行性能优化测试。此过程中需综合运用上述所学理论知识解决实际遇到的各种挑战。 ```cpp #include <iostream> #include <thread> void print_fibonacci(int n){ int a = 0, b = 1; std::cout << "Fibonacci sequence up to " << n << ": "; while (a <= n) { std::cout << a << ' '; int next = a + b; a = b; b = next; } } int main(){ const int num_threads = 5; // 创建五个线程分别打印不同范围内的斐波那契序列 std::thread threads[num_threads]; for(size_t i=0;i<num_threads;++i){ threads[i]=std::thread(print_fibonacci,i*10); } for(auto& th : threads){ if(th.joinable()){ th.join(); } } return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值