• 操作系统的服务
    • 为用户
    • 为程序员
  • 操作系统的构建方式
  • GNU/Linux

1. 操作系统服务

用户界面(一种是命令行界面;另一种是批界面,最为常用的是图形用户面)、程序执行、I/O操作、文件系统操作、通信、资源分配、统计、错误检测、保护和安全。
image.png

2. User Interface

几乎所有操作系统都有用户介面(user interface,UI),他为用户提供了连接到操作系统的方式。

  • 命令行界面(command line interface,CLI)
    • command interpret (shell)
  • 图形化用户界面(GUI)
  • Batch

    • 包含一个文件的命令和指示

      3. 系统调用

  • 系统调用提供了访问和使用操作系统所提供的有效服务界面。

    • 系统调用的实现代码是操作系统级的
    • 这个接口通常是面向程序员的
  • API:指明了参数和返回值的一组函数
    • APP的开发人员通过透过API间接访问了系统调用

      系统调用≠API 系统调用接口虽然是面向程序员的,但程序员一般不会直接调用 一般都是通过API间接调用系统调用

操作系统内核提供一系列预定功能,通过一组称为系统调用的接口呈现给编程人员,系统调用把应用程序的请求传给内核,系统调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。
向操作系统传递参数的三种方法:

  • 通过寄存器来传递参数。
  • 若参数数量比寄存器多,参数通常存在内存的块和表中,并将块的地址通过寄存器来传递。
  • 参数也可以通过程序放在或压入堆栈中,并通过操作系统弹出。

    操作系统的指令必须存放在物理地址中。

4. 操作系统的构建

设计目标需求:用户目标和系统目标
用户目标:更容易学习,容易使用,可靠,安全和快速
系统目标:容易设计、实现和维护。灵活、可靠、高效且没有错误。
机制和策略:机制决定如何做,策略决定做什么
实现:用高级语言的缺点仅仅在于降低了速度和增加了存储要求

4.1 操作系统结构

简单结构、分层方法、微内核、模块、虚拟机

1.简单结构

MS-DOS 、原始的UNIX系统

2.分层方法

定义:操作系统分成若干层(级)。最底层(层0)为硬件,最高层(层N)为用户接口。每层只考虑较低层的功能和服务。
优点:

  • 每层都是利用较低层所提供的功能实现的,并为叫高层隐藏了一定的数据结构、操作和硬件的存在

缺点:

  • 分层法的主要困难涉及对层的详细定义
  • 与其它方法相比效率较差

    3.微内核

    微内核方法将所有非基本部分从内核中移走,并将它们实现为系统或用户程序,这样得到了更小的内核。
    微内核的主要功能是使客户程序和运行在用户空间的各种服务之间进行通信。
    优点:

  • 便于扩充操作系统

  • 很容易从一种硬件平台设计移植到另一种硬件平台设计
  • 更安全、可靠

缺点:
由于系统功能总开销的增加而导致系统性能的下降。

4. 模块

大多数现代操作系统实现内核模块:

  • 采用面向对象的方法
  • 每个核心组件是分开的
  • 每部分与已知接口的其他部分通信
  • 每部分根据需要加载到内核

总之,类似于层,但更灵活。