首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进入Linux内核的准备

最近看到这个github仓库flash-linux0.11-talk,觉得还算是蛮有意思的,加上网络编程的课程又有抄写一段tcp协议实现代码或者交一篇linux内核源码阅读的笔记,还是比较讨厌这种低效率的抄写的所以就想写篇文章记录一下粗浅阅读源码后的大概了解...进入linux内核的准备 开机 如果问电脑是如何一步一步开始运行操作系统的,那么第一件事情当然是按下开机键啦。...那么对于linux0.11来,这个512Byte大小的启动程序就是/boot目录下的bootsect.s这个文件。按下开机键后,它会被编译成二进制文件,并且被存放在硬盘中的0盘0道1扇区。...我们结合代码来看看如何设置GDT 继续setup.s endmove后的内容。...前面的mov语句表示,页目录表的4个页目录项,分别指向4个页表。

5.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

linux源码epoll

前言 在linux的高性能网络编程中,绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候,表现出无可比拟的优势。...本文就是笔者在探究epoll源码过程中,对kernel将就绪描述符添加到epoll并唤醒对应进程的一次源码分析(基于linux-2.6.32内核版本)。...源码socket的阻塞和非阻塞>>中,博客地址如下: https://my.oschina.net/alchemystar/blog/1791017) 既然知道了tfile->f_op->poll的实现...的软中断机制调用net_rx_action,如下图所示: 注:上图来自PLKA(>) step2: 紧接着跟踪next_rx_action next_rx_action...总结 epoll作为linux下非常优秀的事件触发机制得到了广泛的运用。其源码还是比较复杂的,本文只是阐述了epoll读写事件的触发机制,探究linux kernel源码的过程非常快乐_。

2.2K20

解决Linux 性能问题的 60 秒

为了解决性能问题,你登入了一台 Linux 服务器,在最开始的一分钟内需要查看什么? 在 Netflix 我们有一个庞大的 EC2 Linux 集群,还有非常多的性能分析工具来监控和调查它的性能。...即使这些工具帮助我们解决了大多数问题,我们有时还是得登入 Linux 实例,运行一些标准的 Linux 性能工具来解决问题。...0 0 200890208 73712 591860 0 0 0 0 15898 4840 98 1 1 0 0   vmstat(8),是 “virtual memory stat” 的简称,几十年就已经包括在...(在我们当前使用的)vmstat 输出的第一行数据是从启动到现在的平均数据,而不是一秒的数据。所以我们可以跳过第一行,看看后面几行的情况。 检查下面各列: r:等待 CPU 的进程数。...低于60%通常是低性能的表现(也可以从 await 中看出),不过这个得设备的类型。接近100%通常意味着饱和。

75431

Linux】从零开始认识进程 —

3.3 Linux中的进程 每个操作系统都有自己对应的PCB模块,那我们来看一下linux 的PCB是什么样子: struct task_struct{ //Liunx 进程控制模块 } 在linux...在根据进程的概念我们可以理解linux的进程为: 进程 = 内核task_ struct结构体 + 程序的代码和数据 深入理解 现在我们来进入到linux中来看看进程的Task_struct本身内部的属性都有哪些...现在,linux 启动!!! . / 的本质就是让系统创建进程并运行 (此外每个指令也是一个可执行程序) 我们自己写的代码形成的可执行程序 == 系统命令 == 可执行程序。...在Linux 中大部分的执行操作本质都是运行进程!!!...现在我们再来看看Linux中的“任务管理器”,让我们一起来看看然后才能查看进程 ps ajx 可以查看我们的进程,为了方便演示我们使用grep 来进行一下筛选: ps ajx | grep myprogress

9510

linux源码socket的close

linux源码socket的close 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。...上篇博客讲了socket的阻塞和非阻塞,这篇就开始谈一谈socket的close(以tcp为例且基于linux-2.6.24内核版本) TCP关闭状态转移图: 众所周知,TCP的close过程是四次挥手...出现大量close_wait的情况 linux中出现大量close_wait的情况一般是应用在检测到对端fin时没有及时close当前连接。有一种可能如下图所示: ?...总结 linux内核源代码博大精深,阅读其代码很费周折。之前读>的时候由于有先辈引导和梳理,所以看书中所使用的BSD源码并不觉得十分费劲。...直到现在自己带着问题独立linux源码的时候,尽管有之前的基础,仍旧被其中的各种细节所迷惑。希望笔者这篇文章能帮助到阅读linux网络协议栈代码的人。

5.2K80

从无盘启动 Linux 启动原理

加载 GRUB 显示菜单 加载 Linux 内核到内存中 执行 INIT 程序 进入用户界面 由于我需要从网络启动,过程会变得复杂一些,主要变化如下 在 MBR 引导,需要执行一系列的 PXE 流程,...iPXE 需要根据自己硬件对应的平台进行编译,编译需要搞清楚几个要点: 启动方式:BIOS 或者 EFI 前面已经说了。...在说如何找到启动文件,先要说说硬盘是如何划分区块的,主要有两大方式 MBR 和 GPT。我们先来聊一下机械硬盘的工作原理。 机械硬盘由坚硬金属材料制成的涂以磁性介质的盘片,盘片两面称为盘面或扇面。...initrd 字面上的意思就是"boot loader initialized RAM disk",换言之,这是一块特殊的 RAM disk,在载入 Linux kernel ,由 boot loader...所以我们要在挂载磁盘加载网卡驱动、启动网络、启动 iscsi 客户端、挂载 iscsi 磁盘。

8.1K104

三大亮点带你 Linux 内核 5.6

当我们还在体验 Linux 5.5 稳定发行版带来更好的硬件支持时,Linux 5.6 已经来了。说实话,Linux 5.6 比 5.5 更令人兴奋。...即使即将发布的 Ubuntu 20.04 LTS 发行版将自带 Linux 5.5,你也需要切实了解一下 Linux 5.6 内核为我们提供了什么。...我将在本文中重点介绍 Linux 5.6 发布版中值得期待的关键更改和功能: Linux 5.6 功能亮点 当 Linux 5.6 有新消息时,我会努力更新这份功能列表。...换句话说,这只是 Linux 文件系统的一种新压缩技术,你可以选择待定的文件扩展技术。...因此,如果你好奇 Linux 5.6 所涉及的全部更改,则可以亲自了解一下。 现在你已经了解了 Linux 5.6 发布版带来的新功能,对此有什么看法呢?在下方评论中留下你的看法。

1.2K20

Linux源码Socket(TCP)的accept

今天笔者就从Linux源码的角度看下Server端的Socket在进行Accept的时候到底做了哪些事情(基于Linux 3.10内核)。...关于epoll的原理可以看下笔者之前的博客《从linux源码epoll》: https://www.cnblogs.com/alchemystar/p/13161781.html 在这里描述一下原因,...为了解决这一问题,Linux提供了so_reuseport这个参数,其原理如下图所示: 多个fd监听同一个端口号,在内核中做负载均衡(Sharding),将accept的任务分散到不同的线程的不同...accept_queue被填充后,由用户线程通过accept系统调用从队列中获取对应的fd 值得注意的是,当用户线程来不及处理的时候,内核会drop掉三次握手成功的连接,导致一些诡异的现象,具体可以笔者的另一篇博客...源码Socket(TCP)的listen及连接队列》: https://www.cnblogs.com/alchemystar/p/13845081.html 总结 Linux内核源码博大精深,每次扎进去探索时候都会废寝忘食

1.8K00
领券