自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 pglist_data结构

参考链接:https://zhuanlan.zhihu.com/p/68465952

2020-10-17 21:47:26 376

原创 drop_caches 释放哪些

drop_caches:写入1释放page cache;写入2释放slab;写入3两者都释放; { .procname = "drop_caches", .data = &sysctl_drop_caches, .maxlen = sizeof(int), .mode = 0644, .proc_handler = drop_caches_sysctl_handler, .extra1 = &one, .extra2 = &four, },

2020-09-19 23:50:45 1508 1

原创 balance_dirty_pages_ratelimited分析

nr_dirtied_pause:当前task的脏页门限;dirty_exceeded:全局的脏页数超过门限或者该bdi的脏页数超过门限;(dirty_exceeded = (bdi_dirty > bdi_thresh) &&((nr_dirty > dirty_thresh) || strictlimit); )bdp_ratelimits:percpu变量,当前CPU的脏页数ratelimit_pages:CPU的脏页门限调用balance_dirty_pages

2020-09-18 22:53:31 1923

原创 Linux 文件系统写-ext2流程

整体写流程如下:page 与buffer head关系如下:SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count){ struct fd f = fdget_pos(fd); ssize_t ret = -EBADF; if (f.file) { loff_t pos = file_pos_read(f.file); ret = vfs_write(f.file, buf

2020-09-16 23:25:48 291

原创 Linux 文件系统读-ext2流程

文件系统读流程分析,EXT2为例,读代码流程如下:读流程:read_write.c \fs SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){ struct fd f = fdget_pos(fd); ssize_t ret = -EBADF; if (f.file) { loff_t pos = file_pos_read(f.file); ret = vfs_read(f.fil

2020-09-07 23:00:31 328

原创 Linux 内存回收机制

1.回收整体框图__get_free_pages:返回的是虚拟地址;alloc_pages:返回的是struct page*结构;unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order){ struct page *page; /* * __get_free_pages() returns a 32-bit address, which cannot represent * a highmem page

2020-09-03 23:12:15 1044

原创 Linux缺页中断处理

缺页中断处理do_page_fault ->__do_page_fault ->handle_mm_fault ->__handle_mm_fault ->handle_pte_fault ->do_fault //文件页 mmap方式访问 ->do_anonymous_page //匿名页 ->do_swap_page //在swap中 -&g

2020-08-29 22:31:17 933

原创 struct page 理解

struct page结构体为了减少占用的空间,使用联合体,不同的场景下表示不同的意思。struct page { /* First double word block */ /* 标志位,每个bit代表不同的含义 */ unsigned long flags; /* Atomic flags, some possibly updated asynchronously */ union { /* * 如果mapping = 0,说明该page属于交换缓存(swap cache)

2020-08-26 23:42:17 1661

原创 linux4.0 RT负载均衡原理

RT 负载均衡在SMP情况下:RT负载均衡的目标是要保证TopN的线程都能及时执行;负载平衡的时机如下:pick_next_task_rtselect_task_rq_rttask_woken_rtpick_next_task_rt/* rq 当前cpu的运行队列 */static struct task_struct *pick_next_task_rt(struct...

2020-04-17 23:33:46 534

原创 Linux 4.0 CFS负载均衡原理

负载计算在不考虑EAS的情况下,负载采用PELT计算;struct sched_avg { /* * These sums represent an infinite geometric series and so are bound * above by 1024/(1-y). Thus we only need a u32 to store them for all * c...

2020-04-17 22:27:23 292

原创 微星B450迫击炮+AMD R5 3600 装机

问题:AMD R5 3600 插在微星B450的迫击炮主板上,CPU检测灯一直常亮07-11:BIOS已经是更新过的了(7B89v17),但是CPU检测灯还是一直常亮,然后重试重新升级BIOS、插拔内存条、插拔显卡都无果后,开始怀疑人生。。。京东客服、微星客服咨询后只会说返厂修理,失望第一次装机就翻车。。。怀疑是主板或者内存条有关系,京东退货。。然后立马重新买新的,准备换个新的再试一下。但是心...

2019-07-14 22:33:51 30479 10

原创 linux调度器(二)-2.6内核分析

2.4内核调度器存在的问题接上篇文章 linux调度器(一)-2.4内核分析 介绍,2.4内核存在以下问题:SMP架构,所有CPU共享一个可运行队列,访问效率低下;每次调度时从可运行队列选择一个线程执行的时候都需要遍历一次链表, 时间复杂度O(n);所有任务的时间片用完时,要遍历一遍链表重新赋值时间片,时间复杂度O(n);内核态不可抢占;2.6的内核调度器就是针对这些问题一一解决...

2019-07-02 22:55:21 204

原创 linux调度器(一)-2.4内核分析

###调度策略概念内核支持三种调度策略SCHED_OTHER、SCHED_FIFO、SCHED_RR,具体介绍如下:SCHED_OTHER:基于时间片的普通优先级策略;SCHED_FIFO:先入先出实时调度策略,针对实时性要求较高的线程,如果线程使用该调度策略,没有时间片的概念,线程会一直占用CPU,除非更高优先级的线程抢占;SCHED_RR:时间片的实时调度策略,与SCHED_FIFO...

2019-06-29 23:06:26 377

拨云见日——基于 Android 的内核与系统架构源码分析.pdf

拨云见日——基于 Android 的内核与系统架构源码分析,拨云见日——基于 Android 的内核与系统架构源码分析

2020-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除