本文作者:ptiyny

linux源代码学习 linux 源代码

ptiyny 08-28 11
linux源代码学习 linux 源代码摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于linux源代码学习的问题,于是小编就整理了6个相关介绍linux源代码学习的解答,让我们一起看看吧。如何编译linux源代码?...

大家好,今天小编关注到一个比较意思的话题,就是关于linux源代码学习问题,于是小编就整理了6个相关介绍Linux代码学习的解答,让我们一起看看吧。

linux源代码学习 linux 源代码
图片来源网络,侵删)
  1. 如何编译linux源代码?
  2. linux源码可以免费获得吗?
  3. linux学习书籍推荐?
  4. Windows下怎样编译出可在Linux上执行的程序?
  5. Linux系统源代码还会收回吗?
  6. Linux是如何记录进程资源的?你能从C语言源代码层面分析下吗?

如何编译linux源代码?

1、安装编码源码的编译工具一般需要安装gcc yum install gcc

2、把源码解压 tar zxvf uname.tar.gz

3、进入解压的目录执行 ./configure make make install 完成编译安装

linux源码可以免费获得吗?

linux操作系统是免费开源操作系统,它的源码是可以免费获得的。

linux源代码学习 linux 源代码
(图片来源网络,侵删)

下载linux系统安装光盘,安装时选择安装源码,安装结束后源码就在/usr/src目录下。

更容易得到的源码是FreeBSD操作系统的,你登录FreeBSD的FTP网站,可以选择从最新版到最老版本的源码。

linux学习书籍推荐

1. 《Linux程序设计(第4版)》(经典入门书)2. 《跟阿铭学Linux》(畅销新书)3. 深入理解程序设计使用Linux汇编语言(畅销新书)4. 《深入Linux内核架构》(经典书)5. 《Linux shell脚本编程入门》(新书)、6. 《Linux命令行与shell脚本编程大全(第2版)》(经典书)7. 《Linux Shell脚本攻略(第2版)》(新书)8. 《Linux就是这个范儿》(畅销新书)9. 《ARM Linux内核源码剖析》(畅销新书)10. 《Linux系统架构和应用技巧》(新书)11. 《只是为了好玩:Linux之父林纳斯自传》(畅销经典)

下载链接

windows下怎样编译出可在Linux上执行的程序?

1、可以安装cygwin,Cygwin是一个在Windows平台运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件,搜索***下载即可,下载完成,安装的时候注意记得安装相关语言编译器解释器,在cygwin中生成Linux可执行文件

linux源代码学习 linux 源代码
(图片来源网络,侵删)
2、 可以安装vmware、virtualpc等虚拟机,在虚拟机里安装linux系统,然后在linux系统中编译相应的源码,生成linux上的可执行文件。

Linux系统源代码还会收回吗?

Linux系统源代码不会收回。Linux是一个开源软件,这意味着它的源代码对公众开放,任何人都可以查看修改和分发。这使得Linux成为一个非常灵活和适应性强的操作系统,因为它可以根据用户的具体需求进行定制。同时,由于Linux的源代码是公开的,这使得它更容易发现和修复安全漏洞,这使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 结构体包含了文件系统,线程结构体,以及进程[_a***_]的文件等信息,这就与上一节文章的内容对应上了。其他成员在我之后的文章中会涉及到,这里暂不赘述。

创建进程时,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源代码学习的6点解答对大家有用。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享