1.1. 计算机系统是由硬件和软件组成,如何理解硬件和软件的关系?

2.电脑的操作系统是由什么决定?由相应的硬件配置决定吗?要把32位的变为64位的就必须改变相应的配置?求解

电脑系统与硬件有什么关系嘛_电脑系统与硬件有什么关系

基本上就是你说的那样。操作系统是随着硬件的不断发展而发展的。操作系统越新,功能越强,操作越简单,但是它对机器的要求也就越高。

例如在386的CPU和这之前,都是用DOS扣作系统。因为那时候的硬盘最大只有20M,内存最大只有640K。而windows95,光操作系统就要100多M。现在的XP需要1G以上,那怎么能装在386的机器上呢!现在的windows XP,最低也要256M内存才能运行,所以现在的机器一般都安装512M以上的内存。

也就是二楼所说的,每个系统,对硬件都有一定的要求,当硬件低到它的最低要求以下的,系统就不能运行了。

各种运用软件也是一样,它除了对硬件有要求之外,对操作系统也有最低要求的。高版本的软件就不能在低版本的操作系统中运行。

1. 计算机系统是由硬件和软件组成,如何理解硬件和软件的关系?

2.1 Windows应用程序,操作系统,计算机硬件之间的相互关系

WINDOWS程序设计是一种完全不同于传统的DOS方式的程序设计方法,它是一种事件驱动方式的程序设计模式,主要是基于消息的。当用户需要完成某种功能时会调用操作系统的某种支持,然后操作系统将用户的需要包装成消息,并投递到消息队列中,最后应用程序从消息队列中取走消息并进行响应。

我们这样解释上面的图例,向下的箭头1表示操作系统能够操纵输出设备,以执行特定的功能,如让声卡发出声音,让显卡画出图形。向上的箭头2表示操作系统能够感知输入设备状态的变化,如鼠标移动,键盘按下,并且能够知道鼠标移动的具体位置,键盘按下的哪个字符。这就是操作系统和计算机硬件之间的交互关系,应用程序开发者通常不需知道其具体实现细节。

2.1.1 关于API

向下的箭头3表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道何时发出何种声音,得由应用程序告诉操作系统该发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应用程序。

那么,应用程序是如何通知操作系统执行某个功能的呢?有过编程经验的读者都应该知道,在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。大家不妨看看EX02_00中的源程序,体会一下在程序中是如何调用这个CreateWindow API函数的,关于这个函数的详细解释,请参阅MSDN(微软开发编程的开发系统)。

顺便提一下,对于一个真正的程序员来说,不可能死记硬背每一个API函数及其各参数的详细信息。通常都是只记住其英文拼写,有时甚至是凭着语意拼读出来的,如显示窗口用ShowWindow,退出Windows操作系统用ExitWindows等等,API函数的正确拼写格式及各参数的祥尽信息都是在MSDN迅速检索到的,没必要刻意去死记这些信息,等用的次数多了,这些信息也就在不知不觉中掌握了,但一定要具备在需要的时候能够从帮助系统中检索想要的信息的能力,这样就能做到事半功倍。学习VC++,一定要有一套真实的练习环境,学会查阅帮助系统,决不能纸上谈兵,照着书本亦步亦趋,否则就真的是没有一两年的时间,是学不好VC++的了。

注意:请不要将这里的API与java API以及其他API混淆。API正如其语义一样,已成为一种被广泛使用的专业术语。如果某个系统或某个设备提供给某种应用程序对其进行编程操作的函数,类,组件等的集合,就称作该系统的API。曾经有学员问我这样的问题,Java API与windows API有何关系,是不是指java也可以调用windows里的API?读者现在应该明白这个问题了,不需我来回答了吧?

2.1.2 关于消息及消息队列

向上的箭头4表示操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这个事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反应的过程就是消息响应,由水平箭头5表示。

操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序的,参看MSDN,

MSG结构定义如下:

typedef struct tagMSG { // msg

HWND hwnd;

UINT message;

WPARAM wParam;

LPARAM lParam;

DWORD time;

POINT pt;

} MSG;

看不懂这种定义的读者,请赶快复习C语言,其基本意义是定义一个struct tagMSG的结构体,并在以后的应用中用MSG来代替struct tagMsg。该结构体中各成员变量的作用如下:

第一个成员变量hwnd即代表消息所属的窗口,一个消息一般都是与某个窗口相联系的,如在某个活动窗口中按下键盘,该键盘消息就是发给该窗口的,在VC中,用HWND变量类型来标识窗口。有关窗口的知识,在稍后有详细解释。

