0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

操作系统的核心内容,怎样学操作系统

h1654155282.3538 来源:未知 作者:h1654155205.5246 2021-01-17 12:00 次阅读

01操作系统都学些什么

操作系统的重要性当然不止于此。如果深入研究你就会发现,操作系统在整个计算机学科体系中处于一个十分关键的位置。计算机科学的学科方向多如牛毛,但总的来说可以分成两块,硬件一块,软件一块,这两大块都喜欢各玩各的,中间说是隔着次元壁也一点不夸张。

但都在一个体系内,总要想个办法来打破次元壁呀,这个重要的工作由谁来做呢?就是操作系统。所以从体系架构的角度看,操心系统是处在所有硬件的最上层,和所有软件的最下层,是一个“跨界”的角色。

操作系统很重要,那作为一门学科,难不难学呢?大家的态度走两个极端,一边的人觉得操作系统有什么可学的,不就是点鼠标划玻璃,太简单连小学的计算机课都不一定认真教,大学还专门设了专业课太夸张了。另一边的人又觉得操作系统太难,操作系统的玩家不是Linus这样的业界大神,就是微软、谷歌这样的行业大佬,萌新小本只好瑟瑟发抖。

这些观点对不对呢?

都有一些理解上的偏差。我们平时常说的“安装操作系统”,这里的“操作系统”,准确来说,应该叫“操作系统产品”,而操作系统这门课,主要内容讲的是操作系统的内核原理。

操作系统产品和操作系统内核二者的关系,有一点像计算机和CPU,没有它不行,光有它也不行。一款操作系统产品,首先肯定得有操作系统内核,但是光有内核是没法使用的,还得加上配套的周边功能。

虽然叫“周边配套”,但绝不是可有可无的意思,大部分我们所熟识操作系统功能,实际上都是属于“周边配套”,譬如说我们最最最熟悉的“桌面”,放着漂亮的壁纸,摆满各色各样的图标,是操作系统主要的用户交互界面,术语称为图形用户界面(GraphicalUserInterface,简称GUI)。

前面感觉自己“精通操作系统”的那位同学,其实精通的只是GUI的使用,而且很抱歉,GUI不在操作系统内核里面。

不过,话说回来,虽然专门有“操作系统内核”这样的术语,但并不意味着所谓的“内核”与“周边”之间,天然就存在一条清晰的界限。在操作系统里面,一直存在着宏内核和微内核两条路线的争论,争论的焦点,正是什么该划入“内核”,什么又该算作周边。

微内核的主张,顾名思义,就是最小化内核所需要提供的服务,只负责最基本的功能,把应用服务、驱动、GUI,甚至一些感觉上也挺基本的功能,譬如文件系统服务,都统统赶出内核。

这样做的好处是灵活方便,像是要提供新服务,那直接新增就可以了,不需要对内核进行额外的改动,但缺点也很突出,什么功能都赶出去了,真到用的时候还需要进行内核模式-用户模式的切换,模式切换会增加额外的开销,导致性能受损,因此就有人主张应该把常用的功能都接纳进来,这就是宏内核。

Windows早前采用的就是微内核架构,把GUI赶了出去,结果性能损失受不了,后来又重新请回来,一直到现在,GUI仍然是Windows内核的一部分。

02操作系统的核心内容

操作系统这门课主要研究的是操作系统内核,这名字不太平易近人,容易给人“难学懂”的感觉。确实,现在操作系统的功能越来越丰富,连带着操作系统内核也越来越复杂。有一本操作系统业内很有名的书,叫《WindowsInternals》,讲的是Windows操作系统的功能原理,从这本书就可以看出来操作系统的一个变化趋势。

《WindowsInternals》是跟着Windows推陈出新的,Windows不断更新,这本书也不断再版,一个肉眼可见的变化就是书越写越厚,现在最新版干脆把一本书分成了上下两卷,内容太多,光一块砖头已经不够装了。

这还只是Windows,现在是移动互联网时代,还有操作系统还有一半多的江山被iOSAndroid这哥俩占着,而且都以一年一个版本的速度迭代,要学的知识岂不是漫无边际?

