Making I/O Virtualization Easy with Device Files

Total Page:16

File Type:pdf, Size:1020Kb

Making I/O Virtualization Easy with Device Files Making I/O Virtualization Easy with Device Files Technical Report 2013-04-13, Rice University Ardalan Amiri Sani?, Sreekumar Nairy, Lin Zhong?, Quinn Jacobsonz ?Rice University, yDynavisor, Inc., zVibrado Technologies Abstract different versions of the same OS. As a result, we tar- get our solutions for scenarios like having multiple vir- Personal computers have diverse and fast-evolving I/O tual machines in the same personal computer or reusing devices, making their I/O virtualization different from legacy code. that of servers and data centers. In this paper, we present our recent endeavors in simplifying I/O virtu- While good solutions exist for CPU and memory vir- alization for personal computers. Our key insight is tualization [23,33], virtualizing I/O devices of personal that many operating systems, including Unix-like ones, computers has proven to be much harder due to their abstract I/O devices as device files. There is a small diversity in function and implementation. To support and stable set of operations on device files, therefore, our targeted scenarios (above), the I/O virtualization I/O virtualization at the device file boundary requires solution must (i) require low development effort to sup- a one-time effort to support various I/O devices. port various I/O devices; (ii) allow for sharing the I/O We present devirtualization, our design of I/O virtu- device between the host and the guests; (iii) support alization at the device file boundary and its implemen- legacy devices that are not specialized for virtualization; tation for Linux/x86 systems. We are able to virtualize and (iv) be portable to support virtualization across dif- various GPUs, input devices, cameras, and audio de- ferent versions of the same OS. The solution should also vices with fewer than 4900 LoC, of which only about provide adequate performance for personal computers. 300 are specific to I/O device classes. Our measure- Unfortunately, available solutions do not provide one or ments show that devirtualized devices achieve interac- more of these properties. tive performance indistinguishable from native ones by In this paper, we study a novel boundary, device files, human users, even when running 3D HD games. for I/O virtualization that meets all the aforementioned properties for personal computers. Modern OSes, such 1 Introduction as Unix-like ones employ device files to abstract I/O devices [1]. To virtualize an I/O device, our solution The value of virtualization is increasingly recognized creates a virtual device file in the guest OS for the cor- for personal computers1 [5, 15{17, 19, 30, 32]. As per- responding device file in the host. Threads of guest sonal computers are used for diverse purposes, virtual- processes issue file operations to this virtual device file ization allows a user to have multiple virtual machines as if it were the real device file. A thin indirection layer, (or guests) inside the same computer, each for a dedi- called Common Virtual Driver (CVD), forwards such arXiv:1304.3771v1 [cs.OS] 13 Apr 2013 cated purpose: one for work, one for personal use, and file operations to the host to be executed by the unmod- one for sharing with others [36]. Also, as hardware and ified host device driver. software of personal computers evolve rapidly, virtu- Our use of device files as the boundary for I/O vir- alization allows the legacy code to be reused in new tualization is motivated by four properties: (i) Low de- systems. velopment effort: device files are common to many im- We are particularly interested in whole system virtu- portant classes of I/O devices in personal computers, alization, which allows multiple guest operating systems including GPUs, input devices, camera, and audio de- to reside in the same computer and provides strong iso- vices. Moreover, the device file boundary is narrow due lation between them. In this paper, we assume a hosted to the small set of file operations. For example, Linux hypervisor, i.e., a hypervisor running inside a host OS, has about 30 file operations, and only about 10 of them and assume the guests and the host use the same OS or are used by most I/O devices. Finally, since device files 1By personal computer, we refer to desktops and mobile are at a higher layer than device drivers, virtualization computers of diverse form factors including laptops, smart- at this boundary allows for reuse of the device drivers in phones, and tablets. the host. (ii) Sharing: virtualization at the device file boundary readily supports sharing the device between Process Thread User Space the host and the guests. If multiple host applications can use the same device file in the host OS, then guest applications can use the same device file as well. (iii) System Call/Signal Interface Kernel Legacy support: device files are used by existing devices Device File in personal computers; therefore, virtualization at this (/dev/dri/card0) boundary can support these devices. (iv) Portability: Virtual Filesystem Switch the device file boundary has been quite stable across different versions of mature OSes such as Linux. Device File Operations Interface We present our design of the CVD and its imple- Device Driver mentation for Linux/x86 computers, called devirtual- ization, which realizes the theoretical benefits analyzed above and achieves performance adequate for personal I/O Device computing. We have addressed a fundamental challenge that the guest and the host reside in different virtual- Figure 1: The simplified I/O stack in Linux ization domains, creating a barrier for forwarding the file operations from the guest to the host. Our solution to this challenge contributes two novel techniques: a Unfortunately, devirtualization is not universal and virtual memory technique, called hybrid address space, cannot virtualize all devices, such as network and block that enables efficient cross-domain memory operations, devices. This is because applications interface to these and the dual thread technique that efficiently leverages devices is sockets and file systems, and not device files. hypercalls to forward the operations and improve con- Fortunately, good solutions already exist for virtualiz- currency in cross-domain operations. ing these devices [37], as they have been critical for data Devirtualization currently supports four important centers and basic use of VMs in personal computers. classes of I/O devices for personal computers using the Devirtualization introduces the device file interface same CVD implementation with fewer than 4900 LoC, between the guest and the host, which may be abused of which about 300 are specific to each class: GPU, in- by malicious guest applications. We are currently em- put devices, such as mouse and keyboard, camera, and ploying techniques to guarantee isolation between the audio devices, such as speaker. We note that GPU has system core, e.g., the host and the hypervisor, and the not been amenable to virtualization due to its functional guests. §9 elaborates more on this issue. and implementation complexity. Yet, devirtualization easily virtualizes GPU of various makes in laptop and 2 Background desktop computers with full functionality and adequate Devirtualization targets virtualizing I/O devices for whole performance for multiple guests. system virtualization. It currently supports hosted hy- We report a comprehensive evaluation of devirtual- pervisors, where the hypervisors runs inside a host OS, ization. Our evaluation shows that devirtualization re- such as VMware Workstation. The principle and de- quires low development effort to support various I/O de- sign of devirtualization, however, apply to bare-metal vices, easily shares the device between the host and the hypervisors equally well. guests, supports legacy devices, and is portable across different versions of Linux. For interactive devices, such 2.1 I/O Stack and Devices Files as input devices, camera, and speaker, devirtualiza- Devirtualization virtualizes I/O devices by virtualizing tion achieves performance indistinguishable from that device files. Figure 1 shows a simplified I/O stack in of native by human user. For GPU, devirtualization Linux. A process thread issues a file operation by call- achieves close to or even higher than 60 frames per sec- ing the right system calls to operate on the device file; ond (the display refresh rate) on average for 3D HD these system calls are handled by the Virtual Filesys- games (1152×864), even under stress test by standard tem Switch (VFS), which invokes the file operations im- test engines. plemented by the device driver, e.g., read and memory We designed devirtualization for Unix-like OSes, such map. The kernel exports device files to user space through as Linux distributions, Mac OS X, Android, and iOS, a special filesystem, e.g., devfs (/dev) in Linux. Im- because they constitute a large number of the installa- portant file operations for I/O devices include read, tions on modern personal computers, especially smart- write, poll, notification, memory map, page fault, phones and tablets. However, we believe that with and I/O control. proper engineering, devirtualization can also be useful Threads are the execution units in the OS, issuing for other OSes, such as Windows, that also abstract the file operations. All threads of a process share the several I/O devices with device files. process address space. Therefore, we use \thread" when 2 discussing the execution of file operations, but use \pro- Process Thread Guest cess" when discussing memory operations. User Space To correctly access an I/O device, an application may Guest need to know the exact model or functional capabilities System Call/Signal Interface Kernel of the device. For example, the X Server needs to know Device File (/dev/dri/card0) the exact model of the GPU in order to load the cor- rect libraries. As such, the device driver and the kernel Virtual Filesystem Switch collect this information and export it to the user space, e.g., through special file systems of procfs and sysfs Device File Operation Interface CVD frontend in Linux.
Recommended publications
  • CSE 220: Systems Programming Input and Output
    CSE 220: Systems Programming Input and Output Ethan Blanton Department of Computer Science and Engineering University at Buffalo Introduction Unix I/O Standard I/O Buffering Summary References I/O Kernel Services We have seen some text I/O using the C Standard Library. printf() fgetc() … However, all I/O is built on kernel system calls. In this lecture, we’ll look at those services vs. standard I/O. © 2020 Ethan Blanton / CSE 220: Systems Programming Introduction Unix I/O Standard I/O Buffering Summary References Everything is a File These services are particularly important on Unix systems. On Unix, “everything is a file”. Many devices and services are accessed by opening device nodes. Device nodes behave like (but are not) files. Examples: /dev/null: Always readable, contains no data. Always writable, discards anything written to it. /dev/urandom: Always readable, reads a cryptographically secure stream of random data. © 2020 Ethan Blanton / CSE 220: Systems Programming Introduction Unix I/O Standard I/O Buffering Summary References File Descriptors All access to files is through file descriptors. A file descriptor is a small integer representing an open file in a particular process. There are three “standard” file descriptors: 0: standard input 1: standard output 2: standard error …sound familiar? (stdin, stdout, stderr) © 2020 Ethan Blanton / CSE 220: Systems Programming Introduction Unix I/O Standard I/O Buffering Summary References System Call Failures Kernel I/O (and most other) system calls return -1 on failure. When this happens, the global variable errno is set to a reason. Include errno.h to define errno in your code.
    [Show full text]
  • Introduction to Unix
    Introduction to Unix Rob Funk <[email protected]> University Technology Services Workstation Support http://wks.uts.ohio-state.edu/ University Technology Services Course Objectives • basic background in Unix structure • knowledge of getting started • directory navigation and control • file maintenance and display commands • shells • Unix features • text processing University Technology Services Course Objectives Useful commands • working with files • system resources • printing • vi editor University Technology Services In the Introduction to UNIX document 3 • shell programming • Unix command summary tables • short Unix bibliography (also see web site) We will not, however, be covering these topics in the lecture. Numbers on slides indicate page number in book. University Technology Services History of Unix 7–8 1960s multics project (MIT, GE, AT&T) 1970s AT&T Bell Labs 1970s/80s UC Berkeley 1980s DOS imitated many Unix ideas Commercial Unix fragmentation GNU Project 1990s Linux now Unix is widespread and available from many sources, both free and commercial University Technology Services Unix Systems 7–8 SunOS/Solaris Sun Microsystems Digital Unix (Tru64) Digital/Compaq HP-UX Hewlett Packard Irix SGI UNICOS Cray NetBSD, FreeBSD UC Berkeley / the Net Linux Linus Torvalds / the Net University Technology Services Unix Philosophy • Multiuser / Multitasking • Toolbox approach • Flexibility / Freedom • Conciseness • Everything is a file • File system has places, processes have life • Designed by programmers for programmers University Technology Services
    [Show full text]
  • Storage Devices, Basic File System Design
    CS162 Operating Systems and Systems Programming Lecture 17 Data Storage to File Systems October 29, 2019 Prof. David Culler http://cs162.eecs.Berkeley.edu Read: A&D Ch 12, 13.1-3.2 Recall: OS Storage abstractions Key Unix I/O Design Concepts • Uniformity – everything is a file – file operations, device I/O, and interprocess communication through open, read/write, close – Allows simple composition of programs • find | grep | wc … • Open before use – Provides opportunity for access control and arbitration – Sets up the underlying machinery, i.e., data structures • Byte-oriented – Even if blocks are transferred, addressing is in bytes What’s below the surface ?? • Kernel buffered reads – Streaming and block devices looks the same, read blocks yielding processor to other task • Kernel buffered writes Application / Service – Completion of out-going transfer decoupled from the application, File descriptor number allowing it to continue - an int High Level I/O streams • Explicit close Low Level I/O handles 9/12/19 The cs162file fa19 L5system abstraction 53 Syscall registers • File File System descriptors File Descriptors – Named collection of data in a file system • a struct with all the info I/O Driver Commands and Data Transfers – POSIX File data: sequence of bytes • about the files Disks, Flash, Controllers, DMA Could be text, binary, serialized objects, … – File Metadata: information about the file • Size, Modification Time, Owner, Security info • Basis for access control • Directory – “Folder” containing files & Directories – Hierachical
    [Show full text]
  • Linux Kernel and Driver Development Training Slides
    Linux Kernel and Driver Development Training Linux Kernel and Driver Development Training © Copyright 2004-2021, Bootlin. Creative Commons BY-SA 3.0 license. Latest update: October 9, 2021. Document updates and sources: https://bootlin.com/doc/training/linux-kernel Corrections, suggestions, contributions and translations are welcome! embedded Linux and kernel engineering Send them to [email protected] - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/470 Rights to copy © Copyright 2004-2021, Bootlin License: Creative Commons Attribution - Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0/legalcode You are free: I to copy, distribute, display, and perform the work I to make derivative works I to make commercial use of the work Under the following conditions: I Attribution. You must give the original author credit. I Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. I For any reuse or distribution, you must make clear to others the license terms of this work. I Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Document sources: https://github.com/bootlin/training-materials/ - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/470 Hyperlinks in the document There are many hyperlinks in the document I Regular hyperlinks: https://kernel.org/ I Kernel documentation links: dev-tools/kasan I Links to kernel source files and directories: drivers/input/ include/linux/fb.h I Links to the declarations, definitions and instances of kernel symbols (functions, types, data, structures): platform_get_irq() GFP_KERNEL struct file_operations - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/470 Company at a glance I Engineering company created in 2004, named ”Free Electrons” until Feb.
    [Show full text]
  • A Full GPU Virtualization Solution with Mediated Pass-Through
    A Full GPU Virtualization Solution with Mediated Pass-Through Kun Tian, Yaozu Dong, David Cowperthwaite Intel Corporation Abstract shows the spectrum of GPU virtualization solutions Graphics Processing Unit (GPU) virtualization is an (with hardware acceleration increasing from left to enabling technology in emerging virtualization right). Device emulation [7] has great complexity and scenarios. Unfortunately, existing GPU virtualization extremely low performance, so it does not meet today’s approaches are still suboptimal in performance and full needs. API forwarding [3][9][22][31] employs a feature support. frontend driver, to forward the high level API calls inside a VM, to the host for acceleration. However, API This paper introduces gVirt, a product level GPU forwarding faces the challenge of supporting full virtualization implementation with: 1) full GPU features, due to the complexity of intrusive virtualization running native graphics driver in guest, modification in the guest graphics software stack, and and 2) mediated pass-through that achieves both good incompatibility between the guest and host graphics performance and scalability, and also secure isolation software stacks. Direct pass-through [5][37] dedicates among guests. gVirt presents a virtual full-fledged GPU the GPU to a single VM, providing full features and the to each VM. VMs can directly access best performance, but at the cost of device sharing performance-critical resources, without intervention capability among VMs. Mediated pass-through [19], from the hypervisor in most cases, while privileged passes through performance-critical resources, while operations from guest are trap-and-emulated at minimal mediating privileged operations on the device, with cost. Experiments demonstrate that gVirt can achieve good performance, full features, and sharing capability.
    [Show full text]
  • File and Console I/O
    File and Console I/O CS449 Spring 2016 What is a Unix(or Linux) File? • File: “a resource for storing information [sic] based on some kind of durable storage” (Wikipedia) • Wider sense: “In Unix, everything is a file.” (a.k.a “In Unix, everything is a stream of bytes.”) – Traditional files, directories, links – Inter-process communication (pipes, shared memory, sockets) – Devices (interactive terminals, hard drives, printers, graphic card) • Usually mounted under /dev/ directory – Process Links (for getting process information) • Usually mounted under /proc/ directory Stream of Bytes Abstraction • A file, in abstract, is a stream of bytes • Can be manipulated using five system calls: – open: opens a file for reading/writing and returns a file descriptor • File descriptor: index into an OS array called open file table – read: reads current offset through file descriptor – write: writes current offset through file descriptor – lseek: changes current offset in file – close: closes file descriptor • Some files do not support certain operations (e.g. a terminal device does not support lseek) C Standard Library Wrappers • C Standard Library wraps file system calls in library functions – For portability across multiple systems – To provide additional features (buffering, formatting) • All C wrappers buffered by default – Buffering can be controlled using “setbuf” or “setlinebuf” calls (remember those?) • Works on FILE * instead of file descriptor – FILE is a library data structure that abstracts a file – Contains file descriptor, current offset, buffering mode etc. Wrappers for the Five System Calls Function Prototype Description FILE *fopen(const char *path, const Opens the file whose name is the string pointed to char *mode); by path and associates a stream with it.
    [Show full text]
  • A Platform Architecture for Sensor Data Processing and Verification in Buildings
    A Platform Architecture for Sensor Data Processing and Verification in Buildings Jorge Ortiz Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2013-196 http://www.eecs.berkeley.edu/Pubs/TechRpts/2013/EECS-2013-196.html December 3, 2013 Copyright © 2013, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. A Platform Architecture for Sensor Data Processing and Verification in Buildings by Jorge Jose Ortiz A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Computer Science in the Graduate Division of the University of California, Berkeley Committee in charge: Professor David E. Culler, Chair Professor Randy H. Katz Professor Paul Wright Fall 2013 A Platform Architecture for Sensor Data Processing and Verification in Buildings Copyright 2013 by Jorge Jose Ortiz 1 Abstract A Platform Architecture for Sensor Data Processing and Verification in Buildings by Jorge Jose Ortiz Doctor of Philosophy in Computer Science University of California, Berkeley Professor David E. Culler, Chair This thesis examines the state of the art of building information systems and evaluates their architecture in the context of emerging technologies and applications for deep analysis of the built environment.
    [Show full text]
  • Plan 9 from Bell Labs
    Plan 9 from Bell Labs “UNIX++ Anyone?” Anant Narayanan Malaviya National Institute of Technology FOSS.IN 2007 What is it? Advanced technology transferred via mind-control from aliens in outer space Humans are not expected to understand it (Due apologies to lisperati.com) Yeah Right • More realistically, a distributed operating system • Designed by the creators of C, UNIX, AWK, UTF-8, TROFF etc. etc. • Widely acknowledged as UNIX’s true successor • Distributed under terms of the Lucent Public License, which appears on the OSI’s list of approved licenses, also considered free software by the FSF What For? “Not only is UNIX dead, it’s starting to smell really bad.” -- Rob Pike (circa 1991) • UNIX was a fantastic idea... • ...in it’s time - 1970’s • Designed primarily as a “time-sharing” system, before the PC era A closer look at Unix TODAY It Works! But that doesn’t mean we don’t develop superior alternates GNU/Linux • GNU’s not UNIX, but it is! • Linux was inspired by Minix, which was in turn inspired by UNIX • GNU/Linux (mostly) conforms to ANSI and POSIX requirements • GNU/Linux, on the desktop, is playing “catch-up” with Windows or Mac OS X, offering little in terms of technological innovation Ok, and... • Most of the “modern ideas” we use today were “bolted” on an ancient underlying system • Don’t believe me? A “modern” UNIX Terminal Where did it go wrong? • Early UNIX, “everything is a file” • Brilliant! • Only until people started adding “features” to the system... Why you shouldn’t be working with GNU/Linux • The Socket API • POSIX • X11 • The Bindings “rat-race” • 300 system calls and counting..
    [Show full text]
  • 06523078 Galih Hendro Martono.Pdf (8.658Mb)
    PANDUAN MIGRASI DARI WINDOWS KE UBUNTU TUGAS AKHIR Diajukan Sebagai Salah Satu Syarat Untuk Memperoleh Geiar Sarjana Teknik Informatika ^\\\N<£V\V >> ^. ^v- Vi-Ol3V< Disusun Oleh : Nama : Galih Hendro Martono No. Mahasiswa : 06523078 JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRl UNIVERSITAS ISLAM INDONESIA 2010 LEMBAR PENGESAHAN PEMBIMBING PANDUAN MIGRASI DARI WINDOWS KE UBUNTU LAPORAN TUGAS AKHIR Disusun Oleh : Nama : Galih Hendro Martono No. Mahasiswa : 06523078 Yogyakarta, 12 April 2010 Telah DitejHha Dan Disctujui Dengan Baik Oleh Dosen Pembimbing -0 (Zainudki Zukhri, ST., M.I.T.) ^y( LEMBAR PERNYATAAN KEASLIAN TUGAS AKIilR Sa\a sane bertanda langan di bawah ini, Nama : Galih Hendro Martono No- Mahasiswa : 06523078 Menyatakan bahwu seluruh komponen dan isi dalam laporan 7'ugas Akhir ini adalah hasi! karya sendiri. Apahiia dikemudian hari terbukti bahwa ada beberapa bagian dari karya ini adalah bukan hassl karya saya sendiri, maka sava siap menanggung resiko dan konsckuensi apapun. Demikian pennalaan ini sa\a buaL semoga dapa! dipergunakan sebauaimana mesthna. Yogvakarta, 12 April 2010 ((ialih Hendro Martono) LEMBAR PENGESAHAN PENGUJI PANDUAN MIGRASI DARI WINDOWS KE UBUNTU TUGASAKHIR Disusun Oleh : Nama Galih Hendro Martono No. MahaMSwa 0f>52.'iU78 Telah Dipertahankan di Depan Sidang Penguji Sebagai Salah Satti Syarat t'nUik Memperoleh r>ekii Sarjana leknik 'nlormaUka Fakutlss Teknologi fiuiii3iri Universitas Islam Indonesia- Yogvakai .'/ April 2010 Tim Penguji Zainuditi Zukhri. ST., M.i.T Ketua Yudi Prayudi S.SUM.Kom Anggota Irving Vitra Paputungan,JO^ M.Sc Anggota lengelahui, "" ,&'$5fcysan Teknik liInformatika 'Islam Indonesia i*YGGYA^F' +\ ^^AlKfevudi. S-Si.. M. Kom, IV CO iU 'T 'P ''• H- rt 2 r1 > -z o •v PI c^ --(- -^ ,: »••* £ ii fc JV t 03 L—* ** r^ > ' ^ (T a- !—• "J — ., U > ~J- i-J- T-,' * -" iv U> MOTTO "liada 1'ufian sefainflffaft dan Jiabi 'Muhamadadafafi Vtusan-Tiya" "(BerdoaCzfi ^epada%u niscaya a^anjl^u ^a6u0ian (QS.
    [Show full text]
  • Quake Three Download
    Quake three download Download ioquake3. The Quake 3 engine is open source. The Quake III: Arena game itself is not free. You must purchase the game to use the data and play. While the first Quake and its sequel were equally divided between singleplayer and multiplayer portions, id's Quake III: Arena scrapped the. I fucking love you.. My car has a Quake 3 logo vinyl I got a Quake 3 logo tatoo on my back I just ordered a. Download Demo Includes 2 items: Quake III Arena, QUAKE III: Team Arena Includes 8 items: QUAKE, QUAKE II, QUAKE II Mission Pack: Ground Zero. Quake 3 Gold Free Download PC Game setup in single direct link for windows. Quark III Gold is an impressive first person shooter game. Quake III Arena GPL Source Release. Contribute to Quake-III-Arena development by creating an account on GitHub. Rust Assembly Shell. Clone or download. Quake III Arena, free download. Famous early 3D game. 4 screenshots along with a virus/malware test and a free download link. Quake III Description. Never before have the forces aligned. United by name and by cause, The Fallen, Pagans, Crusaders, Intruders, and Stroggs must channel. Quake III: Team Arena takes the awesome gameplay of Quake III: Arena one step further, with team-based play. Run, dodge, jump, and fire your way through. This is the first and original port of ioquake3 to Android available on Google Play, while commercial forks are NOT, don't pay for a free GPL product ***. Topic Starter, Topic: Quake III Arena Downloads OSP a - Download Aerowalk by the Preacher, recreated by the Hubster - Download.
    [Show full text]
  • The Complete Stories
    The Complete Stories by Franz Kafka a.b.e-book v3.0 / Notes at the end Back Cover : "An important book, valuable in itself and absolutely fascinating. The stories are dreamlike, allegorical, symbolic, parabolic, grotesque, ritualistic, nasty, lucent, extremely personal, ghoulishly detached, exquisitely comic. numinous and prophetic." -- New York Times "The Complete Stories is an encyclopedia of our insecurities and our brave attempts to oppose them." -- Anatole Broyard Franz Kafka wrote continuously and furiously throughout his short and intensely lived life, but only allowed a fraction of his work to be published during his lifetime. Shortly before his death at the age of forty, he instructed Max Brod, his friend and literary executor, to burn all his remaining works of fiction. Fortunately, Brod disobeyed. Page 1 The Complete Stories brings together all of Kafka's stories, from the classic tales such as "The Metamorphosis," "In the Penal Colony" and "The Hunger Artist" to less-known, shorter pieces and fragments Brod released after Kafka's death; with the exception of his three novels, the whole of Kafka's narrative work is included in this volume. The remarkable depth and breadth of his brilliant and probing imagination become even more evident when these stories are seen as a whole. This edition also features a fascinating introduction by John Updike, a chronology of Kafka's life, and a selected bibliography of critical writings about Kafka. Copyright © 1971 by Schocken Books Inc. All rights reserved under International and Pan-American Copyright Conventions. Published in the United States by Schocken Books Inc., New York. Distributed by Pantheon Books, a division of Random House, Inc., New York.
    [Show full text]
  • Global Offensive Short-Cut Their Way Onto Linux Like the Next-Generation of What Was Originally Just a Mod
    GAMING ON LINUX GAMING ON LINUX The tastiest brain candy to relax those tired neurons GNAEUS JULIUS AGRICOLA Star Conflict Like being a real space pilot, without the risk of death. ig news space fans! Star Conflict, a free-to- The action takes place in play spaceship combat B Sector 1337 of MMO has officially launched its the galaxy… Linux version as promised. This is one of our first major free-to- play titles that’s been released Liam Dawe is our Games Editor and the founder of gamingonlinux.com, from outside Valve. the home of Tux gaming on the web. The graphics are simply fantastic, which is surprising ine enables us Linux users for a free game. It also doesn’t to run Windows shove anything into your applications under Linux W face about paying for in-app without the need for a Windows licence. It sounds great, but it does purchases – it’s all perfectly The game starts you off This is the first Linux game come with its own set of drawbacks, optional, which is again very slowly to not overwhelm you from Star Gem Inc, and we such as poor performance in certain surprising. You can buy extra with a few tutorials showing hope it will only be the start for games; and some games may refuse credits for ships and paint jobs you basic flight and combat, them. See you in space! to work without a lot of tinkering. or buy downloadable content which it makes really painless http://store.steampowered. A problem has arisen now that Linux is gaining a foot-hold in the (DLC) packs from Steam.
    [Show full text]