Python学习之旅-1

编程语言的作用及与操作系统和硬件的关系

  Python是编程语言,是程序员用来和电脑沟通的介质,程序员要想让计算机工作,必须知道计算机能做什么,怎么做的,这也是一个程序员必须了解计算机基础的原因。而程序员用编程语言所开发的结果就是一个软件,一个软件的使用需要运行在操作系统上,而操作系统正是运行于硬件之上,用来控制硬件,我们所编写的程序只要方便的调用操作系统给我们提供的接口即可。

理解计算机硬件

计算机的硬件系统由运算器、控制器、存储器、输入设备和输出设备五部分组成。
1、运算器:运算器依照程序的指令功能,完成对数据的加工和处理。它能够提供算术运算(加、减、乘、除)和逻辑运算(与、或、非)
2、控制器:控制器是计算机的控制中心,按照人们事先给定的指令步骤,统一指挥各部件有条不紊地协调动作。控制器的功能,决定了计算机的自动化程度。
  运算器和控制器通常做在一块半导体芯片上,称为中央处理器,或微处理器,简称CPU。如Intel的Pentium4芯片。
3、存储器:计算机的存储器分为内存储器和外存储器。内存储器由半导体材料做成,通过电路和CPU相联接,计算机工作时,将用户需要的程序与数据装入内存,CPU到内存中读取指令与数据,在运算过程中产生的结果,CPU会将其写入内存。一但切断电源,这种可读写内存中的信息将全部丢失。外存储器用来放置需要长期保存的数据,它解决了内存不能保存数据的缺点。微型计算机中的外存储器有软磁盘驱动器、硬磁盘驱动器、光盘驱动器。 把计算机的运算器、控制器和存储器合在一起称为计算机的主机。
4、输入设备:计算机在与人进行会话、接受人的命令或是接收数据时,需要的设备叫做输入设备。常用的输入设备有键盘、鼠标、扫描仪、游戏杆等。
5、输出设备:计算机在与人进行会话、接受人的命令或是接收数据时,需要的设备叫做输入设备。常用的输入设备有键盘、鼠标、扫描仪、游戏杆等。 输出设备是将计算机处理的结果以人们能够认识的方式输出的设备。常用的输出设备有显示器、音箱、打印机、绘图仪等。
CPU和存储器
1、CPU
  CPU是中央处理器(Central Processing Unit)的英文缩写,它是计算机的运算控制中心,是计算机中集成度最高、最贵重的一块芯片。它是由几千~几千万个晶体管组成的超大规模的集成电路芯片。计算机所有数据的加工处理都是在CPU中完成的。CPU还负责发出控制信号,使计算机的各个部件协调一致地工作。
  除了在嵌入式系统中的非常简答的CPU之外,多数CPU都有两种模式,即内核态与用户态。
  通常,PSW中有一个二进制位控制这两种模式。
  内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
  用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。
  内核态与用户态切换:用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。
  请把的系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。
  多线程:moore定律指出,芯片中的晶体管数量每18个月翻一倍,随着晶体管数量的增多,CPU拥有更强大的功能成为了可能,如
  I.第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1,用和cpu相同的材质制成,cpu访问它没有时延
  II.第二步增强:一个cpu中的处理逻辑增多,intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的cpu就相当于两个cpu,进程是资源单位而线程才是cpu的执行单位。多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)
  III.第三步增强:除了多线程,还出现了包含2个或者4个完整处理器的cpu芯片。
2、内部存储器
  内部存储器简称为内存,计算机要执行的程序、要处理的信息和数据都必须先存入内存,才能由CPU取出进行处理。
  内存一般可以分为随机读写存储器(RAM)和只读存储器(ROM)两种。
ROM中存储的数据只能读出,而用一般的方法不能写入。它的最大优点是它保存的数据在断电后不会丢失,因此用来保存计算机经常使用且固定不变的程序和数据。ROM中保存的最重要的程序是基本输入输出系统BIOS,这是一个对输入输出设备进行管理的程序。
  RAM中存储的数据可以随时取出来(称为读出),也可以随时存入新数据(称为写入)或对原来的数据进行修改。RAM的缺点是断电以后所存储的所有数据都将丢失。 充当内存的集成电路芯片是做在一小条印刷电路板上的,称为内存条。
3、外部存储器
  内存的容量有限,且价格较贵,关机以后内存中所存储的数据就消失了,因此计算机还必须有外部存储器(简称外存)来存储数据。外存的特点是存储容量大、价格较低,所存储的数据在计算机关机后也不会丢失。外存有软盘、硬盘、光盘等。
4、缓存
  由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,如果有大缓存,则可以将那些零碎数据暂存在缓存中,减小外系统的负荷,也提高了数据的传输速度。
  缓存的三个作用:1.预读取 2.对写入动作进行缓存 3.临时存储最近访问的数据
  - 寄存器即L1缓存:
  用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。
  - 高速缓存即L2缓存:
  主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。高速缓存为命中,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容易大。
  缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升。一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。
磁盘
磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。
每个磁头可以读取一段换新区域,称为磁道
把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面
每个磁道划成若干扇区,扇区典型的值是512字节
数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间
- 平均寻道时间
机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
- 平均延迟时间
机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
虚拟内存
许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)
- PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换
总线
四小节中的结构在小型计算机中沿用了多年,并也用在早期的IBM PC中。但是随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快。
- 北桥即PCI桥:连接高速设备
- 南桥即ISA桥:连接慢速设备
启动计算机
在计算机的主板上有一个基本的输入输出程序(Basic Input Output system)
BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
- 启动流程
1.计算机加电
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值