计算机基础与编程语言

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

编程语言是一种语言,及它和其他的语言一样,都是用来沟通的介质。程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质,所以编程语言的作用就是与计算机进行沟通,通过这种语言让计算机明白你想让它干的事情是什么。

一套完整的计算机系统分为:计算机硬件,操作系统,软件。而操作系统控制着计算机硬件

2,应用程序-》操作系统-》硬件

应用程序也就是通常所说的软件,程序用编程语言写程序,最终开发出的结果就是一个软件,既然是软件,那就与腾讯qq、暴风影音、快播等软件没有区别了。这些软件必须运行在操作系统之上,你肯定会问:为何要有操作系统呢?没错,远古时代的程序员确实是在没有操作系统的环境下,用编程语言之间操作硬件来编程的,你可能觉得这没有问题,但其实问题是相当严重的,因为此时你必须掌握如何操作硬件的所有具体细节,比如如何具体操作硬盘(现在你得把硬盘拆开,然后你能看见的所有的东西,你都得研究明白,因为你编程时要用到它),这就严重影响了开发的效率,操作系统的出现就是运行于硬件之上,来控制硬件的,我们开发时,只需要调用操作系统为我们提供的简单而优雅的接口就可以了。

3,cpu-》内存-》磁盘

cpu是人的大脑,负责运算

内存是人的记忆,负责临时存储

硬盘是人的笔记本,负责永久存储

4,cpu与寄存器,内核态与用户态及如何切换

计算机的大脑就是CPU,它从内存中取指令->解码->执行然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。

每个cpu都有一套可执行的专门指令集,任何软件的执行最终都要转化成cpu的指令去执行。所以Pentium(英特尔第五代x86架构的微处理器)不能执行SPARC(另外一种处理器)的程序。这就好比不同的人脑,对于大多数人类来说,人脑的结构一样,所以别人会的东西你也都可以会,但对于爱因斯坦的脑子来说,它会的你肯定不会。

因访问内存以得到指令或数据的时间比cpu执行指令花费的时间要长得多,所以,所有CPU内部都有一些用来保存关键变量和临时数据的寄存器,这样通常在cpu的指令集中专门提供一些指令,用来将一个字(可以理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。cpu其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。

内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)

用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。

内核态与用户态切换  

  用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。

  请把的系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。

5,存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池

计算机中第二重要的就是存储了,所有人都意淫着存储:速度快(这样cpu的等待存储器的延迟就降低了)+容量大+价钱便宜。然后同时兼备三者是不可能的,所以有了如下的不同的处理方式

存储器系统采用如上图的分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的

寄存器即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)地址后,这个转换结果也可以缓存起来供将来使用。

  缓存是一个好方法,在现代cpu中设计了两个缓存,再看4.1中的两种cpu设计图。第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据自,多少芯片还会按照第二L1缓存 。。。另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

内存:

再往下一层是主存,此乃存储器系统的主力,主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所有不能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失

除了主存RAM之外,许多计算机已经在使用少量的非易失性随机访问存储如ROM(Read Only Memory,ROM),在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制。

EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。

还有一类存储器就是CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失。

6,磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU

磁盘

磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以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的出现提升了系统的性能,尤其是上下文切换

7,磁带

在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)。

8,设备驱动与控制器

I/O设备一般包括两个部分:设备控制器和设备本身。

控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。

控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口

设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

9,总线与南桥和北桥

总线是计算机个功能部件之间传送信息的公共通信干线。

北桥即PCI桥:连接高速设备

南桥即ISA桥:连接慢速设备

10,操作系统的启动流程

1,Bios引导找到有操作系统的硬盘

2,MBR主引导记录,从启动设备上读取第一个扇区的内容

3,grub选择内核,然后读到内存中

4,kernel找到内核代码

11,应用软件的启动流程

双击应用程序,由操作系统到硬盘寻找这个程序的内容,然后将它读到内存中,在由cpu调用,从而启动应用软件。

时间: 2024-11-08 22:06:10

计算机基础与编程语言的相关文章

学习编程语言应该掌握哪些计算机基础知识?

随着软件开发技术的不断发展,编程语言的使用也越来越方便,总的来说编程语言并不难学,即使没有任何计算机基础,也可以通过一个系统的学习过程来掌握编程语言. 目前经常使用的编程语言有几十种,包括Java.C.Python.C++.PHP.C#.JavaScript.R.Scala等,这些编程语言往往都有自己特定的使用场景,在难易程度上也有一定的区别.通常情况下,Java可以用于Web开发.大数据开发.Android开发等,C语言可以用于操作系统开发.嵌入式开发等,Python可以用于Web开发.大数据

计算机基础补充

