Python全栈之路Day1(补)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈之路Day1(补)相关的知识,希望对你有一定的参考价值。

2017年9月18日 0:20:28

摘要

引用:东方越迁blog

  1. 因前期笔记整理较差,故重新开始整理笔记并且每日上传至blog.

一.计算机硬件介绍

  • 概念:由一条总线把CPU、内存和I/O设备串联起来并与其他设备进行通信。CPU负责运算,内存用于储存临时变量,硬盘用于储存数据

    1. 处理器CPU(寄存器+控制器)
      • 取指令->解码->执行,直到程序结束。
      1. 通用寄存器:用来保存变量和临时结果
      2. 程序计数器:它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令
      3. 堆栈指针寄存器:它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。(知识补充:1.堆栈:就像往箱子里放置叠好的衣服,一件一件往箱子里放,遵循后进先出原则,就像要把第一件衣服取出来,必须从最后一件开始取,直到取出第一件。2.队列:就像排队刷卡出大门,遵循先进先出原则,一条队列,肯定是第一个排队的人刷卡先走)
      4. 程序状态字寄存器(PSW):这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入
      5. 内核态与用户态:
        • 程序状态字寄存器中有一个二进制位控制这两种模式(0、1)
        1. 内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
        2. 用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的
        3. 内核态与用户态切换:用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务
      • CPU中的一级缓存L1就是寄存器。二级缓存L2用于多核CPU之间的通信,访问速度壁访问内存快一点
    2. 存储器

      • 寄存器就是L1缓存,高速缓存就是L2
      1. 高速缓存命中:高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,如果是,则为高速缓存命中
      2. 内存RAM:断电后数据全部消失,易失性储存
      3. ROM:只读存储器在工厂中就被编程完毕,然后再也不能修改
      4. 闪存:类似固态硬盘,不像机械硬盘那么脆弱,但是擦除次数过多就会损坏
      5. CMOS储存器:内置一小块电池,主要用于记录时间和日期参数,还保存一些其他参数,入记录哪一个是系统磁盘等等
    3. 磁盘

      1. 扇区:机械硬盘中,盘面一个圆中的一小段
      2. 平均寻道时间:机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
      3. 平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
      4. 虚拟内存:用于运行大于物理内存的程序,从机械硬盘中分一块来暂时运行内存暂时不需要但是将要运行的指令,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(MMU)
    4. 磁带
      • 容量高,价格便宜但是速度低,一般用来备份(常见于大型数据库系统中)
    5. 总线
      1. 北桥PCI:连接高速设备
      2. 南桥ISA:连接慢速设备

二.计算机启动流程

  • 操作系统启动流程
    1. 计算机加电
    2. BIOS开始运行,检测硬件:CPU、内存、硬盘等
    3. BIOS读取CMOS存储器中的参数,选择启动设备
    4. 从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
    5. 根据分区信息读入BootLoader启动装载模块,启动操作系统
    6. 然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动是否存在,如果没有,系统会要求用户安装设备驱动。
  • 应用程序启动流程
    待补充

作业

  • 暂无

今日总结

  • 需将‘处理器’、‘存储器’及‘磁盘’相关概念搞清,主要是
    1. cpu、内存、硬盘工作原理
    2. cpu与寄存器
    3. 内核态于用户态及转换机制
    4. L1,L2缓存,RAM,闪存,CMOS
    5. 磁盘结构、寻道与延迟时间
    6. 虚拟内存与MMU
  • 操作系统启动流程及应用程序启动流程需搞清
  • 今日主要是整理了硬件方面相关概念,还需白天进一步加强记忆,毕竟海峰老师说过基础不好,应该回家种地,明天加油了。





以上是关于Python全栈之路Day1(补)的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈之路Day5(补)

Python全栈之路Day2 (补)

Python全栈开发Day1

老男孩Python全栈:Day1

Python全栈_Python基础_Day1

全栈Python教程day1