BSD概述

  OS X内核的BSD部分主要起源于FreeBSD(4.4BSD的一个版本),提供高级网络、性能、安全性、兼容性的功能。BSD变体起源于4.4BSD-Lite Release 2(加利福尼亚大学伯克利分校计算机系统研究小组)BSD提供了许多高级功能,其中包括:
  • 具有动态优先级调整的抢占式多任务处理,即使是在高负载的情况下,也可以确保app之间,用户之间流畅公平的共享计算机资源。

  • 多用户访问。多人可以同时使用OS X系统进行各种操作。例如,系统外设(打印机和磁盘驱动器)在系统或者网络上的所有用户之间正确的共享。并且可以对用户或者用户组设置单独的资源限制。从而保护关键系统资源免于过度使用。

  • 强大的TCP/IP网络,支持SLIP,PPP,NFS等行业标准。OS X可以轻松的和其他系统交互,也可以充当企业服务器,提供重要功能,例如NFS(remote file acess)和电子邮件服务,或者internet服务例如HTTP,FTP,路由,防火墙(安全)服务。

  • 内存保护,应用程序不可以不可以相互干扰,一个应用程序崩溃不会以任何方式影响其他应用程序。

  • 虚拟内存和动态内存分配,满足大内存需求应用程序的同时,也能保持对用户交互的响应。使用OS X中的虚拟内存,每个应用程序都可以访问自己的4G内存地址空间;这可以满足需要大量内存的应用程序。

  • 支持基于Mach 线程的内核线程。用户级线程包是使用内核线程实现的。每个内核线程是一个独立调度的实体。当用户进程的一个线程在系统调用中阻塞时,同进程的其他线程可以继续执行。默认情况下,常规意义上的进程有一个线程——主线程。用户进程使用POSIX线程API创建其他用户线程。

  • SMP支持,包含对具有多个CPU的计算机的支持。

  • 源代码。开发者可以最大程度的控制BSD编程环境,因为包含源代码。

  • 许多POSIX API

BSD功能

用户进程可用的功能在逻辑上分为两个部分:内核功能和服务进程实现的系统功能。

内核实现的功能定义了每个进程运行的虚拟机。和许多真实的机器一样,虚拟机又内存管理,中断功能,定时器,计数器。

虚拟机还允许通过描述符访问文件和其他对象。每个描述符类似设备控制器,支持一组操作。就像真实机器上的设备一样,有些是在机器内部,有些是在外部,描述符机器的一部分是内建在操作系统,一部分是在服务进程中实现。

BSD组建提供以下内核工具:

  • 进程和保护
    - 主机和进程id
    - 进程创建和终止
    - 用户和组id
    - 进程组
  • 内存管理
    - text, data,stack,动态共享库
    - 映射页
    - 页保护控制
  • POSIX同步原语
  • POSIX共享内存
  • 信号
    - 信号类型
    - 信号处理器
    - 发送信号
  • 时间和统计
    - 真实时间
    - 间隔时间
  • 描述符
    - 文件
    - 管道
    - socket
  • 资源控制
    - 进程优先级
    - 资源使用和资源限制
    - 配额
  • 系统操作支持
    - 引导操作
    - 关机操作
    - 账户

BSD系统功能(可与用户空间交互的功能)包括

  • 通用输入/输出操作,例如读和写,无阻塞,异步操作。
  • 文件系统操作
  • 进程间通信
  • 处理终端和其他设备
  • 进程控制
  • 网络操作

OS X和BSD之间的不同

尽管OS X中的BSD主要起源于FreeBSD,也做了一些改动:

  • 用于内存管理的sbrk()系统调用被弃用,这个函数在OS X中不推荐使用。
  • OS X运行时模型runtime对可执行文件和共享库使用不同的对象文件格式,执行一些可执行文件使用不同的机制。主要的原生格式是Mach-O。动态链接器dyld支持此格式。
  • CFM(code fragment manager)支持PEF二进制文件格式
  • 内核通过Mach-O二进制文件支持execve()。Mach-O动态共享库的映射和管理,和基于PEF的应用程序的启动,由用户空间代码完成。
  • OS X不支持通过mmap()函数内存映射的设备(图形设备支持和其他系统提供类似功能,但使用不同的API)。在OS X中,这个接口应该通过用户客户端完成,有关其他信息,参阅Apple I/O Kit 文档。
  • 不支持swapon()调用;macx_swapon()是Mach pager的等效调用。
  • OS X中The Unified Buffer Cache的实现,与FreeBSD中不同。
  • Mach提供许多UNIX中不没有IPC原语。有关Mach IPC更多信息,参见Boundary Crossings。支持某些系统V原语。但不建议使用他们,以支持POSIX等效项。
  • 为了支持单用户和多管理员配置,对BSD的安全模型做了几处更改。包括能够逐卷禁用所有权和权限。
  • 内核中使用的锁机制,与FreeBSD中使用的有很大不同。
  • OS X中使用的内核拓展机制是完全不同的。OS X驱动层,I/O Kit,使用C++编写的面向对象驱动栈。通用的内核编程接口用于编写非驱动程序内核拓展。这些机制在分别在I/O Kit Overview and KPI Reference中进行了介绍。

此外一些新功能添加到OS X(Darwin),这些功能是FreeBSD没有的

  • 增强文件系统缓存区和文件I/O集群
  • 适应性和推测性的预读
  • 用户进程控制的预读
  • time aging of 文件系统缓冲区缓存
  • 文件系统支持的增强
  • ISO-9660文件系统的Apple拓展的实现
  • NFS多线程异步I/O
  • 添加系统调用以支持Mac OS Extended(HFS+)文件系统
  • macOS拓展文件系统中访问多个派生所必需的路径名命名约定的补充

原文

Kernel Programming Guide - BSD Overview

posted @ 2020-12-15 22:00  Kino-  阅读(738)  评论(0)    收藏  举报