• 死锁

    日期:

    死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请...

  • 优先级翻转

    日期:

    uCos是一个典型的按照优先级调度的操作系统,优先级高的任务先运行,优先级低的任务后运行,然而在任务的调度过程中可能会出现优先级翻转的情况。在嵌入式系统的应用中,实时性是一个重要的指标,而优先级翻转是影响系统实时性的重要问题。 例如:有优先级为A...

  • 自旋锁

    日期:

    自旋锁 自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,即在标志寄存器中关闭/打开中断标志位,不需要自旋锁)。比如有A、B两个处理器协同工作,如果A...

  • Linux空间划分 & MMU

    日期:

    Linux内核地址空间划分 通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。32位的Linux系统中从0x00000000到0xFFFFFFFF整个4GB虚拟存储空间。 内核空间:内核空间表示运行在处理...

  • 如何减少缺页异常

    日期:

    如何减少换页错误?() 1. 进程倾向于占用CPU 2. 访问局部性(localilty of reference)满足进程要求 3. 进程倾向于占用I/O 4. 使用基于最短剩余时间(shortest remaining time)的调度机制 5. 减少页大小 换页错误,一般称为缺页异常。每个进程都有一段自己...

  • Linux内核态与用户态数据交换方式(一)

    日期:

    在Linux下用户空间与内核空间数据交换的方式一 本系列文章包括两篇,它们文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具...

  • Linux内核态与用户态数据交换方式(二)

    日期:

    本系列文章包括两篇,它们文详细地地介绍了Linux系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与sysfs、 sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使 用。本文是...

  • Linux_数据段、代码段、堆栈段、BSS段的区别

    日期:

    5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收...

  • Linux_微内核和单内核

    日期:

    Linux大部分都是单内核的 操作系统内核可能是微内核,也可能是单内核(后者有时称之为宏内核Macrokernel)。按照类似封装的形式,这些术语定义如下: 微内核(Microkernelkernel)――在微内核中,大部分内核都作为单独的进程在特权状态下运行,他们通过消息...

  • Linux内存分配中的堆和栈

    日期:

    1、什么是堆栈? 2、一道微软的笔试题。 3、自己写的两个关于堆栈的例子? 4、如何动态申请二维数组? 一、什么是堆栈? 1、内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量...