其实不用担心,操作系统确实在迅速发展,但最最核心的还是那些老兄弟。操作系统有一本非常经典的教材,只要你问就一定会有人推荐,叫《OperatingSystemConcept》,中文译为《操作系统概念》。因为这本书的封面画着恐龙,所以学界也称为“恐龙书”。

恐龙书不但介绍操作系统知识,还会引入“当前主流操作系统”作为研究案例。当然,恐龙书已经从第1版发展到了第9版,书里的“当前主流操作系统”也一换再换,默默地记录着操作系统的变化发展。

不过,我把几个版本比较了一下,最新版知识点增加了不少,还补充了一些新的内容,涵盖了iOS、Android等移动操作系统,但主要的知识结构并没有大幅调整,核心的研究对象和问题,仍然是早就登场的那几个。

具体是哪几个呢?就仨:进程、内存和存储。操作系统最重要的功能就是“管理”,具体来说是两项工作,资源的分配和资源的调度,那管理的核心对象是哪些呢?就是这仨,分别对应的硬件是CPU、内存和硬盘,想想就能知道,这仨同样是计算机里的三个扛把子部件。

我们说恐龙书经典,其中一个地方就体现在对操作系统知识体系的划分上面。恐龙书当然会重点照顾这三个核心对象,为它们一一设有单元,再加上必不可少的概论、大家现在都很关注的安全,以及前面提到的案例分析,就构成了恐龙书最新第9版的六大知识板块。

作为一名操作系统爱好者,我看过很多操作系统的书,有偏重原理的,有偏重实例的,也会有其它新的偏重,譬如会为网络,硬件架构、设备管理等等内容设置独立章节,但无论哪本书,进程、内存和存储(也有称为外存)始终是书里的三条主线。总而言之,学操作系统,首先都得紧紧抓住进程、内存和存储学懂学通。

03怎样学操作系统

既然进程、内存和存储是操作系统的三个核心对象,那具体应该怎么学呢?一句话回答:带着问题学。这里的“带着问题学”,和我们平时常说的有所不同,在操作系统里面,进程、内存和存储都有各自需要重点关注的问题。

就拿进程来说,进程是操作系统中相对比较抽象的概念,所以大多数操作系统的教材都会不吝笔墨,给进程下一堆的定义,试图只靠文字就解释清楚什么是进程。不过效果总不太好,大家不容易看懂,还容易看晕,毕竟“抽象”的意思就是说,你懂了马上心领神会,你不懂总感觉鸡同鸭讲。

我倒认为没必要在进程的定义上作过多纠结,关键是功用,开始只需要记住一点,进程对应的是CPU。计算机所谓的“计算”,指的就是CPU运算,那运算什么内容呢?这就是进程。

本来这个过程不算复杂,好像也没什么问题,但是后来人们搞出了“多进程”,一个CPU能“同时”运行多个进程。但这个“同时”不是真正的同时,用术语来说,是并发执行而不是并行执行,结果一下就复杂起来,问题也就随之而来了。

进程增多了,但CPU却只有一个,出现了多对一的竞态问题,这就是一切问题的起源。围绕着竞态问题,进程接着又衍生出了许多问题。

首先就是调度问题。对操作系统来说,调度是个大问题。书本肯定都会告诉你,进程有很多个状态,有些还画成了状态迁移图,各种线飞来飞去,看得眼花缭乱。感觉上很难,但我觉得,把握好了背后的逻辑,这些看似凌乱的知识点就是条理清晰地串在一起。

在这里,我们只需要死死盯住竞态问题,正是因为进程和CPU不再是一一对应,所以需要调度,而所谓调度,就是杂技里的用两只手玩五只球,总会区分出接回手里的、准备抛出的和停在空中的几种情况,所以也需要根据情况给进程配套设计不同的状态,调度的具体工作,就是想办法让进程在这几个状态中来回迁移倒腾,最终营造出CPU同时执行多个进程的假象。

进程之下是线程,现在又搞出了协程和纤程,以后不知道还会什么程,不过,目的只有一个,更充分地利用CPU时间,而且都难以避免一个问题,就是调度问题。

