简单的说Linux系统可分为 Linux内核 + 应用程序
对于Linux系统的细致划分,可以分为
Linux 内核
系统调用
库函数
shell
应用程序
内核模式与系统调用
内核模式
计算机的硬件资源又系统内核来操控,应用程序要想调用系统硬件资源需要通过访问或调用内核接口来实现指定的功能。
这时系统的内核就是操控硬件的基础操作。我们把内核程序的活动称为内核模式,应用程序的活动称为用户模式。
系统调用
应用程序通过内核接口调用内核程序的过程称为系统调用。
Linux中的系统调用接口大约有200多种,我们可以通过shell查看Linux下的所有系统调用
1 | man 2 syscalls |
man 中的参数2表示系统调用,不理解的可通过 man man 查看系统帮助文档.
系统调用常见的有
read 文件读取
write 文件写入
fork 复制当前进程
wait 等待某个进程完成
chdir 改变工作目录
通过系统调用,Linux用户可以体验到内核封装的好处。使得我们不必关系硬件驱动使用的一些底层细节。我更专注与程序的功能和要实现的目的。
库函数
库函数是什么,个人认为库函数就是系统调用的更上一层的封装。将系统调用的一些指令结合起来写成函数的形式,以方便调用。就像是C语言中的C标准库一样,有了他们程序开发起来更便捷。
除了C标准库,Linux还有一些其他的库比如 POSIX等
shell
shell 是一个交互程序,他是为了普通用户通过shell在不需要自己编程的情况下使用系统的一些资源。
用户程序
用户程序是基于编程语言开发后的程序,它也是通过其语言调用系统内核功能来使用系统的一些硬件资源。和库函数不同的是1它是面向用户的,2它针对的功能更专一,使用更方便。
早期由于Linux程序中大部分用户程序是用C编写的,然而Linux系统内核也是由C编写的。所以我觉得我们有必要了解下C中的函数调用与进程空间