1.计算机软件底层是什么?

电脑系统底层,电脑的底层系统

你知道吗?在电脑内部,一切数据都是以二进制形式存在和处理的。简单来说,二进制就是计算机能真正理解的数字系统。本文将深入探讨二进制的原理和应用,帮助读者更好地了解这个数字世界。

速度快、实现容易

为什么选择二进制?因为它速度快,电子元器件实现起来也很容易。想象一下,如果用十进制,计算和传输信息会变得多么复杂!而二进制只需要0和1这两个数字,运算起来超级简单,遵循“逢二进一”的规则。

多种进制数

当然,为了方便我们人类阅读和表达,还有八进制和十六进制等其他进制数。八进制有0-7这8个数字,而十六进制则有0-9和A-F这16个数字符号。

数字世界的构建

所以,下次你打开电脑时,不妨想一想,那些在屏幕上跳跃的字符、图像和声音,其实都是由0和1这两个简单的数字构建而成的。二进制是计算机的底层魔法,是数字世界的基石。

计算机软件底层是什么?

系统保护环

Windows 95充分利用386处理器的能力,支援两个特权级。它用0和3两个特权级管理微处理器,也可称为两个环。环0中的部件是操作系统的底层,如包括对低级内存储器管理的支持,环0里的软件在整个系统中功能最强,包括了几乎所有微处理器的指令,并能存取关键的数据结构,如页表等。因此环0里的软件最可靠。

Windows 95允许用户安装新的虚拟设备驱动程序(VXD),这些VXD可以支持后加的硬件或提供系统范围内的软件服务。VXD都在环0里运作,因此,如果VXD有一点差错,就会使整个系统崩溃。而如果要开发一种软件,使其能和失败的VXD分离,那将是非常困难的。

在Intel处理器中,环的过度(特权级的改变)会增加程序的运作时间,以Intel 486为例,如果没有环的过度,一个子程序调用另一个段中的代码需要20个时钟周期,有环的过度则需要69个时钟周期。这是因为当处理器的特权级变化时,处理器控制会发生变化,寄存器要重装。因此,较少的环过度意味着性能的提高,这也是Windows 95把其圆形系统的多数代码放在环3的主要原因。

32位:Windows应用程序优先装入的空间为4MB—1.5GB,标准开发工具也缺省地用这个空间,这主要和Windows NT相匹配。当然,用户也可以选择较低的地址空间,这时,用户需要做起额外的工作。系统为每个32位应用标记的低16KB空间不可获得,这主要是为了捕获程式的错误。许多程式常犯的错误是使用空指针,在Windows 95中,空地址将产生内存储器错误,这对开发者及时发现指针错误是有益的。

虚拟机管理器

虚拟机管理器VMM是Windows 95系统的核心,VMM的效率对整个系统的性能有着重要影响。系统中许多复杂的部件都在这里。虚拟机管理器的代码包含以下几项特性:在每个过程的私有地址空间里,32位的Windows应用程序都是抢先调度的;每个32位的应用程序有一个私有的消息队列;VXD能够动态装载和定位,减少系统的操作集;许多系统资源都是按32位内存储器模式开发的,大大提高了系统能力。

Windows 95有两种基本的VM:一是系统VM,KERNEL,USER,GDI部件和Windows的应用程序都在这里;M是MS-DOS VM,运作一个MS-DOS应用程序,这个程序既能运作在虚拟8086模式,也能运作在保护模式。

支持MS-DOS应用程序

