软件运行原理是什么

软件运行原理是什么,第1张

有些软件安装完毕需要重启计算机是因为安装的软件需要修改计算机现有且正在运行的某些软件(或是系统自己)的组件,由于这些组件正在运行中,所以无法修改,只能等待重起的时候在它还没有运行起来的时候修改。

计算机就象管家,注册表就像帐单,运行的软件就像管家买的东西,管家为了良好的管理并使用这些东西,就需要一个帐单来记录这些东西的来源以及用途(在软件来说就是版本以及运行时的参数)。这也是WINDOWS比LINUX设计优秀的一大体现,因为有些 *** 作系统是没有这个“帐单”的。

题主可能不太懂软件开发,是这样的,能否开发软件和开不开源是没有直接关系的。微软提供了很好的文档库MSDN,里面有详细的接口功能、入参和返回值的介绍,程序员只需要根据这些文档就可以编写相应的软件了。

举个生活中的例子,我们去办身份z,只需要提供一些必要的材料,例如户口簿就可以了,然后等待领证就好。这里还可以多说一句,办身份z一般不是立即就可以拿到手的,往往会给一个回执单,后续再通知我们去拿证件。

这里必要的材料就是入参;公安局户口办理就是功能;公安内部具体的办理流程就是功能(叫接口更合适)的内部实现;回执就是受理结果;最后的身份z是最终结果。

这还相当于软件中的异步调用过程——先受理后回调。

最后,这只是给小白的一个简单的例子,软件开发者无需纠结其中不准确的地方。

基于windows开发并不需要开源。API函数和应用框架就是开发人员与 *** 作系统的协调,绝大部分底层工作是由编程软件来做的,软件开发人只是需要关注应用建模和人机界面等。

开源对软件开发人员来说并没有直接意义。 *** 作系统得出现就是为了减少开发人员直接与硬件打交道,共享系统调用和服务,比如消息机制,从这个角度看,开源并没有给开发人员带来好处。

一个好的编译系统才是开发人员最需要的,连大部分API都包装起来,可以认为开发人员面对的是一个虚拟机。一个虚拟机由硬件 *** 作系统和编译器组成。

比如要在屏幕上显示哈哈哈,在Delphi中写showmessage(“”哈哈哈”)。

因为有地球最强IDEvs,并且他能连接到已知宇宙最强的产品文档MSDN,不会用还有Technet护航。几十年不间断的投入,形成自己的风格,即便没用过也能猜到个7788。想跟它竞争又没法投入那么多,你说还能怎么办嘛

把win比喻成一辆车,你不知道车辆的内部构造是怎么样的,但是你知道怎么 *** 作就行了,你知道怎么 *** 作不就可以让车带着你去你想去的地方吗

感谢邀约,你的提问题两者之间没有任何关系,系统是否开源和软件一点关系都没,就好比我们使用的苹果手机一样,苹果系统不开源,但是其使用人数多,其市场价值就越大,自然就有更多人的愿意在这个平台上开发软件,以下是我针对这个问题的思考,仅供参考:

首先弄明白计算机系统和软件的关系

计算机系统软件包含系统软件和应用软件,没有装任何软件的计算机称为裸机,裸机是很难被人们使用的,软件是计算机系统必不可少的部分。系统软件是直接运行在裸机上的系统软件,又是其他软件能够运行的基础,下图表明计算机硬件、软件之间的关系

*** 作系统的生态问题,造就了开发人员为其开发软件

Windows桌面 *** 作系统从85年发布的Microsoft-DOS到现在的windows10,有数据显示,Windows仍然雄踞9159%,其次是Mac占627%,最后的Linux占214%,在我国的使用率更是高达了95%。

为什么在我国有如此高的比例呢,主要原因市场初期,微软采取了纵容盗版的态度,让我们人人都能免费使用,造就身边很多人进行使用。除了这个原因,其系统本身简单易用,很容易上手,不需要花太多的时间就会学会。还有一个重要的原因,微软推出的office办公软件,在Windows中的使用体验最好,我们日常工作生活中已经产生了一种依赖,习惯养成了,就自然很难摆脱windows系统了。

