美文网首页
操作系统原理

操作系统原理

作者: iOS谢先森 | 来源:发表于2017-07-23 15:04 被阅读0次

操作系统

操作系统的作用是为用户提供应用软件的运行环境。用户运行应用程序时所执行的任务依赖于操作系统的服务,然而,操作系统执行任务时,许多情况下都无需用户甚至程序员的干预。例如,应用程序从硬盘读取任务时,程序员只需要调用操作系统提供的函数即可,执行读取的特定步骤完全交由操作系统处理。程序员不用了解从计算机硬盘中读取文件与从外部的USB存储有什么区别。

绝大多数程序员都开发过很多代码供用户使用,他们可能还会使用框架提供图形化用户界面与用户进行交互。mac或者iphone应用商店提供的所有应用程序都属于这一类。

操作系统的一项重要功能就是管理计算机硬盘资源(如内存和CPU)以及外部设备(如硬盘)。操作系统所支持的硬件设备的集合在不同的机器上有很大的区别。尽管air与pro运行相同的操作系统,但是他们的硬件设置却有很大的区别。为了让操作系统支持多种硬件配置而不膨胀,支持每个硬件组件的代码被打包成一种特殊类型的内核扩展程序(驱动程序)。这种模块化的方式是操作系统可以根据系统上现有的硬件按需要加载驱动程序。厂商因而也可以在系统中安装相应的驱动程序以支持他们的硬件。安装标准的MAC OS 系统需要安装100多个驱动程序,但其中只有一个子集用户运行特定的系统。

为了提高系统的安全性和稳定性,现代操作系统将操作系统核心代码与应用程序、用户运行的服务程序分离。任何作为内核的一部分运行的代码,都要在内核空间内运行。运行在内核空间的代码被授予特权,如可以直接读写链接到计算机的硬件设备,但是标注你的用户应用程序没有这个特权。

相反,用户处理的标准应用程序代码要在“用户空间”中运行。用户空间中运行的软件无法直接访问硬件。因此,为了访问硬件,用户代码需要向内核发送请求,让内核代表应用程序执行任务。

用户空间与内核空间运行的代码之间具有明确的界限。应用程序只能通过调用操作系统发布给用户空间代码的函数访问内核。类似的,内核空间代码独立运行与用户空间代码环境之外。内核不适用与用户空间代码相同的富编程API,他们有自己的API集合,以供内核扩展开发者使用。如果你熟悉用户空间编程,那么这些API最初看棋类可能有一定的局限性。因为通常情况下,用户交互和访问文件系统等操作不能在开发内核扩展时使用。

操作系统分层

强制应用程序向内核发送访问硬件的请求有一大优点:内核成为硬件设备的中央仲裁器。比如声卡,系统上可能有多个应用程序在同一时间播放音频,但由于所有的请求只能通过一个音频驱动传送,所以该驱动程序能将来自所有的应用程序的音频流混合,然后将产生的混合流提供给声卡。

相关文章

  • 程序员进阶书单:操作系统篇

    《操作系统精髓与设计原理》 全面地讲述了操作系统的基本概念、原理和方法,展现了当代操作系统的本质和特点。对操作...

  • “个人成长操作系统”系统动力原理分析框架-03

    1 本文接上文:《“个人成长操作系统”系统动力原理分析框架-01》、《“个人成长操作系统”系统动力原理分析框架-0...

  • 进程、线程和协程

    一、进程 1、多任务原理 多任务是指操作系统同时可以运行多个任务。 单核CPU实现多任务原理:操作系统轮流让各个任...

  • OS概述

    OS学习技术路线 操作系统原理--UNIX操作系统--基于操作系统的编程--嵌入式操作系统 OS的基本概念 一组控...

  • 深度探索Linux操作系统:系统构建和原理解析

    《深度探索Linux操作系统:系统构建和原理解析》是探索Linux操作系统原理的里程碑之作,在众多的同类书中独树一...

  • 英文

    philosophical principles of operating systems——操作系统的哲学原理 ...

  • 面试CS基础之操作系统

    前言 北大《操作系统原理》课堂笔记,原文首发于个人博客,大纲如下: 操作系统概述 操作系统运行环境 进程线程模型 ...

  • 操作系统笔记

    操作系统原理——华中科技大学苏曙光已完结 1.操作系统概述2.操作系统逻辑结构3.操作系统的用户界面(1)操作系统...

  • 操作系统原理

    操作系统 操作系统的作用是为用户提供应用软件的运行环境。用户运行应用程序时所执行的任务依赖于操作系统的服务,然而,...

  • 我的测试工程师笔记01

    首先,需要有宽泛的计算机基础知识,包括:数据结构(√)微机原理(×)数据库(×)操作系统原理(×)编译原理(×)逻...

网友评论

      本文标题:操作系统原理

      本文链接:https://www.haomeiwen.com/subject/hbkmkxtx.html