Exokernel An Operating System Architecture for Application-Level Resource Management

合集下载

关于软件的英语作文加翻译

关于软件的英语作文加翻译

English Composition:In the modern era, software plays an integral role in our daily lives. It is the backbone of the digital world, powering everything from the simplest calculator applications to the most complex artificial intelligence systems. The development of software has revolutionized industries, improved communication, and enhanced our ability to solve problems.The process of creating software is known as software development. It involves several stages, including requirement analysis, design, implementation, testing, and maintenance. Each stage is crucial to ensure that the final product meets the users needs and is free from bugs and errors. Software developers must possess a deep understanding of programming languages and algorithms to write efficient and effective code.One of the most significant benefits of software is its flexibility. It can be easily updated and customized to meet changing requirements. This adaptability has allowed businesses to stay agile and responsive to market demands. Furthermore, software has democratized access to information and services, making it possible for individuals to perform tasks that were once reserved for specialized professionals.However, the proliferation of software also brings challenges. Cybersecurity is a growing concern as malicious software can compromise sensitive data and systems. Developers must prioritize security in their designs to protect users and their information. Additionally, the rapid pace of technological advancement means that software must be continuously updated to remain relevant and secure.In conclusion, software is an essential component of our digital infrastructure. It has the power to transform industries and improve our lives in countless ways. As we continue to rely on software, it is imperative that we invest in its development, security, and ongoing maintenance.Translation to Chinese:在现代时代,软件在我们的日常生活中扮演着不可或缺的角色。

VEEN0打造亚洲单体最大酒堡的智能会议系统

VEEN0打造亚洲单体最大酒堡的智能会议系统