使用的人多了,其商业价值也越大,就好比使用微信的人多了,好多人和企业在上面做公众号,头条号和抖音火了,好多人在上面做自媒体的道理一样,流量就是王道。windows的生态也是如此,因此很多公司和开发人员很乐意针对Windows系统开发软件,不仅普通的C端用户需要,不少企业和机关单位用的也是windows系统,需要大量的定制软件,这个是刚需的需求,也造就了越来越多的公司投入到windows软件的开发。

小节

今天的分享就和大家聊到这里,由于我们已经对windows产生了严重的依赖性,依赖性约束强,越是很难摆脱,如果哪一天微软的windows系统不让我们用了,对我们的影响是难以想象的,期待这我们有一天也能做出生态强大好用的 *** 作系统。

感谢大家阅读,如果你有什么好的想法欢迎到留言区分享交流,如果你赞同我的回答,欢迎给个赞和转发,谢谢支持。

Windows是微内核架构,各模块之间由消息机制通讯,模块之间藕合度相对较低,可以封装成独立的API接口给应用程序调用,而不必开源核心代码。因为API返回错误,问题就在这个模块上,不会牵扯到其它模块,即使不开源也容易找到问题。

宏内核的Linux就不一样了,模块之间本身就是靠API调用,外层调用的API返回了错误,往往可能是上一层API返回的,那就要去分析它的源码才能找得到问题。

你喂他他需要的数据,他返回你要的东西。。。支付宝的功能也是这样调用。

电视机里有成千上万个元件,全部装在机壳里,看不到也可能不懂原理(不开源),但几乎大家都会用,为什么呢?因为电视机有按键,有遥控器(API接口)。不需要看里面,能控制它就行。

因为windows为程序开发人员开放了很多封装的模块接口,方便程序去调用,这些接口就在msdn都能查到,称之为api函数接口,windows封装了很多库文件(dll库),分别对应实现不同的功能,程序员开发软件的时候去调用这些dll库文件里对应的api函数就可以了。

其实windows是个黑盒,但是对外暴漏了一些接口,这些接口有对应的说明文档,分别描述了接口的类型,接口的用途,接口各个参数的类型。有些文档也会附上一些例子,为你展示怎么使用,这样就很好的解决了程序员为其开发应用的问题。

如下面几张图就是windowsapi的描述

