随笔分类 - Linux内核
发表于 2021-07-02 01:40阅读:272评论:0推荐:0
摘要:/* * linux/kernel/fork.c * * (C) 1991 Linus Torvalds */ /* 注意:signal.c和fork.c文件的编译选项内不能有vc变量优化选项/Og,因为这两个文件 内的函数参数内包含了函数返回地址等内容。如果加了/Og选项,编译器就会在认为 这些参
阅读全文 »
发表于 2020-11-15 16:53阅读:2736评论:0推荐:1
摘要:01 前言 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。 拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是内核是什么,它用于什么? 02 什么是内核 内核是与计算机硬件接口
阅读全文 »
发表于 2020-07-12 00:04阅读:719评论:0推荐:1
摘要:心得: 1.普通人想要通过学习linux内核找工作几乎是一件不可能的事情,一般被能力认可,进入到相关kernel开发,基本在博士水平 2.学习驱动基本和内核关系不大。 3.泛读内核是为了了解操作系统,脑海里有一个印象,比如boot中充斥着大量安排内存中位置的代码,这些代码对大部分人根本没有任何帮助
阅读全文 »
发表于 2020-07-11 18:23阅读:517评论:0推荐:0
摘要:! ! setup.s (C) 1991 Linus Torvalds ! ! setup.s is responsible for getting the system data from the BIOS, ! and putting them into the appropriate plac
阅读全文 »
发表于 2020-07-11 18:21阅读:359评论:0推荐:0
摘要:/* * linux/boot/head.s * * (C) 1991 Linus Torvalds */ /* * head.s contains the 32-bit startup code. * * NOTE!!! Startup happens at absolute address 0x
阅读全文 »
发表于 2020-07-11 18:19阅读:520评论:0推荐:0
摘要:! ! SYS_SIZE is the number of clicks (16 bytes) to be loaded. ! 0x3000 is 0x30000 bytes = 196kB, more than enough for current ! versions of linux ! SY
阅读全文 »
发表于 2020-05-30 15:09阅读:649评论:1推荐:0
摘要:1. 进程0创建进程1 init main.c sched_init() | |- hd_init() | |- fork() int 0x80//系统调度中断 | |- init() setup() int 0x80 | |- pause() int 0x80 | |- kernel sched.
阅读全文 »
发表于 2020-05-29 18:55阅读:1387评论:0推荐:0
摘要:在执行main函数之前,其实计算机从上电到main执行了一系列操作,不过由于个人原因,迫不及待先理解了0号进程,不过在说0号进程之前,先说说main函数启动到0号进程之间的事,也就是设备环境初始化的过程,这部分工作完成后系统进程怠速状态。 首先进程的定义是计算机中的程序关于某数据集合上的一次运行活动
阅读全文 »
发表于 2020-05-08 12:32阅读:211评论:0推荐:0
摘要:从开机加电到执行main函数之前的过程主要分成三个部分 1.硬件强制设置CS和IP的值,指向BIOS的入口地址,启动BIOS,准备是模式下的中断向量表和中断服务程序。 2.加载操作系统 内核程序并为其做保护模式做准备。第一批由BIOS中断 int 0x19(由bios执行)把第一扇区的bootsec
阅读全文 »
发表于 2020-03-26 15:12阅读:611评论:0推荐:0
摘要:为什么需要中断? 1)外设的处理速度一般慢于CPU 2)CPU不能一直等外部事件 所以设备必须有一种方法来通知CPU它的工作进度,这就是中断。 在Linux驱动程序中,为设备实现一个中断 步骤: 1)向内核注册中断 2)实现中断处理函数 CPU如何识别中断: 在Intel X86中可以支持256中向
阅读全文 »
发表于 2020-03-05 10:01阅读:2083评论:1推荐:1
摘要:看不清楚可以保留本地,图片均清晰可见 Linux 学习路径 Linux 桌面介绍 FHS:文件系统目录标准 Linux 需要特别注意的目录 Linux 内核学习路线 地址: https://www.jianshu.com/p/b087a229aaf1 Linux Security Coaching
阅读全文 »
发表于 2020-03-04 16:46阅读:266评论:0推荐:0
摘要:建议食用 https://blog.csdn.net/u010918487/article/details/86550058
阅读全文 »
发表于 2020-03-04 16:45阅读:3599评论:0推荐:0
摘要:1. 前言 本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。 注:本文和其它的“Linux内核分析”文章都基于如下约定: a) 内核版本为Linu
阅读全文 »
发表于 2020-02-26 18:07阅读:445评论:0推荐:0
摘要:1、背景 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如果我们有一套好的分析工具,那
阅读全文 »
发表于 2019-12-16 23:20阅读:818评论:0推荐:0
摘要:当某个进程需要从磁盘中获取数据时,它实际上会停止在CPU上运行以让其他进程运行,因为该操作可能需要很长时间才能完成-至少需要5ms的磁盘寻道时间,而5ms就是1000万从程序的角度来看,CPU周期是永恒的! 从程序员的角度(也称为“在用户空间中”),这称为阻塞系统调用。如果您进行调用write(2)
阅读全文 »
发表于 2019-12-15 23:26阅读:580评论:0推荐:0
摘要:神器:基于linux4.4版本,含函数和功能注释树 http://www.bricktou.com/ https://lwn.net/ 从0开始写linux,这个无敌牛逼,简单阅读了Introduction部分,佩服,这个是基于LFS的,作者Bruce Dubbs http://www.linuxf
阅读全文 »
发表于 2019-10-17 15:14阅读:839评论:0推荐:0
摘要:在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时
阅读全文 »
发表于 2019-10-17 14:26阅读:412评论:0推荐:0
摘要:If you use Linux you most likely have heard of the init.d directory. But what exactly does this directory do? It ultimately does one thing but it does
阅读全文 »
发表于 2019-10-17 14:23阅读:13722评论:1推荐:4
摘要:一、双缓冲作用 双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲可以很好的解决。我举几个常见的例子: 例 1. 在网络传输过程中数据的接收,有时可能数据来的太快来不及接收导致数据丢失。这
阅读全文 »
发表于 2019-10-17 14:15阅读:1854评论:0推荐:0
摘要:在Linux内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER-1)次方个page(参见alloc_pages函数, "if (unlikely(order >= MAX_ORDER)) return NULL;"), page的大小一般是4K bytes, MAX_ORDER
阅读全文 »