扒开系统调用的三层皮【上】
前言:以下笔记除了一些讲解视频中的概念记录,图示、图示中的补充文字、总结、分析、小结部分均是个人理解。如有错误观点,请多指教!
补充:【系统调用的参数传递方法】视频中讲解简单带过最后几行。最后问题的答案在上图总结部分。ppt内容附下图。
遇到的问题:
在上图笔记三中,我听视频讲解后将那些抽象的论述性语言通过自己画的图示理清了我对系统调用、API、Libc库、封装例程的关系,本来是明白了这些东西之间的封装、提供、对应的关系的。可是后来看到第三个视频(就是使用库函数API来获取系统当前时间的知道视频)以后,讲师全程提到的time()是系统调用、是API、是库函数。我听完就……%¥#@了,我不明白,既然我们说,API只是一个函数定义,说的通俗一点就是:系统调用经过封装包装成为一个封装例程,然后交由Libc库,被Libc库引用保留,然后Libc库再将这个封装好的团子提供给API去用。用户其实就是只和API打交道,通过API间接地使用系统调用各种功能。【此处均是个人理解,希望老师指点】如果我的理解是对的话,那么我们在这个time.c的实践中看到的time(),我们到底要将其称作什么呢?如果按照视频中老师的解说,它既是系统调用,又是API,那么岂不是就将二者等同吗?我认为既然前面概述视频中已经和我们灌输了二者是不同的,二者之间存在一个封装引用的先后顺序这样的大致概念,就必须要给出一个准确的描述。所以我们到底要说它是什么呢QAQ。我已经晕了。我也不知道我在纠结什么牛角尖,希望老师能在课上讲解一下!
PS.实验操作会在提交到MOOC网站的博客中写。