计算机基础 人---------编程语言-------->计算机 去包子店 付款 把包子送回来 计算机硬件(*****) (运算器,控制器)=>CPU 负责运行人类程序的硬件是CPU 存储器 内存:存取速度都快,基于电工作的,断电数据就丢失,不能永久保存数据=========>人脑的记忆功能 外存(磁盘):存取速度都慢,基于磁工作的,断电数据不丢失,可以永久保存数据===>人的笔记本 输入设备 键盘 输出设备 显示器 看图总结: CPU存取的数据和指令都来自于内存 内存称之为主存

python这门编程语言/计算机基础/操作系统

一.python这门编程语言 1.语言 一种事物要与另外一种事物沟通,传递思想,势必需要一种介质. 人与人之间沟通的介质,就是世界上林林总总的人类语言,如我们的汉语,其他比如英语,德语等. 早期的人类,通过奴役奴隶,使用奴隶能理解的人类语言传递指令,促使其行动达到自己的目的. 即,人======>人类语言(指令)======>奴隶 2.编程语言 编程语言本质也是一种语言,它最基本的用途也是为了与某种事物沟通,只不过这种事物不再是人类,而是计算机. 也就是计算机被发明出来取代奴隶,人类通过计算机

Python学习第一天----计算机基础

一.学习计算机基础的目的 再高级的编程语言都是运行在操作系统之上的,而操作系统又是运行在硬件基础之上.所以在开始学习编程之前需要深刻的了解并熟知计算机的基础知识.包括硬件基础及操作系统基础. 二.计算机硬件发展史 计算机的定义:是现代用于高速计算的一种电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能. 发展史: 原型或者说灵感起源于中国 1946年2月14日情人节这天,世界上第一台电子计算机"电子数字积分计算机ENIAC"在美国宾夕法尼亚大学问世. 电子管时代--

magedu第一天学习(计算机基础部分)

第一部分 1.计算机系统的组成部分 计算机系统是由硬件系统和软件系统组成的. 2.计算机的发展史 1946年第一台计算机ENIAC在美国宾州大学诞生. 电子管时代--->晶体管时代--->集成电路时代--->大规模集成电路时代 3.计算机都遵循冯诺依曼体系结构 运算器.控制器集中在CPU里面(central processing unit) 存储器.输入设备.输出设备 特性:使用二进制 4.摩尔定律 当价格不变时,集成电路上可容纳的元器件的数目,在18-24个月后便会增加一倍,相应的性能

python学习—-day1.计算机基础

python学习-day1.计算机基础 一.计算机系统的硬件组成部分:电脑的三大件:内存.硬盘.cpu 二.编程语言的作用及操作系统和硬件的关系:答:1.编程语言的作用是与计算机沟通,并且可以用编程语言在操作系统上写程序,从而达到开发应用软件的目的2.操作系统是用来管理计算机硬件资源的 三.应用程序->操作系统->硬件:在硬件之上装操作系统,在操作系统上装应用程序1.应用程序是指程序员开发的可运行的软件2.操作系统的目的是用来管理计算机硬件的3.硬件:cpu.硬盘.内存.键盘.鼠标统称为电脑硬

Linux自学笔记——计算机基础以及命令帮助的获取

计算机基础知识: 计算机的主要组成部分: 运算器.控制器.存储器.输入设备.输出设备 CPU:运算器,控制器 bus:总线 memory: 编址存储设备 IO:与外部部件交互 程序的运行模式: 用户空间:user space,us 内核空间:system space POS:Portable OperationSystem POSIX API:编程接口: 运行程序格式: Windows:EXE,dll(dynamic link library) Linux:ELF,so(shared objec

计算机基础从入门到放弃

计算机基础 一.编程语言的作用及与操作系统和硬件的关系 语言的存在是为了沟通,在中国用华语,美国用英语,在计算机领域中也不例外,编程语言是让计算机能识别的语言,编程语言也是程序员与计算机沟通的桥梁. 与操作系统之间存在依赖关系,当用编程语言编写完一个软件的时候,却没有操作系统来控制计算机的硬件,那就必须要自己写一个操作系统来控制计算机硬件 当已经在计算机上安装了操作系统了,那么就不需要考虑控制计算机的硬件了,只考虑用户软件与操作系统之间是否兼容. 与硬件的关系,当软件安装到永久保存的硬盘上面,运

计算机基础part1

一:计算机的基本组成 1.计算机由输入单元.控制单元.算法逻辑单元.输出单元.存储单元,五大单元组成 二:概念篇 CPU:中央处理器,其内含有指令集(取码-解码-执行的过程) CPU同一时刻只能干一件事情,从内存取出指令码解码执行. 硬盘:用于存储信息.分为机械式磁盘(基于磁)和固态硬盘(基于电). 寄存器:因CPU运行速度快,而内存速度慢,未充分利用CPU效率而产生的,其空间小于内存,一般采用CPU材质.位于CPU内, 所有CPU内部都有一些用来保存关键变量和临时数据的寄存器. 虚拟内存:许多