它包括运行Windows安装程序及脚本、连接网络共享、自动化基本过程以及执行硬件验证所需的最小功能。”换句话说,你可把Windows PE看作是一个只拥有最少核心服务的Mini *** 作系统。微软推出这么一个 *** 作系统当然是因为它拥有与众不同的系统功能,如果要用一句话来解释,我认为与Win9X/2000/XP相比,Windows PE的主要不同点就是:它可以自定义制作自身的可启动副本,在保证你需要的核心服务的同时保持最小的 *** 作系统体积,同时它又是标准的32位视窗API的系统平台。Windows PE概览即使有刚才的解释,你一定还是对这个全新概念的Mini *** 作系统一头雾水,没关系,在这里我将演示一下其运行的全过程,相信看过之后你或许就会有大致的了解。大多数人获得的Windows PE光碟(包括我手上这张ISO镜像光碟)应该是一张“Windows XP OPK”CD,意思就是Windows XP OEM预安装工具包CD。实际上,Windows XP OPK CD是Windows PE 32位版本的一个可引导副本,也就是说,这张CD已经是个用Windows PE定义制作的 *** 作系统了,我们可直接用它来引导系统。先看看这张CD的目录结构吧,总共有352MB,是不是有些大呢?其实由于这是个副本(至少包含了不少驱动程序),大小是由当时自定义制作决定的,若是Windows PE的32位非自定义版本,其在磁盘上的镜像大约为120MB。1引导Windows PE笔者考虑到网络环境等问题,主要的使用环境是VMware虚拟机和Virtual PC虚拟机,不过这两种虚拟机环境与实际PC环境几乎没有区别(就是说如果你不清楚虚拟机也没关系,就当是在真实PC上直接运行)。将BIOS中设置成光驱引导,并开始启动系统,当屏幕画面上出现“Press any key boot from cd”时,按任意键从光驱上的Windows PE引导启动。如果你的存储设备驱动不被支持,在启动时按下F6键可加载特殊设备的驱动。当启动到桌面时系统会做一些如调整分辨率的工作,最后打开默认的CMD命令行解释工具,大家看看,是货真价实的图形 *** 作环境哦。Windows PE的作用1方便易用的启动工具盘通过刚才的叙述,大家可以看出,Windows PE启动相当快捷,而且对启动环境要求不高;最可贵的是,虽然名为启动盘,其功能却几乎相当于安装了一个Windows XP的“命令行版本”——别忘了网络支持哦。因此,对于个人计算机用户,只要将其刻录在一张光碟上,便可放心地去解决初始化系统之类的问题;而对小型网络环境(如网吧等)用户来说,这一功能尤其实用。2有趣的硬盘使用功能自定义的Windows PE不仅可放到那些可移动存储设备如CD上,还可以放在硬盘上使用。因为许多朋友会认为将Windows PE的自定义版本放在硬盘上没有什么意义,其实不然。把Windows PE放在硬盘上应该是最为有趣的地方,且不说你的 *** 作系统损坏无法进入的情况下启动硬盘上的Windows PE可以方便地修复,关键是由于Windows PE在硬盘上,所以在Windows PE环境下安装应用程序就有了可能。呵呵,撇开题外话不讲,这里看一下如何把自定义的Windows PE放到硬盘上吧(只能在硬盘上放置Windows PE的32位版本)。Windows XP OPK CD的本职工作3上面说了其实我们拿到的是Windows PE的一个可执行副本,即Windows XP OPK(Windows XP OEM预安装工具包)CD。从名字都知道它原来的本职工作是为了方便OEM工作的。如果你在Windows *** 作系统环境下打开光碟,它就会自动运行Autorun为你的系统安装一个“Windows安装管理器”的工具包。利用它,你可以轻易制造出带有计算机厂商OEM标志的Windows安装镜像。虽然这是Windows XP OPK CD的主要本职工作,但显然对我们个人没什么意义,当然,如果你想把手上的Windows安装CD都打上自己独有的印记,并在朋友的机器上安装时炫一下,那么使用它是个好主意。

exe是可执行文件的文件格式之一,可以在系统中直接运行。即是可以被访问的,这要看是什么文件。如是系统文件有些文件在电脑启动,及进行一些 *** 作时必须被执行即访问。否则会造成系统错误但有些文件也是不必被访问的。exe 扩展名的文件名后按 Enter键就能运行。不过有些是病毒文件,所以要注意区分一下。

原理:

EXE 文件比较复杂,每个EXE文件都有一个文件头,结构如下:

EXE文件头信息

―――――――――――――――――――

├ 偏移量 ┤ 意义 ┤

├00h-01h ┤MZ'EXE文件标记 ┤

├2h-03h ┤文件长度除512的余数 ┤

├04h-05h ┤商 ┤

├06h-07h ┤重定位项的个数 ┤

├08h-09h ┤文件头除16的商 ┤

├0ah-0bh ┤程序运行所需最小段数 ┤

├0ch-0dh ┤大 ┤

├oeh-0fh ┤堆栈段的段值 (SS) ┤

├10h-11h ┤sp ┤

├12h-13h ┤文件校验和 ┤

├14h-15h ┤IP ┤

├16h-17h ┤CS ┤

├18h-19h ┤ ┤

