我们都知道没有插电的计算机就是一堆废铁,那么插了电的计算机其实也就是带了电的废铁,哈哈,没有软件的运作,计算机的功能也无从发挥 。就好像行尸走肉,所以我们要了解一下软件是什么 。
计算机程序和编译程序
计算机只认识 0 与1 而已,而且计算机最重要的运算与逻辑判断是在CPU 内部,而
CPU 其实是具有微指令集的 。因此,我们需要CPU 帮忙工作时,就得要参考微指令集的内容,然后撰写让CPU 读的懂的脚本给CPU 执行,这样就能够让CPU 运作了 。
不过这样的流程有几个很麻烦的地方,包括:
· 需要了解机器语言:机器只认识0 与1,所以你必须天天在键盘上打0和1,你说你记的了多少编码嘛?
·硬件的相关功能函数:因为你的程序必须要写给机器看,当然你就得要参考机器本身的功能,函数是一个自我包含的完成一定相关功能的执行代码段 。
说白了就是将要实现的功能进行模块化,
它是实现某种功能的算法集合,有助于程序的可重用性 。
程序不可移植性:每个CPU 都有独特的微指令集,同样的,每个硬件都有其功能函数 。因此,你为C计算机写的程序,理论上是没有办法在D 计算机上面运作的!而且程序代码的修改非常困难! 因为是机器码,并不是人类看的懂得程序语言啊!
程序专一性:因为这样的程序必须要针对硬件功能函数来撰写,如果已经开发了一支浏览器程序,想要再开发文件管理程序时,还是得从头再参考硬件的功能函数来继续撰写,每天都在和『硬件』挑战!可能会累死你 。
既然这么多的问题,那该怎么解决呢?所以啊,科学家就创造了“编译程序“,这样人类就可以编写一些人类看的懂的代码,然后交给编译器再翻译成机器能看的懂的机器码,目前常见的编译程序有c,c++,JAVA等等 。
文章插图
越高级的程序越接近人类的语言,所以比如C语言和Python的差别就有点大了,c更近机器语言而python就更接近人类的语言,而且学c的难度会比python大 。
1、操作系统
我们刚刚谈到计算机没有软件就是一堆废铁,那么操作系统的功能就是让cpu可以开始判断与运算数值、让主存储器可以开始加载/读出数据与程序代码、让硬盘可
以开始被存取、让网络卡可以开始传输数据、让所有周边可以开始运转等等 。总之,硬件的所有动作都必须要透过这个操作系统来达成就是了 。
我个人理解,操作系统就是一个大的软件,响应用户的操作,调用各个电脑的硬件,完成各类任务 。
2、 操作系统核心
说到系统,就不得不谈系统核心了,你的计算机能不能做到某些事情,都与核心有关! 只有
核心有提供的功能,你的计算机系统才能帮你完成!举例来说,你的核心并不支持某显卡
议,那么无论你购买了什么样的显卡,这个核心都无法提供屏幕显示能力的!
3、系统呼叫(System Call)
既然我的硬件都有核心管理,那么我想开发软件的话,自然就要去参考这个核心的相关功能,这样就从参考硬件函数变成参考核心功能,依然麻烦 。
为了解决这个问题,操作系统通常就会提供开发接口给工程师来开发软件,比如,我们学习c语言,只要参考c程序的函式就可以,不需要参考其他核心的功能 。
文章插图
计算机系统主要有硬件构成,然后核心程序主要再管理硬件,提供合理的系统资源分配,但是人只要操作应用程序,这样才能够操作系统 。
【终于知道为什么黑客学习过程首选的系统是Linux系统而不是windows】简单的总结一下:
1、 操作系统的核心层直接参考硬件的规格写成的,所以同一个操作系统不能够再不一样的硬件架构下运行,比如window的操作系统就不能在苹果的操作系统运行 。
2、 操作系统知识管理硬件资源,例如cpu、内存等,如果没有其他的程序来支持,操作系统没啥用,至少在我眼里是这样的,所以你要看电影啥的就要安装播放软件了吧!
3、 应用程序的开发都是参考系统提供的开发接口,我个人理解是小软件在大软件上面运行,哈哈 。而且在Android/ target=_blank class=infotextkey>安卓开发的应用程序只能在安卓的系统上运行,苹果的就不行了 。
等等下篇说说系统的内核功能噢!!这个已经算比较难了!
推荐阅读
- Docker为什么这么火?
- 为什么要有分布式系统?
- 为什么一般人不要去看兵马俑 一般人不要看兵马俑
- 爱迪生为什么发明电灯起源是什么 我知道爱迪生发明了电灯还有谁发明了什么
- 为什么店铺认证一直不通过 淘宝开店认证已通过是不是已经开店成功了
- 男友与哈士奇 哈士奇式男友的特点
- 江西九江寺庙排名 江西为什么老是被淹
- 汽车的保值率,为什么有高有低?
- 耳洞为什么会发臭?
- 喝安化黑茶误区,安化黑茶知识