第二个成员变量message代表消息代号,无论是键盘按下,还是鼠标移动,都是用一个数字来表示的,不同的数值对应不同的消息。由于数值不便于记忆,在VC中将消息对应的数值定义为WM_xxx宏的形式,xxx对应某种消息的英文拼写的大写,如鼠标移动消息为WM_MOUSEMOVE,键盘按下消息为WM_KEYDOWN,输入一个字符消息为WM_CHAR等等。我们在程序中一般以WM_xxx宏的形式来使用消息。

提示:如果想知道WM_xxx消息对应的具体数值,请在程序中选中WM_xxx,单击右键,在弹出菜单中选择goto definition即可看到该宏的具体定义。跟踪,查看某个变量的定义,使用此方法非常有效。

第三个,四个成员变量分别为wParam、lParam,用于对消息进行补充说明,如message成员表示字符消息,但没有说明输入的是哪个字符,这就需要用其他变量对其进行补充说明。wParam,lParam代表的意义是随消息的不同而异。读者可用goto definition功能查看WPARAM、LPARAM的定义,发现它们分别为unsigned int和long,并不是什么神秘莫测的变量类型。VC++中之所以要这样做,是希望从变量定义的类型上,就能区分出变量的用途。对于同一种变量类型,可按其用途细分定义成多种其他的形式。这种概念在VC++中被广泛使用,也是导致初学者困惑的一个因素。

最后两个变量分别代表发出消息的时间和鼠标的当前位置,这里没有什么需要特殊解释的。

明白了消息,我们再来看看消息队列(Queue)。如上面的图例所示,每个Windows程序都有一个消息队列。队列是一个先进先出的缓冲区,通常是一个某种变量类型的数组。消息队列里的每一个元素就是一条消息,操作系统将生成的每个消息按先后顺序放进消息队列里,第一条消息放入第一格,第二条消息放入第二格,依次类推…...。应用程序总是取走队列里的第一条消息,消息取走后,第二条消息成为第一条,剩余的消息依次前移。应用程序取得消息后,便能够知道用户的操作和程序状态的变化。

例如,若应用程序从队列里取到了一条WM_CHAR消息,那一定是用户输入了一个字符,并且能够知道输入的是哪个字符。应用程序得到消息后,就要对消息进行处理,这即我们通常说的消息响应,消息响应是我们通过编码实现的,这也是Windows程序的主要代码区。在消息响应代码中,我们很可能又要调用操作系统提供的API函数,以便完成特定的功能。如果我们收到窗口的WM_CLOSE消息,我们可以调用DestroyWindow这个API函数来关闭该窗口,或是用MessageBox这个API函数来提示用户是否真的要关闭窗口。

通过上面的分析,我们可以想像到,要用VC++编写Windows程序,除了要具备良好的C语言功底外,还要求掌握两点知识:1.不同的消息所代表的用户操作和程序状态,2.要让操作系统执行某个功能所对应的API函数。

2.2 关于句柄

在Windows编程中我们时刻接触到一个称为句柄(HANDLE)的东西。可以这样去理解句柄,Windows程序中产生的任何资源(要占用某一块或大或小的内存),如图标,光标,窗口,应用程序的实例(已加载到内存运行中的程序)等等,操作系统每产生一个这样的资源时,都要将它们放入相应的内存,并为这些内存指定一个唯一的标识号,这个标识号即该资源的句柄。

操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源的。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄

电脑的操作系统是由什么决定?由相应的硬件配置决定吗?要把32位的变为64位的就必须改变相应的配置?求解

在计算机系统中,硬件和软件是不可缺少的两个部分。计算机硬件是组成计算机系统的各部件的总称,是计算机系统快速、可靠、自动工作的物质基础。

从这个意义上讲,没有硬件就没有计算机,计算机软件也不会产生任何作用。但是一台计算机之所以能够处理各种问题,是因为它具有处理和解决这些问题的程序。计算机软件就是计算机程序及其有关文档。

内层是外层的支撑环境,而外层则不必了解内层细节,只需根据约定调用内层提供的服务。最内层是硬件,表示它是所有软件运行的物质基础。与硬件直接接触的是操作系统,它处在硬件和其他软件之间,表示它向下控制硬件,向上支持其他软件。

扩展资料

计算机的基本部件及功能:

运算器(数据运算):ALU、GPRs、标志寄存器等;

存储器(数据存储):存储阵列、地址译码器、读写控制电路;

总线(数据传送):数据(MDR)、地址(MAR)和控制线;

控制器(控制):对指令译码生成控制信号。

计算机实现的所有任务都是通过执行一条一条指令完成的。

冯·诺依曼结构的主要思想:

计算机应由运算器、控制器、存储器、输入设备和输出设备 五个基本部件组成。

各基本部件的功能是:?

存储器不仅能存放数据,而且也能存放指令,形式上两者 没有区别,但计算机应能区分数据还是指令;控制器应能自动取出指令来执行;运算器应能进行加/减/乘/除四种基本算术运算,并且也 能进行一些逻辑运算和附加运算。

