一、学习计算机基础的目的
再高级的编程语言都是运行在操作系统之上的,而操作系统又是运行在硬件基础之上。所以在开始学习编程之前需要深刻的了解并熟知计算机的基础知识。包括硬件基础及操作系统基础。
二、计算机硬件发展史
计算机的定义:是现代用于高速计算的一种电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。
发展史:
原型或者说灵感起源于中国
1946年2月14日情人节这天,世界上第一台电子计算机“电子数字积分计算机ENIAC”在美国宾夕法尼亚大学问世。
电子管时代---晶体管时代---集成电路时代---大规模超大规模集成电路
三、计算机的组成
硬件系统的组成:运算器,控制器,存储器,输入设备,输出设备
硬件系统---操作系统---应用软件
操作系统其实也是一个系统软件,用来控制和协调计算机及外部设备,应用软件就是例如QQ、魔兽世界等此类软件。
四、计算机硬件介绍
CPU、存储器、视频监视器、键盘控制器、Usb控制器、硬盘控制器、及显示器、键盘、鼠标、、硬盘、声卡、显卡等等都属于计算机硬件。
1.CPU
CPU负责计算,内存及硬盘负责存储信息,鼠标键盘用来给计算机输入指令,显示器用于输出运算信息。
CPU从内存中取指令--》解码--》执行,然后再循环往复执行此操作,每个CPU都有自己的一套指令集,不同架构的CPU运行不了不支持此指令集的程序。
关于寄存器的概念:
寄存器分类:通用寄存器(用于保存变量和临时结果)、程序计数器(记录程序执行的位置)、堆栈指针(先进后出,和队列正好相反)、程序状态字寄存器(很重要的一个寄存器,包含了CPU优先级、CPU模式、还有其他控制位)
CPU有两种模式:用户态和内核态,当内核态时,cpu可以执行所有指令,也就意味着它可以调度硬件,但是在用户态下只能执行部分指令集,也就是说不能够调度硬件。用户态和内核态之前的切换通过“系统调用”来实现。
多线程和多核芯片:CPU中有L1、L2、L3各种缓存,缓存的制作材质与CPU的材质相同,所以cpu访问缓存时没有延迟。为了增强CPU的性能,intel公司提出了多线程的概念,进程是资源单位而线程才是CPU的执行单位。
2.存储器
理想的存储器当然是速度快容量大价格便宜,但目前的技术发展的水平来看是不可能的。
存储器大概有以下几种:寄存器、高速缓存、内存、硬盘、磁带,从前到后基本上是速度越来越慢,容量越来越大,体积也越来越大。L1缓存即寄存器在32位系统中大小为32*32,在64位系统中为64*64,与CPU的速度一样快。高速缓存就是L2,当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,如果是,则称为高速缓存命中,否则称为高速缓存未命中,这时候就要去内存中读取数据。
主存:即内存,是RAM,断电丢失。ROM是非易失性随机访问存储,EEPROM是电可擦除ROM是非易失性的。CMOS:易失性,可存储时间及日期,其他一些硬件的配置参数,启动磁盘等信息,通常有一块电池供电,位于主板上。
硬盘:判断硬盘的两个指标,一个是转速,一个是容量。8个bit=1Bytes,1024Bytes=1KB,1024K=1MB,1024MB=1GB,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。硬盘是由许多盘片堆叠而成的,中间有盘柱,还有机械手臂,每个盘片都有一个磁头。一个扇区的值为512个字节,在Linux系统中,数据以Block块进行存储。八个扇区形成了一个块,即4KB。数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间 ,寻道时间就是机械手臂找到数据所在的磁道的时间,延迟时间就是磁头在磁道上找到所需数据的平均时间。
虚拟内存:根据现实情况,计算机的内存在某些时候很显然是不能满足大程序的运行的要求的,比如物理内存大小是2G,而这时有一个8G的程序需要运行,那么计算机这时候就需要通过存储器管理单元MMU找到硬盘中对应的一块地方并将其划分为虚拟内存。Linux系统下的swap分区其实就是虚拟内存
上下文切换:从一个程序切换到另一个程序上去运行,可以提升系统的性能。
磁带:容量大,常用于大型数据库系统备份
I/O设备:包括设备控制器和设备自身,每一个插硬件的地方都有一个设备控制器。
总线:如图
北桥连接的都是诸如:高速缓存、CPU、内存等高速设备
南桥连接的都是诸如:硬盘、显卡、USB设备、声卡等低速设备
五、计算机启动过程
第一步:通电
第二步:运行BIOS,检测CPU、内存、硬盘等
第三步:读取CMOS中的信息,包括硬件配置信息及系统启动盘选择
第四步:读取启动盘的第0磁道的第一个扇区,也就是MBR(主引导记录),共512个字节,前446个 字节为引导信息,中间64个字节为分区信息,后2个字节为标志位
第五步:根据MBR读入相应的启动模块从而启动操作系统
第六步:这时候操作系统再询问BIOS,获取配置信息和硬件信息,并检测其驱动程序的存在,如果 没有会提示安装,如果都有驱动程序,操作系统便将它们调入内存运行,然后创建相应进 程,运行图形化用户界面。至此,计算机启动完成。
附:linux启动过程
第一步--加载BIOS
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
第二步--读取MBR
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
第三步--Boot Loader / Grup
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的 操作系统。
第四步--加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
第五步--用户层init依据inittab文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多。
第六步--init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的。
启动第七步--启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
启动第八步--执行不同运行级别的脚本程序(/etc/rc.d/rc $RUNLEVEL #$RUNLEVEL为缺省的运行模式 )
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
第九步--执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will beexecuted *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
第十步--执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。