操作系统基础解析:Windows和Linux 到底有何不同?
广义的操作系统包括:计算机(PC、工作站、服务器)系统、移动端系统(例如鸿蒙)、嵌入式系统 等。本文只涉及计算机操作系统。
计算机操作系统的功能角色:作为用户和计算机硬件资源之间的交互,管理调度硬件资源,为应用 软件提供运行环境。操作系统属于基础软件,是系统级程序的汇集,为用户屏蔽底层硬件复杂度, 并提供编程接口和操作入口。操作系统控制处理器(CPU)调度系统资源,控制应用程序执行的时机, 决定各个程序分配的处理器时间(CPU time)。操作系统需要兼容底层硬件和应用软件,才能实现计算机的功能。
根据核心代码是否向开放,操作系统可划分为两类:开源系统、闭源系统。
1. 闭源操作系统:代码不开放,以微软 Windows 系统为代表
微软公司内部的研发团队开发 Windows 操作系统,并开发配套的应用软件,比如 Office。在生态 建设方面,Intel 和 Windows 长期合作形成 Wintel 体系,在 PC 端市占率全球领先
Windows 系统的访问分为 User mode(用户模式)和 Kernel mode(内核模式)。用户级的应用程序在 用户模式中运行,而系统级的程序在内核模式中运行。内核模式允许访问所有的系统内存和 CPU 指令。Windows 系统从最早期的 16 位、32 位到现在流行的 64 位,系统版本从最初的 Windows 1.0 到 Windows 95、Windows 98、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10 和 Windows Server 服务器企业级 操作系统,不断持续更新。
Windows 系统最大的优势在于图形界面,使得普通用户操作起来非常便利。相比大部分 Linux 系 统,windows 的常用软件安装和系统设置不需要以命令行的方式去输入系统指令,只需要点击“按 钮”即可完成。如今,绝大多数常见软件、专用软件和底层硬件都支持 Windows 操作系统,形成 了 Window 强大的生态整体。
2. 开源操作系统:代码免费开放,以 Linux 操作系统为代表
Linux kernel(内核)由 Linus Torvalds 在 1991 年发布,代码免费公开,由全球开发者共同贡献, 已成为影响最广泛的开源软件项目。以 Linux 内核为基础,不同的开发团体(开源社区、企业、个 人等)对内核代码进行一定的修改和补充,加入 GUI(图形界面)、应用等部分,形成了相应的 Linux 操作系统发行版。
Linux 系统版本之间存在衍生关系,由此形成 RedHat、Slackware、Debian 等几大家族,各家族 内部又衍生出一些著名版本,如 Ubuntu、SUSE、CentOS、Red Hat Enterprise Linux、Fedora 等。
Linux kernel 是开源项目,由全球范围的开发者(企业、团体、独立开发者)共同贡献源代码。Linux 的官方组织是 Linux 基金会,作为非盈利的联盟,协调和推动 Linux 系统的发展,以及宣传、保护 和规范 Linux。Linux 基金会由开源码发展实验室(Open Source Development Labs,OSDL)与自 由标准组织(Free Standards Group ,FSG) 于 2007 年联合成立。
开源社区是 Linux 系统的创新源泉和主要的开发场所。Linux 操作系统发行版分为社区版本和商 业版本。社区版本数量较多,其开发和维护的主体是开源社区。少数的商业版本(比如红帽企业版) 则是在社区版本的基础上,进一步优化而来。整体来看,无论是否涉及商业活动,开源社区是 Linux 发行版的创新来源和主要的开发场所。而成熟的开源社区通常由相应的开源基金会(或者项目委员 会)进行管理。开源基金会为开发社区制定了规则,进行资源管理,负责可能的商务对接,以及保 护社区的健康运转。社区的开源基金会(委员会)一般由开源贡献方进行赞助和决策支持。
许多开源社区背后都有一个主导企业,为社区提供资金和研究支撑,甚至直接委派员工参与开源 项目。例如,Fedora 社区的核心开发者中 1/3 是红帽的正式雇员。通过资助和维护开源社区的方 式,企业可以发挥研究力量的“杠杆”作用,通过向社区输入自有的研究资源,吸引更多的外部贡 献者参与进来,扩大创意来源;另一方面,开源社区版本也成为企业扩大技术影响力的重要途径。
Linux 操作系统由 4 部分组成:kernel、shell、文件系统、应用程序。Kernel(内核)是操作系统的 核心,不同于 windows 的内核,Linux 的内核不仅实现了进程调度、内存管理、中断处理、异常陷 阱处理,而且还实现了进程管理、进程通信机制、虚拟内存管理、文件系统驱动和 USB、网络、声 音等各类设备驱动子系统,决定了整个系统的性能和稳定性。而 shell 是系统的用户界面,提供用 户与内核交互的接口,接收用户输入的命令并送入内核去执行。
Linux 操作系统主要的优势领域是服务器和嵌入式。据 Linux 基金会统计,全球 90%的公有云平 台采用了 Linux 系统,99%的超算和 62%的嵌入式设备也都是基于 Linux。亚马逊 AWS、微软 Azure、微软 Azure、谷歌云平台和阿里云等主流云服务商,都提供了 Linux 系统方案。全球公有 云平台运行的所有应用,超过 54%是运行在 Linux 虚拟机上。甚至微软 Azure 的近 30%的虚拟机 也是基于 Linux。根据 IDC 在 2017 年的统计数据,全球服务器操作系统使用份额(免费+付费)中, 68%是 Linux 服务器操作系统。
Linux 操作系统在服务器领域的普及,主要由于 3 个方面:
1)创新方面,集思广益。全球开发者对 Linux 内核保持了持续的更新,提供了充足的创新动力。据 GitStats 分析结果,截至 2018 年 9 月,已有超过 19000 名开发者为 Linux 内核贡献了代码, 这些开发者遍布全球范围超过1500个组织/企业。广泛分布的开发者,从不同视角不同方面对Linux 内核的补充,使得 Linux 系统得以快速适应服务器领域的变化。
2)系统代码可以修改和自定义,用户可调用计算机资源的自由度极高。Linux 操作系统的使用者 可以轻松查看系统代码,可以自由修改代码来修补常见的问题,也可以开发自己的程序并添加入 Linux 操作系统中。相比 Windows 等闭源系统,Linux 支持了使用者对于计算机资源极大的使用自 由度,支持专业用户去构建和自定义服务器,由此获得了互联网公司、云计算公司的青睐。
3)运行效率高,运维成本低。Linux 系统在服务器上面的运行效率较高,相对比较轻量化,除非硬 件资源分配出现问题,不易出现系统卡死状况。而且 Linux 系统天然地支持虚拟化。因此,在服务 器集群上,Linux 系统的运维成本较低。
4)安全。Linux 从发展根源上就是针对多用户系统设计的,系统管理员和 root 用户具有系统管理 权限。Linux 面向全球开发者开源,系统文件都是文档,在全球开发者多次的筛查和更新中,基本排除了“后门植入”的可能。实际应用中,普通不成熟的 Linux 操作系统确实可能存在安全问题, 也是和系统的文档属性有关。例如,用户 root 权限和 sudo 指令可在有意或无意间修改 Linux 系 统文档,可能会对其他用户或整个系统造成不利影响。因此,成熟的 Linux 操作系统解决方案,有 必要对这类属性进行设计方面的防范,去进行适当的权限屏蔽。而这些安全属性的设计,本质上并 不存在难以解决的障碍。
来源:自主可控新鲜事
评论