标 准 的研 究 [ . 视 技 术 ,0 57 :1 2 . J 电 ] 2 0 ( )2 - 3 【 ] 王明伟. V l 0 A S中 的 音视 频 编 码 压 缩 技 术 [. 视 技 术 , J 电 ]
tnin[ . .]IO IC,0 6 e s s ]s . S / o Si1: E 20.
2 0 ( :3 6 0 6 6) 1 -1 .
[】 IO I C IO IC 14 6 3 2 0 / m :0 6 S a be 2 S / . S / 4 9 - :0 5A d3 20 , cl l E E a
【 任 编 辑】 责 闰雯 雯 L s es o ig( L ) S . .】I O I C,0 6 o s s C dn S S 【JS . S / l I1 : E 20. 【 稿 日期 J2 1 — 1 1 收 0 0 1— 2
升模 块 、 性 预 测 器 , 线 以及 熵 编 码 器 构 成 。 中 , 编 码 其 熵
器使 用 算 术 编 码 ,并 以类 似 高 斯 分 布 来 拟 合 预 测 残 差 的概 率 分 布 。 进 行 算 术 编 码 前 , 差 信 号 经 归 一 化 处 在 残 理 以提 高熵 编 码 器 的 编 码 效 率 。对 A S L V — S进 行 编 码 效 率 测 试 的 结 果 表 明 , V — S在 纯 无 损 压 缩 模 式 下 A SL 其 编 码 效 率 接 近 M E 一 L , 并 高 于 MP G 4SJ P G 4A S E 一 L S
[ . 视 技 术 ,0 5 1 ) 8 1. J 电 ] 2 0 (0 :— 0 [] R Z I . o igo rdc o eiul nMP G 4 8 E N K Y A C dn f eit nR s a i E 一 P i d Sad r o L s esA doC dn ( P G 4 A S [ ] t adfr os s u i o ig M E 一 L )c/ n l / IA S 4【.】IE rs,04 3 :0 4 12 . C S P0 . 1 : EPes2 0 ( ) 12 — 0 7 S. E ቤተ መጻሕፍቲ ባይዱ

赛门铁克助企业利用现有基础架构实现私有云

赛门铁克助企业利用现有基础架构实现私有云

Ⅱr
储 。此外 ,存储管理员和I主管也需要一 T 个 可 以在异 构存储环境下 ,进 行存储空 间分配 、收费和跨数ห้องสมุดไป่ตู้ 中心进 行 自动化
报 告 的工 具 。 V r a trg o n a o ei sSoaeF u d t n产 品套 件 t i
高扩展性和高灵活性 ,并且这一功能适用于所有主要的存储阵列 。
操作 的 自动化优先 排序输入输 出安 排 ,
松协调底层 的虚拟基础架构 ,在灾难和意外停机时 ,实现关键业务恢 复,并且可以在
将对 系统性能 的影 响降到最低 。Vei s V w r v e t 上或通过V ra O e t n ngr rt a m ae C ne r ei s pr i s t a o Maae 控制台进行该操作 ,大大简化了恢
基于现有基础架构按需部署私有云
赛 门铁克能使I 组织对现有基础架构进行转换 ,以平滑迁移 到一个具有强伸缩性 T 的私有云环境 。通过这些最新发布的产 品系列 ,企业可 以跨越不 同的操作系统 和虚拟 化平台将物理或虚拟 系统上的现有 资产整合在一起 ,以实现其基础架构的高可用性 、
并 且从适合 的供应商处选 择其 需要 的存
Fl S se 和 Sma tcV r aSoe i ytm e y ne i u ltr 。 t
支持所 有主要 的存 储模式和操作 系统平 访 问。我们还可以通过它来分享跨多个物理服务器 的存储资源和数据 ,更加有效地使

用数据库和其他文件,同时还为 ‘ 突发状况 ’ 提供最快的故障迁移防护。”
用于 支持文件 系统 层的重复数 据删 除和 压缩 。除 了支持精 简 回收 、存储分 层 、 动态调整大小 和智能迁移 以外 ,Soa e trg Fudtn o n ai 还拥有最具综合性的存储优化 o 功能 ,适用于基 于块的S 存储环 境 。 AN 所有这 些功能 的运 行都无需停止应 用程 序 ,且通 过 可 以辨 别 应 用 程序 和 维 护

Principles of Operating System Security

Principles of Operating System Security

Principles of Operating SystemSecurityOperating system security is a critical aspect of ensuring the confidentiality, integrity, and availability of data within a computer system. The principles of operating system security are essential guidelines that help protect the system from unauthorized access, data breaches, and malicious attacks.One of the key principles of operating system security is the principle of least privilege. This principle states that users and processes should only be granted the minimum level of access and permissions necessary to perform their required tasks. By limiting access rights to only what is needed, the risk of unauthorized activities and potential security breaches is greatly reduced.Another important principle of operating system security is the concept of defense in depth. This principle involves implementing multiple layers of security controls to protect the system from various types of threats. By employing a combination of access control mechanisms, encryption, firewalls, intrusion detection systems, and other security measures, organizations can create a strong defense against potential security breaches.Access control is another fundamental principle of operating system security. Access control mechanisms, such as user authentication, authorization, and accounting, help ensure that only authorized users can access resources and perform specific actions within the system. By properly configuring access controls, organizations can prevent unauthorized access and maintain the confidentiality and integrity of their data.Auditing and monitoring are also critical principles of operating system security. Regular auditing of system logs and monitoring of network traffic can help organizations detect and respond to security incidents in a timely manner. By monitoring system activity and keeping detailed logs, organizations can identify suspicious behavior, track system changes, and investigate security breaches effectively.Secure configuration management is another important principle of operating system security. By ensuring that systems are properly configured, regularly updated, and patched with the latest security updates, organizations can reduce the risk of security vulnerabilities and exploits. Secure configuration management practices help maintain the overall security posture of the system and mitigate the risk of security incidents.Additionally, secure coding practices are essential principles of operating system security. By following secure coding guidelines and best practices, developers can create secure and robust applications that are less vulnerable to security exploits and attacks. Secure coding practices, such as input validation, secure error handling, and memory management, help prevent common security vulnerabilities, such as buffer overflows and injection attacks.In conclusion, the principles of operating system security are vital guidelines that help organizations protect their systems and data from security threats. By following these principles, organizations can establish a strong security posture, reduce the risk of security breaches, and safeguard the confidentiality, integrity, and availability of their data. Implementing robust security measures, such as least privilege, defense in depth, access control, auditing, monitoring, secure configuration management, and secure coding practices, can help organizations enhance the security of their operating systems and mitigate the risk of security incidents.。

项目1安装与配置Linux操作系统[2页]

项目1安装与配置Linux操作系统[2页]

答案:一.填空题1. GNU's Not Unix的递归缩写2. 内核(kernel)、命令解释层(Shell或其他操作环境)、实用工具3. System V BSD4. Copyleft(无版权)General Public License(GPL)5. FSF,Free Software Foundation6. 便携式操作系统接口(Portable Operating System Interface)7. 企业应用个人应用8. 内核版本发行版本9. swap交换分区/(根)分区10. root11. Unified Extensible Firmware Interface 统一的可扩展固件接口12. non-volatile memory express 非易失性存储器标准13. 1 2 第1个NVMe硬盘第1个NVMe硬盘的第1个逻辑分区14. MBR(Master Boot Record,主引导记录) 2.115. 根分区(/)、启动分区(/boot)、EFI启动分区(/boot/efi)和交换分区(swap)二、选择题答案:1.B 2.C 3.B 4.A 5. D 6. C三、简答题:1.简述Linux的体系结构。

答:Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。

内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

2.使用虚拟机安装Linux系统时,为什么要先选择“稍后安装操作系统”,而不是选择“RHEL 8系统映像光盘”?答:在配置界面中若直接选择了RHEL 8系统镜像,则VMware Workstation虚拟机会使用内置的安装向导自动进行安装,最终安装出来的系统跟我们后续进行实验所需的系统环境会不一样。

3.安装Red Hat Linux系统的基本磁盘分区有哪些?答:/boot分区,/boot/efi分区,“/”分区,/home分区,swap分区,/usr分区,/var分区,/tmp分区。

operatingsystem

operatingsystem

operatingsystemOperating System: A Comprehensive OverviewIntroductionAn operating system is a crucial software component that manages computer hardware and software resources, allowing users and other software programs to interact with the computer system. In this document, we will explore the essential aspects of operating systems, including their definition, functions, types, and examples. Furthermore, we will delve into the key components and features of an operating system, shedding light on its significant role in managing computer systems efficiently.Definition of an Operating SystemAn operating system (OS) can be defined as a software program that acts as an intermediary between the user and computer hardware. It provides an interface for users to interact with computer resources such as the Central Processing Unit (CPU), memory, storage, and input/output devices. Additionally, the OS ensures the execution of software programs by managing system resources effectively.Functions of an Operating SystemThe primary functions of an operating system can be categorized into the following:1. Process management: The OS manages and allocates system resources, including CPU time, memory, andinput/output devices, to different processes running concurrently. It ensures fair distribution of resources and prevents processes from interfering with each other.2. Memory management: The OS manages the system's memory, allocating and deallocating memory space to different processes as needed. It keeps track of available memory and prevents processes from exceeding their allocated memory limits.3. File system management: An operating system manages the storage and retrieval of files on secondary storage devices, such as hard disks. It provides a hierarchical structure for organizing files and ensures secure and efficient data access.4. Device management: The OS manages input/output devices such as keyboards, monitors, printers, and networkdevices. It facilitates communication between the user or applications and these devices.Types of Operating SystemsOperating systems can be broadly classified into the following categories:1. Batch operating systems: These operating systems are designed to execute a series of jobs in batch mode, without any user interaction. They process jobs one after another, optimizing resource utilization and overall system efficiency.2. Time-sharing operating systems: Time-sharing operating systems allow multiple users to simultaneously access and utilize the system resources. These systems divide the CPU time into small time intervals, enabling each user to perform tasks efficiently.3. Real-time operating systems: Real-time operating systems are used in applications that require precise and predictable system response times. They are commonly used in critical systems like aerospace, medical devices, and industrial control systems.4. Network operating systems: Network operating systems are designed for managing and coordinating multiple computers within a network. They provide mechanisms for file sharing, resource sharing, and communication between computers.Features of an Operating SystemSome prominent features of an operating system include:1. Multiuser support: Operating systems allow multiple users to access and utilize the system resources simultaneously, ensuring efficient resource allocation.2. Multitasking: Operating systems support running multiple tasks (processes/programs) concurrently, allowing users to switch between different applications seamlessly.3. Virtual memory: Operating systems provide virtual memory management, allowing the execution of processes that are larger than the available physical memory.Operating System ExamplesHere are a few examples of popular operating systems:1. Microsoft Windows: Windows is a family of operating systems developed by Microsoft Corporation. It is widely used in personal computers, laptops, and servers.2. macOS: macOS is the operating system used in Apple's Macintosh computers, providing a user-friendly interface and a range of software tools.3. Linux: Linux is an open-source operating system that is widely used in servers, embedded systems, and mobile devices. It offers high flexibility and customizability.4. Android: Android is a mobile operating system developed by Google. It is primarily used in smartphones and tablets, providing a rich user experience and a wide range of applications.ConclusionOperating systems are an integral part of computer systems, providing a crucial interface between users and hardware resources. They enable efficient resource management, process execution, and data storage. Understanding the fundamental concepts and functions of operating systems isessential for both users and software developers, as it helps optimize system performance and achieve desired results.。

Oracle Enterprise Manager Ops Center Upgrade Oracl

Oracle Enterprise Manager Ops Center Upgrade Oracl

Oracle® Enterprise Manager Ops CenterUpgrade Oracle Solaris 11 on Enterprise Controller12c Release 3 (12.3.1.0.0)E65777-01December 2015This guide provides an end-to-end example on how to upgrade the version of OracleSolaris 11 that an Enterprise Controller runs on in the Oracle Enterprise Manager OpsCenter.This document includes the following sections:•Introduction•What You Will Need•Upgrading Oracle Solaris 11 on an Enterprise Controller•Related Resources and ArticlesIntroductionThis document explains how to upgrade the version of Oracle Solaris 11 that anEnterprise Controller runs on in the Oracle Enterprise Manager Ops Center.To upgrade the version of Oracle Solaris 11, stop the Enterprise Controller, co-locatedProxy Controller, and Agent Controller of the Oracle Enterprise Manager Ops Centerand then manually upgrade the version of the operating system as described inUpgrading Oracle Solaris 11 on an Enterprise Controller. After upgrading theoperating system, restart the Oracle Enterprise Manager Ops Center.What You Will NeedLists the prerequisites required to upgrade the Oracle Solaris 11 operating system thatan Enterprise Controller runs on.You will need the following:•An Enterprise Controller with the Oracle Solaris 11 operating system•Desired Oracle Solaris 11 operating system version to which you want theEnterprise Controller to be upgraded to, should be present in the EnterpriseController Solaris 11 library.Upgrading Oracle Solaris 11 on an Enterprise ControllerTo upgrade the version of Oracle Solaris 11 that an Enterprise Controller runs on, you need to stop the Enterprise Controller and then manually upgrade the Oracle Solaris 11 operating system.To upgrade the Oracle Solaris 11 version:1.Stop the Enterprise Controller, any co-located Proxy Controller, and the AgentController using the ecadm, proxyadm, and agentadm commands respectively.On Oracle Solaris systems, these commands are in the /opt/SUNWxvmoc/bin/ directory.•To stop an Enterprise Controller use the ecadm command withthe stop subcommand and the -w option. For example:# ./ecadm stop -wecadm: Shutting down Enterprise Controller using SMF...ecadm: Enterprise Controller services have stopped#•To stop a Proxy Controller use the proxyadm command withthe stop subcommand and the -w option. For example:# ./proxyadm stop -wproxyadm: Shutting down Proxy Controller using SMF...proxyadm: Proxy Controller services have stopped#•To stop an Agent Controller use the agentadm command withthe stop subcommand and the -w option. For example:# ./agentadm stop -wagentadm: Shutting down Agent Controller using SMF...agentadm: Agent Controller services have stopped#2.Determine the Oracle Enterprise Manager Ops Center Oracle Solaris 11 repositorypath. For example:% svcprop -c -p pkg/inst_root application/pkg/server:defaultNote: This path may differ for different instances of Oracle Enterprise Manager Ops Center installation.3.Reconfigure the Oracle Enterprise Manager Ops Center Solaris IPS publisher to usethe Oracle Solaris 11 repository path directly. For example:% pkg set-publisher -G '*' -g \/var/opt/sun/xvm/locallib/swlib1/82899582-8e32-4703-aad0-5fdaf8b1b9df/data solaris 4.Disable the other Oracle Enterprise Manager Ops Center IPS publishers with thefollowing commands:% pkg set-publisher --disable cacao% pkg set-publisher --disable mp-re% pkg set-publisher --disable opscenter5.Upgrade the Oracle Solaris 11 operating system by including the desired version toupgrade to. The version to which the Oracle Solaris 11 operating system is being upgraded to, must be available from the configured Oracle Solaris Publisher. For example:%***************************.11-0.175.2.12.0.6.06.Reboot the system to login to the new boot environment with upgraded operatingsystem on the Enterprise Controller.7.After reboot, start the Enterprise Controller, Proxy Controller, and the AgentController. For example:•To start an Enterprise Controller use the following command:# ./ecadm start -w•To start a Proxy Controller use the following command:# ./proxyadm start -w•To start an Agent Controller use the following command:# ./agentadm start -w8.Run the install_ips_ac.sh script to reconfigure all the IPS Publishers with thefollowing command:% pkg set-publisher --enable cacao% pkg set-publisher --enable mp-re% pkg set-publisher --enable opscenter% /var/opt/sun/xvm/utils/install_ips_ac.sh -P 127.0.0.1Related Resources and ArticlesList of Oracle Enterprise Manager Ops Center documents with additional information. For more information, see these Oracle resources:•For information on Oracle Solaris Installation procedure, see Oracle Enterprise Manager Ops Center Installation for Oracle Solaris Operating System•The Oracle Enterprise Manager Ops Center Documentation Library is located at /cd/E59957_01/index.htm•For more information on product administration, see http:///cd/E59957_01/nav/administer.htm•For end-to-end examples, see the Deploy How To library at http:// /cd/E59957_01/nav/deploy.htm and the Operate How To library at /cd/E59957_01/nav/operate.htm •For more information on Enterprise Manager Ops Center, see the Ops Center blog at https:///opscenter/Oracle® Enterprise Manager Ops Center Upgrade Oracle Solaris 11 on Enterprise Controller, 12c Release 3 (12.3.1.0.0)E65777-01Copyright © 2015, Oracle and/or its affiliatesThis software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.This software or hardware and documentation may provide access to or information about content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable agreement between you and Oracle.。

操作系统

操作系统

操作系统Operating Systems王宇英wangyy@Semester II, 20082Further……《计算机操作系统》,汤子瀛等,西安电子科技大学出版社Operating Systems: Design andImplementation,Andrew S. TanenbaumLinux内核源代码情景分析O'Reilly -Understanding the Linux KernelI hear and I forget,I see and I remember,I do and I understand.OSLec13Test and Grade课堂成绩:10%作业成绩:20%考试成绩:70%学习要求:按时上课,认真听讲;阅读参考书,思考,讨论;独立完成作业和实验。

Keep your mobile phone silence!OSLec15第一章操作系统概论什么是操作系统9OSLec116输入输出:插件板、存在问题:计算机处理能力的提高,手工操作的低效率,造成浪费。

OSLec117第二代:单道批处理系统1955~1965,transistors & simple batch systems 大型机,mainframe语言:汇编语言,FORTRAN, 作业(job) 操作系统:FMS (Fortran Monitor System ),IBMSYS (IBM 为7094机配备的操作系统) 用途:较复杂的科学工程计算联机批处理 脱机批处理IBM 7094OSLec118第一个采用小规模集成电路由于所有的计算机都有相同的体系结构和指令集在理论上,为一型号编写的程序可24ExampleOSLec125程序A和程序B顺序执行时,程序A执行完毕,程序B才开29OSLec133系统特别是UNIX 的成功有巨大的影响Multics Terminal Room in 1972The Multics system.The mother of all Unix-like systems34型计算机上玩星际探险游戏PDP –11确立了DEC 在小型机市场上的霸主地位OSLec135OSLec136分化发展1980-今,LSI & personal computers现在许多操作系统都具有分时处理的功能,在分时系统的基础上,操作系统的发展开始分化:个人操作系统:CP/M ,DOS ,图形用户界面实时操作系统 分布式操作系统 网络操作系统OSLec21操作系统第二讲王宇英wangyy@2什么是操作系统操作系统的发展历史多道程序设计、分时操作系统的功能操作系统的特征操作系统的分类操作系统的结构用户接口联机用户接口:为联机用户提供的,由一组键盘操作命令及命令解释程序所组成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Exokernel:An Operating System Architecture forApplication-Level Resource ManagementDawson R.Engler,M.Frans Kaashoek,and James O’Toole Jr.boratory for Computer ScienceCambridge,MA02139,U.S.Aengler,kaashoek,james@ Traditional operating systems limit the performance,flexibility,andfunctionality of applications byfixing the interface and implemen-tation of operating system abstractions such as interprocess com-munication and virtual memory.The exokernel operating systemarchitecture addresses this problem by providing application-levelmanagement of physical resources.In the exokernel architecture,asmall kernel securely exports all hardware resources through a low-level interface to untrusted library operating systems.Library op-erating systems use this interface to implement system objects andpolicies.This separation of resource protection from managementallows application-specific customization of traditional operatingsystem abstractions by extending,specializing,or even replacinglibraries.We have implemented a prototype exokernel operating system.Measurements show that most primitive kernel operations(suchas exception handling and protected control transfer)are ten to100times faster than in Ultrix,a mature monolithic UNIX operating sys-tem.In addition,we demonstrate that an exokernel allows applica-tions to control machineresources in ways not possiblein traditionaloperating systems.For instance,virtual memory and interprocesscommunication abstractions are implemented entirely within anapplication-level library.Measurements show that application-levelvirtual memory and interprocess communication primitives arefiveto40times faster than Ultrix’s kernel pared tostate-of-the-art implementations from the literature,the prototypeexokernel system is at leastfive times faster on operations such asexception dispatching and interprocess communication.Operating systems define the interface between applications andphysical resources.Unfortunately,this interface can significantlylimit the performance and implementation freedom of applications.Traditionally,operating systems hide information about machineresources behind high-level abstractions such as processes,files,address spaces and interprocess communication.These abstrac-tions define a virtual machine on which applications execute;theirimplementation cannot be replaced or modified by untrusted appli-cations.Hardcoding the implementations of these abstractions issource revocation,applications participate in a resource revocation protocol.Third,by using an abort protocol,an exokernel can break secure bindings of uncooperative applications by force.We have implemented a prototype exokernel system based on secure bindings,visible revocation,and abort protocols.It includes an exokernel(Aegis)and an untrusted library operating system (ExOS).We use this system to demonstrate several important prop-erties of the exokernel architecture:(1)exokernels can be made efficient due to the limited number of simple primitives they must provide;(2)low-level secure multiplexing of hardware resources can be provided with low overhead;(3)traditional abstractions, such as VM and IPC,can be implemented efficiently at application level,where they can be easily extended,specialized,or replaced; and(4)applications can create special-purpose implementations of abstractions,tailored to their functionality and performance needs.In practice,our prototype exokernel system provides applica-tions with greaterflexibility and better performance than mono-lithic and microkernel systems.Aegis’s low-level interface allows application-level software such as ExOS to manipulate resources very efficiently.Aegis’s protected control transfer is almost seven times faster than the best reported implementation[33].Aegis’s exception dispatch isfive times faster than the best reported imple-mentation[50].On identical hardware,Aegis’s exception dispatch and control transfer are roughly two orders of magnitude faster than in Ultrix4.2,a mature monolithic system.Aegis also gives ExOS(and other application-level software)flexibility that is not available in microkernel-based systems.For instance,virtual memory is implemented at application level,where it can be tightly integrated with distributed shared memory systems and garbage collectors.Aegis’s efficient protected control trans-fer allows applications to construct a wide array of efficient IPC primitives by trading performance for additional functionality.In contrast,microkernel systems such as Amoeba[48],Chorus[43], Mach[2],and V[15]do not allow untrusted application software to define specialized IPC primitives because virtual memory and mes-sage passing services are implemented by the kernel and trusted servers.Similarly,many other abstractions,such as page-table structures and process abstractions,cannot be modified in micro-kernels.Finally,many of the hardware resources in microker-nel systems,such as the network,screen,and disk,are encapsu-lated in heavyweight servers that cannot be bypassed or tailored to application-specific needs.These heavyweight servers can be viewed asfixed kernel subsystems that run in user-space.This paper focuseson the exokernel architecture design and how it can be implemented securely and efficiently.Section2provides a more detailed case for exokernels.Section3discusses the issues that arise in their design.Section4overviews the status of our proto-type and explains our experimental methodology.Sections5and6 present the implementation and summarize performance measure-ments of Aegis and ExOS.Section7reports on experiments that demonstrate theflexibility of the exokernel architecture.Section8 summarizes related work and Section9concludes. Traditionally,operating systems have centralized resource manage-ment via a set of abstractions that cannot be specialized,extended, or replaced.Whether provided by the kernel or by trusted user-level servers(as in microkernel-based systems),these abstractions are implemented by privileged software that must be used by all applications,and therefore cannot be changed by untrusted soft-ware.Typically,the abstractions include processes,files,address spaces,and interprocess communication.In this section we discuss the problems with general-purpose implementations of these ab-stractions and show how the exokernel architecture addresses these problems.The essential observation about abstractions in traditional operating systems is that they are overly general.Traditional operating sys-tems attempt to provide all the features needed by all applications. As previously noted by Lampson and Sproul[32],Anderson et al.[4]and Massalin and Pu[36],general-purpose implementations of abstractions force applications that do not need a given feature to pay substantial overhead costs.This longstanding problem has be-come more important with explosive improvements in raw hardware performance and enormous growth in diversity of the application software base.We argue that preventing the modification of the implementation of these high-level abstractions can reduce the per-formance,increase the complexity,and limit the functionality of application programs.Fixed high-level abstractions hurt application performance be-cause there is no single way to abstract physical resources or to implement an abstraction that is best for all applications.In im-plementing an abstraction,an operating system is forced to make trade-offs between support for sparse or dense address spaces, read-intensive or write-intensive workloads,etc.Any such trade-off penalizes some class of applications.For example,relational databases and garbage collectors sometimes have very predictable data access patterns,and their performance suffers when a general-purpose page replacement strategy such as LRU is imposed by the operating system.The performance improvements of such application-specific policies can be substantial;Cao et al.[10]mea-sured that application-controlledfile caching can reduce application running time by as much as45%.Fixed high-level abstractions hide information from applica-tions.For instance,most current systems do not make low-level exceptions,timer interrupts,or raw device I/O directly available to application-level software.Unfortunately,hiding this information makes it difficult or impossible for applications to implement their own resource management abstractions.For example,database im-plementors must struggle to emulate random-access record storage on top offile systems[47].As another example,implementing lightweight threads on top of heavyweight processes usually re-quires compromises in correctness and performance,because the operating system hides page faults and timer interrupts[4].In such cases,application complexity increases because of the difficulty of getting good performance from high-level abstractions.Fixed high-level abstractions limit the functionality of appli-cations,because they are the only available interface between ap-plications and hardware resources.Because all applications must share one set of abstractions,changes to these abstractions occur rarely,if ever.This may explain why few good ideas from the last decade of operating systems research have been adopted into widespread use:how many production operating systems support scheduler activations[4],multiple protection domains within a sin-gle address space[11],efficient IPC[33],or efficient andflexible virtual memory primitives[5,26,30]?The familiar“end-to-end”argument applies as well to low-level operating system software as it does to low-level communication protocols[44].Applications know better than operating systems what the goal of their resource management decisions should be and therefore,they should be given as much control as possible overTLBNetworkMemoryDiskExokernelHardware DSMVMIPCBarnes−Hut TrapsSecure bindingsMosaic WWW POSIXTCPLibrary operating systemsApplicationsFrame bufferFigure 1:An example exokernel-based system consisting of a thin exokernel veneer that exports resources to library operating systems through secure bindings.Each library operating system implements its own system objects and policies.Applications link against stan-dard libraries (e.g.,WWW,POSIX,and TCP libraries for Web ap-plications)or against specialized libraries (e.g.,a distributed shared memory library for parallel applications).those decisions.Our solution is to allow traditional abstractions to be implemented entirely at application level.To provide the maximum opportunity for application-level re-source management,the exokernel architecture consists of a thin exokernel veneer that multiplexes and exports physical resources securely through a set of low-level primitives.Library operating systems,which use the low-level exokernel interface,implement higher-level abstractions and can define special-purpose implemen-tations that best meet the performance and functionality goals of applications (see Figure 1).(For brevity,we sometimes refer to “library operating system”as “application.”)This structure allows the extension,specialization and even replacement of abstractions.For instance,page-table structures can vary among library operat-ing systems:an application can select a library with a particular implementation of a page table that is most suitable to its needs.To the best of our knowledge,no other secure operating system architecture allows applications so much useful freedom.This paper demonstrates that the exokernel architecture is an ef-fective way to address the problems listed in Section 2.1.Many of these problems are solved by simply moving the implementation of abstractions to application level,since conflicts between application needs and available abstractions can then be resolved without the intervention of kernel architects.Furthermore,secure multiplexing does not require complex algorithms;it mostly requires tables to track ownership.Therefore,the implementation of an exokernel can be simple.A simple kernel improves reliability and ease of main-tenance,consumes few resources,and enables quick adaptation to new requirements (e.g.,gigabit networking).Additionally,as is true with RISC instructions,the simplicity of exokernel operations allows them to be implemented efficiently.The implementations of abstractions in library operating systems can be simpler and more specialized than in-kernel implementa-tions,because library operating systems need not multiplex a re-source among competing applications with widely different de-mands.In addition,since libraries are not trusted by an exokernel,they are free to trust the application.For example,if an application passes the wrong arguments to a library,only that application will be affected.Finally,the number of kernel crossings in an exokernelsystem can be smaller,since most of the operating system runs in the address space of the application.Library operating systems can provide as much portability andcompatibility as is desirable.Applications that use an exokernel interface directly will not be portable,because the interface will in-clude hardware-specific information.Applications that use library operating systems that implement standard interfaces (e.g.,POSIX)will be portable across any system that provides the same interface.An application that runs on an exokernel can freely replace these library operating systems without any special privileges,which sim-plifies the addition and development of new standards and features.We expect that most applications will use a handful of available library operating systems that implement the popular interfaces;only designers of more ambitious applications will develop new library operating systems that fit their needs.Library operating systems themselves can be made portable by designing them to use a low-level machine-independent layer to hide hardware details.Extending or specializing a library operating system might be considerably simplified by modular design.It is possible that object-oriented programming methods,overloading,and inheritance can provide useful operating system service implementations that can be easily specialized and extended,as in the VM++library [30].To reduce the space required by these libraries,support for shared libraries and dynamic linking will be an essential part of a complete exokernel-based system.As in microkernel systems,an exokernel can provide backward compatibility in three ways:one,binary emulation of the operating system and its programs;two,by implementing its hardware ab-straction layer on top of an exokernel;and three,re-implementing the operating system’s abstractions on top of an exokernel.The challenge for an exokernel is to give library operating systems maximum freedom in managing physicalresources while protecting them from each other;a programming error in one library operat-ing system should not affect another library operating system.To achieve this goal,an exokernel separates protection from manage-ment through a low-level interface.In separating protection from management,an exokernel per-forms three important tasks:(1)tracking ownership of resources,(2)ensuring protection by guarding all resource usage or binding points,and (3)revoking access to resources.To achieve these tasks,an exokernel employs three techniques.First,using secure bindings ,library operating systems can securely bind to machine resources.Second,visible revocation allows library operating sys-tems to participate in a resource revocation protocol.Third,an abort protocol is used by an exokernel to break secure bindings of uncooperative library operating systems by force.In this section,we enumerate the central design principles of the exokernel architecture.Then,we discuss in detail the three techniques that we use to separate protection from management.An exokernel specifies the details of the interface that library op-erating systems use to claim,release,and use machine resources.This section articulates some of the principles that have guided our efforts to design an exokernel interface that provides library operating systems the maximum degree of control.Securely expose hardware .The central tenet of the exoker-nel architecture is that the kernel should provide secure low-levelprimitives that allow all hardware resources to be accessed as di-rectly as possible.An exokernel designer therefore strives to safely export all privileged instructions,hardware DMA capabilities,and machine resources.The resources exported are those provided by the underlying hardware:physical memory,the CPU,disk memory, translation look-aside buffer(TLB),and addressing context iden-tifiers.This principle extends to less tangible machine resources such as interrupts,exceptions,and cross-domain calls.An exok-ernel should not impose higher-level abstractions on these events (e.g.,Unix signal or RPC semantics).For improvedflexibility, most physical resources should befinely subdivided.The num-ber,format,and current set of TLB mappings should be visible to and replaceable by library operating systems,as should any“priv-ileged”co-processor state.An exokernel must export privileged instructions to library operating systems to enable them to imple-ment traditional operating system abstractions such as processes and address spaces.Each exported operation can be encapsulated within a system call that checks the ownership of any resources involved.Phrased negatively,this principle states that an exokernel should avoid resource management.It should only manage resources to the extent required by protection(i.e.,management of allocation, revocation,and ownership).The motivation for this principle is our belief that distributed,application-specific,resource management is the best way to build efficientflexible systems.Subsequent principles deal with the details of achieving this goal.Expose allocation.An exokernel should allow library operat-ing systems to request specific physical resources.For instance,if a library operating system can request specific physical pages,it can reduce cache conflicts among the pages in its working set[29].Fur-thermore,resources should not be implicitly allocated;the library operating system should participate in every allocation decision. The next principle aids the effectiveness of this participation.Expose Names.An exokernel should export physical names. Physical names are efficient,since they remove a level of indirection otherwise required to translate between virtual and physical names. Physical names also encodeuseful resourceattributes.For example, in a system with physically-indexed direct-mapped caches,the name of a physical page(i.e.,its page number)determines which pages it conflicts with.Additionally,an exokernel should export book-keeping data structures such as freelists,disk arm positions,and cached TLB entries so that applications can tailor their allocation requests to available resources.Expose Revocation.An exokernel should utilize a visible re-source revocation protocol so that well-behaved library operating systems can perform effective application-level resource manage-ment.Visible revocation allows physical names to be used easily and permits library operating systems to choose which instance of a specific resource to relinquish.An exokernel hands over resource policy decisions to library op-erating ing this control over resources,an application or collection of cooperating applications can make decisions about how best to use these resources.However,as in all systems,an ex-okernel must include policy to arbitrate between competing library operating systems:it must determine the absolute importance of different applications,their share of resources,etc.This situation is no different than in traditional kernels.Appropriate mechanisms are determined more by the environment than by the operating system architecture.For instance,while an exokernel cedes man-agement of resources over to library operating systems,it controls the allocation and revocation of these resources.By deciding which allocation requests to grant and from which applications to revoke resources,an exokernel can enforce traditional partitioning strate-gies,such as quotas or reservation schemes.Since policy conflicts boil down to resource allocation decisions(e.g.,allocation of seek time,physical memory,or disk blocks),an exokernel handles them in a similar manner.One of the primary tasks of an exokernel is to multiplex resources securely,providing protection for mutually distrustful applications. To implement protection an exokernel must guard each resource.To perform this task efficiently an exokernel allows library operating systems to bind to resources using secure bindings.A secure binding is a protection mechanism that decouples au-thorization from the actual use of a resource.Secure bindings improve performance in two ways.First,the protection checks involved in enforcing a secure binding are expressed in terms of simple operations that the kernel(or hardware)can implement quickly.Second,a secure binding performs authorization only at bind time,which allows management to be decoupled from protec-tion.Application-level software is responsible for many resources with complex semantics(e.g.,network connections).By isolating the need to understand these semantics to bind time,the kernel can efficiently implement access checks at access time without under-standing them.Simply put,a secure binding allows the kernel to protect resources without understanding them.Operationally,the one requirement needed to support secure bindings is a set of primitives that application-level software can use to express protection checks.The primitives can be imple-mented either in hardware or software.A simple hardware secure binding is a TLB entry:when a TLB fault occurs the complex map-ping of virtual to physical addresses in a library operating system’s page table is performed and then loaded into the kernel(bind time) and then used multiple times(access time).Another example is the packetfilter[37],which allows predicates to be downloaded into the kernel(bind time)and then run on every incoming packet to de-termine which application the packet is for(access time).Without a packetfilter,the kernel would need to query every application or net-work server on every packet reception to determine who the packet was for.By separating protection(determining who the packet is for)from authorization and management(setting up connections, sessions,managing retransmissions,etc.)very fast network multi-plexing is possible while still supporting complete application-level flexibility.We use three basic techniques to implement secure bindings: hardware mechanisms,software caching,and downloading appli-cation code.Appropriate hardware support allows secure bindings to be couched as low-level protection operations such that later oper-ations can be efficiently checked without recourse to high-level authorization information.For example,afile server can buffer data in memory pages and grant access to authorized applications by providing them with capabilities for the physical pages.An exokernel would enforce capability checking without needing any information about thefile system’s authorization mechanisms.As another example,some Silicon Graphics frame buffer hardware as-sociates an ownership tag with each pixel.This mechanism can be used by the window manager to set up a binding between a library operating system and a portion of the frame buffer.The application can access the frame buffer hardware directly,becausethe hardware checks the ownership tag when I/O takes place.Secure bindings can be cached in an exokernel.For instance, an exokernel can use a large software TLB[7,28]to cache addresstranslations that do notfit in the hardware TLB.The software TLB can be viewed as a cache of frequently-used secure bindings.Secure bindings can be implemented by downloading code into the kernel.This code is invoked on every resource accessor event to determine ownership and the actions that the kernel should perform. Downloading code into the kernel allows an application thread of control to be immediately executed on kernel events.The advan-tages of downloading code are that potentially expensive crossings can be avoided and that this code can run without requiring the application itself to be scheduled.Type-safe languages[9,42],in-terpretation,and sandboxing[52]can be used to execute untrusted application code safely[21].We provide examples of each of these three techniques below and discuss how secure bindings apply to the secure multiplexing of physical memory and network devices.Secure bindings to physical memory are implemented in our pro-totype exokernel using self-authenticating capabilities[12]and ad-dress translation hardware.When a library operating system al-locates a physical memory page,the exokernel creates a secure binding for that page by recording the owner and the read and write capabilities specified by the library operating system.The owner of a page has the power to change the capabilities associated with it and to deallocate it.To ensure protection,the exokernel guards every access to a physical memory page by requiring that the capability be presented by the library operating system requesting access.If the capability is insufficient,the request is denied.Typically,the processor contains a TLB,and the exokernel must check memory capabilities when a library operating system attempts to enter a new virtual-to-physical mapping.To improve library operating system performance by reducing the number times secure bindings must be established, an exokernel may cache virtual-to-physical mappings in a large software TLB.If the underlying hardware defines a page-table interface,then an exokernel must guard the page table instead of the TLB.Although the details of how to implement secure memory bindings will vary depending on the details of the address translation hardware,the basic principle is straightforward:privileged machine operations such as TLB loads and DMA must be guarded by an exokernel.As dictated by the exokernel principle of exposing kernel book-keeping structures,the page table should be visible(read only)at application level.Using capabilities to protect resources enables applications to grant access rights to other applications without kernel interven-tion.Applications can also use“well-known”capabilities to share resources easily.To break a secure binding,an exokernel must change the as-sociated capabilities and mark the resource as free.In the case of physical memory,an exokernel wouldflush all TLB mappings and any queued DMA requests.Multiplexing the network efficiently is challenging,since protocol-specific knowledge is required to interpret the contents of incoming messages and identify the intended recipient.Support for network demultiplexing can be provided either in software or hardware.An example of a hardware-basedmechanism is the use of the virtual circuit in ATM cells to securely bind streams to applications[19].Software support for message demultiplexing can be provided by packetfilters[37].Packetfilters can be viewed as an implemen-tation of secure bindings in which application code—thefilters—are downloaded into the kernel.Protocol knowledge is limited to the application,while the protection checks required to determine packet ownership are couched in a language understood by the ker-nel.Fault isolation is ensured by careful language design(to bound runtime)and runtime checks(to protect against wild memory ref-erences and unsafe operations).Our prototype exokernel uses packetfilters,because our cur-rent network does not provide hardware mechanisms for message demultiplexing.One challenge with a language-based approach is to make runningfilters fast.Traditionally,packetfilters have been interpreted,making them less efficient than in-kernel demultiplex-ing routines.One of the distinguishing features of the packetfilter engine used by our prototype exokernel is that it compiles packet filters to machine code at runtime,increasing demultiplexing per-formance by more than an order of magnitude[22].The one problem with the use of a packetfilter is ensuring that that afilter does not“lie”and accept packets destined to another process.Simple security precautions such as only allowing a trusted server to installfilters can be used to address this problem.On a system that assumes no malicious processes,our language is simple enough that in many cases even the use of a trusted server can be avoided by statically checking a newfilter to ensure that it cannot accept packets belonging to another;by avoiding the use of any central authority,extensibility is increased.Sharing the network interface for outgoing messages is easy. Messages are simply copied from application space into a transmit buffer.In fact,with appropriate hardware support,transmission buffers can be mapped into application space just as easily as phys-ical memory pages[19].In addition to implementing secure bindings,downloading code can be used to improve performance.Downloading code into the kernel has two main performance advantages.Thefirst is obvious:elimi-nation of kernel crossings.The secondis more subtle:the execution time of downloaded code can be readily bounded[18].The crucial importance of“tamed”code is that it can be executed when the application is not scheduled.This decoupling allows downloaded code to be executed in situations where context switching to the application itself is infeasible(e.g.,when only a few microseconds of free processing time is available).Packetfilters are an example of this feature:since the packet-filter runtime is bounded,the kernel can use it to demultiplex messages irrespective of what application is scheduled;without a packetfilter the operating system would have to schedule each potential consumer of the packet[37].Application-specific Safe Handlers(ASHs)are a more inter-esting example of downloading code into our prototype exokernel. These application handlers can be downloaded into the kernel to participate in message processing.An ASH is associated with a packetfilter and runs on packet reception.One of the key features of an ASH is that it can initiate a ing this feature, roundtrip latency can be greatly reduced,since replies can be trans-mitted on the spot instead of being deferred until the application is scheduled.ASHs have a number of other useful features(see Section6).A salient issue in downloading code is the level at which the code is specified.High-level languages have more semantic infor-mation,which provides more information for optimizations.For example,our packet-filter language is a high-level declarative lan-guage.As a result packetfilters can be merged[56]in situations。

相关文档
最新文档