程序是怎样跑起来的

c8a0c162730c40728b06df0e64dcbe9a.jpeg

 

 

  • 问题
  • 1.程序是什么?
  • 2.程序是由什么组成的?
  • 3.什么是机器语言?
  • 4.正在运行的程序存储在什么位置?
  • 5.什么是内存地址?
  • 6.计算机的构成元件中,负责程序的解释和运行的是哪个?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.指示计算机每一步动作的一组指令
  • 2.指令和数据
  • 3. CPU可以直接识别并使用的语言
  • 4.内存
  • 5.内存中,用来表示命令和数据存储位置的数值
  • 6. CPU
  • 解析
  • 1.一般所说的程序,譬如运动会、音乐会的程序等,指的是“行事的先后次序”。计算机程序也是一样的道理。
  • 2.程序是指令和数据的组合体。例如,C语言“printf ("你好"); ”这个简单的程序中,printf是指令,"你好"是数据。
  • 3. CPU能够直接识别和执行的只有机器语言。使用C、Java等语言编写的程序,最后都会转化成机器语言。
  • 4.硬盘和磁盘等媒介上保存的程序被复制到内存后才能运行。
  • 5.内存中保存命令和数据的场所,通过地址来标记和指定。地址由整数值表示。
  • 6.计算机的构成元件中,根据程序的指令来进行数据运算,并控制整个计算机的设备称作CPU。大家熟知的奔腾(Pentium)就是CPU的一种。

  • 问题
  • 1. 32位是几个字节?
  • 2.二进制数01011100转换成十进制数是多少?
  • 3.二进制数00001111左移两位后,会变成原数的几倍?
  • 4.补码形式表示的8位二进制数11111111,用十进制数表示的话是多少?
  • 5.补码形式表示的8位二进制数10101010,用16位的二进制数表示的话是多少?
  • 6.反转部分图形模式时,使用的是什么逻辑运算?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1. 4字节
  • 2. 92
  • 3. 4倍
  • 4. -1
  • 5. 1111111110101010
  • 6. XOR运算
  • 解析
  • 1.因为8位=1字节,所以32位就是32÷ 8=4字节。
  • 2.将二进制数的各数位的值和位权相乘后再相加,即可转换成十进制数。
  • 3.二进制数左移1位后会变成原来的值的2倍。左移两位后,就是2倍的2倍,即4倍。
  • 4.所有位都是1的二进制数,用十进制数表示的话就是-1。
  • 5.使用原数的最高位1来填充高位。
  • 6. XOR运算只反转与1相对应的位。NOT运算是反转所有的位。

  • 问题
  • 1.二进制数0.1,用十进制数表示的话是多少?
  • 2.用小数点后有3位的二进制数,能表示十进制数0.625吗?
  • 3.将小数分为符号、尾数、基数、指数4部分进行表现的形式称为什么?
  • 4.二进制数的基数是多少?
  • 5.通过把0作为数值范围的中间值,从而在不使用符号位的情况下来表示负数的表示方法称为什么?
  • 6.10101100.01010011这个二进制数,用十六进制数表示的话是多少?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。1. 0.5
  • 答案
  • 2.能表示
  • 3.浮点数(浮点数形式)
  • 4. 2
  • 5. EXCESS系统表现
  • 6. AC.53
  • 解析
  • 1.二进制数的小数点后第一位的位权是2-1=0.5。也就是说,二进制数0.1→1×0.5→十进制数0.5。
  • 2.十进制数0.625转换成二进制数是0.101。
  • 3.浮点数是指把小数用“符号 尾数×基数的指数次幂”这种形式来表示。
  • 4.二进制数的基数是2,十进制数的基数是10。以此类推,××进制数的基数就是××。
  • 5. EXCESS是“剩余的”的意思。例如,把01111111看作是0的话,比这个数小1的01111110就是-1。
  • 6.整数部分和小数部分一样,二进制数的4位,就相当于十六进制数的1位。

  • 问题
  • 1.有十个地址信号引脚的内存IC(集成电路)可以指定的地址范围是多少?
  • 2.高级编程语言中的数据类型表示的是什么?
  • 3.在32位内存地址的环境中,指针变量的长度是多少位?
  • 4.与物理内存有着相同构造的数组的数据类型长度是多少?
  • 5.用LIFO方式进行数据读写的数据结构称为什么?
  • 6.根据数据的大小链表分叉成两个方向的数据结构称为什么?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.用二进制数来表示的话是0000000000~1111111111(用十进制数来表示的话是0~1023)
  • 2.占据内存区域的大小和存储在该内存区域的数据类型
  • 3.32位
  • 4.1字节
  • 5.栈
  • 6.二叉查找树(binary search tree)
  • 解析
  • 1.地址信号引脚是十个时表示210=1024个地址。
  • 2.例如,C语言数据类型中的short类型,它表示的就是占据2字节的内存区域,并且存储整数。
  • 3.指针指的是用于存储内存地址的变量。
  • 4.物理内存是以字节为单位进行数据存储的。
  • 5.栈是一种后入先出(LIFO=Last In First Out)式的数据结构。
  • 6.二叉查找树指的是从节点分成两个叉的树状数据结构。

  • 问题
  • 1.存储程序方式指的是什么?
  • 2.通过使用内存来提高磁盘访问速度的机制称为什么?
  • 3.把磁盘的一部分作为假想内存来使用的机制称为什么?
  • 4.Windows中,在程序运行时,存储着可以动态加载调用的函数和数据的文件称为什么?
  • 5.在EXE程序文件中,静态加载函数的方式称为什么?
  • 6.在Windows计算机中,一般磁盘的1个扇区是多少字节?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.在存储装置中保存程序,并逐一运行的方式
  • 2. Disk Cache (磁盘缓存)
  • 3.虚拟内存(virtual memory)
  • 4. DLL (DLL文件)
  • 5.静态链接
  • 6. 512字节
  • 解析
  • 1.现在计算机采用的是存储程序方式。
  • 2.磁盘缓存是指,把从磁盘中读出的数据存储在内存中,当该数据再次被读取时,不是从磁盘而是直接从内存中高速读出。
  • 3.借助虚拟内存,哪怕是内存容量不足的计算机,也可以运行很大的程序。
  • 4. DLL是Dynamic Link Library的略称。
  • 5.函数的加载方式有静态链接和动态链接两种。
  • 6.扇区是磁盘保存数据的物理单位。

  • 问题
  • 1.文件储存的基本单位是什么?
  • 2.DOC、LZH和TXT这些扩展名中,哪一个是压缩文件的扩展名?
  • 3.文件内容用“数据的值×循环次数”来表示的压缩方法是RLE算法还是哈夫曼算法?
  • 4.在Windows计算机经常使用的SHIFT JIS字符编码中,1个半角英数是用几个字节的数据来表示的?
  • 5.BMP(BITMAP)格式的图像文件,是压缩过的吗?
  • 6.可逆压缩和非可逆压缩的不同点是什么?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1. 1字节(=8位)
  • 2. LZH
  • 3. RLE算法
  • 4. 1字节(=8位)
  • 5.没有压缩过
  • 6.压缩后的数据能复原的是可逆压缩,无法复原的是非可逆压缩
  • 解析
  • 1.文件是字节数据的集合体。
  • 2. LZH是用LHA等工具压缩过的文件的扩展名。
  • 3.例如,AAABB这个数据压缩后就是A3B2。
  • 4.半角英文数字是用1个字节来表示的,汉字等全角字符是用2个字节来表示的。
  • 5.因为BMP格式的图像文件是没有被压缩的,因此要比JPEG格式等压缩过的图像文件大不少。
  • 6.像照片(JPEG格式)这样,之所以压缩后也不会让人感到不自然,就是因为使用了非可逆压缩。

  • 问题
  • 1.应用的运行环境,指的是什么?
  • 2.Macintosh用的操作系统(MacOS),在AT兼容机上能运行吗?
  • 3.Windows上的应用,在MacOS上能运行吗?
  • 4.FreeBSD提供的Ports,指的是什么?
  • 5.在Macintosh上可以利用的Windows环境模拟器称为什么?
  • 6.Java虚拟机的功能是什么?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.操作系统和计算机本身(硬件)的种类
  • 2.无法运行
  • 3.无法运行
  • 4.通过使用源代码来提供应用,并根据运行环境进行整合编译,从而得以在该环境下运行的机制
  • 5.Virtual PC for Mac
  • 6.运行Java应用的字节代码
  • 解析
  • 1.应用的运行环境通常是用类似于Windows(OS)和AT兼容机(硬件)这样的OS和硬件的种类来表示的。
  • 2.不同的硬件种类需要不同的操作系统。
  • 3.应用是为了在特定操作系统上运行而作成的。
  • 4. FreeBSD是一种Unix操作系统。通过在各个环境中编译Ports中公开的代码,就可以执行由此生成的本地代码了。
  • 5.模拟器是指在Macintosh上提供虚拟的Windows环境。
  • 6.只要分别为各个环境安装专用的Java虚拟机,同样的字节代码就能在各种环境下运行了。

  • 问题
  • 1.CPU可以解析和运行的程序形式称为什么代码?
  • 2.将多个目标文件结合生成EXE文件的工具称为什么?
  • 3.扩展名为.obj的目标文件的内容,是源代码还是本地代码?
  • 4.把多个目标文件收录在一起的文件称为什么?
  • 5.仅包含Windows的DLL文件中存储的函数信息的文件称为什么?
  • 6.在程序运行时,用来动态申请分配的数据和对象的内存区域形式称为什么?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.本地代码(机器语言代码)
  • 2.链接器
  • 3.本地代码
  • 4.库文件
  • 5.导入库
  • 6.堆
  • 解析
  • 1.通过编译源代码得到本地代码。
  • 2.通过编译和链接,得到EXE文件。
  • 3.通过对源文件进行编译,得到目标文件。例如,C语言中,将Sample1.c这个源文件编译后,就会得到Sample1.obj这个目标文件。目标文件的内容是本地代码。
  • 4.链接器会从库文件中抽取出必要的目标文件并将其结合到EXE文件中。此外,还存在一种程序运行时结合的DLL形式的库文件。
  • 5.把导入库信息结合到EXE文件中,这样程序在运行时就可以利用DLL内的函数了。
  • 6.堆的内存空间会根据程序的命令进行申请及释放。

  • 问题
  • 1.监控程序的主要功能是什么?
  • 2.在操作系统上运行的程序称为什么?
  • 3.调用操作系统功能称为什么?
  • 4. Windows Vista是多少位的操作系统?
  • 5. GUI是什么的缩写?
  • 6. WYSIWYG是什么的缩写?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.程序的加载和运行
  • 2.应用或应用程序
  • 3.系统调用(system call)
  • 4. 32位(也有64位的版本)
  • 5. Graphical User Interface(图形用户界面)
  • 6. What You See Is What Your Get(所见即所得)
  • 解析
  • 1.监控程序也可以说是操作系统的原型。
  • 2.文字处理软件和表格计算软件等都是应用。
  • 3.应用通过系统调用(system call)间接控制硬件。
  • 4. Windows Vista有32位CPU用的版本,也有64位CPU用的版本。
  • 5.显示器中显示的窗口及图标等通过鼠标点击可以直观操作的用户界面。
  • 6. WYSIWYG是指可以直接将显示器中显示的内容在打印机上打印出来。这也是Windows的特征之一。

  • 问题
  • 1.本地代码的指令中,表示其功能的英语缩写称为什么?
  • 2.汇编语言的源代码转换成本地代码的方式称为什么?
  • 3.本地代码转换成汇编语言的源代码的方式称为什么?
  • 4.汇编语言的源文件的扩展名,通常是什么格式?
  • 5.汇编语言程序中的段定义指的是什么?
  • 6.汇编语言的跳转指令,是在何种情况下使用的?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.助记符
  • 2.汇编
  • 3.反汇编
  • 4. .asm
  • 5.构成程序的命令和数据的集合组
  • 6.将程序流程跳转到其他地址时需要用到该指令
  • 解析
  • 1.汇编语言是通过利用助记符来记述程序的。
  • 2.使用汇编器这个工具来进行汇编。
  • 3.通过反汇编,得到人们可以理解的代码。
  • 4. .asm是assembler(汇编器)的略写。
  • 5.在高级编程语言的源代码中,即使指令和数据在编写时是分散的,编译后也会在段定义中集合汇总起来。大家看过汇编语言的源代码后,就会清楚了。
  • 6.在汇编语言中,通过跳转指令,可以实现循环和条件分支。

  • 问题
  • 1.在汇编语言中,是用什么指令来同外围设备进行输入输出操作的?
  • 2.I/O是什么的缩写?
  • 3.用来识别外围设备的编号称为什么?
  • 4.IRQ是什么的缩写?
  • 5.DMA是什么的缩写?
  • 6.用来识别具有DMA功能的外围设备的编号称为什么?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1. IN指令和OUT指令
  • 2. Input/Output
  • 3. I/O地址或I/O端口号
  • 4. Interrupt Request
  • 5. Direct Memory Access
  • 6. DMA通道
  • 解析
  • 1.在x86系列CPU用的汇编语言中,通过IN指令来实现I/O输入,OUT指令来实现I/O输出。
  • 2.用来实现计算机主机和外围设备输入输出交互的IC称为I/O控制器或简称为I/O。
  • 3.所有连接到计算机的外围设备都会分配一个I/O地址编号。
  • 4. IRQ指的是用来执行硬件中断请求的编号。
  • 5. DMA指的是,不经过CPU中介处理,外围设备直接同计算机的主内存进行数据传输。
  • 6.像磁盘这样用来处理大量数据的外围设备都具有DMA功能。

  • 问题
  • 1.用计算机进行的模拟试验称为什么?
  • 2.伪随机数指的是什么?
  • 3.随机数的种子指的什么?
  • 4.计算机有思考功能吗?
  • 5.计算机有记忆功能吗?
  • 6. AI是什么的缩写?
  • 怎么样?是不是发现有一些问题无法简单地解释清楚呢?下面是笔者的答案和解析,供大家参考。
  • 答案
  • 1.计算机模拟
  • 2.通过公式产生的伪随机数
  • 3.生成伪随机数的公式中使用的参数
  • 4.没有
  • 5.有
  • 6. Artificial Intelligence
  • 解析
  • 1.计算机模拟是指用软件来进行实际试验。
  • 2.伪随机数同真正的随机数不同,具有周期性。
  • 3.随机数的种子不同,产生的随机数也是不同的。
  • 4.作为计算机大脑的CPU,其本身并不具有思考功能。
  • 5.内存及磁盘等有记忆功能。
  • 6. Artificial Intelligence是“人工智能”的意思。

  • 一、CPU
  •        Cpu是寄存器的集合体,包括累加、标志、程序计数器(决定程序流程)、基址、变址、通用、指令和栈寄存器。

  • 二、数据
  •        数据用二进制表示是因为IC(集成电路)只有2个状态。计算机处理数据基本单位是一个字节,即8位,处理的数据都是8的倍数;反码补码都是为了方便计算机处理的数据形式;算数右移和逻辑右移是不同的右移方法,逻辑计算是计算机的基础;

  • 三、小数运算
  •        和十进制10除于3除不尽一样,二进制按照人类现有的设计表示方法也有无法表示的小数。为了得到正确的运算结果,可以采用*倍数后化作整数去运算的方法。

  • 四、内存
  •        内存的逻辑模型就是楼房,占有的楼层数就是占用的内存的大小,例如声明变量是整型就是4个字节。利用内存有几种形式,数组、栈、队列、链表、二叉树。

  • 五、磁盘
  •        程序需要读入内存才能运行,磁盘是存储的一种便宜介质,还可以当作虚拟内存,在一定程度上协助程序运行。

  • 六、压缩数据
  •        压缩算法就是数据的另一种表示方式,通过各种压缩算法简单存储后,可以再次运算还原的方法。其中哈夫曼算法是通过统计频率来设计的算法,能比较大的压缩。因为图片损失一点质量没有太大的影响,所以除了有bmp无损格式,还有jpeg,tiff,gif等格式或多或少采用一定技法去压缩过的图片格式。

  • 七、运行环境
  •        程序的运行环境=操作系统+硬件。windows克服了除了cpu以外的硬件差异,是把大部分程序都要做的和硬件交互的事情都处理好了,提供了api接口给所有其他的应用程序调用。因为不同操作系统提供的api不同,jvm会自己带一套虚拟系统来兼容不同操作系统。操作系统通过bios中的引导程序开启,bios包含键盘、磁盘、显卡等基本控制程序。

  • 八、可执行文件
  •        计算机只能运行本地代码,本地代码是数值的罗列。可以通过编译器吧高级语言的源代码转化成本地代码,编译以后还要进行链接生出可执行文件,如.exe文件才能运行。将一些大家都会调用的函数等写成通用的即dll文件,可以方便大家统一调用。

  • 九、外围设备
  •        外围设备如键盘、鼠标、打印机等采用中断请求的方式来实现实时处理。图片显示是往主存的一部分空间写入数据来显示,现在是有独立显卡来处理。


 


