分享

每个程序员都该知道的操作系统知识《程序员的自我修养》第一章 温故而知新

 懵懂晓云 2018-10-02

每个程序员都该知道的操作系统知识《程序员的自我修养》第一章 温故而知新

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

关键词介绍

硬件

  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. 可抢占和不可抢占线程:线程在用尽时间片之后会被强制剥夺继续执行的权利,而进入就绪状态,这个过程叫抢占。

未完待续...

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多