zoukankan      html  css  js  c++  java
  • linux学习的任督二脉-进程调度和内存管理

    转自 宋宝华老师的博客
    原文:https://blog.csdn.net/21cnbao/article/details/77505330 

    内功心法

        学习或遇到问题时,反过来主动思考如果我是设计者,我会怎么对这个问题或场景进行处理?

    打通任督二脉前的基本功夫,是真的搞懂基本概念,然后可以顺畅的回答如何问题

    带着问题上路

    一切的学习都是为了解决问题,而不是为了学习而学习。为了学习而学习,这种行为实在是太傻了,因为最终也学不好。所以我们要弄清楚进程调度和内存管理究竟能解决什么样的问题。

    Linux进程调度以及配套的进程管理回答如下问题:

    1.    Linux进程和线程如何创建、退出?进程退出的时候,自己没有释放的资源(如内存没有free)会怎样?

    2.    什么是写时拷贝?

    3.    Linux的线程如何实现,与进程的本质区别是什么?

    4.    Linux能否满足硬实时的需求?

    5.    进程如何睡眠等资源,此后又如何被唤醒?

    6.    进程的调度延时是多少?

    7.    调度器追求的吞吐率和响应延迟之间是什么关系?CPU消耗型和I/O消耗型进程的诉求?

    8.    Linux怎么区分进程优先级?实时的调度策略和普通调度策略有什么区别?

    9.    nice值的作用是什么?nice值低有什么优势?

    10.  Linux可以被改造成硬实时吗?有什么方案?

    11.  多核、多线程的情况下,Linux如何实现进程的负载均衡?

    12.  这么多线程,究竟哪个线程在哪个CPU核上跑?有没有办法把某个线程固定到某个CPU跑?

    13.  多核下如何实现中断、软中断的负载均衡?

    14.  如何利用cgroup对进行进程分组,并调控各个group的CPU资源?

    15.  CPU利用率和CPU负载之间的关系?CPU负载高一定用户体验差吗?

    Linux内存管理回答如下问题:

    1.    Linux系统的内存用掉了多少,还剩余多少?下面这个free命令每一个数字是什么意思?

    2.    为什么要有DMA、NORMAL、HIGHMEM zone?每个zone的大小是由谁决定的?

    3.    系统的内存是如何被内核和应用瓜分掉的?

    4.    底层的内存管理算法buddy是怎么工作的?它和内核里面的slab分配器是什么关系?

    5.    频繁的内存申请和释放是否会导致内存的碎片化?它的后果是什么?

    6.    Linux内存耗尽后,系统会发生怎样的情况?

    7.    应用程序的内存是什么时候拿到的?malloc()成功后,是否真的拿到了内存?应用程序的malloc()与free()与内核的关系究竟是什么?

    8.    什么是lazy分配机制?应用的内存为什么会延后以最懒惰的方式拿到?

    9.    我写的应用究竟耗费了多少内存?进程的vss/rss/pss/uss分别是什么概念?虚拟的,真实的,共享的,独占的,究竟哪个是哪个?

    10.  内存为什么要做文件系统的缓存?如何做?缓存何时放弃?

    11.  Free命令里面显示的buffers和cached分别是什么?二者有何区别?

    12.  交换分区、虚拟内存究竟是什么鬼?它们针对的是什么性质的内存?什么是匿名页?

    13.  进程耗费的内存、文件系统的缓存何时回收?回收的算法是不是类似LRU?

    14.  怎样追踪和判决发生了内存泄漏?内存泄漏后如何查找泄漏源?

    15.  内存大小这样影响系统的性能?CPU、内存、I/O三角如何互动?它们如何综合决定系统的一些关键性能?

    以上问题,如果您都能回答,那么恭喜您,您是一个概念清楚的人,Linux出现吞吐低、延迟大、响应慢等问题的时候,你可以找到一个可能的方向。如果您只能回答低于1/3的问题,那么,Linux对您仍然是一片空白,出现问题,您只会陷入瞎猫子乱抓,而捞不到耗子的困境,或者胡乱地意测问题,陷入不断的低水平重试。

  • 相关阅读:
    J2EE之ANT
    lsof在运维中的应用
    Qt编译OpenGL程序遇到的问题
    算法导论第八章__实现计数排序
    MYSQL 更新时间自己主动同步与创建时间默认值共存问题
    微软系统工具套件SysinternalsSuite各个工具功能说明
    【转】如何查看linux版本 如何查看LINUX是多少位
    【转】linux下解压.bz2压缩文件
    【转】db/dbm
    【转】BLE_CC2540_初学者入门指导
  • 原文地址:https://www.cnblogs.com/noxy/p/11111061.html
Copyright © 2011-2022 走看看