没有操作系统程序可以运行起来吗?

96d086da2388a3174c53e89327d519af.gif

作者 | 陆小风

来源 | 码农的荒岛求生

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

先说答案,当然是可以的,而且必须是可以的。

你可以从这个角度来思考,操作系统本身就是一个程序,这个程序的运行没有依赖任何其它“操作系统”,注意,这不是套娃。

实际上在计算机历史早期,或者说上古时期,计算机上根本就没有什么操作系统之说,这一时期的程序的确是在没有操作系统的情况下编写和运行的。

1d0410727e1427007c2b7587b0d2f543.png

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

fe64d96c2865be93447bf3d682b4688c.png

启动是个问题

我们面临的第一个问题就是:此时计算机上没有任何程序,你该怎样让计算机启动起来呢?换句话说加电后CPU该干啥?

啊哈,没想到吧,第一个问题就不好解决,要想让计算机运行你的程序至少要把计算机启动起来吧。

a13ada310ca1e77d53dfbd71882c254a.png

所谓的计算机启动起来无非就是让CPU加电后开始执行一段初始化代码,为你真正的程序运行铺路,这一大段代码就是所谓的内核,kernel,实际上你可以让计算机加电后执行任何代码,也就是实现你自己的内核,当然你也可以没有这样的内核,直接运行你的程序。

但这依然会有问题。

c2a6e9c97a53fba7c523e49c8b6e7775.png

运行时问题

第一个要面临的是内存问题,你的程序要被加载到内存的哪个位置呢?显然这就是涉及到内存管理问题。

第二个问题是你没有办法充分利用计算机。想一想,在这种情况下,你只有启动的时候才可以开始执行一个全新的程序,想执行第二个程序就需要关机,在存储设备中刷入新的程序然后再开机,这是不是让人抓狂。

这还不算完,如果你的程序有bug,那么不好意思,你可能需要重启计算机了,你能想象程序出点问题就要重启计算机吗?

想一边运行文本编辑程序一边运行音乐程序?门都没有,要想实现,自己写个多任务(Multitask)管理系统吧,你至少要把运行的程序管理起来吧,想一想是不是就必须用到进程这样的抽象啦,还觉得这些概念没有用吗?

ada495fa0cc3c1645f9aceffe08be018.png

就算你有多任务系统,如果一个程序有问题把另一个程序的内存刷掉了,这是不是就一石二鸟了,一个bug导致两个程序崩溃,你是不是得有进程隔离机制?

此外,如果你的程序需要使用I/O设备那就更有酸爽啦,没有驱动你怎样控制这些设备、怎样使用鼠标键盘显示器,你的程序是不是要链接一大堆驱动,想想是不是就已经头痛了。

而且你还要高效的利用计算机资源,当搞定这一切后你会发现自己实际上已经写出了一个操作系统

还觉得操作系统没有用吗?操作系统把这些脏活累活统统揽下,程序员只需要专注写bug就可以了。

说了这么多缺点,但没有操作系统的还是有一个有趣的优点的,那就是你可以独掌大权。

9736aa85a11073c577a0546656344411.png

程序员也是独裁者

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

82fd9b23073c51ebd98856d97b110d47.png

有意思的是明明是你自己花钱买的计算机硬件、花钱买的操作系统,理论上这是个人财产,但是你花钱买来的操作系统竟然不受你控制(大神除外),反而禁止你干这干那,就好比你买来一头牛,结果这头牛不受控,自己想干啥干啥,如果真的买了这样一头牛相信你早就忍不了了,但是你花大价钱买来的计算机、智能手机根本不受你的掌控,大家竟然对此没什么感觉,认为这很正常,想想也是有够魔幻的。

扯远了,在早期的计算机上普通程序员(应用程序)可以彻底控制计算机,可谓独掌大权,实际上在现代计算机系统上你也可以在没有操作系统的支持下写程序,这就是所谓的Bare-Metal Programming,嵌入式同学对此应该不陌生。