Windows支持MS-DOS应用程序,这就意味着当用户工作基于DOS的应用时,不必离开Windows 95。Windows 95软件也提供最新的MS-DOS 6.X版的代码和数据。Windows 95支持单一的MS-DOS应用模式。这种模式对MS-DOS应用提供绝对的兼容性。虽然开发人员做了很大的努力,使更多的MS-DOS程序能在MS-DOS VM下运作,但这种单一的MS-DOS应用模式为那些不能在Windows下运作的MS-DOS程序提供真正的兼容性,这就是说,此模式对以前的DOS版本向下兼容。 Windows 95因MS-DOS之关系,与Windows 3.1的最大区别是:基于Windows的应用完全不需要MS-DOS代码支持。Windows已有许多的版本(如Windows 3.1,Windows for Workgroups 3.1,Windows 3.11等),每种都支持越来越多的MS-DOS INT软件服务。而且,基于Windows的应用程序在进出虚拟86模式时,对MS-DOS代码的需要也在减少。

虚拟机调度方式

Windows 95中的过程调度和虚拟机管理关系十分密切。在Windows 95中,线程是系统调度程序要处理的主要对象,也是调度的基本单元,假如用户熟悉Windows NT,就会习惯处理线程。线程的特征:

1:在过程里是一个可执行路径;

2:能够被任何32位的Windows程序或运作在Windows 95里的VXD创建;

3:有自己私有的堆叠存储器和执行价前后关系;

4:固定的过程分享存储器;

5:一个过程可以创建许多并发的线程。

调试程序

Windows 95的VMM实际上有两个调试程序,即主调度程序和时间片调度程序。前者负责并保证最高优先级的线程一直在执行;后者负责动态调整线程的优先级,以便提供合理的多任务。

首先,主调度程序先检查系统中的每一个线程,然后选择出优先级最高的线程来执行。为了与Windows NT兼容,优先级从0到31,共32级,数字越大优先级越高。同时,为了与以前的Windows版本兼容,设备驱动程序的优先级能设置成比这32级还高。比最高优先级低的线程,主调度程序不予考虑。这里,最高优先级未必是31,假如只有两个线程,优先级一个是20,一个是16,那么最高优先级就是20;如果此时又来一个优先级是21的线程,那么21就成为最高优先级。

除了纯粹的定量求优先级的值外,时间调度程序根据当前VM的状态来决定时间片的分配。假如一个VM有当前的执行焦点(典型)情况是它的视窗是显示的活动视窗,那么,它就是前台VM。当重新计算当前优先级时,调度程序就使前台的优先级提高,而其他VM作为后台考虑,继续没有升高的优先级。

系统虚拟机内的调度

所有基于Windows应用程序的线程都运作在系统VM下,它是支持多任务的唯一VM。系统VM中,一个支持16位应用的子系统,多个是支持32位的Windows应用的。在系统VM下,通常包括多个有效一的,具有相同优先级的线程,为了处理这种情况,调度程序采用Round→Robin调度策略,以确保每个线程公平分配时间片。一旦系统VM中的线程用完了给它的时间片,调度程序就把它放到了这种优先级相同的线程尾部。假如选择的线程失败地用完了分给它的时间片,那么,调度程序就把处理器交给下一个优先级相同的线程,并允许失败的线程利用时间片的剩余部分。

调度程序控制

调度程序控制有两种不同的影响,一种是它本身的一套内部算法,试图为每个线程提供一种平滑的多任务环境。“平滑”的目标是给线程提供一个合理的处理器时间,既要使它能很好地完成工作,又不能太长,以免其他线程被锁住的时间太长。另一个对调度程序的影响是VXD能够直接调用的一套系统服务。为了达到这一目的,调度程序内部采用了三种线程优先级的动态升高,定时的损耗优先级的继承。

线程的应用

Windows的设计者面临的问题之一是如何更好地处理失败的运作程序。要开发完全没有错误的软件是不可能的,因此,Windows必须能够处理应用程序中的错误。其处理过程包括两步:一是恰当地处理失败的程序,即允许用户关闭应用而不掉失数据;二是做好后续的事,除了打开档案外,应用程序都会利用和处理系统提供的资源,如内存储器段、笔、刷等。假如系统不能释放这些资源占用的内存储器,那么可以获得的资源就会减少。

