TL;DR: This edition of Understanding the Linux Kernel covers Version 2.6, which has seen significant changes to nearly every kernel subsystem, particularly in the areas of memory management and block devices.
Abstract: In order to thoroughly understand what makes Linux tick and why it works so well on a wide variety of systems, you need to delve deep into the heart of the kernel. The kernel handles all interactions between the CPU and the external world, and determines which programs will share processor time, in what order. It manages limited memory so well that hundreds of processes can share the system efficiently, and expertly organizes data transfers so that the CPU isn't kept waiting any longer than necessary for the relatively slow disks. The third edition of Understanding the Linux Kernel takes you on a guided tour of the most significant data structures, algorithms, and programming tricks used in the kernel. Probing beyond superficial features, the authors offer valuable insights to people who want to know how things really work inside their machine. Important Intel-specific features are discussed. Relevant segments of code are dissected line by line. But the book covers more than just the functioning of the code; it explains the theoretical underpinnings of why Linux does things the way it does.This edition of the book covers Version 2.6, which has seen significant changes to nearly every kernel subsystem, particularly in the areas of memory management and block devices. The book focuses on the following topics:Memory management, including file buffering, process swapping, and Direct memory Access (DMA)The Virtual Filesystem layer and the Second and Third Extended FilesystemsProcess creation and schedulingSignals, interrupts, and the essential interfaces to device driversTimingSynchronization within the kernelInterprocess Communication (IPC)Program executionUnderstanding the Linux Kernel will acquaint you with all the inner workings of Linux, but it's more than just an academic exercise. You'll learn what conditions bring out Linux's best performance, and you'll see how it meets the challenge of providing good system response during process scheduling, file access, and memory management in a wide variety of environments. This book will help you make the most of your Linux system.
TL;DR: The third edition of Linux Kernel Development includes new and updated material throughout the book, including an all-new chapter on kernel data structures and Extended coverage of virtual memory and memory allocation Tips on debugging the Linux kernel.
Abstract: Linux Kernel Development details the design and implementation of the Linux kernel, presenting the content in a manner that is beneficial to those writing and developing kernel code, as well as to programmers seeking to better understand the operating system and become more efficient and productive in their coding The book details the major subsystems and features of the Linux kernel, including its design, implementation, and interfaces It covers the Linux kernel with both a practical and theoretical eye, which should appeal to readers with a variety of interests and needs The author, a core kernel developer, shares valuable knowledge and experience on the 26 Linux kernel Specific topics covered include process management, scheduling, time management and timers, the system call interface, memory addressing, memory management, the page cache, the VFS, kernel synchronization, portability concerns, and debugging techniques This book covers the most interesting features of the Linux 26 kernel, including the CFS scheduler, preemptive kernel, block I/O layer, and I/O schedulers The third edition of Linux Kernel Development includes new and updated material throughout the book: An all-new chapter on kernel data structures Details on interrupt handlers and bottom halves Extended coverage of virtual memory and memory allocation Tips on debugging the Linux kernel In-depth coverage of kernel synchronization and locking Useful insight into submitting kernel patches and working with the Linux kernel community
TL;DR: A new operating system, Arrakis, is designed and implemented that splits the traditional role of the kernel in two, allowing most I/O operations to skip the kernel entirely, while the kernel is re-engineered to provide network and disk protection without kernel mediation of every operation.
Abstract: Recent device hardware trends enable a new approach to the design of network server operating systems. In a traditional operating system, the kernel mediates access to device hardware by server applications, to enforce process isolation as well as network and disk security. We have designed and implemented a new operating system, Arrakis, that splits the traditional role of the kernel in two. Applications have direct access to virtualized I/O devices, allowing most I/O operations to skip the kernel entirely, while the kernel is re-engineered to provide network and disk protection without kernel mediation of every operation. We describe the hardware and software changes needed to take advantage of this new abstraction, and we illustrate its power by showing improvements of 2-5x in latency and 9x in throughput for a popular persistent NoSQL store relative to a well-tuned Linux implementation.
TL;DR: In this article, a set of programs enable the start and the efficient and secure operation of an operating system (OS) installed on a virtual hard disk that is stored on an external storage device.
Abstract: A set of programs enable the start and the efficient and secure operation of an operating system (OS) installed on a virtual hard disk that is stored on an external storage device. When the external storage device is connected to a host system, a user can start the OS in a virtual machine on the host system. The virtual machine execution is controlled by a virtual machine monitor (VMM) installed on the host system. At startup of the program, the type of VMM installed on the host system is autodetected. Host system parameters that are relevant for an optimal configuration of the virtual machine, such as the amount of available physical memory, are captured. Before launch of the virtual machine the OS installed on the virtual hard disk is dynamically modified to support hardware emulated by the selected VMM. Configuration templates and scripts for supported VMM types are stored on the external storage device. The template or script that corresponds to the autodetected VMM is used to create an optimized virtual machine configuration. Virtual machine configuration parameters that depend upon host settings are adapted. The created virtual machine configuration includes a specific storage configuration: The virtual machine is configured to use three virtual hard disks for system, user, and paging data. The virtual hard disks for system and user data are configured to use copy-on-write (COW) functionality supported by the respective VMM. With the COW configuration the virtual machine's write operations are redirected to a location in a file system on an internally attached storage medium. The non-persistent virtual hard disk used for the page data is entirely stored in the temporary location as an expanding virtual hard disk and is erased after shutdown. If data persistence is required for user and/or system data the respective overlay files are merged with the corresponding virtual hard disk base files on the external storage device after shutdown of the virtual machine. When the program managing the configuration and launch process is closed after shutdown of the virtual machine, all temporary files are deleted. The dynamic COW configuration with deferred, consolidated write operations to the external storage device offers the benefits of improved write performance and security and extended lifetime of the external storage device. The latter is particularly important for flash-memory-based devices with a finite number of sustainable write/erase cycles per storage block.
TL;DR: In this paper, the authors provide a file sharing functionality that enables users to share files with other nearby computing devices by establishing wireless links with nearby devices and determining their relative locations, and transmit files using networks and addresses provided over the device-to-device communication links.
Abstract: Methods and devices provide a gesture activated file sharing functionality enabling users to share files with other nearby computing devices. The file sharing functionality may include establishing wireless links with nearby devices and determine their relative locations. The computing device may detect a file sharing gesture and transmit files to or request files from a nearby device in response to the gesture. Base on gesture parameters, e.g., direction, speed and shape, and computing device attitude parameters, e.g., tilt angle and pointing direction, the computing device may identify a targeted device to which a file may be transmitted. The computing device may request user verification of the identified device and send a request to transmit files to the targeted device. The computing devices may transmit files using networks and addresses provided over the device-to-device communication links.