调度本身不难,难就难在设计调度原则,谁上谁下,执行多久,等待多久,都需要一一加以考虑,而且最难的地方在于,调度是没有最优解的,只有在指定原则条件下,设计出相当不错的调度方案。

进程除了竞争CPU,还要竞争资源,譬如两个甚至更多的进程可能都需要同时读写同一个文件,我们熟悉的多对一的关系,会导致我们熟悉的竞态问题,在CPU那导致了调度问题,而到了资源这里,则会导致同步问题和死锁问题。

同步问题很简单,进程既然要调度,那肯定没办法把活一口气干完,譬如说读写某个文件,读到一半被换下来了,下次再换上来的时候发现,别的进程也在读写这个文件,内容变了。

多线程有一个默契,就是前后环境要保持一致,你把我从CPU那换上换下我没意见,但你得保证我所处的环境是相同的,别像雍正那样一觉醒来发现大清亡了,后面也就没法跟着剧本走。那怎么保证一致性呢,这就是同步问题,方法包括互斥锁、信号量等等。

死锁问题听起感觉复杂一点,书上花了不少笔墨但内容还是不好懂。其实也不复杂,我们在小区门口喜闻乐见的堵车就是死锁。小区门口只有一条车道,早高峰大家都得排着队出去,这时如果外面有一辆车回来,开到门口又不肯避让,那就堵车了,用操作系统的术语来说,就是死锁了。

前面说,为了解决同步问题,我们会采取互斥锁等方法,简单来说,当多个进程都要使用同一项资源时,只有当前正在使用的进程用完了,也就是术语所说的资源释放了,后面的进程才可以接着用。这样做的好处当然是保证了一致性,但坏处则是导致了另一个问题,就是死锁问题。

拿前面的小区出口比划一下就清楚了。单车道当然是互斥的,要么只进要么只出,不可能一边进一边出。如果两头的来车各占一半车道,结果当然是想进来的进不来,想出去的出不去,两头堵死,这就死锁了。

那怎么解决死锁问题呢,大方向有两种,一种是避免出现死锁,从根本上解决这个问题,不过难度较大。另一种则是想办法对已经发生的死锁及时检测发现,然后进行恢复。但是怎么才能及时发现死锁呢?这又是一个操作系统方向需要研究的问题。
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6808

    浏览量

    123292
