程序可以运行起来吗-没有操作系统 (程序可以运行但是结果错误)

教程大全 2025-07-07 14:26:47 浏览

大家好,我是小风哥。

现在的程序员对操作系统已经习以为常了,但是你有没有想过,如果没有操作系统的话我们可以让程序运行起来吗?

先说答案,当然是可以的,而且必须是可以的。你可以从这个角度来思考,操作系统本身就是一个程序,这个程序的运行没有依赖任何其它“操作系统”,注意,这不是套娃。实际上在计算机历史早期,或者说上古时期,计算机上根本就没有什么操作系统之说,这一时期的程序的确是在没有操作系统的情况下编写和运行的。

要想写个能直接在计算机上运行的程序可不简单,想一想这种不依赖操作系统系统的程序该怎样运行起来?

启动是个问题

我们面临的第一个问题就是:此时计算机上没有任何程序,你该怎样让计算机启动起来呢?换句话说加电后CPU该干啥?啊哈,没想到吧,第一个问题就不好解决,要想让计算机运行你的程序至少要把计算机启动起来吧。

所谓的计算机启动起来无非就是让CPU加电后开始执行一段初始化代码,为你真正的程序运行铺路,这一大段代码就是所谓的内核,kernel,实际上你可以让计算机加电后执行任何代码,也就是实现你自己的内核,当然你也可以没有这样的内核,直接运行你的程序,关于计算机的启动你可以参考这篇文章《操作系统是如何启动起来的?》但这依然会有问题。

运行时问题

第一个要面临的是内存问题,你的程序要被加载到内存的哪个位置呢?显然这就是涉及到内存管理问题。第二个问题是你没有办法充分利用计算机。想一想,在这种情况下,你只有启动的时候才可以开始执行一个全新的程序,想执行第二个程序就需要关机,在存储设备中刷入新的程序然后再开机,这是不是让人抓狂。这还不算完,如果你的程序有bug,那么不好意思,你可能需要重启计算机了,你能想象程序出点问题就要重启计算机吗?想一边运行文本编辑程序一边运行音乐程序?门都没有,要想实现,自己写个多任务(Multitask)管理系统吧,你至少要把运行的程序管理起来吧,想一想是不是就必须用到进程这样的抽象啦,还觉得这些概念没有用吗?

就算你有多任务系统,如果一个程序有问题把另一个程序的内存刷掉了,这是不是就一石二鸟了,一个bug导致两个程序崩溃,你是不是得有进程隔离机制?此外,如果你的程序需要使用I/O设备那就更有酸爽啦,没有驱动你怎样控制这些设备、怎样使用鼠标键盘显示器,你的程序是不是要链接一大堆驱动,想想是不是就已经头痛了。而且你还要高效的利用计算机资源,当搞定这一切后你会发现自己实际上已经写出了一个操作系统。还觉得操作系统没有用吗?操作系统把这些脏活累活统统揽下,程序员只需要专注写bug就可以了。说了这么多缺点,但没有操作系统的还是有一个有趣的优点的,那就是你可以独掌大权。

程序员也是独裁者

说来有趣,尽管现在你可以花上几千块钱买一台计算机,但是你(程序员)几乎没有办法绕开操作系统随意读写你的内存、让CPU执行任何指令,因为你的Windows/Linux/MacOS会直接将你kill掉。

有意思的是明明是你自己花钱买的计算机硬件、花钱买的操作系统,理论上这是个人财产,但是你花钱买来的操作系统竟然不受你控制(大神除外),反而禁止你干这干那,就好比你买来一头牛,结果这头牛不受控,自己想干啥干啥,如果真的买了这样一头牛相信你早就忍不了了,但是你花大价钱买来的计算机、智能手机根本不受你的掌控,大家竟然对此没什么感觉,认为这很正常,想想也是有够魔幻的。扯远了,在早期的计算机上普通程序员(应用程序)可以彻底控制计算机,可谓独掌大权,实际上在现代计算机系统上你也可以在没有操作系统的支持下写程序,这就是所谓的Bare-Metal Programming,嵌入式同学对此应该不陌生。

好啦,关于操作系统与程序运行这个话题就到这里,总之操作系统并不是计算机执行程序的一个必须组件,没有操作系统我们一样可以让程序运行起来。


什么叫带自启动的电机,带自启动的电机有什么作用

自启动电机主要指直流电机,有刷电机,罩极电机。 指电机通电即可工作,不需要外接启动电容或启动器就能正常工作。 不

程序可以起来吗

一个好的系统会不会影响电脑的运算速度

