【《Linux内核分析》实验一】教程文章相关的互联网学习教程文章

Linux内核(1) - Kernel地图:Kconfig与Makefile

Makefile不是Make Love从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上,Linux内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件。 对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们...

《Linux内核设计与实现》第三章读书笔记

一、进程(任务)描述1.进程是处于执行期的程序;除了可执行程序代码,还包括打开的文件、挂起的信号、内核内部数据、一个或者多个执行线程等多种资源线程是在进程活动中的对象;内核调度的对象是线程而不是进程在Linux系统中,并不区分线程和进程可能存在两个或者多个进程执行的是同一个程序;甚至N个进程共享打开的文件、地址空间之类的资源2.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存同一进程中的线程之间...

Linux内核OOM机制的详细分析(转)

Linux 内核 有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了 防止内存耗尽而内核会把该进程杀掉。典型的情况是:某天一台机器突然ssh远程登录不了,但能ping通,说明不是网络的故障,原因是sshd进程被 OOM killer杀掉了(多次遇到这样的假死状况)。重启机器后查看系统日志/var/log/messages会发现 Out of Memory: Kill process 1865(sshd)类似的错误信息...

linux内核分析(网课期末&地面课期中)【代码】【图】

堆栈变化过程:Linux内核分析——计算机是如何工作的计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构;函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能;enter pushl %ebp movl %esp,%ebpleave movl %ebp,%esppopl %ebp函数参数传递机制和局部变量存储中断,多...

LINUX内核参数FS与VM相关【代码】

文件系统相关fs.aio-nr = 0 当前aio请求数 fs.aio-max-nr = 1048576 最大允许的aio请求数 fs.file-nr = 3456 0 94159 已分配的文件handle数量/已分配但没有使用的/最大文件handle fs.file-max = 94159 内核支持的最大file handle数量 fs.nr_open = 1048576 nr_open是一个进程可以打开的最大文件数 fs.inode-nr = 13030 1629 列出inode-state的前两个item,可以跳过不看 fs.inode-state = 13030 1629 0 0...

Tiny4412 Linux 内核配置流程【代码】【图】

1.配置交叉编译器默认情况下,内核构建的是与宿主机相同的体系架构镜像。如果要交叉编译,需要设置两个变量ARCH和CORSS_COMPILE。①ARCH:指明目标体系架构,如x86、arm、mips等。②CROSS_COMPILE:指定使用的交叉编译器的前缀。例如arm-linux-。在内核顶层的Makefile中,可以看到工具链中的编译器、链接器等都是以$(CROSS_COMPILE)作为前缀。AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld REAL_C...

《Linux内核设计与实现》读书笔记 第一、二章

第一章 Linux内核简介1.1Unix历史 Unix特点:1、很简洁 2、所有东西都被当成文件对待 3、Unix内核和相关的系统工具软件都是用C语言编写而成 4、进程创建非常迅速 所以Unix很强大。1.2追寻Linus足迹:linux简介 Linus开发。Linux是类Unix系统。Linux内核也是自由软件。1.3操作系统和内核简介操作系统:在整个系统中负...

浅谈 Linux 内核开发之网络设备驱动【代码】

转自http://www.ibm.com/developerworks/cn/linux/l-cn-networkdriver/网络设备介绍网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口。众所周知,在 OSI(Open Systems Interconnection,开放网际互连)中,网络被划分为七个层次,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。我们所讲的网络设备也包括两个层次,一层叫做 MAC(Media Acce...

环境搭建之vscode-linux内核源码【代码】

windows环境1. 下载源码1. 打开https://mirror.tuna.tsinghua.edu.cn/ 2. 搜索kernel,点进去下载2.6.24版本和5.4版本的内核 2. 导入源码1. 解压压缩包 2. vscode打开文件夹 3. ctags解析1. vscode安装ctags support插件 2. 下载ctags58.zip:http://ctags.sourceforge.net/ 3. 安装git bash 4. 解压ctags58.zip,然后打开git bash,在linux-2.6.24文件夹下,运行: /c/Program\ Files/ctags58/ctags.exe -R -f .tags 5. 按ctrl + ...

linux内核——会话、进程组、线程组

会话、进程组、线程组总体关系示意图待插入Session(会话)与进程组Shell 分前后台来控制的不是进程而是作业(Job)或者进程组(Process Group)。一个前台作业可以由多个进程组成,一个后台作业也可以由多个进程组成,Shell可以同时运行一个前台作业和任意多个后台作业,这称为作业 控制(Job Control)。例如用以下命令启动5个进程(这个例子出自[APUE2e]): 其中proc1和proc2属于同一个后台进程组,proc3、proc4、proc5属于同...

《Linux内核设计与实现》第四章读书笔记

4.1 多任务多任务操作系统就是能同时并发地交互执行多个进程的操作系统。多任务系统可以划分为两类:非抢占式多任务进程会一直执行直到自己主动停止运行抢占式多任务Linux/Unix使用的是抢占式的方式;强制的挂起进程的动作就叫做抢占。像所有unix的变体和许多其他现代操作系统一样,Linux提供了抢占式的多任务模式。进程的时间片:进程在被抢占之前能够运行的时间是预先设置好的。4.2 Linux 的进程调度36从1991年Linux的第1版到后...

Linux 内核编译步骤及配置详解【代码】【图】

linux 系统体系结构: linux kernel体系结构:arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高,这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了充分的保护用户空间(用户模式)转到内核空间(系统模式)方法:·系统调用·硬件中断linux kernel 体系结构: 虚拟文件系统VFS:VFS(虚拟文件系统)隐藏各种文件系统的具体细节,为文件操作提供统一的接口二.Linux内核源代码linux内核下载www.kern...

Linux 内核源码中likely()和unlikely()【代码】

ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value))等价于if (value)if (likely(a>b)) {fun1();if (unlikely(value))等价于if (value)也就是说likely()和unlikely()从阅读和理解的角度是一样的。这两个宏在内核中定义如下:<linux/compiler> #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) 这里的__built_expect(...

linux内核中socket的创建过程源码分析(详细分析)

http://www.cnblogs.com/hyd-desert-camel/p/3536341.html1三个相关数据结构.关于socket的创建,首先需要分析socket这个结构体,这是整个的核心。104 struct socket {105 socket_state state;106 107 kmemcheck_bitfield_begin(type);108 short type;109 kmemcheck_bitfield_end(type);110 111 unsigned long flags;112 113 struct socke...

Linux内核编程:Linux2.6内核源码解析_进程遍历        【代码】

/* *File : test.c *Author : DavidLin *Date : 2014-12-07pm *Email : linpeng1577@163.com or linpeng1577@gmail.com *world : the city of SZ, in China *Ver : 000.000.001 *history : editor time do * 1)LinPeng 2014-12-07 created this file! * 2) */ #include <linux/init.h> #include...