【陈老师华为北研所PPT】从机制与策略探究Linux内核设计之道(3

2018-01-12 13:35

  库函数以及应用程序怎样使用系统调用,内核并不关心,内核只跟系统调用打交道,而且是实现系统调用的大场景。

  系统调用抽象出了用于完成某种特点目的的函数,至于这些函数怎么用不是内核关心的。

  虚拟文件系统(VFS)的第一个词是“虚拟”,这就意味着,这样的文件系统在磁盘(或其他存储介质上)并没有对应的存储信息。那么,这样一个的文件系统到底怎样形成?尽管Linux支持多达几十种文件系统,但这些真实的文件系统并不是一下子都挂在系统中的,他们实际上是按需被挂载的。说:“有无相生”,这个“虚”的VFS的信息都来源于“实”的文件系统,所以VFS必须承载各种文件系统的共有属性。另外,这些实的文件系统只有安装到系统中,VFS才予以认可,也就是说,VFS只管理挂载到系统中的实际文件系统。

  在现代操作系统中,内核提供了用户进程与内核进行交互的一组接口。这些接口让应用程序受限地访问硬件设备,提供了创建新进程并与已有进程进行通信的机制,也提供了申请操作系统其他资源的能力。这些接口在应用程序和内核之间扮演了使者的角色,应用程序发出各种请求,而内核负责满足这些请求(或者无法满足时返回一个错误)。实际上提供这些接口主要是为了系统稳定可靠,避免应用程序妄行。

  原标题:【陈老师华为北研所PPT】从机制与策略探究Linux内核设计之道(3)

  【陈老师华为北研所视频】从机制与策略探究Linux内核设计之道(1)

  虚拟文件系统所提供的抽象界面主要由一组标准的、抽象的操作构成,例如read()、write()、lseek等,这些函数以系统调用的形式供用户程序调用。这样,用户程序调用这些系统调用时,根本无需关心所操作的文件属于哪个文件系统,这个文件系统是怎样设计和实现的。

  因为关于机制与策略后面内容的视频没有上,因此,我们尽可能详细的释义PPT的内容。

  从程序的角度看,实际上不直接与系统调用打交道,而是跟API打交道,API是对系统调用的封装。

  【陈老师华为北研所视频】从机制与策略探究Linux内核设计之道(2)

  系统调用在用户空间进程和硬件设备之间添加了一个中间层。该层主要作用有三个。首先,它为用户空间提供了一种硬件的抽象接口。举例来说,当需要读写文件的时候,应用程序就可以不去管磁盘类型和介质,甚至不用去管文件所在的文件系统到底是那种类型。第二,系统调用了系统的稳定和安全。作为硬件设备和应用程序之间的中间人,内核可以基于权限、用户类型和其他一些规则对需要进行的访问进行裁决。举例来说,这样可以避免应用程序不正确地使用硬件设备,窃取其他进程的资源,或做出其他什么危害系统的事情。第三,“进程管理”中,每个进程都运行在虚拟系统中,而在用户空间和系统的其余部分提供这样一层公共接口,也是出于这种考虑。如果应用程序可以随意访问硬件而内核又对此一无所知的话,几乎就没法实现多任务和虚拟内存,当然也不可能实现良好的稳定性和安全性。在Linux中,系统调用是用户空间访问内核的唯一手段;除异常和陷入外,它们是内核唯一的入口。

  用户空间的程序无法直接执行内核代码。它们不能直接调用内核空间中的函数,因为内核驻留在受的地址空间上。如果进程可以直接在内核的地址空间上读写的话,系统的安全性和稳定性将不复存在。

资讯排行

随机文章