这个问题问的太专业了,其实操作系统本身是不影响CPu的运算性能的,Cpu的运算功能和性能,只取决于本身的算逻单元的性能,好的系统,知识在硬件基础上合理的管理,调度Cpu ,总线 ,Io的工作,发挥最好的硬件性能和良好的程序性能,所以本身对Cpu的运算影响是没有的,但是运行程序的速度,或者说系统本身的速度,肯定千差万别。 另外一个角度来讲的话,系统运行是耗费资源的,包括内存资源,硬盘资源,也有CPu的资源,所以从这个意义上讲,是影响Cpu的运算的,但是没有了操作系统,也就不可能能够运行软件啊,所以也算是相对的,呵呵。 好的系统,对内存的调度,输入井的调度策略相对较好,可以发挥软件和系统的高性能。 对cpu来讲,只是执行机器代码来运算而已。

操作系统是什么

拿什么是操作系统呢?如果就操作系统这种宽泛的概念来说,几乎任何机器都有操作系统,就这个意义上来说,操作系统就是厂家为了方便用户使用机器所安排的一系列东西。 包括硬件和软件。 比如说电视机,操作系统就是遥控器及其操作遥控器后配合电视机完成的制定工作的那些电路和操作遥控器的那些说明书。 那么什么是计算机操作系统呢?又有什么作用呢?计算机操作系统是能够合理的管理计算机的硬件和软件资源,并且为用户提供操作界面的一组软件的集合。 从定义我们能够得出这些结论:1.计算机操作系统是软件;2.她能够替系统管理软件和硬件资源。 3.它能够提供给用户一个使用计算机的界面。 如果计算机没有操作系统,会是什么情况呢?天啦!天下大乱了!我们必须使用机器编程使用计算机。 你要玩游戏吗?好的,自己使用机器语言编写一个游戏程序 (这好比你要使用电视机看电视节目,你要亲自去调节电视机的频率器件,将频率对准你所要看的电视台的频率,这样的电视机我想你是肯定也不会去买的吧!) 。 然后再享受你的成果吧!这还罢了,更致命的是,机器语言几乎是专家的专利,要不明白计算机原理的人去使用这样的的计算机?真是有病!在这样的背景下面,操作系统诞生了。 操作系统为我们管理CPU,Windows 98不是可以一次运行多个程序吗?但是CPU只有一个,什么程序使用CPU呢?这是操作系统要解决的。 操作系统为我们管理内存,我们运行的程序放在内存中的哪个地方才最有效,是采用什么形式的管理方式。 这也是操作系统要解决的。 操作系统为我们管理外部设备,那么多的外部设备,如显卡、声卡等等,怎样管理才能够让他们协调工作?采用什么传输方式才能够让外部设备工作的最快?操作系统为我们管理文件,硬盘中的文件可不是杂乱不堪的哟!使用什么结构管理,才能够达到硬盘空间最大的利用,检索速度达到最大?操作系统为我们管理作业,作业这个概念比较复杂,而且在现在的分时操作系统和实时操作系统中,作业都直接进入内存。 作业这个概念有一些淡化了。 大家可以看出来了,操作系统是与硬件息息相关的。 所以操作系统是在基于硬件上的第一层软件。 没有操作系统的计算机就是裸机。 所有的应用软件和其他的系统软件都必须基于操作系统之上。 正是因为操作系统与硬件息息相关,所以只要新出一套硬件系统,就必然会有一个新的操作系统出现。 一个最具代表性的就是DOS,但是DOS基于8086这个CPU的,而8086这个CPU之能够管理1M的内存,所以DOS之能够管理到1M的内存。 到了以后,CPU能够管理内存数量已经早已超过了1M了,所以IBM根据这个情况开发出了OS/2,这个操作系统其实是一个非常优秀的操作系统,但是在商业上没有DOS成功,DOS在微软公司的扩充之下,得以继续工作,但是这毕竟不是治本之法,因为以后,CPU的字长已经是32位的了,还支持多任务,分页管理内存,DOS都不支持这些特性,可以说,CPU的大部分功能都被浪费了。 所以微软公司开发出了Windows NT和Windows 95。 下面就一些常见的操作系统的特性给大家介绍一下:DOS:16位、能够管理1M的内存空间(不管扩展)、单任务、单用户、树型文件系统 FAT12/FAT16,编写语言主要是汇编语言。 Windows 3.X:16位、分时,支持保护模式,多任务、单用户、文件系统和Dos一样。 Windows NT:32位、分时和实时,支持保护模式,能够访问全部的4G内存空间、每个任务都拥有自己的4G运行空间、多用户,树型文件系统,NTFS。 Windows 9X:32位、分时、一定的实时,支持保护模式,能够访问全部的4G内存空间,但是这4G内存空间中,有一部分的空间是每个任务共享的(这也是NT比9X稳定的一个原因),单用户,树型文件系统,FAT16/FAT32。 UNIX:与具体的系统有关,没有一个统一的标准。 Linux:32位,分时和实时,支持保护模式,能够访问全部的4G内存空间,每个任务都拥有自己的4G的运行空间,多用户、树型文件系统,EXT。 大部分是C语言编写。 *注:支持保护模式就肯定是多任务。 Windows 基本上是C++编写。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