1编程语言的作用
为了使计算机可以根据人类的需要来执行计算机能听得懂的语言,来让计算机执行代码和工作
编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
2操作系统和硬件的关系
操作系统是计算机的第一层硬件,给人类操作计算机提供方便和接口等。
计算机启动到操作系统可以运行都是BIOS基本输入程序再进行引导和作用的当所有硬件都进行检测协调之后BIOS就把控制权交给了操作系统。
操作系统如果到读取一个数据就把一个指令比如回车转为数字信号交给了CPU和主板上的芯片组由它们把这些数字信号转为机器能听得懂的语言再把机器语言转变为电信号然后由CPU和芯片组把不同的电信号传输给主机所连接搜索的各个部件协调同理再把电信号转为数字信号进入操作系统后再把它转为模拟图像就看到了最后的结果
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器操作数和中间(或最终)的操作结果。 通用寄存器是中央处理器的重要部件之一。
3内核态与用户态
内核态指cpu自行控制运算,用户态指用户发送指令给cpu进行指定运算,二者切换需要用户的程序使用 系统调用(system call)
内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序
用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取
为什么要有用户态和内核态
由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态 和 内核态
用户态与内核态的切换
所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输入等. 而唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作.
这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令
这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)
他们的工作流程如下:
- 用户态程序将一些数据值放在寄存器中, 或者使用参数创建一个堆栈(stack frame), 以此表明需要操作系统提供的服务.
- 用户态程序执行陷阱指令
- CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的一部分, 他们具有内存保护, 不可被用户态程序访问
- 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler). 他们会读取程序放入内存的数据参数, 并执行程序请求的服务
- 系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果
4 L1L2缓存
L1缓存就是一级缓存,L2缓存就是二级缓存。
一级缓存即L1 Cache。集成在CPU内部中,用于CPU在处理数据过程中数据的暂时保存。由于缓存指令和数据与CPU同频工作,L1级高速缓存缓存的容量越大,存储信息越多,可减少CPU与内存之间的数据交换次数,提高CPU的运算效率。但因高速缓冲存储器均由静态RAM组成,结构较复杂,在有限的CPU芯片面积上,L1级高速缓存的容量不可能做得太大。
二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。同样道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处理器操作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下的二级缓存、三级缓存和内存仅用于存储CPU所需数据。
5 内存ram
随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储单元的工作原理,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。
6 EEPROM和闪存和CMOS和BIOS
FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM) 的性能,还不会断电丢失数据同时可以快速读取数据 (NVRAM 的优势),U 盘和MP3 里用的就 是这种存储器。在过去的20 年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备, 然而近年来 Flash 全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader 以 及操作系统或者程序代码或者直接当硬盘使用(U 盘)。
EEPROM(带电可擦写可编程只读存储器)是用户可更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候可频繁地反复编程,因此EEPROM的寿命是一个很重要的设计考虑参数。EEPROM是一种特殊形式的闪存,其应用通常是个人电脑中的电压来擦写和重编程。
CMOS的三个领域
一是用于计算机信息保存,CMOS作为可擦写芯片使用,在这个领域,用户通常不会关心CMOS的硬件问题,而只关心写在CMOS上的信息,也就是BIOS的设置问题,其中提到最多的就是系统故障时拿掉主板上的电池,进行CMOS放电操作,从而还原BIOS设置。
二是在数字影像领域,CMOS作为一种低成本的感光元件技术被发展出来,市面上常见的数码产品,其感光元件主要就是CCD或者CMOS,尤其是低端摄像头产品,而通常高端摄像头都是CCD感光元件。
三是在更加专业的集成电路设计与制造领域。
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
一块主板的性能是否优异,很大程度上取决于BIOS的管理功能是否先进
主板电池用于记录计算机系统的时间,也就是维持系统时钟的准确性,电量不够时,时间会回到出厂日期,还有记录启动时要用的硬件信息,也就是维持CMOS的BIOS信息。
7 硬盘
平均寻道时间(average seek time)是指MO磁光盘机在接收到系统指令后,磁头从开始移动到移动到数据所在磁道所需要的平均时间,它是指计算机在发出一个寻址命令,到相应目标数据被找到所需时间,单位为毫秒(ms)。
指磁头移动到数据所在磁道需要的时间。在不同的磁头调度算法中,有不同的寻道时间。(数值越小,性能越好)
首先,读写头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间称为寻道时间。读写头起始位置与目标位置之间的距离不同,寻道时间也不同,一般为2-30毫秒,平均约为10毫秒。
8 虚拟内存与MMU磁带设备驱动与控制器总线与南桥和北桥
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“swap”等。
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
MMU就是虚拟内存和物理内存之间的工作交接的对应关系的记录
控制总线CB(ControlBus),连接在一起并完成和实现它们之间的通讯与数据传送的,因此总线的概念是理解PC和主板的组成结构、工作原理及部件之间相互关系统的基础。是用来传送控制信息的信号线,这些控制信息包括CPU对内存和输入输出接口的读写信号,输入输出接口对CPU提出的中断请求或DMA请求信号,CPU对这些输入输出接口回答与响应信号,输入输出接口的各种工作状态信号以及其他各种功能控制信号。控制总线来往于CPU、内存和输入输出设备之间,其特点是:在单向、双向、双态等种形态,是总线中最复杂、最灵活、功能最强的,其数量、种类、定义随机型不同而不同。
南桥芯片(South Bridge)是主板芯片组的重要组成部分,一般位于主板上离CPU插槽较远的下方,PCI插槽的附近,这种布局是考虑到它所连接的I/O总线较多,离处理器远一点有利于布线。相对于北桥芯片来说,其数据处理量并不算大,所以南桥芯片一般都没有覆盖散热片。南桥芯片不与处理器直接相连,而是通过一定的方式(不同厂商各种芯片组有所不同,例如英特尔的英特尔Hub Architecture以及SIS的Multi-Threaded“妙渠”)与北桥芯片相连。
南桥芯片主要是负责I/O接口等一些外设接口的控制、IDE设备的控制及附加功能等等。(连接慢速设备)
北桥是电脑主板上的一块芯片,位于CPU插座边,起连接作用。(连接高速设备)
北桥是个人电脑主板芯片组两枚大规模芯片中的一枚。北桥被用来处理高速信号、通常处理CPU(处理器)、RAM(内存)、AGP端口或PCI Express和南桥芯片之间的通信。
北桥芯片就是主板上离CPU最近的芯片,这主要是考虑到北桥芯片与处理器之间的通信最密切,为了提高通信性能而缩短传输距离。北桥在电脑里起到的作用非常明显,在电脑中起着主导的作用,所以人们又称为主桥(Host Bridge)。
9启动流程
开机执行BIOS引导程序,系统自检,标识和配置所有的即插即用设备,并配置DMA通道;完成加电自检,测试内存,端口,键盘,视频适配器,磁盘驱动器等基本设备,以及CD-ROM驱动器;对引导驱动器可引导分区定位:在CMOS中,可以自行设置引导顺序,一般顺序是软驱,磁盘,光驱;加载主引导记录以及引导驱动器的分区表,执行主引导记录MBR,主引导记录在硬盘上找到可引导分区,将其分区引导记录装入内存,并将控制权交给分区引导记录,由分区引导记录定位根目录,然后装入操作系统。
加电-BIOS自检-读取CMOS参数-读取MBR第一个扇区内容-读入bootloader-启动操作系统
现在有一个App.exe文件,双击App.exe之后操作系统做的工作如下:
1、 shell调用CreateProcss激活一个App.exe进程。Shell即命令解释器,是操作系统引导时即加载的一个系统进程,在Windows任务管理器里面可以看到一个名为”Explorer.exe”的进程,就是它了。
2、 CreateProcss创建了一个进程内核对象,而系统为该进程创建4GB的虚拟地址空间(在Win2000/WinXP下,每个进程可以有2GB的私有地址空间,剩余的2GB由操作系统占用)用来加载App.exe和其他必要的DLL函数;
3、 CreateProcess加载exe文件,分析文件头(具体格式见PE文件格式分析)以识别文件的运行环境,根据文件头决定由那个环境进行加载操作;
4、 加载App.exe及其必要的DLL文件数据和代码后,CreateProcss即创建主线程,执行C/C++运行时的启动代码,由启动代码执行剩下的过程
复习:http://www.cnblogs.com/linhaifeng/p/6523843.html