├1ah-1bh ┤ ┤

├1ch ┤ ┤

―――――――――――――――――――――――――

EXE文件包含一个文件头和一个可重定位程序映象。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映象中可重定位段地址的指针链表。文件头的形式与EXEHEADER结构对应:

EXEHEADER STRUC

exSignature dw 5A4Dh ;EXE标志

exExraBytes dw ;最后(部分)页中的字节数

exPages dw ;文件中的全部和部分页数

exRelocItems dw ;重定位表中的指针数

exHeaderSize dw ;以字节为单位的文件头大小

exMinAlloc dw ;最小分配大小

exMaxAlloc dw ;最大分配大小

exInitSS dw ;初始SS值

exInitSP dw ;初始SP值

exChechSum dw ;补码校验值

exInitIP dw ;初始IP值

exInitCS dw ;初始CS值

exRelocTable dw ;重定位表的字节偏移量

exOverlay dw ;覆盖号

EXEHEADER ENDS程序映象,包含处理器代码和程序的初始数据,紧接在文件头之后。它的大小以字节为单位,等于EXE文件的大小减去文件头的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通过把该映象直接从文件拷贝到内存加载EXE程序然后调整定位表中说明的可重定位段地址。

定位表是一个重定位指针数组,每个指向程序映象中的可重定位段地址。文件头中的exRelocItems域说明了数组中指针的个数,exRelocTable域说明了分配表的起始文件偏移量。每个重定位指针由两个16位值组成:偏移量和段值。为加载EXE程序,MS-DOS首先读文件头以确定EXE标志并计算程序映象的大小。然后它试图申请内存。首先,它计算程序映象文件的大小加上PSP的大小再加上EXEHEADER结构中的exMinAlloc域说明的内存大小这三者之和,如果总和超过最大可用内存块的大小。则MS-DOS停止加载程序并返回一个出错值。否则面,它计算程序映象的大小加上PSP的大小再加上EXEHEADER结构中exMaxAlloc域说明的内存大小之和,如果第二个总和小于最大可用内存块的大小,则MS-DOS 分配计算得到的内存量。否则,它分配最大可用内存块。分配完内存后,MS-DOS确定段地址,也称为起始段地址,MS-DOS从此处加载程序映象。如果exMinAlloc域和exMaxAlloc域中的值都为零,则MS-DOS把映象尽可能地加载到内存最高端。否则,它把映象加载到紧挨着PSP域之上。接下来,MS-DOS读取重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个指针,MS-DOS寻找程序映象中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,段地址便指向了内存中被加载程序的代码和数据段。 MS-DOS在所分配内存的最低部分建造256字节的PSP,把AL和AH设置为加载 COM程序时所设置的值。MS-DOS使用文件头中的值设置SP与SS,调整SS初始值,把起始地址加到它之上。MS-DOS还把ES和DS设置为PSP的段地址最后,MS-DOS从程序文件头读取CS和IP的初始值,把起始段地址加到CS之上,把控制转移到位于调整后地址处的程序。

一般的程序安装在电脑上,因程序本身是一个集成个体,它包含了许多插件与附件或文件,安装程序其实就是将其本身展开,将内含插件与附件还有文件释放出来,然后安装程序会将相应信息写入注册表,这样才能使其正常运行工作。所以这样的话,要除去该程序,直接删除是不妥当的处理方式,有的就删不掉,即使能删掉,但只是程序目录被删除了,但其注册信息还在注册表,这样这册表就是有了残留信息,这样的残留信息如果多了对电脑的正常运行都会造成影响。所以最好还是将其卸载,找到安装目录如果内有卸载程序的附件(一般是un开头的名称,图标像一个垃圾桶),打开就可完整卸载,如果没有这样的附件,那你安装360安全卫士用它看能不能卸载。如果还是没有卸载的项目,那可能就是这个程序本身是流氓软件了,只有del它le。

