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

QEMU 搭建Linux内核调试环境【代码】

Kernel Debug in QEMUreferenceEnvironment ListUtilityVersionQEMU5.2.0Kernel5.11.9Busybox1.32.1QEMUInstallation (manual)Download QEMU sourcecomplierwget https://download.qemu.org/qemu-5.2.0.tar.xz tar xvJf qemu-5.2.0.tar.xz cd qemu-5.2.0 ./configure make Installation (automatic)Arch: pacman -S qemuDebian/Ubuntu/Deepin: apt-get install qemuCentos: yum install qemu-kvmKernelConfigmake defconfig Compil...

Linux内核架构读书笔记 - 2.4.3 启动新线程【代码】【图】

execve 启动新程序execve 实现  系统相关     系统无关  sys_execve - > do_execve  do_execve 定义1 * 2 * sys_execve() executes a new program. 3 */ 4int do_execve(char * filename, 5char __user *__user *argv, 6char __user *__user *envp, 7struct pt_regs * regs)  do_execve 执行流程图    首先打开内核文件,具体可见第八章    bprm_init      mm_alloc 生成新的mm_struct 实例管理进程...

Linux内核启动分析过程-《Linux内核分析》week3作业【代码】

环境搭建 环境的搭建参考课件,主要就是编译内核源码和生成镜像 start_kernel 从start_kernel开始,才真正进入了Linux内核的启动过程。我们可以把start_kernel看做平时用C编程时的main函数。在平时应用程序编程中,main函数并不是一开始就启动的,而是先使用汇编和C准备一些变量,例如我们使用的argc和argv参数,以及一些全局变量的初始化。所以我们使用gdb调试程序时,使用bt打印栈痕迹,发现最下面的函数并不是main,而是__libc_...

nginx 高并发参数配置及linux内核参数优化

一、一般来说nginx 配置文件中对优化比较有作用的为以下几项:1. worker_processes 8;nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。2. worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000000;为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到多个cpu。3. worker_rlimit_nofile65535;这个指令是指当一个ngin...

Linux内核之内存管理(4)--缺页处理程序

本文主要解说缺页处理程序,凝视足够具体,不再解释。//以下函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上。主要工作是在相关也文件夹项和页表项中设置指定页面的信息。在处理缺页异常函数do_no_page中会调用这个函数。 參数:address--线性地址;page--是分配的主内存区中某一页面指针 static ...

LINUX内核编译

1、获取内核源码,解压至/usr/src # tar xf linux-3.13.5.tar.xz -C /usr/src # ln -sv /usr/src/linux-3.13.5 /usr/src/linux2、配置内核特性(选择一种方法就可以了) make config:遍历选择所要编译的内核特性 make allyesconfig:配置所有可编译的内核特性 make allnoconfig:并不是所有的都不编译 make menuconfig:这种就是打开一个文件窗口选择菜单 ...

Linux 内核参数【代码】

牢记!内核参数可以调整,但不是随便乱调,需要根据业务进行判断,并且要知道调整的后果是什么,存在哪些风险。牢记!!!调整参数时,做好记录!!! 网络参数/proc/sys/net/core/wmem_max    最大socket写buffer,可参考的优化值:873200/proc/sys/net/core/rmem_max      最大socket读buffer,可参考的优化值:873200 3. /proc/sys/net/ipv4/tcp_wmem      TCP写buff...

《Linux内核设计与实现》CHAPTER1,2阅读梳理

《Linux内核设计与实现》CHAPTER1,2阅读梳理【学习时间:2.5hours】【学习内容:Linux内核简介——历史与现今版本;Linux内核源代码以及编译】CHAPTER1 Linux内核简介1.Unix内核特点十分简洁:仅提供几百个系统调用并且有明确的目的;在Unix中,大部分东西都被(或者正致力于)被当做文件对待;Unix内核即相关系统工具软件都是用C语言编写的,这使得系统有着强大的可移植性;Unix进程创建非常迅速,目标在于一次执行保质保量地完成...

Linux内核分析——进程的描述和进程的创建【图】

