Answers:
基本上,Linux内核有两种模式。
任何Linux内核都会在这两种模式之间来回切换。通常,库调用在用户模式下执行,而系统调用在内核模式下执行。用操作系统的术语来说,内核模式本质上是原子的,而在监督模式下则是原子的。 几乎所有库调用都需要内核的帮助才能执行其任务。每个库调用依次调用基础系统调用。让我们用下面的例子使想法更清晰
每当在c程序中,都可以从头文件中使用fopen()。编程环境从内核调用系统调用open()并执行其文件打开任务。执行后,控制流程再次返回用户模式。
为了说明这一点,请执行以下任务
man man
:在这里您将找到1-8的手册部分,每个部分都有特定的用途。man fopen
:您将看到respose为FOPEN(3)
,这里3表示手册页的手册第3节,它是c库调用部分。做man open
:您将看到respose为OPEN(2)
,这里2表示手册页的手册第2节,即系统调用部分。
希望您理解这个概念。
只是增加了其他答案在这里提到的差异。
由于库调用只是函数调用,因此不会发生从用户空间到内核空间的切换。另一方面,由于系统调用以内核模式运行,因此系统调用会导致从用户空间切换到内核空间。