- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 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 1512 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 1936
原创 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 293
原创 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 333
原创 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 1047
原创 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 934
原创 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 1669
原创 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 536
原创 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 294
原创 微星B450迫击炮+AMD R5 3600 装机
问题:AMD R5 3600 插在微星B450的迫击炮主板上,CPU检测灯一直常亮07-11:BIOS已经是更新过的了(7B89v17),但是CPU检测灯还是一直常亮,然后重试重新升级BIOS、插拔内存条、插拔显卡都无果后,开始怀疑人生。。。京东客服、微星客服咨询后只会说返厂修理,失望第一次装机就翻车。。。怀疑是主板或者内存条有关系,京东退货。。然后立马重新买新的,准备换个新的再试一下。但是心...
2019-07-14 22:33:51 30486 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 207
原创 linux调度器(一)-2.4内核分析
###调度策略概念内核支持三种调度策略SCHED_OTHER、SCHED_FIFO、SCHED_RR,具体介绍如下:SCHED_OTHER:基于时间片的普通优先级策略;SCHED_FIFO:先入先出实时调度策略,针对实时性要求较高的线程,如果线程使用该调度策略,没有时间片的概念,线程会一直占用CPU,除非更高优先级的线程抢占;SCHED_RR:时间片的实时调度策略,与SCHED_FIFO...
2019-06-29 23:06:26 381
拨云见日——基于 Android 的内核与系统架构源码分析.pdf
2020-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人