进程的描述和进程的创建一、 进程的描述(一)进程控制块PCB——task_struct1、操作系统的三大管理功能包括:  (1)进程管理  (2)内存管理  (3)文件系统2、PCB task_struct中包含:  (1)进程状态  (2)进程打开的文件  (3)进程优先级信息3、通过唯一的进程标识PID来区别每个进程。4、进程控制块PCB——task_struct 5、进程状态   (1)创建新进程后实际的状态是TASK_RUNNING,就绪但是没有运行,调度器选择...

Linux内核中网络数据包的接收-第一部分 概念和框架【图】

与网络数据包的发送不同,网络收包是异步的的,因为你不确定谁会在什么时候突然发一个网络包给你,因此这个网络收包逻辑其实包含两件事:1.数据包到来后的通知2.收到通知并从数据包中获取数据这两件事发生在协议栈的两端,即网卡/协议栈边界以及协议栈/应用边界:网卡/协议栈边界:网卡通知数据包到来,中断协议栈收包;协议栈栈/应用边界:协议栈将数据包填充socket队列,通知应用程序有数据可读,应用程序负责接收数据。本文就来...

Linux内核源码分析 -- 同步原语 -- 自旋锁 spinlock【代码】

Linux内核源码分析 -- 同步原语 -- 自旋锁 spinlock_ttypedef struct spinlock {union {struct raw_spinlock rlock; #ifdef CONFIG_DEBUG_LOCK_ALLOC # define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map))struct {u8 __padding[LOCK_PADSIZE];struct lockdep_map dep_map;}; #endif}; } spinlock_t; 如果一个处理程序尝试执行受自旋锁保护的代码,那么代码将会被锁住,直到占有锁的处理程序释放掉。自旋锁 一共有两种状...

深入理解Linux内核-虚拟文件系统【代码】

Linux 成功的关键之一是它具有和其他操作系统和谐共存的能力5个标准文件类型:1、普通文件2、目录文件3、符号链接文件4、设备文件5、管道文件虚拟文件系统(Virtual FileSystem):内核软件层,用来处理与Unix标准文件系统相关的所有系统调用。健壮性表现在能为各种文件系统提供一个通用的接口。VFS支持的文件系统可以分为三种主要类型:1、磁盘文件系统:  a、Linux使用的Ext2、Ext3,以及Reiser文件系统(ReiserFS);  b、U...

Linux内核学习--写一个c程序,并在内核中编译,运行【代码】【图】

20140506今天开始学习伟大的开源代表作:Linux内核。之前的工作流于几个简单命令的应用,因着对Android操作系统的情愫,“忍不住”跟随陈利君老师的步伐,开启OS内核之旅。学习路径之一是直接从代码入手,下面来写一个hello.c内核模块。说明:这个路径/usr/src/linux-headers-2.6.32-22/include/linux是引用的头文件。内核模块固定格式:module_init()/ module_exit(),module函数是从头文件中来的。 1 #include <linux/module.h>2 ...

Linux内核经典书籍

1.《Linux内核设计与实现》 本书重在原理。适合入门的最佳图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的核心,因此本书是很权威的。2.《深入理解Linux内核》 此书比上一本多了些细节。是Linux内核黑客在推荐图书时的首选。写的比较简单易懂,适合刚刚接触LINUX内核的。此书图表很多,形象地给出了关键数据结构的定义,与《Linux内核源代码情景分析》相比,本书内容紧凑,不会一个问题讲解动辄上...

《Linux内核分析》MOOC课程 完成一个简单的时间片轮转多道程序内核代码【图】

上一篇文章中介绍了一个进程执行的过程,分析了在调用子程序时栈的变化过程。本文介绍一下多进程的执行过程,当一个进程需要停下来等待某个条件或者cpu给它分配的时间片用完时需要切换给别的进程,在切换时首先会产生一个中断,然后cpu会执行相应的中断处理操作,比如一个重要的操作就是保护当前进程的栈和cpu寄存器的值,当cpu再次调度时可以恢复上一次状态继续执行下去。  按照mykernel上的步骤安装好程序,执行qemu -kernel a...