一.计算机硬件介绍
概念:由一条总线把CPU、内存和I/O设备串联起来并与其他设备进行通信。CPU负责运算,内存用于储存临时变量,硬盘用于储存数据
应用程序、操作系统及硬件的关系:参考应用程序的启动流程
处理器CPU(寄存器+控制器)
取指令->解码->执行,直到程序结束。
通用寄存器:用来保存变量和临时结果
程序计数器:它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令
堆栈指针寄存器:它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。(知识补充:1.堆栈:就像往箱子里放置叠好的衣服,一件一件往箱子里放,遵循后进先出原则,就像要把第一件衣服取出来,必须从最后一件开始取,直到取出第一件。2.队列:就像排队刷卡出大门,遵循先进先出原则,一条队列,肯定是第一个排队的人刷卡先走)
程序状态字寄存器(PSW):这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入
内核态与用户态:
程序状态字寄存器中有一个二进制位控制这两种模式(0、1)
内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的
内核态与用户态切换:用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务
CPU中的一级缓存L1就是寄存器。二级缓存L2用于多核CPU之间的通信,访问速度比访问内存快一点
存储器
寄存器就是L1缓存,高速缓存就是L2
高速缓存命中:高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,如果是,则为高速缓存命中
内存RAM:断电后数据全部消失,易失性储存
ROM:只读存储器在工厂中就被编程完毕,然后再也不能修改
闪存:类似固态硬盘,不像机械硬盘那么脆弱,但是擦除次数过多就会损坏
CMOS储存器:内置一小块电池,主要用于记录时间和日期参数,还保存一些其他参数,入记录哪一个是系统磁盘等等
磁盘
扇区:机械硬盘中,盘面一个圆中的一小段
平均寻道时间:机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
虚拟内存:用于运行大于物理内存的程序,从机械硬盘中分一块来暂时运行内存暂时不需要但是将要运行的指令,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(MMU)
磁带
容量高,价格便宜但是速度低,一般用来备份(常见于大型数据库系统中)
总线
北桥PCI:主板上的一块芯片,连接高速设备
南桥ISA:主板上的一块芯片,连接慢速设备
二.计算机启动流程
操作系统启动流程
计算机加电
BIOS开始运行,检测硬件:CPU、内存、硬盘等
BIOS读取CMOS存储器中的参数,选择启动设备
从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
根据分区信息读入BootLoader启动装载模块,启动操作系统
然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动是否存在,如果没有,系统会要求用户安装设备驱动。
应用程序启动流程
操作系统实时监控应用程序
应用程序发起一个请求,操作系统进行回应
在硬盘上进行查找,然后读取到内存
三.单位转换
待补充
硬盘读写单位及大小
今日总结
需将‘处理器’、‘存储器’及‘磁盘’相关概念搞清,主要是
cpu、内存、硬盘工作原理
cpu与寄存器
内核态于用户态及转换机制
L1,L2缓存,RAM,闪存,CMOS
磁盘结构、寻道与延迟时间
虚拟内存与MMU
操作系统启动流程及应用程序启动流程需搞清
今日主要是整理了硬件方面相关概念,还需白天进一步加强记忆,毕竟海峰老师说过基础不好,应该回家种地,明天加油了。
分享到:
相关推荐
品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程...
就是把数据库表和实体类及实体类的属性对应起来 让我们可以操作实体类就实现操作数据库表。 user User id userId user_name userName 今天我们需要做到 实体类中的属性和数据库表的字段名称保持...
springmvc入门通过超链接请求一个控制器(servlet)实现页面跳转详情关注博客会有讲解。写什么才能凑够五十字呢哈哈哈哈哈哈
黑马程序员_struts2框架开发2016版讲义和笔记资料_day01_day02_day03_day04 2018.05.19上传
mybatis的学习 dao mybatis的入门案例 第一步:读取配置文件 第二步:创建SqlSessionFactory工厂 第三步:创建SqlSession 第四步:创建Dao接口的代理对象 第五步:执行dao中的方法 第六步:释放资源 ...
这是Java基本的代码,是最基础的代码,希望初学者能好好掌握
品优购部署_day01_课程讲义_V1.3品优购部署_day01_课程讲义_V1.3
day01_基础加强笔记.md
1-1_JavaScript介绍及使用、数据类型及转换_Day01_AM.mp4
day01_machine_learn.zip
Python 14.商城项目 1-2_WEBPROJECT01_Day01_PM.mp4
SpringMVC入门实例,从搭建环境,到配置文件的编写解释,到代码的编写,非常详细,非常基础的入门项目,欢迎下载浏览。
day01_Git
黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4 包含4天的教学文档
DAY01_PHP.md
DAY01_EVENT.md
DAY01_数组.md
博客项目Day01_blog01.zip
day01_mybatis入门.md
Day01_核心问题.md