标签:# 计算机

内存管理、磁盘和文件拾遗

内存管理、磁盘和文件拾遗

Part1. 内存管理

一个程序的可执行文件在内存中的结果,从大的角度可以分为两个部分:只读部分和可读写部分。只读部分包括程序代码(.text)和程序中的常量(.rodata)。
可读写部分(变量)大致可分为下面几个部分:

  • .data:初始化了的全局变量和静态变量
  • .bss:即 Block Started by Symbol,未初始化的全局变量和静态变量
  • heap:堆,使用 mallocreallocfree函数控制的变量,堆在所有的线程,共享库,和动态加载的模块中被共享使用。
  • stack:栈,函数调用时使用栈来保存函数现场,自动变量(即生命周期限制在某个 scope 的变量)也存放在栈中。

并发技术、进程、线程和锁拾遗

并发技术、进程、线程和锁拾遗

Part1. 多任务

计算机发展起初,CPU 资源十分昂贵,如果让 CPU 只能运行一个程序那么当 CPU 空闲下来(例如等待 I/O 时),CPU 资源就会被浪费,为了使 CPU 资源得到更好的利用,先驱编写了一个监控程序,如果发现某个程序暂时无需使用 CPU 时,监控程序就把另外的正在等待 CPU 资源的程序启动起来,以充分利用 CPU资源。这种方法称为 - 多道程序(Multiprogramming)

对于多道程序,最大的弊端是各程序之间不区分轻重缓急,对于用户交互式的程序来说,对 CPU 计算时间的需求并不多,但是对于响应速度却有比较高的要求。而对于计算类程序来说则相反,对响应速度要求低,但需要长时间的 CPU 计算。想象一个场景:我在同时在浏览网页和听音乐,我们希望浏览器能够快速响应,同时也希望音乐不停,这时候多道程序就没法达到我们的要求了。

体系结构与操作系统拾遗

体系结构与操作系统拾遗

Part1. 体系结构基础

1. 冯·诺依曼体系结构

  1. 计算机处理的数据和指令一律用二进制数表示
  2. 顺序执行程序
    1. 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。
  3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。