2d3ef9cbdba2f45a8338b29325f14048.png

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

d437adfeb550462b018cab072e7f26d2.gif

往期推荐

如果让你来设计网络

Docker:从入门到实战过程全记录

浅述 Docker 的容器编排

如何在 Kubernetes Pod 内进行网络抓包

3b838fe4fd72039a11309b8ae87e6c1e.gif

点分享

2b8da285cd4b8c6b5946284ca556cb96.gif

点收藏

0738b5f78eb1270b87a191ba0a3839e5.gif

点点赞

a4f43a8dc0b3e8de234fe5ec42ced567.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sysAK(青囊)系统运维工具集:如何实现高效自动化运维?| 龙蜥技术

简介:What is sysAK、典型工具介绍、开源 3 方面介绍了 sysAK 系统,目前 sysAK 工具集已经在龙蜥社区开源,并且在系统运维 SIG、跟踪诊断 SIG 一起共建,希望大家后期加入 SIG 一起讨论共建。 编者按:本文整理自「云栖…

quill鼠标悬浮 出现提示_CHERRY MC8.1鼠标评测:超前设计延续军火箱信仰

CHERRY作为机械键盘品牌拥有非常高的知名度,许多朋友的第一把机械键盘就是CHERRY品牌。在CHERRY产品线中,最具信仰的一定是军火箱MX8.0键盘。键盘本身手感颜值俱佳,独特的军火箱包装更是收获了大批粉丝。至于最配这把键盘的鼠标却一直让网友们…

高并发IO的底层原理

作者 | 阿辉来源 | Andy阿辉思考:作为程序员的我们,在编写软件进行文件读取,网络收发数据时,是不关心其具体的内部数据传输的。只关心把数据传输到缓冲区或及时从缓冲区读取数据。那么内部究竟是如何实现的呢,今天这篇…

新能源汽车太猛了,这些卡脖子技术你了解吗?

简介:从汽车行业的变化,我们即可初步看出芯片的重要性,那么,芯片对汽车行业的发展具体有哪些重要影响呢? 根据全球汽车咨询机构Auto Forecast Solutions统计的数据,截至10月10日,由于芯片短缺&…

龙蜥社区成立系统运维SIG,开源sysAK系统运维工具集