大多数应用程序共有的错误都是寻址时引起的错误。这类错误是由于应用程序试图用无效的指针指向某些对象引起的。在Windows 3.1下就产生GP错误,用户会看到一个对话框,它提供了产生错误的程序模块的细节以及关闭错误程序的选项。

支持多消息队列

Windows程序都是事件驱动的,这种特性要求系统能提供一种由应用程序传递消息的方法。消息可由设备驱动程序、应用程序和系统发出。系统把所有硬件的初始化消息放在一个被称为原始输入队列(RawInput Queue)的数据结构中。

Windows 95支持多消息队列,这种设计的改进来自Windows NT。因为有效的消息流对好的响应时间和平滑多任务是极其重要的,而这种支持多消息队列的设计技术是关键。它能够保证系统在一个应用程序失败时不至于死锁。这种多消息队列技术称做 “异步输入”(Input Desynchronization)。在Windows 95下,经原始输入队列添加消息十分简单。系统中还有一个运作的线程,它有规律地把这消息移出队列转到各个私有应用消息队列。这种队列有两种:所有16位应用程序的单一队列和所有32位应用程序中的线程的私有队列。

API层

Win32 API是Microsoft公司的战略性系统接口,它第一次出现在Windows NT中,并把其子集Win32 API引入到Windows 3.1中。正是由于Win32 API的强大功能及远大前途,Windows 95也包含了Win32。Microsoft公司希望每个应用程序都是32位的,而目前许多应用程序都是16位的。因此,Windows 95的特性必须支持16位应用程序。对于Windows 95,这就意味着要有新的编译器、汇编器和连接程序来开发32位应用程序。系统自身至少必须提供32位版本的包含KERNEL、USER和GDI的Windows子系统来支持新的Win32 API。这些代码必须小、速度快、易于测试,还要有好的文档。

16/32位代码混合

代码混合技术在以前的Windows版本、OS/2和Windows NT中都已使用过,Windows 95中也用了这种技术,并解决了以下问题:

1:32位代码使用32位线性寻址,而16位代码使用16位段选择器加16位偏移量来寻址。要使代码混合使用,必须在两种寻址方式之间有一种转换。解决这个问题的方法,包含一种称为“贴瓦”i-link护的技术,即系统分配一个新的16位段选择子,它描述的存储器能覆盖此时存储器包含的参数。

2:在C语言中,基于Win32的应用中整型是32位,而在16位的应用中是16位的。当调用16位代码时,32位的整数参数必须转换成16位,返回时扩展成32位。如果参数在寄存器中,这种转换就容易些。但许多Windows函数把参数放在堆叠中。

3:返回32位值(如指针)的16位代码要用DX:AX这对寄存器,而32位代码希望返回值放入EAX寄存器中。

4:32位代码用386的SS:ESP寄存器对为堆叠寻址,而16位代码用SS:SP寄存器对。这就必须进行反复的寄存器交换,可能还要进行参数拷贝。

计算机软件底层,底层开发是指系统的后台和网络的基端,也可以理解成最接近于硬件的开发。

在人工智能,单片机,电脑软件等开发领域往往分为前端开发和底层开发,最基础最重要的开发,真正做底层开发的是需要一定的技术功底。

开发语言:一般为汇编语言或C语言,C++,开发方向:主要是针对硬件方面的开发,例如接口程序,驱动程序,操作系统相关的程序。

熟练掌握设计模式,良好的编程习惯,代码,精通手机平台socket模型;熟悉各平台http协议栈,熟练使用IPHONE,symbian,wm,MTK等至少一个平台开发,至少2年手机平台开发经验。

扩展资料:

软件的概念:

软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。软件是计算机系统设计的重要依据。

为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须通盘考虑软件与硬件的结合,以及用户的要求和软件的要求。

软件的含义:

运行时,能够提供所要求功能和性能的指令或计算机程序集合。程序能够满意地处理信息的数据结构。描述程序功能需求以及程序如何操作和使用所要求的文档。

参考资料:

百度百科-底层开发