嵌入式Linux中文站

Linux中断机制

阅读(163)

中断向量 中断(interrupt)被定义为一个事件,该事件改变处理器执行的指令顺序,这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步(synchronous)中断和异步(asynchronous)中断。 同步中断指的是当指令执行时由CPU控制单元产生的, 之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断 。 异步中断是由其他硬件设备依照CPU时钟信号随机产生的。 在Intel处理器中,同步中断被称为异常,异步中断被称为中断。 异常(同步中断) 当CPU执行指令时探

linux虚拟内存

阅读(136)

Linux 的虚拟内存管理有几个关键概念: 每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址 虚拟地址可通过每个进程上页表与物理地址进行映射,获得真正物理地址 如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。 基于以上认识,这篇文章通过本人以前对虚拟内存管理的疑惑由浅入深整理了以下十个问题,并通过例子和系统命令尝试进行解答。 Linux 虚拟地址空间如何分布? 32 位和

漫谈传统的Linux初始化系统的运行级别

阅读(142)

了解运行级别是如何配置的,如何改变系统运行级别以及修改对应状态下运行的服务。 在 Linux 系统中,运行级别run level是指运维的级别,用于描述一种表明什么服务是可用的系统运行状态。 运行级别 1 是严格限制的,仅仅用于系统维护;该级别下,网络连接将不可操作,但是管理员可以通过控制台连接登录系统。 其他运行级别的系统允许任何人登录和使用,但是不同级别中可使用的服务不同。本文将探索如何配置运行级别,如何交互式改变系统运行级别以及修改该状态下可用的服务。 Linux 系统的默认运行状态是一个在系统开机

Linux slab 分配器剖析

阅读(221)

动态内存管理 内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能: 最小化管理内存所需的时间 最大化用于一般应用的可用内存(最小化管理开销) 内存管理实际上是一种关于权衡的零和游戏。您可以开发一种使用少量内存进行管理的算法,但是要花费更多时间来管理可用内存。也可以开发一个算法来有效地管理内存,但却要使用更多的内存。最终,特定应用程序的需求将促使对这种权衡作出选择。 每个内存管理器都使用了一种基于堆的分配策略。在这种方法中,大块内存(称为堆)用来

内核比较: 2.6 内核中改进了内存管理

阅读(98)

随着 Linux 内核的发展和成熟,更多的用户期待着 Linux 可以运行非常大的系统来处理科学分析应用程序或者甚至海量数据库。这些企业级的应用程序通常需要大量的内存才能好好运行。2.4 Linux 内核有识别相当大数量的内存的功能,但是 2.5 内核发生了很多改变,使其有能力以更有效的方式处理更大量的内存。 反向映射 在 Linux 内存管理器中,页表保持对进程使用的内存物理页的追踪,它们将虚拟页映射到物理页。这些页中有一些可能不是长时间使用,它们应该被交换出去。不过,在它们可以被交换出去之前,必须找到

Linux 同步方法剖析

阅读(103)

本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6.23 版内核的许多可用方法提供了应用程序接口(API)。但是在深入学习 API 之前,首先需要明白将要解决的问题。 并发和锁定 当存在并发特性时,必须使用同步方法。当在同一时间段出现两个或更多进程并且这些进程彼此交互(例如,共享相同的资源)时,就存在并发现象。 在单处理器(uniprocessor,UP)主机上可能发生并发,在这种主机中多个线程共享同一个 CPU 并且抢占(preemption)创建竞态条件。抢占通过临时中断一个线

Linux如何利用容器轻松应对性能工程?

阅读(200)

导读 性能分析的价值超出了服务负载所需的计算资源或满足峰值需求所需的应用实例数量的估计。性能显然与成功企业的基本要素挂钩。它揭示了用户的总体体验,包括确定什么会拖慢客户预期的响应时间,通过设计满足带宽要求的内容交付来提高客户粘性,选择最佳设备,最终帮助企业发展业务。 应用程序的性能决定了软件能多快完成预期任务。这回答有关应用程序的几个问题,例如: 峰值负载下的响应时间 与替代方案相比,它易于使用,受支持的功能和用例 运营成本(CPU 使用率、内存需求、数据吞吐量、带宽等) 问题 当然,这是对业务服务的性能

Linux动态链接库的创建与使用

阅读(89)

Linux动态链接库的创建与使用 1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个程序函数库简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。 程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries)。 静态函数库是在程序执