4软件程序运行

4软件程序运行

1、机器程序与编译程序

一般来说,目前的电脑系统将软件分为两大类,一个是系统软件,一个是应用程序。
电脑只认识0与1而已,而且电脑最重要的运算与逻辑判断是在CPU内部, 而CPU其实是具有微指令集的。因此,我们需要CPU帮忙工作时,就得要参考微指令集的内容, 然后撰写让CPU读的懂的指令码给CPU执行,这样就能够让CPU运行了。

1.1 编译器的角色

举例来说,当你需要将运行的数据写入内存中,你就得要自行分配一个内存区块出来让自己的数据能够填上去, 所以你还得要了解到内存的位址是如何定位的。为了要克服硬件方面老是需要重复撰写控制码的问题,所以就有操作系统(Operating System, OS)的出现。

2、 操作系统

2.1 操作系统核心(Kernel)

操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。 操作系统的功能就是让CPU可以开始判断逻辑与运算数值、 让内存可以开始载入/读出数据与程序码、让硬盘可以开始被存取、让网卡可以开始传输数据、 让所有周边可以开始运行等等。总之,硬件的所有动作都必须要通过这个操作系统来达成就是了。
电脑能不能做到某些事情,都与核心有关! 只有核心有提供的功能,你的电脑系统才能帮你完成!举例来说,你的核心并不支持TCP/IP的网络协定, 那么无论你购买了什么样的网卡,这个核心都无法提供网络能力的!
核心程序所放置到内存当中的区块是受保护的, 并且开机后就一直常驻在内存当中。

2.2 系统调用(System Call)

硬件都是由核心管理,操作系统通常会提供一整组的开发接口给工程师来开发软件! 工程师只要遵守该开发接口那就很容易开发软件了!举例来说,我们学习C程序语言只要参考C程序语言的函数即可, 不需要再去考虑其他核心的相关功能,因为核心的系统调用接口会主动的将C程序语言的相关语法转成核心可以了解的任务函数, 那核心自然就能够顺利运行该程序了。
整个电脑系统的相关软/硬件
4软件程序运行
电脑系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存使用资源等等), 因此只要硬件不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。 而由于核心只会进行电脑系统的资源分配,所以在上头还需要有应用程序的提供,使用者才能够操作系统的。
为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发接口, 那就是系统调用层。软件开发工程师只要遵循公认的系统调用参数来开发软件,该软件就能够在该核心上头运行。

2.3 操作系统的角色

1.操作系统的核心层直接参考硬件规格写成, 所以同一个操作系统程序不能够在不一样的硬件架构下运行。举例来说,个人电脑版的Windows 8.1 不能直接在 ARM 架构 (手机与平板硬件) 的电脑下运行。
2. 操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统文件。如果没有其他的应用程序辅助,操作系统只能让电脑主机准备妥当(Ready)而已!并无法运行其他功能。所以在Windows上面要达成网页影像的运行,还需要类似PhotoImpact或Photoshop之类的软件安装。
3.应用程序的开发都是参考操作系统提供的开发接口, 所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上面运行的。 如去购买线上游戏的光盘时,光盘上面会明明白白的写着该软件适合用于哪一种操作系统。

2.4 核心功能

然核心主要是在负责整个电脑系统相关的资源分配与管理,那我们知道其实整部电脑系统最重要的就是CPU与内存, 因此,核心至少也要有这些功能的。
1.系统调用接口(System call interface),这是为了方便程序开发者可以轻易的通过与核心的沟通,将硬件的资源进一步的利用, 于是需要有这个简易的接口来方便程序开发者。
2.程序管理(Process control) 总有听过所谓的“多任务环境”吧?一部电脑可能同时间有很多的工作跑到CPU等待运算处理, 核心这个时候必须要能够控制这些工作,让CPU的资源作有效的分配才行!另外, 良好的CPU调度机制(就是CPU先运行那个工作的排列顺序)将会有效的加快整体系统性能。
3.内存管理(Memory management) 控制整个系统的内存管理,这个内存控制是非常重要的,因为系统所有的程序码与数据都必须要先存放在内存当中。 通常核心会提供虚拟内存的功能,当内存不足时可以提供内存交换(swap)的功能。
4.文件系统管理(Filesystem management) 文件系统的管理,例如数据的输入输出(I/O)等等的工作,还有不同文件格式的支持啦等等。如果你的核心不认识某个文件系统,那么您将无法使用该文件格式的文件,例如:Windows 98就不认识NTFS文件格式的硬盘;
5.设备的驱动(Device drivers),硬件的管理是核心的主要工作之一,设备的驱动程序就是核心需要做的事情啦! 好在目前都有所谓的“可载入模块”功能,可以将驱动程序编辑成模块,就不需要重新编译核心。驱动程序的提供应该是硬件厂商的事情!硬件厂商要推出硬件时,应该要自行参考操作系统的驱动程序开发接口, 开发完毕后将该驱动程序连同硬件一同贩卖给使用者才对!举例来说,当你购买显卡时, 显卡包装盒都会附上一片光盘,让你可以在进入Windows之后进行驱动程序的安装。

2.5 操作系统与驱动程序

驱动程序与操作系统的关系如下:

1.操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
2.一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;
3.要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
4.驱动程序是由厂商提供的,与操作系统开发者无关。

3、应用程序

应用程序是参考操作系统提供的开发接口所开发出来软件,这些软件可以让使用者操作,以达到某些电脑的功能利用。
举例来说,办公室软件(Office)主要是用来让使用者办公用的;影像处理软件主要是让使用者用来处理影音数据的; 浏览器软件主要是让使用者用来上网浏览用的等等。
你知道Windows 10, Office 2021之间的关系了吗?

Windows 10 是一套操作系统,他必须先安装到个人电脑上面,否则电脑无法开机运行;
Windows 10 与Windows 11 是两套不同的操作系统,所以能在Win 10上安装的软件不见得可在Win 11上安装;
Windows 11安装好后,就只能拥有很少的功能,并没有办公室软件;
Office 2021是一套应用程序,要安装前必须要了解他能在哪些操作系统上面运行。

备注:该内容为读书笔记,部分内容收集来源于网络,如有侵权或错误,请联系我整改,谢谢!

上一篇:AcWing 850. Dijkstra求最短路 II(Dijkstra稠密图堆优化模板)


下一篇:【网络流】CF708D Incorrect Flow