总结:从沙子到纯硅到晶圆到光蚀到芯片到cpu,把一堆ic堆在一起形成可以计算的硬件;再想出方法把现实世界的数据和这些硬件联系起来表示出来,找到最简单的方法就是二进制数,然后需要通过各种编码和规范把字母、文字、小数都能表示出来。这时候除了快速运算的cpu还需要东西存储,就分为了速度快的内存和速度慢的磁盘。因为很多时候数据的表示有很多事重复的东西,在传输或者保存等情况下需要体积小,所以可以通过算法算出另一种表示方法去记录。这种算法分成可逆和不可逆的算法,不可逆如jpeg等图片格式。有了这一切以后,大家都可以写程序去计算数据了。但因为有很多非常底层的东西既非常深奥又经常被大家重复使用,于是就把这部分抽象化做出了操作系统。有了系统以后还有很多.dll文件事后面丰富的一些通用的处理函数。但因为操作系统也可以写出很多,也有些高级编程语言为了兼容不同操作系统,自己再抽象一层,对每个操作系统又封装了自己的一套方式,例如jvm,只要各系统都装上它,程序就可以开发一次,到处使用。这些都完善之后,计算机的运算基本完善,但是还缺少控制输入和输出的方式,于是对于外围设备采用了中断请求的方式去做交互,只要你来找我,我才去理你,而不是时刻都在关心你在干什么。然后外围设备有很多,类型也有很多,于是给每个厂家都给了一套统一的操作系统要求的规范。不过你自己怎么设计和运行你的硬件,反正同样的硬件和功能要按照我的规范可以使用,或者你给我一个翻译包,我就知道使用你,这就是驱动程序。完。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值