收藏 人收藏

    评论

    相关推荐

    deepin操作系统介绍

    希望从自己的能力和对桌面操作系统的理解,能给 Linux 的用户与开发者更多的选择。我们也相信 deepin 能够得到更多用户的认可与喜爱,成为开源世界的最佳选择。  一、 deepin 操作系统 先说 Linux 操作系统,它
    的头像 发表于 12-23 09:08 127次阅读
    deepin<b class='flag-5'>操作系统</b>介绍

    如何在windows上emulate不同操作系统

    一、虚拟化技术概述 虚拟化技术允许在单个物理机器上创建多个虚拟机,每个虚拟机都可以运行不同的操作系统。这使得我们可以在Windows系统上模拟其他操作系统,而无需购买额外的硬件。虚拟化技术的关键组件
    的头像 发表于 12-05 15:50 168次阅读

    linux操作系统安装步骤 linux操作系统的特点及组成

    Linux操作系统安装步骤 Linux操作系统是一种开源的操作系统,它以其稳定性、安全性和灵活性而闻名。以下是安装Linux操作系统的一般步骤,以Ubuntu为例: 1. 准备工作 在
    的头像 发表于 10-21 11:24 534次阅读

    新手操作系统(第一周)

    1.介绍计算机、OS与应用程序之间的关系,计算机的硬件是底层的基础,操作系统在其之上管理硬件资源,应用程序则通过操作系统来实现其功能;2.推荐参考学习书籍;3.实践环境的介绍
    的头像 发表于 10-08 11:33 242次阅读
    新手<b class='flag-5'>学</b><b class='flag-5'>操作系统</b>(第一周)

    新手操作系统 第二周

    新手操作系统1.在shel程序中发命令 编辑 人在shell中发命令2.操作系统中的基本命令3.获取帮助信息的两个方法
    的头像 发表于 10-08 11:32 207次阅读
    新手<b class='flag-5'>学</b><b class='flag-5'>操作系统</b> 第二周

    工控机支持什么操作系统

    工控机,全称工业控制计算机(Industrial Personal Computer, IPC),支持多种操作系统以满足不同行业和应用场景的需求。具体来说,工控机常见的操作系统包括:
    的头像 发表于 09-11 09:24 423次阅读

    简单认识RTOS实时操作系统

    RTOS(Real Time Operating System,实时操作系统)是一种专门设计用于在严格时间限制内处理任务的操作系统。它以其高实时性、多任务处理能力和资源管理能力在工业自动化、医疗设备、航空航天、汽车电子等众多领域得到广泛应用。以下是对RTOS实时
    的头像 发表于 08-20 11:20 2709次阅读

    Windows操作系统是什么?它有哪些特点?

    Windows操作系统是由美国微软公司(Microsoft Corporation)开发和推出的一种计算机操作系统。自1985年Windows 1.0版本发布以来,Windows系统经历了多次重大
    的头像 发表于 08-07 16:30 2423次阅读

    嵌入式实时操作系统:Intewell操作系统与VxWorks操作系统有啥区别

    Intewell操作系统和VxWorks操作系统都是工业领域常用的操作系统,它们各有特点和优势。以下是它们之间的一些主要区别:
    的头像 发表于 07-08 14:16 420次阅读
    嵌入式实时<b class='flag-5'>操作系统</b>:Intewell<b class='flag-5'>操作系统</b>与VxWorks<b class='flag-5'>操作系统</b>有啥区别

    微内核实时操作系统的介绍

    微内核实时操作系统(Microkernel Real-Time Operating System, μRTOS)是一种专为实时设计的操作系统。它采用微内核架构,以提高系统的可靠性、安全性和可扩展性。以下是关于微内核实时
    的头像 发表于 05-11 17:13 499次阅读

    如何根据需求选择合适的新加坡VPS操作系统?

    选择合适的新加坡VPS操作系统您需要考虑哪些因素,如何根据需求选择合适的新加坡VPS操作系统?rak部落小编为您整理发布选择合适的新加坡VPS操作系统需要考虑哪些因素。
    的头像 发表于 05-10 11:14 440次阅读
    如何根据需求选择合适的新加坡VPS<b class='flag-5'>操作系统</b>?

    基于鸿道(Intewell®)操作系统研发的农业机器人操作系统

    江苏大学与科东软件联合研发“农业机器人操作系统”,并成立“农业机器人操作系统”联合实验室,奋力推进农业智能化,推动农业科技创新。“农业机器人操作系统”的技术革新,对提高农业生产效率、保护环境、应对农业劳动力短缺及促进智慧农业发展
    的头像 发表于 04-30 11:09 425次阅读

    带你认识实时操作系统(rtos)

    实时操作系统(RTOS)是为嵌入式系统和实时应用提供一个稳定、可预测和高效运行环境的操作系统。实时操作系统确保了系统能够在严格的时间限制内响
    的头像 发表于 04-16 16:30 1254次阅读
    带你认识实时<b class='flag-5'>操作系统</b>(rtos)

    深度解析全球操作系统格局

    操作系统是负责协调、管理和控制计算机硬件与软件资源的程序,是整个计算机的核心系统软件。 按照操作系统面向的设备类型,通用操作系统主要包括桌面操作系统
    的头像 发表于 01-18 15:00 1161次阅读
    深度解析全球<b class='flag-5'>操作系统</b>格局

    详解实时操作系统和非实时操作系统

    实时操作系统,当外界事件和数据产生时,系统能以足够快的速度予以处理,其处理结果能在规定的时间内控制生产结果或对系统做出响应,并控制所有实时任务协调一致运行的操作系统
    的头像 发表于 12-26 09:54 4752次阅读
    详解实时<b class='flag-5'>操作系统</b>和非实时<b class='flag-5'>操作系统</b>