操作系统是什么?
作者:Raphael A. Finkel
KEY:操作系统
INTRO
操作系统是什么?它的本质是什么?操作系统是集策略和机制( policy and mechanism)、法则与无法则(algorithm and heuristic)和思想理论与实践经验于一身的高度复杂的混合物(mixtures)。本手册(vade mecum)尝试揉合对操作系统的各种不同观点,一步一步地引导初学者掌握这个计算机科学最复杂的主题。
操作系统主题内容之广以及独立内容之多,以致于学生和教师常常只关注局部而忽视统览全局的思想。我希望通过本书提出的双重思想——资源管理思想(resource management )和美化思想(beautification),矫正这种情况。
(KEMIN:所谓的揉合各种观点其实是抽象出操作系统最一般的理论,指出操作系统的本质)
统一术语:原理、存储、传递
To unify disparate threads of discussion, I have taken the liberty(随意, 冒失, 冒昧, 失礼 ) introducing names for recurrent themes and glorifying( 赞美, 赞扬, 美化) them with the title "principles", I hope that this organization and nomenclature(命名法, 术语, 专门语) will help the reader to understand the subject better and to integrate new ideas into the same framework.
I have striven to use a consistent nomenclature throughout the book. At times this nomenclature is at odds(可能的机会; 优势; 成败的可能性 ) with accepted American practice. For example, I prefer to call computer memory ‘‘store.’’ This name allows me to unify the various levels of the storage hierarchy, including registers, main store, swap space, files on disk, and files on magnetic tape. I also prefer the single word ‘‘transput’’ to the clumsier(笨拙的, 粗陋的, 不雅观的) but more common term ‘‘input/output.’’ Although I found this term jarring(刺耳的; 辗轧的; 不和谐的 ) at first, I have grown to like it.
课程实践
没有实践项目的操作系统课程是不完整的。但是这个练习必须在软件上有实质性的投入(substantial investment),比如实现操作系统的部分功能。可以在课堂上通过良好定义的模块和接口给出完整的操作系统功能结构,然后为同学们设置作业,内容是用自己的设计实现这些模块。一个没那么雄心勃勃的项目是首先让学生为虚拟机写一个简单的调度程序。完成后可适当再优化它,比如添加虚拟内存、输入输出和其它功能。
机制和策略
在本书中,我小心认真的区分了机制和策略的关系。机制是执行事务的技术;策略是决定执行何种事务的规则。机制是操作系统的螺钉和螺母(nuts and bolts), 就是基本零件, 基础部分。而这些机制的种类和多少还取决于操作系统所运行的硬件体系。
KEMIN:请用“机制是一种人造性质”来再理解一下上面这段话,并参考这里
。
THE RESOURCE PRINCIPLE
操作系统的结构和行为那么的复杂,它的本质是什么?我们通过给出两种不同的操作系统定义,希望给读者把握操作系统本质的一些提示。第一个定义叫资源原则(Resource Principle. ),第二是美化原则(Beautification Principle)。此外,我们还会介绍一项对操作系统非常重的结构化思想——层级原则(Level Principle)。
以下是资源原则的内容:
操作系统是一组分配资源给进程的算法。
资源
资源是什么?资源是完成工作或事务必须的物品(commodity)。计算机硬件提供了很多完成计算事务的基本(fundamental )资源。我们知道,程序必须保存在主存、必须由CPU执行和一定的输入输出操作,可以把计算机硬件提供的基本资源理解成空间、时间和数据传递(transput)三类。
除了基本的原始的资源外,操作系统还引入一些新资源和一些对基本资源加工过的资源。比如,文件资源、管道资源和邮箱资源。
进程
进程的概念是操作系统的核心,是出了名的(notoriously)难定义。一种粗浅的理解是,进程是程序的一次动态执行,是程序完成一次任务所需的资源的载体。我们可以把进程比喻成在戏剧院表演独角戏的演员,对于演员,舞台小道具就是他的资源。当演员需道具时,他到道具管理处(相当操作系统的资源分配程序)申请。由于资源是对所有演员共享的,管理处的工作就是当多个演员申请道具时代为解决资源竞争问题,满足两个冲突的目标:
- 让每个演员得到他们想要的道具 (机制WHAT的问题)
- 公平分配道具 (策略HOW的问题)
KEMIN:由于各种资源(包括包装过的高级资源)的性质不一,所以对它们的[管理]方式都不一样的,从管理手段的名称就可看出这一点,处理器是[调度]的,主存是[分配]的。但从完成管理功能的高度看,它们都有实现管理的部分和如何管理的部分,实现管理就是机制问题,如何管理就是策略问题。比如,处理器的调度机制(必须有timer和进程切换指令等体系功能的支持)和调度策略。
另外,管理处也要对戏剧院的主人负责,职责目标有:
- 确保道具(资源)的高利用率
- 尽可能提高演出(进程)数量
THE BEAUTIFICATION PRINCIPLE
我们已经看了操作系统的资源原则的定义,现在我们来看看操作系统的另一个同样重要的定义——美化原则(Beautification Principle)。
操作系统是一组隐藏硬件细节和提供更亲切舒适环境的算法。
隐藏硬件细节是为了达到两个目标。
安全(Security)
虽然操作系统与一般进程以相似的形式运行于主存,但作为资源分配者和虚拟环境支持者,内核进程与一般应用程序进程有明显安全边界。操作系统与硬件有亲缘性,从操作系统运行在CPU的核心态,能看见CPU的控制和状态寄存器就可以看出这一点。如果按严格的逻辑分层,应用程序进程与内核进程位于不同的逻辑层级。但由于成本、效率和灵活性,操作系统没有完全硬件化,CPU的可软件化的部分也是万分的设计过。另外,由于应用程序进程必须使用硬件资源才能完成事务(比如输入输出),两逻辑层级必须有接口。
抽象(Abstraction)
操作系统不但是个资源的分配者,而还是资源的包装者,把低级的原始的资源打包成高级的虚拟的资源。这种打包称为抽象。操作系统和其它抽象支撑软件(比如编译器)一样,负责抽象的实现。这种抽象的目的很简单,为上层(比如进程)提供一个虚拟操作环境。虚拟环境在不同语境有不同的理解,谈进程调度时叫资源;谈具体编程(C语言虚拟机)时叫高级指令、库函数调用;谈系统结构时叫服务(services )……
KEMIN:如果从系统(元素、属性和关系)的角度看,抽象总是出现两个不同层次系统的边界,高级别层次的系统的演绎(工作、活动或事务)总是依赖于低级别层次的系统提供的抽象。这种依赖不完全是硬性的,为的是折中效率(好比一家公司有不同级别的职位,各司其职,下属听从指挥,协调合作才发挥团体的效能)
KEMIN:个人认为把美化原则划分安全和抽象不是合适的,会造成概念上的混乱。作者的这种划分的目的是想强调OS与硬件的特殊关系,强调OS是运行在特权级下的软件。但细心想想,安全到底是什么?安全是保证抽象的正确实现,它是抽象的一部分,把安全与抽象并列是不对的,会造成分类上的混乱。
一些操作系统相关的头脑风暴
b. 差点忘记开发驱动程序其实就是开发操作系统。所以把计算机系统分成汇编语言层和操作系统层这种混合方式是不清晰的。不过如果光以编程语言(也就是指令,或者叫命令)来结构化分层化计算机系统是不充分的,因为有很多实现机理(如中断机制)不属于编程语言概念,但是开发者却必须在开始工作前了解这些机理知识。 2009-6-3 10:15
b.现在很多计算机组成与体系结构方面的图书在划分计算机层次结构时,都把操作系统(系统软件和代码库)划分独立一层,介于汇编语言层和ISA层,我认为这种划法是不合适的。我认为只能按语言的抽象级别来划分才能清晰地把握计算机的层次结构。不过操作系统的角色的确不可忽视。OS很特殊,还有一个东西也很特殊,就是编译器。在为计算机分层时,OS和编译器应该独立出来再定性分析……2009-6-15 1:45
b.进程、线程、纤程和分布式任务都是“计算任务”,从纵向看只是粒度不同,从横向看会有任务性质的不同(比如管理任务和被管理任务),这些理解都不是十分难。但是加上个处理器实现和操作系统实现,问题的复杂度好像增加了一个数量级。这是什么现象?抽象的“计算任务”需要一个具体的物理载体来实现。如果我们把计算机系统分层,那么硬件的操作模式是一个比较明显的分隔线,分隔任务与实现。但是作为软件的操作系统却在实现的一层。可见操作系统与CPU有着相当的紧密的关系。 2009-5-3 13:05
o b.今天最大收获就是弄清了操作系统、应用软件与编程语言三者间的关系。纵向看,操作系统与应用软件都是软件产品,程序语言是构造它们的工具。操作系统比应用软件抽象级别低,使用更靠近硬件的低级语言构造;横向看,三者都是按工程需要开发设计的信息产品,只是编程语言更抽象一级,属于“方法论”级别。 2009-3-6 19:15
b.用电脑多了会有种错觉,以为计算机屏幕上跑了好多不同的程序,包括也以为操作系统也一个独立运行的程序。事实上,这种不同只存在于不同的应用程序之间,操作系统在逻辑上是应用程序的一部分。如果这种假设成立,那么有个概念很难理解,就是到底什么叫运行? 2009-4-9 20:04
b.之所以很理解应用程序和操作系统是“运行”的同一体,是因为操作系统具体双重角色。操作系统在作硬件的扩展一面是与应用程序一同“运行”;在作为资源管理一面则是管理应用程序,有自己的“运行”…… 2009-4-9 21:37
b. 操作系统与应用程序是“运行”的同一体可以从操作系统提供的DLL看出来。这些DLL都是操作系统提供的服务的具体代码,应用程序运行时要将其映射入地址空间,一并“运行”。可“运行”的计算机系统被模块化成很多部分。硬件、系统软件和应用软件是其中最主要的三个部分。 2009-4-10 11:47
a. 宗教有什么用?哲学有什么用?原来它们的都属“监管”范畴。这两天研究操作系统,发现计算机世界充满了监管的概念。并联想到各个领域只要涉及管理的都有一个额外的管理机构在作用着。比如,政治里的司法,人生中的宗教;而操作系统的CPU、内存、设备管理都有一个额外的负责管理的执行程序。 2009-4-11 19:57
b.总结一下这两天对操作系统研究。操作系统在计算机系统中的主要功能管理硬件资源,而这些管理功能目的是为了实现多道程序的运行。操作系统管理计算机系统的三大主要硬件:处理器、内存和外部设置;管理模块分别叫处理器管理(也叫进程管理)、内存管理(也叫虚拟内存管理)和设备管理。另外,硬盘除作为设备管理(硬盘储存设备,相对于其它的输入输出设备)外,由于具体计算的额外需要--数据的文件持久化,并且文件管理的复杂性,另设第四项管理,文件管理。 2009-4-14 22:51
分享到:
相关推荐
国产操作系统大全 国产操作系统有哪些?这是一个许多人想知道的问题,尤其是在微软停止对 Windows XP 的服务之后。那么,国产操作系统有哪些呢?下面我们来了解一下国产操作系统的种类。 首先,我们有思普操作系统...
我们在学习STM32到一定阶段可能会了解操作系统,然后便有这种问题产生,下面我就来粗略说说“操作系统与裸机的区别,以及STM32能运行什么操作系统,能运行linux系统吗”等问题。 操作系统与裸机的区别 裸机运行的...
Linux 是一个类Unix 的操作系统,也正因此,它在服务器层面得到了 广泛的应用。Linux 的服务器应用相当专业,很多服务器软件都有集成在各个发行版 本中。系统安装完成后,只需经过简单的配置,就可以使用包括Web、...
《orange's一个操作系统的实现-【自己动手写操作系统第二版】》是一本深入浅出的操作系统构建指南,作者为于渊。这本书旨在帮助读者通过实际操作来理解操作系统的原理和构造,适合对操作系统感兴趣的DIY爱好者和...
操作系统是计算机科学中的核心课程,对于计算机专业的学生来说,深入理解和掌握操作系统原理至关重要,尤其是在准备考研的过程中。2023年王道操作系统课件正是针对这一需求精心编排的资源,旨在帮助学生全面掌握操作...
《教育部高职高专电子信息类专业教学指导委员会规划教材:操作系统安全》全面介绍了操作系统安全的基本理论和关键技术,包括安全操作系统的研究发展历程、安全策略、安全模型和安全机制、安全体系结构、知名安全操作...
操作系统是计算机科学中的核心课程,它管理着计算机的硬件资源,为用户提供服务并协调各种软件运行。"王道操作系统课件 2024" 是一套全新的教学资料,旨在帮助学习者深入理解操作系统的工作原理和设计思想。这些课件...
操作系统是计算机科学中的核心课程,哈工大的操作系统实验旨在通过实践加深学生对操作系统原理的理解,提高他们的编程和问题解决能力。李治军教授的实验课程通常涵盖了操作系统的主要方面,包括进程管理、内存管理、...
"计算机操作系统教程左万利王英第四版课后习题答案" 本资源摘要信息涵盖计算机操作系统教程左万利王英第四版课后习题答案的知识点,涉及操作系统的基本概念、进程管理、死锁避免、银行家算法、读者和写者问题等。 ...
凝思磐石安全操作系统V4.2管理员指南.pdf
操作系统是计算机科学的基础,它是控制和管理计算机硬件与软件资源的核心程序。《操作系统设计与实现》第三版,上下册,是一本深入探讨操作系统原理和实现的权威教材,由著名计算机科学家Andrew S. Tanenbaum和...
根据提供的文件信息,我们可以深入探讨操作系统中的几个关键概念和技术,特别是与设备控制器相关的知识点。 ### 操作系统概览 操作系统是计算机系统的核心软件,它管理着计算机硬件资源,并为其他应用软件提供服务...
"操作系统原理课后答案 第四版 庞丽萍" 操作系统原理是计算机科学中的一门重要课程,本书是该课程的第四版课后答案,作者是庞丽萍。该书涵盖了操作系统原理的所有重要知识点,包括进程管理、内存管理、文件系统、...
这份“大学操作系统期末复习资料”针对的是操作系统课程的学习者,特别是那些面临期末考试的学生,旨在帮助他们更好地理解和掌握操作系统的基本概念、原理以及应用。 文档“操作系统原理习题及答案(全书免费版).doc...
操作系统国产替代,从程序员开始。中国一定强!之所以大家不用uos开发项目,仅仅只是因为缺我这篇文档。 华为电脑出厂预装的全都是UOS;国企、政府都在全面普及UOS,预计2023年全国装机量达到30%;大多数项目,现在...
网络数据包分析是一种技术,用于深入理解网络通信的细节,包括通信双方的操作系统类型、网络信息流量、数据包的路径以及它们的大小。这种技术对于网络安全专家来说至关重要,因为它能揭示未加密的数据包内容,如账号...
操作系统中进程相关题目 一、 何谓进程? 进程是操作系统中的一种基本概念,它是程序在执行过程中的实体。进程是由程序、数据和PCB(Process Control Block)三部分组成的。进程状态转移图: 1. 创建状态:操作...
麒麟操作系统,作为中国自主研发的Linux发行版,以其稳定性和安全性在国内政企领域广泛应用。本文将深入探讨中标麒麟、银河麒麟和湖南麒麟之间的关系及其特点,帮助读者清晰理解这三种麒麟操作系统的异同。 首先,...