分类目录归档:linux

实时调度类及SMP 和NUMA


实时调度类

  1. Linux 进程可分为两大类:实时进程和普通进程,实时进程与普通进程根本不同之处,如果系统中有一个实时进程且可执行,那么调度器总是会选择它,除非另有一个优先级更高实时进程。 SCHED_FIFO: 没有时间片,在被调度器选择之后,可以运行任意时长时间; SCHED_RR: 有时间片,其值在进程运行时会减少

实时调度实体sched_rt_entity 数据结构

表示实时调度实体,包含整个实时调度数据信息,

struct sched_rt_entity {
    struct list_head run_list;//专门用于加入到优先级队列中
    unsigned long

Read more

调度器以及CFS调度器


调度器

Liux 内核中用来安排调度进程的执行模块成为调度scheduler ,它可以切换进程状态(process status) 比如 执行,可中断睡眠,不可中断睡眠,退出,暂停等。

调度器的作用相当于CPU 中央处理器的管理员,主要负责完成做两件事情: 1. 选择某些就绪进程来执行 2. 打断某些执行的进程让他们变为就绪状态

调度

安装某种调度的算法设计,从进程的就绪队列当中选取进程分配CPU ,主要是协调对cpu等等相关资源使用,进程调度的目的:最大限度利用CPU时间 ,如果调度器支持就绪状态切换到执行状态,同时支持执行状态切换到就绪状态,那么该调度器为抢占式调度器

调度类sched

Read more

进程管理


宏内核和微内核架构

系统属于软件的范畴,负责管理系统硬件资源,同时为应用程序开发和执行提供配套环境,OS必须具备两个功能

  1. 为应用程序提供执行环境
  2. 为多用户和应用程序管理计算机的硬件资源
  3. 虚拟性
  4. 并发性

宏内核

所有内核代码都编译一个二进制,所有的内核代码都运行在一个大内核地址空间里,内核代码可以直接访问和调用,效率高并且性能好

微内核

把操作系统分为多个独立的功能模块,每个功能模块之间的访问需要通过消息来完成,因此效率没有那么高

  1. 宏内核架构优点:设计简洁和性能比较好,而微内核架构优势也很显示,比如稳定性和实时性等。
  2. Linux 只使用ring0和ring3 两种模式为了实现内核态和用户态

Read more

linux 六大锁机制


内核使用内存屏障的场景

和自旋锁相比,信号量有哪些特点,信号量如何实现

自旋锁机制和信号量
自旋锁同一时刻只能被一个内核代码持有,如果有另一个内核代码视图获得一个已经被持有的自旋锁,那么次内核代码需要一只等待,直到只有锁释放锁

自旋锁的特点

  1. 可以在中断上下文中使用;
  2. 如果要求,自旋锁需要尽快完成临界区的执行任务
  3. 忙等待的锁机制
  4. 统一时间它只能有一个内核代码可以获得锁
    typedef struct spinlock {
        union{
            struct raw_spinlock rlock;
            #ifdef config_d

Read more

linux 内核启动流程


电源启动开始到BIOS

  1. 实时模式: 在此模式地址访问为真实内存地址所在位置,软件可以不受限制的操作所有的空间和IO设备
  2. 保护模式:全部使用虚拟内存和页等机制对内存进行保护,相比实时模式更为安全可靠,同时也增加拓展性和灵活性
  3. 从启动电源到BIOS: 按下电源-》主板会向电源组发出信号-》接受到信号后,当主板收到电源正常启动的信号之后,主板会启动cpu(cpu重置所有寄存器数据,并且初始化数据)比如32位系统:实模式采用内存端来管理0--0xFFFFF的这1MB内存空间,但是只有16位寄存器,所以最大地址只能是0xFFFFF(64kB)

从BIOS 到 BootLoader

  1. BIOS执行程序

Read more