简介:系统运维SIG致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 OpenAnolis 龙蜥社区(以下简称“龙蜥社区”)正式成立系统运维(System Operation&Maintenance, sysOM&…

奔跑吧兄弟变成机器人是哪一期_奔跑吧预告,郑恺郭麒麟回归,而我却被女嘉宾的颜值吸引了...

哈喽小伙伴们,近期大家都看了《奔跑吧黄河篇》吗?现在已经播到第二期了,相信大家依旧是对跑男系列节目非常感兴趣的,播放量非常高,稳稳占据TX和AQY两大视频平台的综艺播放第一名的位置,可见网友们真的是非常…

院士专家热议如何拥抱“东数西算”,第二届中国IDC行业Discovery大会顺利召开

4月21日,一场别开生面的主题为“聚光奔赴”的数据中心行业大会圆满落下帷幕。由中国通信工业协会数据中心委员会指导,中国IDC圈与世纪互联共同主办的“2022年第二届中国IDC行业Discovery大会”在线上召开,会议聚焦国家“双碳”目标、“东数西…

一文理解 K8s 容器网络虚拟化

简介:本文需要读者熟悉 Ethernet(以太网)的基本原理和 Linux 系统的基本网络命令,以及 TCP/IP 协议族并了解传统的网络模型和协议包的流转原理。文中涉及到 Linux 内核的具体实现时,均以内核 v4.19.215 版本为准。 作者…

应对 Job 场景,Serverless 如何帮助企业便捷上云

简介:函数计算作为事件驱动的全托管计算服务,其执行模式天生就与这类 Job 场景非常契合,对上述痛点进行了全方面的支持,助力“任务”的无服务器上云。 作者:冯一博 任务(Jobs),是互…

Gartner发布新兴技术研究:深入洞悉元宇宙

供稿 | Gartner 出品 | CSDN云计算 根据Gartner预测,2026年全球30%的企业机构将拥有元宇宙产品和服务。 元宇宙是一个由独立但相互连接的网络所组成的持久、沉浸式数字环境,但目前尚未确定这些网络将使用的通信协议。元宇宙能够实现持久、去中心化、可…

双11实时物流订单实践

简介:随着双11的开启,物流业也迎来了年度大考。2021年双11期间,递四方作为物流仓储服务方,布局仓库和分拣点超40个,50w平米作业场地,单日订单峰值达千万级别,海量购物订单由递四方配送到家&…

阿里云徐立:面向容器和 Serverless Computing 的存储创新

简介:以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验。 作者:徐立 云原生的创新…

鸿蒙2.0beta报名,鸿蒙OS 2.0 Beta版系统在哪报名-报名方法介绍

鸿蒙OS系统一直以来深受大家的关注,最近全新推出了鸿蒙OS 2.0 Beta版,那么鸿蒙OS 2.0 Beta版在哪报名呢?小编为大家分享一下关于鸿蒙OS 2.0 Beta版的报名方法介绍,对鸿蒙OS 2.0 Beta版感兴趣的不要错过了。鸿蒙OS 2.0 Beta版系统报…

不改一行代码,轻松拥有企业级微服务治理|MSE微服务治理专业版发布

简介:随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题。有没有更加简单且高效的方法来解决微服务治理的难题? 作者:十眠 随着业务的发展,微服务拆分越来越复杂&#xff0…

曦智科技沈亦晨入选2022达沃斯世界经济论坛“全球青年领袖”

日前,达沃斯世界经济论坛公布了2022年“全球青年领袖”名单,曦智科技创始人兼首席执行官沈亦晨博士获选,他将与来自全球42个国家的其他109位青年领袖一起,加入到为期三年的领导力培训项目中,从不同领域为全球发展发挥更…

如何利用 “集群流控” 保障微服务的稳定性?

简介:应用高可用服务 AHAS (Application High Availability Service) 是经阿里巴巴内部多年高可用体系沉淀下来的云产品,以流量与容错为切入点,从流量控制、不稳定调用隔离、熔断降级、热点流量防护、系统自适应保护、集群流控等多个维度来帮…

阿里巴巴服务网格技术三位一体战略背后的思考与实践

简介:本文分享了阿里巴巴服务网格技术三位一体战略背后的思考和实践,关于阿里云服务网格 ASM 的一些产品功能,包括最近发布的一些功能。 作者:宗泉、宇曾 阿里巴巴三位一体战略 阿里云内部很早就提出了开源、自研、商业化三位一…

antd的tooltip如何调整间距_Word字符间距不会调?那就试试这些技巧

Word字符间距,你会调整吗?本期Word妹与大家分享4种字符间距调整技巧。1、取消数字或字母之间的距离数字或字母间距太大了主要是因为在全角状态下输入的,这时可以点击开始——字体——更改大小写——半角即可。2、取消汉字与英文字母之间的距离…

如何使用 Kubernetes 监测定位慢调用

简介:本次课程主要分为三大部分,首先将介绍慢调用的危害以及常见的原因;其次介绍慢调用的分析方法以及最佳实践;最后将通过几个案例来去演示一下慢调用的分析过程。 作者:李煌东 大家好,我是阿里云的李煌…

12个可能你没见过,但非常实用的 HTML 标签

作者 | 零一来源 | 前端印象今天给大家推荐几个冷门但非常实用的 HTML 标签&#xff0c;不只是语义化&#xff0c;它们都有自己的应用场景和特殊自带功能。一、center让你实现水平居中&#xff0c;用这个标签就对了&#xff0c;标签名也非常得语义化<center>零一</cen…