M. Tim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application Programming、AI Application Programming 以及 BSD Sockets Programming from a Multilanguage Perspective 等书的作者。他的工程背景非常广泛,从同步宇宙飞船的内核开发到嵌入式架构设计,再到网络协议的开发。Tim 是位于科罗拉多州 Longmont 的 Emulex Corp. 的一名顾问工程师。
用 Graphviz 可视化函数调用
花一些时间遍历一下源代码,可以向您展现所有的函数调用过程;但是如果函数指针非常复杂,或者代码太长且晦涩难懂,那么这个过程就可能更加困难了。本文将向您介绍如何使用开源软件和一些定制的代码来构建一个动态的图形函数调用生成器。
|
Linux 套接字编程中的 5 个隐患
Socket API 是网络应用程序开发中实际应用的标准 API。尽管该 API 简单,但是开发新手可能会经历一些常见的问题。本文识别一些最常见的隐患并向您显示如何避免它们。
|
提高 Linux 上 socket 性能
使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet
在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制
Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对 GNU/Linux®
环境进行优化从而达到最好结果的方法。
|
使用 SCTP 优化网络
流控制传输协议(Stream Control Transmission
Protocol,SCTP)是一种可靠的传输协议,它在两个端点之间提供稳定、有序的数据传递服务(非常类似于
TCP),并且可以保护数据消息边界(例如 UDP)。然而,与 TCP 和 UDP 不同,SCTP
是通过多宿主(Multi-homing)和多流(Multi-streaming)功能提供这些收益的,这两种功能均可提高可用性。在本文中,我们将学习
Linux 2.6 内核中 SCTP 的关键特性,并通过服务器和客户机的源代码了解该协议提供多流的能力。
|
Linux 引导过程内幕
引导 Linux 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC
机器,很多流程都惊人地相似。本文将探索 Linux
的引导过程,从最初的引导到启动第一个用户空间应用程序。在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始
RAM 磁盘以及 Linux 引导的其他一些元素。
|
使用异步 I/O 大大提高应用程序的性能
Linux 中最常用的输入/输出(I/O)模型是同步
I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O
请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步
I/O(AIO)应用程序接口(API)就提供了这种功能。在本文中,我们将对这个 API 概要进行介绍,并来了解一下如何使用它。
|
开源机器人技术工具包
构建机器人需要涉及很多学科的技能,包括嵌入式固件和硬件设计、传感器的选择、控制系统的设计,以及机械结构设计。而仿真环境可以为测试、评测和机器人技术算法的可视化提供一个虚拟的舞台,而不用花费高昂的开发成本(和时间)。本文将简要介绍一些
Linux 的开源机器人技术工具包及功能,并帮助我们判断哪些技术最适合我们使用。
|
Linux 的版本控制
版本控制系统或资源管理系统是现代软件开发的一个重要方面。不使用版本控制系统就如同超速驾驶一辆汽车:很刺激,也可能会更快抵达目的地,但事故却在所难免。本文概述了软件配置管理(SCM)系统及其优势,内容涵盖
CVS、Subversion、Arch 和 Git。本文还讨论了最常见的 SCM
体系结构。本文在最后给出了新出现的一些方法及这些方法与先前方法的区别。
|
Linux 上的数据可视化工具
Linux 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D
制图,再到科学图形编程和图形模拟。幸运的是,这方面的工具有很多开放源码实现,包括 gnuplot、GNU
Octave、Scilab、MayaVi、Maxima
等。每个工具都有自己的优缺点,并且都是针对不同的应用程序而设计的。对这些开放源码图形可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我们的应用程序。
|
在 Linux 上构建 Web spider
Web spider 是用来进行 Internet 信息的搜索、过滤和聚合的软件代理。使用通用脚本语言和一些 Web
模块组合,就可以轻松地开发自己的 Web spider。本文介绍了如何为 Linux 构建 spider 和 scraper,从而实现在 Web
站点上爬行并搜集信息,具体到本例就是搜集股票数据。
|
并行启动应用程序从而加速 Linux 的引导
对于 Linux 的最大抱怨(尤其来自开发人员)就是 Linux 的引导速度。默认情况下,Linux
是一个通用的操作系统,可以作为一个开箱即用的客户机桌面或服务器使用。由于 Linux
具有很好的灵活性,因此可以用作各种用途的基础,但对于任何特定的配置来说,尚不是最理想的选择。本文将向您展示可以提高 Linux
引导速度的一些方法,包括两种可以对初始化过程进行并行化操作的方法。本文还介绍了如何图形化地表现引导过程的性能。
|
使用 QEMU 进行系统仿真
QEMU 是一个面向完整 PC 系统的开源仿真器。除了仿真处理器外,QEMU
还允许仿真所有必要的子系统,如连网硬件和视频硬件。它还允许实现高级概念上的仿真(如对称多处理系统(多达 255 个 CPU)和其他处理器架构(如
ARM 和 PowerPC)。本文将研究 QEMU 及其架构,并展示了如何在 Linux 主机上仿真来宾操作系统。
|
Linux 同步方法剖析
在学习 Linux 的过程中,您也许接触过并发(concurrency)、临界段(critical
section)和锁定,但是如何在内核中使用这些概念呢?本文讨论了 2.6 版内核中可用的锁定机制,包括原子运算符(atomic
operator)、自旋锁(spinlock)、读/写锁(reader/writer lock)和内核信号量(kernel
semaphore)。本文还探讨了每种机制最适合应用到哪些地方,以构建安全高效的内核代码。
|
Linux 文件系统剖析
在文件系统方面,Linux 可以算得上操作系统中的 “瑞士军刀”。Linux
支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统。对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux
是极好的平台。本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构。
|
Linux SCSI 子系统剖析
Small Computer Systems Interface (SCSI)
是一组标准集,它定义了与大量设备(主要是与存储相关的设备)通信所需的接口和协议。 Linux 提供了一种 SCSI
子系统,用于与这些设备通信。Linux 是分层架构的一个很好的例子,它将高层的驱动器(比如磁盘驱动器或光驱)连接到物理接口,比如 Fibre
Channel 或 Serial Attached SCSI(SAS)。本文向您介绍了 Linux SCSI
子系统,并且讨论了这些子系统将来的发展方向。
|
针对 OLPC 膝上型电脑的应用程序开发
XO 膝上型电脑(由 One-Laptop-Per-Child 组织所发起的)是一个廉价的膝上型电脑项目,旨在帮助教育全世界的儿童。XO
膝上型电脑包含了多项创新,例如新颖、廉价且耐用的硬件设计以及使用 GNU/Linux 作为底层操作系统。XO 也包含一个用 Python
编写的应用程序环境,该环境含有一个叫做 Sugar 的任何人(包括儿童)都能用的人机界面。本文探讨了 Sugar API 并学习如何在
Sugar 中使用 Python 语言开发和调试图形活动。
|
实时 Linux 架构剖析
Linux
的速度或效率都非常不错,只是在一些情况下,这样的速度还不能满足需求。我们需要的是在特定的容差范围内确定性地满足调度期限的能力。本文将揭示各种实现实时
Linux 的可选方案以及它们如何实现实时性 - 从早期的模仿虚拟化解决方案的架构到如今标准 2.6 内核中可用的选项。
|
Linux 日志文件系统剖析
在近代历史上,日志文件系统被认为十分奇特,主要是处于研究阶段。而如今,日志文件系统(ext3)已经成为 Linux
的缺省文件系统。本文向大家揭示了日志文件系统背后的一些思想,以及在电源故障或系统崩溃时,如何提供更好的完整性。此外本文还介绍了现行的几种日志文件系统和下一代日志文件系统。
|
Linux 可加载内核模块剖析
Linux 可加载内核模块(从内核的 1.2 版本开始引入)是 Linux 内核的最重要创新之一。它们提供了可伸缩的、动态的内核。探索隐藏在可加载模块后面的原理,并学习这些独立的对象如何动态地转换成 Linux 内核的一部分。
|
Linux 动态库剖析
动态链接的共享库是 GNU/Linux
的一个重要方面。该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用。本文研究了创建和使用静态库的过程,详细描述了开发它们的各种工具,并揭秘了这些库的工作方式。
|
认识 GCC 4
这几年,GNU Compiler Collection(GCC)经历了从 GCC 3 到 GCC 4 的巨大转变。GCC 4
引入了一个新的优化框架(以及新的中间代码表示法)、新的目标和语言支持以及多种新的属性和选项。认识 GCC 4 的主要新特性及其优点。
|
使用 Linux 和 Hadoop 进行分布式计算
人们每天都依赖搜索引擎以从 Internet 的海量数据中找到特定的内容,但您曾经想过这些搜索是如何执行的吗?一种方法是 Apache 的
Hadoop,它是一个能够对海量数据进行分布式处理的软件框架。Hadoop 的一个应用是并行索引 Internet Web 页面。Hadoop
是一个受到 Yahoo!、Google 和 IBM 等公司支持的 Apache 项目。
本文将介绍 Hadoop 框架,并展示它为什么是最重要的基于 Linux 的分布式计算框架之一。
|
Linux 进程管理剖析
Linux 的用户空间进程的创建和管理所涉及的原理与 Unix 有很多共同点,但也有一些特定于 Linux 的独特之处。在本文中,了解 Linux 进程的生命周期,探索用户进程创建、内存管理、调度和销毁的内核内幕。
|
Linux 上的云计算
云计算和存储通过 Internet 将物理资源(比如处理器和存储空间)转换成可伸缩的共享资源(将云计算和存储作为
“服务”)。尽管虚拟化不是一个新概念,但是通过服务器虚拟化共享物理系统使得云计算和存储更加高效、伸缩性更强。通过云计算,用户可以访问大量的计算和存储资源,并且不必关心它们的位置和它们是如何配置的。正如您所料,Linux
在这个过程中扮演了重要的角色。探索云计算,了解其中的奥秘。[通过最新参考资料链接从 developerWorks
上获得关于云计算的最新内容。]
|
剖析 ext4
第 4 个扩展文件系统,即 ext4,是下一代的日志文件系统,它与上一代文件系统 ext3 是向后兼容的。尽管 ext4
目前还不是标准文件系统,但它将成为大部分下一代 Linux 发行版的默认文件系统。了解 ext4,以及它为什么将成为您最喜欢的新文件系统。
|
用 Guile 编写脚本
Scheme 是一种编程语言,而 Guile(Scheme 解释器和库)将它转换成嵌入式脚本语言,从而很好地将动态性引入到静态应用程序中。现在我们将快速概览 Guile,了解它在构建可扩展应用程序方面的强大特性。
|
Linux 内核中的 GCC 特性
Linux 内核使用 GNU Compiler Collection (GCC) 套件的几个特殊功能。这些功能包括提供快捷方式和简化以及向编译器提供优化提示等等。了解这些特殊的 GCC 特性,学习如何在 Linux 内核中使用它们。
|
Linux 内核的发展
生命的必然不仅包括死亡和纳税,还包括 GNU/Linux 操作系统的发展,最新的两个内核发布的确没有让人失望。2.6.28 和
2.6.29 版本包含了大量新的功能,比如先进的企业存储协议、两个新的文件系统、WiMAX
宽带网络支持以及存储完整性检查。通过本文了解为何现在就应该升级 Linux 内核。
|
剖析 Linux hypervisor
Linux 的最重要创新之一就是转变为 hypervisor(运行其他操作系统的操作系统)。现在涌现许多使用 Linux 作为内核的
hypervisor 解决方案。本文探索hypervisor背后的原理,以及两个使用 Linux 作为平台的 hypervisor(KVM 和
Lguest)。
|
Linux 虚拟系统文件交换器剖析
Linux 的最显著特征是灵活性和扩展性,例如它的虚拟文件系统交换器(VFS)。您可以在各种设备上创建文件系统,包括传统的磁盘、USB
flash 驱动、内存以及其他储存设备。您还可以在另一个文件系统环境中嵌入文件系统。探索导致 VFS 如此强大的因素,并了解 VFS
的主要接口和进程。
|
虚拟设备和 Open Virtualization Format
虚拟化不仅推进了服务器效率最大化的程度,还开启了通向以前不可能实现的新技术的大门。虚拟设备就是这样一种技术,它彻底改变了软件交付、配置和管理的方式。但是虚拟设备背后的力量在于在不同管理程序(hypervisor)之间共享虚拟设备的能力。了解虚拟设备背后的理念和好处,发现一个用于虚拟设备互操作性的标准解决方案
—— Open Virtualization Format。
|
Linux 虚拟化和 PCI 透传技术
处理器已经演变为针对虚拟环境提高性能,但 I/O 方面发生了什么变化呢?了解一种名为设备(或 PCI)透传(passthrough)的
I/O 性能增强技术,这种创新技术通过使用来自 Intel (VT-d) 或 AMD (IOMMU) 的硬件支持改进 PCI 设备的性能。
|
下一代 Linux 文件系统:NiLFS(2) 和 exofs
Linux 在文件系统领域不断创新。它支持任何操作系统上的众多不同文件系统。它还提供尖端文件系统技术。Linux
最近又引入两种新的文件系统,它们是 NiLFS(2) 日志结构文件系统和 exofs
基于对象的存储系统。探索这两种文件系统背后的动机和它们的优点。
|
Linux 自检和 SystemTap
现代的操作系统内核提供自检功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为
SystemTap 的开放源码基础设施,它为 Linux 内核提供这种动态的自检。
|
Linux 2.6 Completely Fair Scheduler 内幕
任务调度器是任何操作系统的关键部分,Linux 在此领域中不断发展和创新。在内核 2.6.23 中,推出了
Completely Fair Scheduler (CFS)。这款调度器不依赖于运行队列而是使用红黑树 (red-black tree) 实现任务管理。
本文介绍 CFS 的设计思想、其实现及其与之前的 O(1) 调度器相比的优势。
|
Libvirt 虚拟化库剖析
Libvirt 库是一种实现 Linux 虚拟化功能的 Linux API,它支持各种 Hypervisor,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品。本文主要探讨 libvirt 及其用途和架构。
|
Virtio:针对 Linux 的 I/O 虚拟化框架
Linux 内核支持多种虚拟化模式,并且支持的数量随着虚拟化的进步和新模式的出现(例如
lguest)而增加。但是,让这些虚拟化模式能够在 Linux 之上运行之后,又如何让它们能够在 I/O 虚拟化方面利用底层内核呢?答案是使用
virtio,它为 hypervisor 和一组通用的 I/O 虚拟化驱动程序提供高效的抽象。探索 virtio 并了解为什么 Linux
将成为最佳的 hypervisor。
|
内核 API,第 2 部分:可延迟函数、内核微线程以及工作队列
对于高频率线程操作,Linux 内核提供微线程以及工作队列。
微线程和工作队列执行延迟功能并替代驱动程序当中原有的 bottom-half 机制。
本文研究如何在内核中使用微线程和工作队列,并展示如何利用这些 APIs 来构建可延迟函数。
|
Linux Kernel Shared Memory 剖析
作为一个系统管理程序(hypervisor),Linux 有几个创新,2.6.32 内核中一个有趣的变化是 Kernel Shared
Memory (KSM)。KSM 允许这个系统管理程序通过合并内存页面来增加并发虚拟机的数量。本文探索 KSM
背后的理念(比如存储去耦合)、KSM 的实现、以及如何管理 KSM。
|
用 Hadoop 进行分布式数据处理,第 1 部分: 入门
本文是讨论 Hadoop 的系列中的第一篇。本文介绍 Hadoop 框架,包括 Hadoop 文件系统 (HDFS)
等基本元素和常用的节点类型。学习如何安装和配置单节点 Hadoop 集群,然后研究 MapReduce 应用程序。最后,学习使用核心 Web
界面监视和管理 Hadoop 的方法。
|
Ceph:一个 Linux PB 级分布式文件系统
Linux 持续不断进军可扩展计算空间,特别是可扩展存储空间。Ceph 最近才加入到 Linux
中令人印象深刻的文件系统备选行列,它是一个分布式文件系统,能够在维护 POSIX 兼容性的同时加入了复制和容错功能。探索 Ceph
的架构,学习它如何提供容错功能,简化海量数据管理。
|
用 Hadoop 进行分布式数据处理,第 2 部分: 进阶
本系列的第一篇文章展示了如何在一个单节点集群中使用
Hadoop。本文在此基础之上继续介绍一个更加高级的设置,即使用多个节点进行并行处理。展示了多节点集群所需的各种节点类型,并探讨了一个并行环境中的
MapReduce 功能。本文还深入探究了 Hadoop 的管理方面 —— 同时基于命令行和 Web。
|
用 Hadoop 进行分布式数据处理,第 3 部分: 应用程序开发
通过已经获得的在单节点和多节点体系结构中 Hadoop 的配置、安装以及使用的经验,您现在可以转到在 Hadoop
基础设施内开发应用程序的任务上。本文是系列的最后一篇,通过简单的 mapper 和 reducer 应用程序探索了 Hadoop API
和数据流并演示了它们的使用。
|
从 Linux 内核访问用户空间内存
因为内核和用户空间存在于不同的虚拟地址空间中,在它们之间移动数据需要特别注意。研究虚拟地址空间和内核 API 理念,用于将数据移入或移出用户空间,并学习其他的一些用于映射内存的映射技术。
|
Linux 内核剖析
Linux 内核是一个庞大而复杂的操作系统的核心,不过尽管庞大,但是却采用子系统和分层的概念很好地进行了组织。在本文中,您将探索 Linux 内核的总体结构,并学习一些主要的子系统和核心接口。您还可以通过其他 IBM 文章的链接更深入地进行学习。
|
探索 Linux 内核虚拟机
Linux 既有良好的灵活性,在虚拟化方面同样出色。但是最近,随着内核虚拟机(KVM)的出现,Linux 虚拟化的前景发生了变化。KVM
是构成主流 Linux 内核(V2.6.20)一部分的第一个虚拟化解决方案。KVM 支持 Linux 客户操作系统的虚拟化 ——
甚至支持其硬件对虚拟化敏感的 Windows 系统的虚拟化。了解 Linux KVM 的架构并了解它与内核的紧密集成为何会改变您使用 Linux
的方式。
|
Linux 网络栈剖析
Linux 操作系统的最大特性之一就是它的网络栈。它最初源于 BSD
的网络栈,具有一套非常干净的接口,组织得非常好。其接口范围从协议无关层(例如通用 socket
层接口或设备层)到各种网络协议的具体层。本文将从分层角度对 Linux 网络栈的接口进行探索,并介绍其中的一些主要结构。
|
Linux slab 分配器剖析
良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存碎片和内存回收需求的影响。现在,Linux
内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。本文将探索
slab 分配器背后所采用的思想,并介绍这种方法提供的接口和用法。
|
Linux 和对称多处理
正如主流中央处理器(CPU)供应商所证明的那样,多核处理器随时准备着占领桌面和嵌入式市场。多处理带来了更高的性能,也同时带来了新的问题。本文将探讨多处理和开发使用 SMP 的 Linux 应用程序背后的思想。
|
虚拟 Linux
虚拟化的含义丰富,应用广泛。目前虚拟化技术主要关注于服务器虚拟化,即在一个宿主计算机上提供多个独立操作系统。本文将探索虚拟化背后的思想,然后讨论实现虚拟化的一些技术。我们还将了解现有的其他一些虚拟化技术,例如 Linux 上操作系统的虚拟化。
|
Sugar、XO 膝上型电脑和 OLPC
One Laptop per Child (OLPC) 是一个组织,旨在利用相关软件技术开发低成本的膝上型电脑 (USD100)
以便向全世界的儿童普及计算机教育。由于针对的是儿童,所以它必须提供新颖的用户界面和应用程序以便孩子们可以把玩各种工具来尽情体验和学习。OLPC
的操作系统是 Linux 内核的一个端口,并带一种称为 Sugar 的独特界面。在本文中,您将学习有关 Sugar
人机界面的内容,了解如何在标准的 PC 上利用 QEMU 对 OLPC 膝上型电脑进行虚拟化,遍历 Sugar 和 OLPC 的各种功能。
|
使用 Linux 系统调用的内核命令
Linux 系统调用 —— 我们每天都在使用它们。不过您清楚系统调用是如何在用户空间和内核之间执行的吗?本文将探究 Linux 系统调用接口(SCI),学习如何添加新的系统调用(以及实现这种功能的其他方法),并介绍与 SCI 有关的一些工具。
|
用 coLinux 进行虚拟化
目前,用 VmWare、Xen 和 Kernel-based Virtual
Machine(KVM)进行虚拟化非常热门。但是,您是否知道也可以让 Linux 与 Microsoft Windows 进行协作?本文讨论
Cooperative Linux(coLinux),首先简单介绍虚拟化,然后讨论 coLinux 采用的方式。您还会了解如何在 Windows
上设置并运行 coLinux。
|
内核日志:API 及实现
在内核开发中,我们通常使用 printk
进行日志。但是您曾经考虑过它的过程,以及内核日志的底层实现吗?本文介绍了内核日志的整个过程,包括 printk
及用户空间日志文件的插入。
|
Linux 中的虚拟网络
随着平台虚拟化的迅速发展,对公司生态系统的其他部分进行虚拟化也并不稀奇。最近的之一就是虚拟化网络。平台虚拟化的早期实现创建了虚拟
NICs,但是今天,网络中更大的部分正在被虚拟化,例如支持在同一个服务器上或者分布在服务器间的 VM 间通信的交换机。专注于 NIC
和交换机虚拟化,探索虚拟网络背后的创意。
|
使用 Bochs 进行平台仿真
Bochs(类似于 QEMU)是一种便携式仿真器,它提供虚拟化环境,其中使用另一个操作系统上下文中的仿真平台来运行操作系统。Bochs
不是虚拟机监控程序而是对旧有软件有用的兼容 PC 的仿真器。了解有关使用 Bochs 的平台仿真及其针对硬件仿真的方法。
|
在 Linux 上运行 ZFS
尽管 ZFS
所属的操作系统未来有一定的风险,但是不妨碍它成为最先进、功能最丰富的文件系统之一。它合并了可变块大小、压缩、加密、重复数据删除、快照、克隆以及(顾名思义)对大容量的支持。了解
ZFS 背后的概念,并了解目前如何在使用用户空间文件系统(Filesystem in Userspace,FUSE)的 Linux 上使用
ZFS。
|
Linux 调度器模拟
调度是 Linux 内核最复杂也是最有趣的一个方面。为单核计算机开发的调度器很难合适地在 4
核服务器上运行。幸运的是,当您为了能在一系列拓扑结构上验证您的调度器而进行任意硬件目标建模时,Linux Scheduler Simulator
(LinSched) 可以帮您在用户空间运行 Linux 调度器(针对调度器原型)。了解 LinSched 以及如何试验 Linux
的调度器。
|
Linux 与存储生态环境
Linux 就像是文件系统的瑞士军刀,它还为桌面系统和服务器提供广泛的存储技术。除了文件系统,Linux 结合了世界级的 NAS 和
SAN 技术、数据保护、存储管理、云支持以及固态存储。了解有关 Linux 存储生态系统的更多信息以及为何它能成为服务器市场霸主。
|
嵌入式系统的虚拟化
当今的技术新闻充斥着服务器和桌面机虚拟化的故事,但还有一种虚拟化技术发展迅猛:嵌入式虚拟化。嵌入式领域包含几个有用的虚拟化应用领域:移动手持式设备、安全性内核和并发性嵌入式操作系统。本文探索嵌入式虚拟化领域,解释嵌入式虚拟化进入您身边的嵌入式系统的原因。
|
应用程序虚拟化的过去与未来
如今当您听到 “虚拟机” 一词时,可能会想到虚拟化和虚拟监控程序。但是 VMs
仅仅是一个较老的抽象概念,从一个实体提取另一个实体的一种常见方法。本文探究其中两个较新的开源 VM 技术:Dalvik(Android
操作系统的 VM 核心)和 Parrot(一种用于有效执行动态语言的开源 VM 技术)。
|
Ceylon:真正的进步抑或只是另一种语言?
在计算机语言的发展史上,有很多语言号称“将成为以后的主流语言”。尽管许多利基 (niche)
语言在脚本或特殊的应用程序中得到了一定的应用,但是 C(及其衍生语言)和 Java 语言很难被取代。不过,Red Hat 的 Ceylon
看起来是一种有趣的语言特性组合。它使用著名的 C 风格语法,但是支持面向对象的一些有用的函数特性,而且强调代码的简洁性。让我们来研究一下
Ceylon,看看这种未来的 VM 语言是否能在企业软件开发领域占据一席之地。
|
评估 Linux 中的 shell
大部分日常计算任务都可通过即指即点来完成,但要真正利用 Linux 相对于其他环境的优势,您需要攻破 shell,进入命令行。有许多命令
shell 可用,从 Bash 和 Korn 到 C shell,以及各种外来的陌生 shell。了解哪些 shell 适合您。[注意:清单 2
和清单 3 经过了细微更正。]
|
Hadoop 中的调度
了解 Hadoop 调度,并学习目前常用的两种调度算法:公平调度和容量调度。并且了解如何调优这两个算法以及各自适用的场景。
|
利用 Spark 进行数据分析和性能改进
Spark 是 Hadoop 的一种有趣的替代产品,它重点关注内存数据处理。这篇练习课程探索了 Scala、Spark 及其可调优参数的多线程和多节点性能。
|
使用 Apache Pig 处理数据
Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce
平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。本文将探索 Pig
背后的语言,并在一个简单的 Hadoop 集群中发现其用途。
|
了解可作为通用平台的 Linux 操作系统
Linux 无处不在。从最小的智能手机,到 Internet 的虚拟骨干网,再到体积最大、功能最强的超级计算机,Linux
的影子几乎无所不在。能够提供这么多平台所期望的众多功能,Linux 非常不简单。我们将探索无处不在的 Linux 以及它如何支持大大小小的设备。
|
用 SLURM 优化超级计算机内的资源管理
超级计算机之间的军备竞赛实在是非同寻常,因为它们各自不断进化的架构体现了越来越多的性能。有关超级计算机的一个有趣事实是它们都运行了某个版本的
Linux。为了在一个架构中提供最多的功能,SLURM 开源作业调度程序(由中国天河-IA 超级计算机以及即将推出的 IBM Sequoia
超级计算机采用)优化了资源分配和监视。本文将了解 SLURM 及其平行集群内的工作负载的方法。
|
Linux 内核 3.3 和 3.4 简介
Linux 内核 3.3 版本于 2012 年 3 月正式发布(紧接着,版本 3.4 也于 5 月份发布了)。除了针对大量小功能和
bug 进行修复之外,这两个版本也进行了一些很重要的更改,包括 Google Android 项目的合并、Open vSwitch
的合并、一些网络改进(包括组合网络设备),以及各种文件系统、内存管理和虚拟化的更新。探讨版本 3.3 和 3.4 中的重要更改,并提前了解未来
3.5 版本 中将进行的更改。
|
实践:使用 Apache Hadoop 处理日志
日志是任何计算系统中一个必不可少的部分,支持从审计到错误管理等功能。随着日志的发展和日志来源数量的不断增加(比如在云环境中),有必要提供一个可扩展的系统来高效处理日志。这篇实践将探讨如何在典型
Linux 系统上使用 Apache Hadoop 来处理日志。
|
了解 Ruby 中的具象状态传输 (REST)
REST(也称 Representational State
Transfer)是一种分布式通信架构,很快就成为了云的通用语言。它极其简单,但具有很强的表现力,可以表示大量的云资源和整体的配置与管理。了解如何使用
Ruby 从头开始开发一种简单的 REST 代理,从而了解其实现和使用。
|
使用 Twitter Storm 处理实时的大数据
Storm 是一个开源的、大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与语言无关。了解 Twitter Storm、它的架构,以及批处理和流式处理解决方案的发展形势。
|
使用 Virtual Machine Manager 管理虚拟机
探讨虚拟机管理器 (virt-manager) 的使用、它在普通硬件上的能力,以及如何使用它来管理和监视实时虚拟机性能。
|
Reference
http://www.ibm.com/developerworks/cn/linux/
http://www.ibm.com/developerworks/cn/linux/l-linux-kernel/index.html
http://www.ibm.com/developerworks/cn/linux/l-linux-networking-stack/index.html