用户态和内核态
用户态和内核态
概念
- 用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。
- 用户态拥有最低的特权级,内核态拥有较高的特权级。
- 运行在用户态的程序不能直接访问操作系统内核数据结构和程序
- 操作系统的数据都是存放于系统空间的,用户进程的数据是存放于用户空间的。
* 分开来存放,就让系统的数据和用户的数据互不干扰,保证系统的稳定性。
* 分开存放,管理上很方便,而更重要的是,将用户的数据和系统的数据隔离开,就可以对两部分的数据的访问进行控制。这样就可以确保用户程序不能随便操作系统的数据,这样防止用户程序误操作或者是恶意破坏系统。
用户态和内核态可以通过指针传递数据吗?
- 用户态不能访问内核态的指针
- 为了实现内存的保护,防止越界访问而造成受保护内存的被非法修改,甚至造成系统的崩溃,这种直接传递数据指针来传递数据的方式是被禁止的。
- 内核态可以访问用户态的指针(有前提)
- 必须保证用户态虚拟空间的指针(虚拟空间的地址),已经分配物理地址,否则指针传入内核态中将不会引发缺页异常而报错