操作人员可以通过输入设备、输出设备和主机进行通信。内部以二进制表示指令和数据。每条指令由操作码和地址码 两部分组成。操作码指出操作类型,地址码指出操作数的地 址。由一串指令组成程序。采用“存储程序”工作方式。

简单些:::32与64位 与硬件的内存有关系。

详细些:

那怎么查看呢?1.在开始运行中输入“winver”,如果你的系统是64位的,会明确标示出“x64 Edition”。

2.运行中输入“cmd”,然后在命令提示符窗口中输入“systeminfo”,如果你的系统是64位的,会在 MicrosoftXP Professional一行后明确标示出“x64 Edition”,否则你的系统就是32位的。

在cmd下输入systeminfo,或者输入dxdiag,都可以察看。

我的电脑属性里也有,32的不显示,64的才显示

================

简单的说32位系统就是指地址总线是32位的的系统。

以下是一些相关资料,希望对你有帮助:

所谓的32位与64位实际上是指计算机的寻址空间大小,也就是在一个时钟频率动作下寻找内存做出多少位的计算动作。2的5次方是32,而6次方则是64,对于采用二进制的计算机运算来说,寻址位数增加了,性能就能大幅度跃升。就如同286PC是16位,跃升到386的32位带来的性能变革一样。

在计算机技术的发展史上,中央处理器寻址空间的演变往往是牵动整个计算机发展的要害。1975年,8位寻址能力的英特尔8080处理器的出现,造就了比尔?盖茨和保罗?艾伦辍学为Altair计算机编写Basic语言;1980年286芯片的发明直接孕育了个人电脑的诞生,其16位寻址能力决定了今天仍是软件运行根基的640KB基础内存;接下来386DX芯片横空出世,32位计算能力造就了复杂的图形界面程序,使我们以绚丽的Windows告别了黑暗的DOS程序;而32位计算的杰出代表Pentium芯片,更是推动了整个多媒体PC时代的发展。延续这条发展道路,64位寻址空间的 Opteron的到来,无疑宣布大众性计算机将向高性能方面发展。

4GB内存依然是安装32位处理器计算机的瓶颈,因为它寻址和编码范围偏小,只能适用于低端、小规模应用,一旦业务发展和数据量超过每日500万条时,系统就很容易出现故障甚至崩溃。64位平台高达180亿GB内存的寻址能力,使它在未来很长一段时间内都可以解决高端应用中存储器寻址的瓶颈。

总之,从各种数字表明,32位到64位,是计算机性能提高的一次革命!

32位和16位指的是寻址方式,不是指色彩。windows98并不是严格意义上的32位操作系统,而是一个16/32位混合操作系统,这也是9x/me不稳定的原因之一。基于NT架构的操作系统都是32位的。

操作系统只是硬件和应用软件中间的一个平台。

32位操作系统针对的32位的CPU设计。 64位操作系统针对的64位的CPU设计。操作系统只是硬件和应用软件中间的一个平台。

32位操作系统针对的32位的CPU设计。 64位操作系统针对的64位的CPU设计。

我们的CPU从原来的8位,16位,到现在的32位和64位。

cpu处理计算的时候“数据”和“指令”是不同对待的。

8位的CPU,一次只能处理一个8位的“数据”或者一个8位的"指令"。比如'00001101'.

又比如:“+1”这个运算,你要先指示CPU做“+”,完成后再输入“1”数据给CPU。

8位的CPU优点是设计简单,处理速度比较快。

缺点就是:软件设计复杂,繁琐。不利于计算机的发展。

后来推出了16位的CPU,我们就可以一次处理两个字节(16位)的数据了,比如“加1”这个命令。“加”是一个指令,占用8个位,余下的8位我们可以存放数据“1”了。

32位的CPU就更加方便了,我们就可以一次处理一个a=a+b这样的命令了。

优点:简化了软件设计的复杂度 缺点:硬件设计更加复杂,计算速度下降。

一般来讲32位的CPU对于我们来讲是最理性的CPU,对于软件开发来讲足够了。

但是2的32次方 = 4294967296bit = 4G左右

很显然32位CPU只有4G左右的内存寻址空间,对于一些服务器来讲4G的内存的远远不够的了。我们需要更加大的内存寻址空间的话就需要对CPU进升级。64位CPU就这样诞生了。64位CPU的内存寻址空间是多少你算算看!呵呵。

2的64次方(理论上)。

但是现在的AMD和Inter的64位CPU并不是真正意义上的64CPU,只是进行了部分64位的改进,比如64位的内存寻址等。 要是真的全部都是64位的了,那么现在市场上的软件将全部被淘汰不能使用了~呵呵,想像一下会是什么样子。

64位的操作系统针对64位CPU设计的,增加了一些64位的指令,但还是和32兼容的。对于我们普通用户来讲64位系统意义不大。