Linux操作系统基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux操作系统基础相关的知识,希望对你有一定的参考价值。

内核(Kernel):

Linux中的操作系统,重点在于管理计算机的所有活动以及驱动系统中的所有硬件

ABI(Application Binary Interface):

应用程序二进制接口 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。

API(Application Programming Interface):

应用程序编程接口 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

用户空间(User space):

用户程序的运行空间,只能执行简单的运算,不能直接调用系统资源,必须通过系统调用(system call),才能向内核发出指令

内核空间(Kernel space):

Linux内核的运行空间,可以执行任意命令,调用系统的一切资源。

系统调用(System call):

运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。

上下文切换(Context switch):

指CPU从一个进程或线程切换到另一个进程或线程。会牺牲CPU效率

库函数(Library function):

是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或动态库)向程序员提供功能性调用。程序员无需关心平台差异,由库来屏蔽平台差异性。

区别

函数库调用 系统调用
在所有的ANSI C编译器版本中,C库函数是相同的。平台移植性好 各个操作系统的系统调用是不同的。依赖于内核,不保证移植性
它调用函数库中的一段程序(或函数) 它调用系统内核的服务
与用户程序相联系 是操作系统的一个入口点
在用户地址空间执行 在内核地址空间执行
它的运行时间属于“用户时间” 它的运行时间属于“系统时间”
属于过程调用,调用开销较小 需要在用户空间和内核上下文环境间切换,开销较大
在C函数库libc中有大约300个函数 在UNIX中大约有90个系统调用
典型的C函数库调用:system fprintf malloc 典型的系统调用:chdir fork write brk;

技术分享图片

示例:

str = “July”     //用户空间
x = x+100      //用户空间
file.write(str) //切换到内核空间
y = x+200  //切换回用户空间

第一行和第二行都是简单的赋值运算,在用户空间执行。第三行需要写入文件,就要切换到内核空间,因为用户不能直接写入文件,必须通过内核安排。第四行又是赋值运算,就切换回用户空间。
技术分享图片

以上是关于Linux操作系统基础的主要内容,如果未能解决你的问题,请参考以下文章

逆向及Bof基础实践

2018-2019-1 20165320 《信息安全系统设计基础》 缓冲区溢出漏洞实验

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础