1 Hkey-local-machine\ software\ microsoft\ windows\ currentVersion\ Policies\ Ratings 保存IE40中文版“安全”“分级审查”中设置的口令(数据加密)。

 2 Hkey-local-machine\ software\ microsoft\ windows\ currentVersion\ exploredesktop\nameSpace保存桌面中特殊的图标,如回收站、收件箱、MS Network等。 Hkey_local_machine\software\microsoft\windows\currentVersion\explorer\user shell folders 保存个人文件夹、收藏夹的路径

 3 Hkey_local_machine\system\currentControlSet\control\keyboard Layouts保存键盘使用的语言以及各种中文输入法

Hkey_users\Default\software\microsoft\internet explorer\typeURLs保存IE浏览器地址栏中输入的URL地址列表信息。清除文档菜单时将被清空。

 4 Hkey_users\Default\so\mi\wi\currentVersion\ex\menuOrder\startMenu 保留程序菜单排序信息

5Hkey_users\Default\so\microsoft\windows\currentVersion\explorer\RunMRU 保存“开始 运行“中运行的程序列表信息。清除文档菜单时将被清空。

6Hkey_local_machine\system\CurrentControlSet\control\update 立即刷新设置。值为00设置为自动刷新,01设置为手工刷新[在资源管理器中按F5刷新]。

 7 Hkey_users\Default\so\microsoft\windows\currentVersion\explorer\ecentDocs 保存最近使用的十五个文档的快捷方式(删除掉可解决文档名称重复的毛病),清除文档菜单时将被清空。

 8 Hkey_local_machine\software\microsoft\windows\currentVersion\uninstall 保存已安装的Windows应用程序卸载信息。

9hkey_users\default\software\microsoft\windows\currentVersion\applets 保存Windows应用程序的纪录数据。

10Hkey_local_machine\system\CurrentControlSet\services\class 保存控制面板-增添硬件设备-设备类型目录。

 11 HKEY_CURRENT_USER\Control Panel\Desktop 新建串值名MenuShowDelay=0 可使“开始”菜单中子菜单的d出速度提高。新建串值名MinAnimate,值为1启动动画效果开关窗口,值为0取消动画效果。

 12 Hkey_local_machine\software\microsoft\windows\currentVersion\run 保存由控制面板设定的计算机启动时运行程序的名称,其图标显示在任务条右边。[启动文件夹程序运行时图标也在任务条右边]

hkey_users\default\software\microsoft\windows\currentVersion\run保存由用户设定的计算机启动时运行程序的名称,其图标显示在任务条右侧。

13 HKEY_CLASS_ROOT/PaintPricture/DefaultIcon 默认的图标。双击窗口右侧的字符串,在打开的对话框中删除原来的键值,输入%1。重新启动后,在“我的电脑”中打开Windows目录,选择“大图标“,然后看到的Bmp文件的图标再也不是千篇一律的画板图标了,而是每个Bmp文件的略图。

 Windows文件夹中有systemdat和userdat这样两个隐藏文件,其中保存了至关重要的注册表信息。 可以通过运行regeditexe来修改windows的设置方法,我们了解Windows系统注册表详细含义用途对我们作用很大

是的, *** 作系统一般有三种接口,所谓接口就是 *** 作界面,类似房子的门,电视机的开机。

1、是GUI窗口,就是你说的双击桌面。

2、是控制台窗口,就是你的cmd命令行。

3、就是API接口,这个是给程序员的。。

你可以修改注册表,把shell程序修改为cmd,这样开机的时候就是cmd窗口。。这种性能差异,主要还是在于系统本身。。因为windows的GUI界面,是完全独立的一个模块。。所以其效率不如控制台,但是在桌面系统中 是很强大的,不像LINUX那样 只是一个应用程序。。

以上就是关于软件运行原理是什么全部的内容,包括:软件运行原理是什么、Windows既然不开源,那程序员是怎么为它开发支持软件的、windows PE的原理什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10032104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存