《程序员的自我修养》第一章 温故而知新(计算机基础篇)

第一章主要介绍了一些计算机基础知识,如硬件、软件、线程等。读完之后,收益颇多,故此记录。

关键词介绍

硬件

  1. 计算机的三大硬件核心:CPU、内存、I/O 控制芯片
  2. 主频 = 外频(与内存频率一致) * 倍频
  3. 北桥芯片:协调 CPU、内存和高速图形设备的数据交换
  4. 南桥芯片:专门处理低速设备(磁盘、USB、键盘、鼠标等)
  5. 对称处理器(SMP):由于 CPU 的频率被限制在了 4GHz,人们通过增加 CPU 数量来提高 CPU 速度。(在大型的数据库、网络服务器上,同时要处理大量独立请求时,能发挥威力)
  6. 多核处理器:共享比较昂贵的缓存部件,只保留多个核心,从程序员角度,与对称处理器相差不大。

系统软件

  1. 程序员应牢记名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。
  2. 接口:定义每个层次之间通信的协议(原则:精心设计接口,保持其稳定不变,任何一个层都可以被修改或替换)
  3. 软件层次:(从上至下)应用程序-运行库-操作系统内核-硬件

管理硬件资源(如何发挥硬件能力)

  1. CPU 的使用
    • 多道程序(不分轻重缓急)
    • 分时系统(主动让出 CPU)
    • 多任务系统(进程概念的引入,有独立的地址空间,抢占式分配方式)
  2. 硬件驱动:完成繁琐的硬件细节,并抽象供用户使用(如磁盘被抽象为普通文件系统)
  3. 硬盘组成:多个盘片-两面-若干个磁道(同心圆)-若干个扇区(LBA)
  4. 简单的内存分配存在一些问题
    • 地址空间不隔离:程序所使用的内存空间不是相互隔离的,恶意程序可以非常容易修改其它程序的内存数据。
    • 内存使用效率低:如果内存不足,只能将整个程序大量的数据被换入换出。
    • 程序运行的地址不确定:每次程序装入运行时,需要从内存中分配区域,需要重定位。
  5. 解决内存分配问题的方案
    • 隔离分段:引入虚拟内存,与物理内存一一对应,解决 4中的了1、3两个问题。
    • 分页:把地址空间人为地等分成固定大小的页。通过减小粒度的方式,把常用的数据和代码页装载到内存中,把不常用的保存在磁盘里。以页为单位来存取和交换数据。解决了第2个问题。保护也是页映射的目的之一,简而言之每个页可以设置权限属性。采纳技术:MMU(Memory Management Unit)。

线程基础

  1. 什么是线程:轻量级进程,是程序执行流的最小单位。共享进程的内存空间(包括代码段、数据段、堆等)
  2. 线程组成:线程 ID、当前指令指针、寄存器集合和堆栈。
  3. 为何使用线程
    • 可以让一个线程负责交互、另一个线程负责计算
    • 有效利用等待的时间
    • 满足并发操作
    • 相比多进程应用,数据共享
  4. 线程调度的三种状态
    • 运行:线程正在执行
    • 就绪:此时线程可以立刻运行,但 CPU 已经被占用
    • 等待:此时线程正在等待某一事件发生(通常是 I/O 或同步),无法执行
  5. 时间片:处于运行中线程拥有一段可以执行的时间。
  6. 调度方式
    • 优先级调度:根据线程优先级进行调度
    • 轮转法:令线程交错执行
  7. 饿死:一个线程的优先级较低,在它执行之前,总是有较高的优先级的线程要执行。
  8. 优先级调整方式
    • I/O 密集型线程比 CPU 密集型线程容易得到优先级的提升。
    • 用户指定优先级
    • 长时间得不到执行而被提升优先级
  9. 可抢占和不可抢占线程:线程在用尽时间片之后会被强制剥夺继续执行的权利,而进入就绪状态,这个过程叫抢占

线程安全

  1. 原子操作:单指令的操作。
  2. 竞争:多个线程同时访问某个数据或资源。
  3. 同步:在一个线程访问未结束的时候,其它线程不得对同一个数据进行访问。如此,对数据的访问被原子化了
  4. :每一个线程在访问数据或资源时,先试图获取锁,并在访问结束之后释放。在锁已占用的时候,试图获取锁,线程会等待,直到锁可重新获得。
  5. 二元信号量:最简单的一种锁。只有占用和非占用两种状态。只适合被唯一一个线程独占访问的资源。
  6. 多元信号量:允许多个线程并发访问的资源。
  7. 互斥量:与信号量相似,唯一的区别是互斥量是必须由相同线程占用和释放锁。
  8. 临界区:相比信号量和互斥量更严格,只在当前进程可见,并只允许在当前进程获取。
  9. 读写锁(为了解决频繁上锁,性能低下的问题):有两种获取方式,共享的()或独占的()。
  10. 条件变量:类似于栅栏,多个线程一起等待栅栏被撤掉(条件变量被唤醒),才可以一起恢复执行。
  11. 过度优化:编译器在过度优化时,可能交换指令顺序。只有通过插入 barrier,阻止交换。
  12. 线程模型:用户使用的用户线程和内核线程的对应关系
    • 一对一模型优点有实现真正的并发,线程之间不会相互影响。缺点有因为内核线程数受限,用户线程数量也受到限制,其次因为内核线程调度,上下文切换开销大,执行效率低。
    • 多对一模型:多个用户线程对应一个内核线程。优缺点和一对一模型正好相反。
    • 多对多模型:针对前两个模型的特点,这种模型可以完美解决上面存在的问题。

第一章更新完毕...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266