历史

  1. 裸机运行:在计算机发展的早期,确实有应用程序直接在裸机上运行,这意味着程序直接与硬件交互,没有操作系统的介入。
  2. 系统调用库:随着计算机的发展,人们开始将一些常用的系统调用封装成库,这样开发者就不必每次都重新编写与硬件交互的代码。这是操作系统发展的一个自然步骤。
  3. 内核态和用户态的区分:确实,为了安全和效率,操作系统引入了内核态和用户态的概念。内核态(或称为系统态)是操作系统的核心部分,拥有对硬件的完全控制权。用户态是应用程序运行的状态,它不能直接访问硬件资源,而是通过系统调用请求操作系统内核态的服务。
  4. 系统调用:系统调用是用户态程序请求操作系统服务的一种机制。它们是操作系统提供的一种接口,允许用户程序在需要时请求内核态的服务,比如文件操作、进程管理、内存管理等。
  5. 间接操作硬件:用户程序通常不直接操作硬件,而是通过操作系统提供的抽象层(如文件系统、网络接口等)来间接操作硬件。这样做的好处是提高了系统的安全性、稳定性和可移植性。
  6. 保护机制:内核态和用户态的区分还提供了一种保护机制,防止用户程序错误地操作硬件或影响系统的稳定性。如果用户程序需要执行某些需要高权限的操作,它必须通过系统调用请求内核态的帮助。