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

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

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 计算。想象一个场景:我在同时在浏览网页和听音乐,我们希望浏览器能够快速响应,同时也希望音乐不停,这时候多道程序就没法达到我们的要求了。

阅读全文 »

如何成为有效学习的高手

《如何成为有效学习的高手》

前言

高效学习的定义是找到适合自己的学习方法,在最短的时间里能够集中注意力,以解决生活或工作中的一个任务为目的着手学习. 需要勤加练习,必要的时候要向名师求助!

这其中有七个关键点:

  1. 适合自己
  2. 学习方法
  3. 最短时间
  4. 注意力
  5. 解决任务
  6. 设定目标
  7. 名师
阅读全文 »

体系结构与操作系统拾遗

体系结构与操作系统拾遗

Part1. 体系结构基础

1. 冯·诺依曼体系结构

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

网络拾遗

网络拾遗

Part.1 - HTTP 协议

1. HTTP 特性

  • HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80。
  • HTTP 是无连接无状态的。

2. HTTP 报文

HTTP 协议是以 ASCII 码进行传输的,建立在 TCP/IP 协议上的应用层规范。规范把 HTTP 分为三个部分:状态行、请求头、请求主体。HTTP 定义了与服务器交互的不同方法,常用的有如下四种:GETPOSTDELETEPUT
URL 全称是资源描述符,一个 URL 地址用于描述一个网络上的资源,而 HTTP 中的 POSTDELETEPUTGET 就对应着对这个资源的 增、删、改、查 四个操作。其他请求方式还有:HEADOPTIONSTRACEPATCH

阅读全文 »