大家好,今天小编关注到一个比较有意思的话题,就是关于关于linux进程相关知识学习整理的问题,于是小编就整理了4个相关介绍关于Linux进程相关知识学习整理的解答,让我们一起看看吧。
Linux是如何记录进程***的?你能从C语言源代码层面分析下吗?
谢邀。
其实简单来说,进程无非就是处于运行期的程序及其相关***的总和。这里读者应该注意“相关***”一词,Linux 在内核中是如何记录进程的***的呢?
首先应该明白,Linux 内核大都是***用C语言编写的,因此要弄清楚内核如何记录进程***,只需要查看相关的C语言代码就可以了。事实上,Linux 内核是使用 task_struct 结构体描述进程的***的,它的C语言部分代码如下,请看:
task_struct 结构体很长,在我手中的 Linux 内核C语言源代码中,它占用了280行。当然了,这其中包含很多条件编译部分,在 32 位机器上,task_struct 大约要占用 1.7 KB 的内存空间,不过考虑到它可以管理完整的进程,1.7kB 其实并不算大了。
鉴于 task_struct 结构体过长,这里不可能将其成员一一介绍清楚。如果读者和我一样好奇,粗略的浏览 task_struct 结构体,应该能够发现一些比较令人熟悉的成员,例如:
通过C语言注释以及成员的变量名,能够看到 task_struct 结构体包含了文件系统,线程结构体,以及进程打开的文件等信息,这就与上一节文章的内容对应上了。其他成员在我之后的文章中会涉及到,这里暂不赘述。
在创建进程时,Linux 通过 slab 分配器分配 task_struct 结构,这样可以避免动态分配和释放带来的开销,提高内存的使用效率。
根据我手上的内核C语言源代码,Linux 中还有一个结构体 thread_info,它的其中一个成员 task 指针正好适合用于索引 task_struct 结构体,在X86_64平台上,thread_info 的相关C语言代码如下,请看:Linux 通常会在内核栈底或者栈顶保留 thread_info 结构,而内核栈通常大小都是可知的,因此每个进程都能方便的从自己的栈中找到 thread_info 结构,进而找到 task_struct 结构。
当前进程的 thread_info 结构,可以调用 current_thread_info() 函数,它的C语言代码如下,请看:
可见,current_thread_info() 函数其实就是通过进程栈计算的,因此它的实现与平台架构有关,上述C语言代码其实只是 arm 平台的实现方法,其他平台的实现方法,读者可自行查阅。
linux系统本地进程攻击有哪些?
linux系统本地进程攻击有读取攻击,操纵攻击,欺骗攻击,泛洪攻击及混合型攻击。
linux系统本地进程攻击方法有:1、服务拒绝攻击(DOS);2、本地用户获取了非授权的文件的读写权限;3、远程用户获得特权文件的读写权限;4、远程用户获得根权限。
Linux的写时拷贝所指的“写入”,具体是指什么?
linux的进程
Linux 内核在系统启动的最后阶段会启动 init 进程。Linux 系统的进程之间存在着明显的继承关系,所有的进程都是 pid 为 1 的 init 进程的后代。
其他一些操作系统在创建进程时,首先在地址空间里创建进程,读入可执行文件,最后开始执行。Linux 是类 Unix 的操作系统,关于进程创建,它[_a***_]于前面那些操作系统,而是定义了 fork() 和 exec() 两组函数。这里以 fork() 函数为例介绍题主所说的“写时拷贝”。
fork() 函数通过拷贝父进程创建子进程,子进程与父进程的区别仅仅在于 pid,ppid 和一些***的统计量,比如挂起的信号等。在早期,fork() 函数会将父进程的所有其他***都复制给子进程。这种设计过于简单粗暴,因为子进程也许并不需要父进程的***,如果子进程被创建后,转而执行和之前毫不相关的工作,那之前拷贝***的开销就浪费了,一点意义也没有。
为了解决上面提到的可能会出现浪费的问题,“写时拷贝”的概念就被提出了。写时拷贝是一种可以推迟甚至免去拷贝数据的技术。子进程被创建后,系统将父进程的***以只读的方式共享给子进程,这样子进程能够使用原本应该拷贝给子进程的数据,而同时又不会“污染”父进程。
这样一来,如果子进程只需要读取父进程数据,或者不需要使用父进程的数据,那么拷贝就免去了。如果子进程需要写这部分数据,则为了保证进程之间的数据独立性,系统才会将父进程的***拷贝给子进程。
结合上面这两点,就是“写时拷贝”的含义了,下面给出 demo:
对于上面这种情况,因为子进程没有用到父进程的 buf,所以系统就免去了拷贝 buf 100MB 的开销,提升了效率。
Linux xorg是啥进程?
Xorg是X Window System的实现,是一个开源的显示服务器,主要负责在图形用户界面(GUI)中管理和显示图形。Xorg由一系列守护进程和服务器组成,它们共同工作以提供图形功能。Xorg守护进程负责管理图形***,如窗口、光标和字体,并将它们显示在屏幕上。Xorg服务器负责与图形硬件进行通信,并将图形数据发送到显示器。Xorg是一个重要的系统组件,因为它负责管理和显示图形用户界面,如果没有它,用户就不能使用图形界面,只能使用命令行界面。
Xorg是一个X Window System的实现,它是Linux和类Unix操作系统上广泛使用的图形界面系统。Xorg是XFree86项目的分支,它提供了X Window System的基本功能,包括图形窗口管理、输入设备处理和网络透明性。Xorg由X.Org基金会维护,并由许多Linux发行版使用。它支持多种显卡和输入设备,并提供了丰富的图形功能。Xorg是一个开源软件,它被广泛用于桌面环境和嵌入式系统中。
到此,以上就是小编对于关于linux进程相关知识学习整理的问题就介绍到这了,希望介绍关于关于linux进程相关知识学习整理的4点解答对大家有用。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。 转载请注明出处:http://www.rongung.com/post/38372.html