Wonderful world of Linux 2.6 kernel
content:
The story so far ... A variety of platforms support in-depth Linux unified equipment model core hardware support block devices Support input and output device software improvement other features Write in the last reference for translator
In the Linux area:
Tutorial Tools & Product Codes and Component Project Articles
Joseph Praneich (JPRANEVICH@kniggit.net) Translation: "Wonderful World" Translation Group of Linux 2.6 Core September 2003
The development of Linux core 2.6 has been close to the end, 2.6 beta release has been two months, official version is expected to be released early next year. As a major release version, 2.6 has a large change relative to 2.4; it introduces many new features, and also removes a lot of outdated characteristics.
What are it bigger? What impact may it affect for Linux developers and other levels of Linux users? Read this article and you will get the answer. - Translator
Although we first launched Linux 2.4 seems to be yesterday, the time has flowed away, the internal nuclear development team of the kernel development team is close to the completion. This article will attempt to describe many of the new features in the 2.6 core (Linux on the I386 platform). The pre-release of the software of the enclosed source code is not the same, all of the features described herein is currently available in the 2.5-ring core development tree (some of whom), and more than some bugs). (According to Linux tradition, the kernel of the even version is stable, the odd version is only developed). That is, some of the features described here may still be removed or marked "Experimental" in the actual 2.6 version. However, the kernel is currently in the feature-free period, and the final release version should not be too deviation from the description here. At the same time, some "new" features described herein may be replaced after the first time in the 2.6 series kernel, and may be transferred to the official or release supplier's 2.4-ring. Perhaps this article is even more embarrassing that the version number of the upcoming kernel is still not determined. The most likely version number is 2.6, but some people offer version numbers to use 3.0 because this version contains NUMA and support for MMU systems. For the convenience of discussion, this article will always use 2.6 as the version number of the upcoming kernel. You are reading this document ("Wonderful World" of Linux 2.6 kernel ") informal version of the first edition, the end of July 13, 2003, based on the 2.5.75 development version of the core. With the final work of the Linux kernel, this document will release other informal editions, but the official version of this document is completed until the final release of 2.6 is completed. Since this article is the first version of the non-official version, there may be errors or omissions; if you find them, please tell me, I will be happy to correct them. The story so far ... Linux kernel starts in 1991 by Linus Torvalds for his 386-developed operating system. Linus initially wants to name this system for Freax, but fortunately, the last did not do that. The official version of Linux 1.0 issued in March 1994, including 386 official support, only support single CPU system. Linux 1.2 issued in March 1995, it is the first official version that includes multi-platform (Alpha, SPARC, MIPS, etc.). Linux 2.0 issued in June 1996, including many new platform support, but most importantly, it is the first kernel version that supports the SMP (symmetric multiprocessor) system. Linux 2.2 comes from January 1999, it brings great improvements in the SMP system, while supporting more hardware. Finally, Linux 2.4 was released in January 2001, which further enhanced the spreadability of the SMP system, and it also integrates a lot of features for supporting desktop systems: USB, PC Card (PCMCIA) support, built-in plug Use, and so on. Linux 2.6 does not only contain these features, but also a "big span" that has greatly improved support for considerable systems or quite small systems (PDAs, etc.). A variety of platform support can support a wide range of hardware and platforms, which use Linux as a kernel operating system (such as GNU operating system, system, and environments are often distributed with Linux. Linux generally does not be considered an independent operating system, just operation One of the advantages of the system of the system.
Linux begins with a support for new processor types and features from version 1.2, and the latest Linux 2.6 kernel publishing version is no exception. This trend does not directly affect the use of Linux in the Intel platform, while making Linux can be used in as large as possible, this is very important. A major way to extend multi-platform support in a small-scale-embedded system is to bring most of the mainstream kernel to the mainstream kernel. Uclinux (you can pronounce you-see-linux ", but more correct spelling, the first letter should have a Greek alphabet" MU ") is a project that applies Linux on the microcontroller platform. For many years, this Linux branch has provided support for many embedded chips, which makes it more integrated into the mainstream kernel. Unlike usual Linux graft versions, the embedded transplanted version described herein does not have all similar features due to hardware constraints and usual Linux. The main difference is that these transplants are for processors without a memory management unit (Intel's CPU from 386). Lack of MMU support, when running a real multitasking system, there is no memory protection mechanism between tasks (so any programs can cause other programs to crash), and some system calls related to process derive cannot be implemented. It is because there is no memory protection mechanism (or says without any security), they do not apply to multi-user systems. On the support of the embedded processor, Linux 2.6 has four main new progress. The first is to transplant the new embedded M68K series processor of Motorola. These processors named Dragonball or ColdFire can be found on Motorola, Lineo, Arcturus, or other manufacturers or evaluation boards. Most Linux users should be quite familiar with these processors, because from Palm 1000 to the latest Palm III, they have always been the heart of Palm Pilots. Unfortunately, there is no support for the early M68K processors without MMU (such as the 68000 series used in early Apple machine). The latest supported embedded platforms also include Hitachi's H8 / 300 series (not H8s, but may be integrated as soon as possible) and NEC V850 processors. Regardless of whether Linux 2.6 is designed to support the main architecture of the MMU system, it is not too much. All Linux's previous versions, whether they are directly or indirect, all originated on the initial work on Intel 80386, and limitations are inherent. Along this direction (support for MMU systems), there will be more other early hardware support in the future (in fact, there is already about this purpose). However, it is not as support for modern and still in production, the support for early hardware is more considered to be based on some kind of hobby, and for end users, it is probably useless ( So the official release version of the future Linux may not be included). The latest Linux version contains support for AXIS communication company's ETAX CRIS ("Code Reduced Instruction Set") processor (more precisely, supporting ETRAX 100LX and updated products), it is not UCLinux merge from technology perspective Part (because it contains the MMU unit).
In fact, the support of this processor is already there on the 2.4 development cycle, but it is introduced after 2.4.0, so it should now be mentioned. It is an embedded processor mainly used for network devices. ETRAX 100 related to this is a MMU processor that is supported by Uclinux, but related support in the mainstream Linux kernel is not integrated. Opteron supports - the 64-bit Linux of the consumer level is also incorporated in 2.4.x development links but it is still a support for the AMD Opteron chip (based on AMD64 architecture). Opteron is compatible with the processor of Intel-Clone, and may even get Microsoft's support. It is also a member of the ITANIUM family of Intel to become a fact that the facts of the 64 consumer products is now still difficult. Although the later version of the 2.4 series kernels can already be run on the chip, it is still very limited as product applications. For high-end users, the most serious problem is that the use of the RAM of each application is limited to 512MB. On the other hand, the new kernel has improved the support of the program running X86 (32 bits) on the platform. Subarchitecture supports Linux 2.6 In addition to many new processor architectures, a new concept called sub-architure is included. Previously, Linux usually assumes that the processor and other hardware are supported. That is, the i386 series processor will only be used on the PC / AT server. This assumption for I386 is broken in Linux 2.4 because the additional support of I386 allows it to be used in the Visual Workstation. (In fact, in other non-i386 architecture, this hypothesis has been broken. For example, M68K has long supported Amiga, Michintosh and other platforms.) Linux 2.6 is the biggest change for this, let this feature and concepts become standards. In order to process all architectures to be treated with similar and sound to classify the module more clearly. The standard establishment allows I386 to be used in two new platforms. The first is the NCR's Voyager system. This is a symmetrical multiprocessor (SMP) system (which has been developed before the Intel's MP specification standard is determined), which supports up to 32 486-686 processor configuration. The number of product processors that actually take this architecture should be relatively small, and all models are not all models have been supported by Linux (the earliest is not supported). The second newly supported architecture is more widely used by NEC-9800 platform, which was a PC platform in the Japanese market accounting for the status of the status, which has been until recent years. The initial PC-9800 loaded 8086 processor, eventually developed to Pentium-level processors and SMP support. (Of course, Linux supports its support to 386.) Although it is not known at the United States, Microsoft's Windows 95 has been transplanted to this platform. The platform has been suspended due to the preference of the manufacturer's standard PC. Linux is formally supported by differentially slight hardware types, making the operating system easier to transplant to other platforms, such as transplanting to a mainstream processor designed to store design or using a mainstream processor in the industrial field. It is necessary to clarify that the sub-architecture is not used at all times, it is capable of playing a role because these portable systems are very substantial components (such as IRQ routing). Different. Compared to the difference in Linux running Linux on X-BOX, relatively small differences such as drivers are not enough to separate them from traditional i386 systems.
Linux supports the support of X-Box, is not a problem with the sub-architecture. Large-scale - non-uniform storage access architecture (NUMA) and large machines have supported the new Linux kernel release in addition to the new hardware types mentioned above, and the new Linux kernel release also contains large-scale servers (some running i386 processors, also Run other processors) More support. For Linux, such features are newly added, and many optimized work needs to be completed. This is a very rapid development of Linux development. We can expect that Linux will become a strong competitor in this area in the near future. The biggest change in this area is the latest support for Linux to NUMA servers. NUMA (non-uniform storage access) is a progress that transcends SMP and enhances multi-processor system efficiency in multi-process world. The SMP system has many and a similar limitations corresponding to a single processor system. One of the largest design limitations is that only a unique memory area in the system, all processors are accessed equally equally equally. In multiprocessor systems, it will cause considerable competition between multiprocessors on the same memory bus, resulting in performance bottlenecks. Numa servers, solve this problem by introducing the following ideas: For a particular processor, some memory is more close than others (Close). It can be easily envisaged in this way, and there will be no serious errors in technology, and your system has a lot of processors, memory, and other components (such as I / O expansion cards). There are many such cards in the system, they can communicate with each other; obvious, relative to other cards, processors on each card can access local memory faster (on their own cards). From a number of perspectives, the NUMA architecture is a close coupling cluster. In order to provide good support for NUMA hosts, Linux is necessary to adjust many aspects to make new models more efficient. First, an internal topology API is established to enable the kernel to know the relationship between processors and memory and other IO devices. With the support of the internal topology API, Linux process scheduler can understand these relationships and will try to optimize tasks to achieve optimal local resource usage. In addition, many NUMA hosts have cavity between the linear memory regions of each node (NODES). The new kernel has been able to handle this discontinuous situation reasonably. There are still many other kernels that make Linux can support high-end host changes, which is also a clear direction of kernel development. In another year, we can look forward to the efficiency of Linux in high-end models and other advances. In-depth Linux In addition to the horizontal support, Linux 2.6 is also improved on the supported performance of the supported platform. These optimizations for specific CPUs include: Transmeta's CrusoE series, Intel's Pentium 4 Xeon, Pentium 3-M, Pentium 4-M and AMD mobile processors. The new version of Linux also solves the problem caused by some of the Athlon processor itself. Linux 2.6 also solves the problem that occasionally hangs when some of the 16 processor system starts, although this BUG does not affect the normal use of most users. Ultra-threading is not fresh in Linux 2.6, the kernel has begun to include HypertHreading for Intel P4 processors in 2.4.17 release (mention it here, one is because it is not included in 2.4 In the initial release, the second is that there is a big change since then the kernel). Hyper thread makes a single processor to make two or more processors that can appear in the operating system.
The most exciting thing is that Linux is the first operating system that introduces the super-threaded feature into the market, although Intel has released a compatible processor as early as INTEL a year ago. There is a rumor that Microsoft takes an unique idea to press a CPU that supports hyperthreading, pressing a CPU or charges the license fee of two CPUs. Linux's open model (and no CPU-based license) makes the Linux operating system to support this new feature. Obviously, an processor works as two processors, it is still a processor, and performance does not increase much. 2.5 The scheduler and other parts are newly optimized, so that the processor's ultra-thread can actually function. If it is added to the hyper thread support under 2.4, the result is not necessarily, and sometimes performance will decline. Progress in Capacity-Scalability In addition to support for NUMA, Linux 2.6 has some changes in Intel servers in the top of the food chain. The most important thing is to fully support Intel's physical address extension (PAE), so that new 32-bit X86 systems can access up to 64GB of memory, but only is limited to page mapping mode. In addition, it is greatly improved by strengthening support for advanced programmable interrupt controllers (APICs). The IRQ balance over the multiprocessor system is greatly improved. In many other respects, internal restrictions have been relaxed in a possible place. The number of users and user groups on Linux systems has increased from 65000 to more than 4 billion (actually 16-bit to 32-bit changes). This makes Linux more practical on large files and authentication servers that may exceed restrictions before. Similarly, the number of process identification numbers (PID) is also raised from 32,000 to 1 billion. This change, with other PID subsystems, will increase the start of the application on the system that is very busy or long-term work. Although the maximum number of files opened simultaneously does not increase, Linux 2.6 will no longer ask you to set limit values in advance; the limit value will automatically adjust with the system's run. Finally, Linux 2.6 includes an improved 64-bit block device support (the batch device itself should support 64-bit mode), even 32-bit platforms like I386. In this way, the storage of the file system is up to 2TB. Nuclear interactivity and responsive focus in response Linux 2.6 are to make the system more responsive for desktop users and other applications that need to be highly controlled to events (Responsitive). This different target system has a different challenge, but the kernel contains many changes, making them benefit. 2.6 One of the main internal changes that must be understood is that the kernel itself can be preemptive. In all previous Linux versions, when the system is running related transactions, it cannot be interrupted (in the multiprocessor system, the angle based on each CPU is also established). In Linux 2.6, the kernel is now allowed to be interrupted when the task is executed, so that the user task can continue to run even if the kernel is doing some complicated things. (In order to avoid obvious competition, the kernel contains some lock code segments. When running in such code segments, the kernel cannot be interrupted.) The main benefit of this change is the interaction of the system ( For example, for desktop users) greatly improve, the system feels more than the event of users.
Other make Linux a more responsive system change is support for new "Fast User-Space Mutexes"), which requires support for user programs (using Futex to implement mutual exclusion) . Futexes is a serialize event that makes them do not conflict with each other. Unlike the Mutex operations supported with traditional majority thread library locks, this is partially kernel-based (PartialLenel Based), and it also supports setting priority to make high priority applications or threads prioritize competition. By using a program to specify a waiting task than others more important, it brings a timing that may be an application - a better responsiveness of critical areas. Linux's I / O subsystem has also experienced great modifications such that it is more responsive under various workloads. This change includes the I / O scheduler system - determines when, which process goes to read a complete rewrite of the kernel code of the device. The rewritten I / O layer can now be better ensured that there is no process to stay at I / O waiting, while do not exclude the previous optimization work, making the read and other requests to operate the hardware optimization work in the most effective order. Although developers of real-time operating systems (RTOS) can benefit from these changes, Linux 2.6 will not be a real-time core. However, these and other related background work make it possible to convert Linux into RTOS. The external PATCH (not yet merged to the official kernel version) has appeared for the user or developer. Module subsystem - Device Drivers In the development of Linux 2.6, the module subsystem is another part of the major improvement. Many code is rewritten to increase stability and make the system more transparent. In addition to changes in these obvious surfaces, there are more kernels behind the kernel and the change of modules. First, the change in the kernel driver in Linux 2.6 (although there is no big effect) changes to the file extension changes. ".ko" (kernel object, kernel target file) replaced ".o" (this is a common extension of a target file, usually created before the link generates the executable application during program compilation). It is better to make the module is not a real intermediate file, it is better to say that this is just a decorative (COSMETIC). Finishing full substantive improvement is to eliminate many aspects of the competition existing in many kernel versions. The key to the problem is that if the uninstallation occurs in the module check and confirms that there is no other device is using it, it is possible to start the device using a module that is being unloaded. The new kernel module code should make this condition more difficult to trigger. Further, it is also possible to simply completely disabled the module uninstallation. More transparent is another feature of the new module subsystem. Prior to this, almost all Linux versions, the module is enough intelligence, which can look for the device ID number of the Recognized device, detect it can support (such as PCI, ISA PNP, and PC card) ). Linux 2.6 standardizes this support, enabling it to the kernel, external programs, and module loaders to determine which devices that can support which devices can be easier. This will allow various hardware management programs (such as Redhat's Kudzu) to make intelligence judgments on hardware, even if they are not familiar with hardware devices they handle.
If your knowledge beyond the current version of the driver, you can force a driver to work in a particular device (by an interface in the new SYS file system), even if the driver does not know that you can support the device. Other improvements In addition to many of the above changes, there are many other changes in the universality of the system performance. This includes more of "BIG KERNEL LOCK" (early Linux is used to support the SMP system, and the optimization of the file system pre-reading, backup, and small file operations. Linux 2.6 also solves a more profound stability problem: the kernel will not allocate more than memory in the system RAM (plus SWAP) number of memory. Previously, Linux still allows Malloc operation to allocate memory successfully in some cases where the system memory consumes. Overcommit logic is modified so that this is no longer possible now. (Of course, if you exhaust your system's RAM, even if you don't surpass the maximum number of available, you need to worry about more serious problems.) Linux is always an open standard supporter. One of the large changes inside the kernel is that Linux's thread framework is rewritten so that NPTL (Native Posix Thread Library can be running. This is a major performance improvement for Pentium Pro and more advanced processors running load-bearing thread applications; it is also expected by many high-end systems in enterprise applications. (In fact, Redhat has been transplanted backwards to Linux 2.4, starting from RedHat 9.0) The change in the thread framework contains many new concepts in Linux threads, including thread groups, threads, local storage, POSIX style Signals and other changes. One of the main disadvantages is to rely on old-fashioned Linux-ISMS without following the POSIX standard application (such as Sun Java), will not run on the system that supports new threads. In view of the use of new thread models, it is obvious that the new kernel releases soon, and the most important applications will support this change. Finally, 2.6 can support compile time to turn off the kernel's support for the storage exchange (SWAP), although there is no direct benefit to the application above the most Linux. This allows Linux to operate within a relatively small memory footprint, which may be beneficial for embedded systems that are unlikely to use swap devices. The unified equipment model is a relatively independent component in the operating system, and the equipment model is critical to those that are designed to operate on a variety of hardware. Simply put, the equipment model is an infrastructure in the kernel, used to detect and determine all optional modules in the system. All operating systems (including various versions of Linux) have a concept of some devices. Old versions of Linux (2.2 or earlier) use only one direct method to operate the device. The system provides drivers for different kinds of hardware bus, which knows how to detect their support bus to look for the corresponding hardware devices. This system is very dispersed, and a wide variety of buss offer many of the mutually incompatible APIs for processing a variety of different operations. Linux 2.4 integrates the PCI, PC cards, and ISA PNP into a single device structure by using a set of universal interfaces to complete the first step in building a unified device model. Linux 2.6 further promotes this effort to seek the hardware it rely on through a new unified perspective within the scope of the system. The core of the core object Abstract new device model foundation is a new object-oriented interface that requires all underlying device types.
This kernel device object structure (called "kObject") contains all interfaces for reference counting and operating substers. The underlying device (eg, a system bus) utilizes this common interface layer, providing a unified system view to the kernel and user space. Now, all of this is placed in a central location, which makes Linux to use this information to make many useful things. Save these new information in the kernel, so that Linux can better support systems that require in-depth hardware knowledge. An obvious example is power management. Newly arising from recent years is ACPI. ACPI, the Advanced Power Configuration Management Interface, is the earliest support in Linux 2.4. Unlike APM (Advanced Power Management), the system with this interface needs to notify each compatible device when changing the power state. The new kernel system allows subsystems to track devices that need to be converted for power status. Another example is a bus that supports hot swap. The ability to add devices can still be added after the machine is started, but it seems that it is very common, but Linux is only available to version 2.2. To Linux 2.4, this support is further enhanced, and the range also expands to heat-swappable PCI, PC card, USB, and Firewire devices. By fundamentally eliminating the difference in hot-swappable equipment and traditional equipment, the central kernel's centralized equipment system expands this support. When you start your computer, the device detection routine will "insert" the device in the system. Whether in the system starts, or after startup, the system discovers a device in the system, the same kernel object is created accordingly, which makes the underlying structure of the handling the pluggable device simplifies. The most obvious change in the SYS file system may be the emergence of the new SYSFS file system, which integrates information about the following three file systems: the Proc File System for Process Information, the DEVFS file system for the device, and the fake end DEVPTS file system. The file system (installed in / sys directory) is an intuitive reflection of the equipment tree that can be seen. The core creates this information by a core object subsystem that is closely working: When a core object is created, the corresponding file and directory are also created. (If necessary, there is also a core object to be created when it is created.) There is a record in the sysfs file system.) Since each device (or kernel object) has a unique directory structure in sysfs, then the next step can The property (device name, power mode, interrupt processing, etc.) information is output to this directory tree for system administrators. Corresponding, many of the usage related / proc / sys have or will be moved to the / sys directory. Core hardware supports the development of Linux and gradually enter the mainstream ranks, from the device type supported by the kernel, every kernel is released, like a jump: support emerging technology (2.4 USB), support Ancient traditional techniques (2.2 MCA). Developed to Linux2.6, the equipment that is not supported by Linux is quite small. The mainstream hardware on the PC is not supported. It is for this reason, most (obviously not all) improvements on hardware support (including the equipment models mentioned above) around the already supported support. The internal equipment bus is almost important as the processor under the system underlayer; these buss are like a glue, connect the various components of the system together. In the PC world, these buss have always been indispensable, whether old ISA (can be found in the original IBM PC) bus, or the current exterior serial port and Wireless bus.
Once the new bus and equipment become popular consumer products, Linux can always adapt to it at a very fast speed; and for unfold equipment, the situation is a lot. One example in this case is the PNP (plug and play) feature of the ISA bus, and Linux is only supported by version 2.4, which is supported by the ISA bus. Many of the other popular business operating systems (in kernel support Before ISA PNP, you may barely use some user-state utilities to make it work). Linux 2.6 has an important improvement on this subsystem, making it more perfect, better integrated into new equipment models. New features include complete PNP BIOS support, device name databases, and some other robust features. These improvements are to make Linux a true plug-and-play operating system and can be set to achieve like the BIOS of compators. The two optional alternatives of ISA era ISA-PNP are MCA (microchannel system) and EISA (extended ISA), although they are not so popular. In the development cycle of Linux2.6, these two subsystems have made some improvements to support new equipment models. In addition, the EISA has obtained further standardization with other subsystems by introducing a device name database. In addition to several important features mentioned, Linux has also made many other changes in hardware bus support. The PCI bus is the most popular bus in all buses. Linux 2.6 greatly enhances its support, including improved hot-swap and power management support. The new version also supports systems that contain multiple AGP buss (ie, accelerated graphics ports - a separate high-speed bus based on PCI protocol, such as high-end graphics workstations. For the support of PC hardware, Linux tightly follows the trend of the hardware market. In addition to these actual equipment bus, Linux2.6 also adds a conceptual Legacy bus. This bus is proprietary for each architecture, which contains all the equipment you may think. For example, on a PC, there may be on-board serial port, parallel port, and PS / 2 ports, these devices actually exist, but not enumerated by any actual bus in the system (ENUMERATED ). On some of the other platforms, this Legacy supports may contain more complicated things (such as query firmware). However, in general, this is just a layer of packaging that allows the device driver to operate these devices in a new drive model view. Although the external bus has grown in the premiere of equipment, the USB is an exception. USB support has many improvements in the nearest kernel development cycle, which is the most significant thing that the new kernel will support USB 2.0 devices. USB2.0 is a new standard that supports equipment bandwidth up to 480M BPS (current USB is only 12Mbps). Devices that support this standard are often referred to as high-speed USB devices, which are gradually occupying the market. Another new-related standard called USB ON-THE-GO (or USB OTG), it is a variety of varieties in the USB protocol, used to direct devices; Linux 2.6 has not yet supported it (2.6 patch is Supported). In addition to the equipment support, most USB devices have a correction, so that Linux can access all instances of many types of devices today. This is quite beneficial for large printers or storage devices (although the latter may tend to use a dedicated storage bus). Obviously, this field has a significant growth in recent years, and Linux supports the support of related equipment is also the pace of the market.
Wireless devices have been truly takeoff in public applications in the past few years. It seems that in the near future, the cable (non-power) will become history. Wireless devices include both network devices (currently the most common wireless devices), including more common devices, such as PDAs. In the wireless network space, the device can be roughly divided into a long distance (such as AX.25 based on amateur wireless device) and a short distance (usually 802.11, but some old protocols also exist). From this time (V1.2), support for both is a feature of Linux. In the development of 2.6, they have been updated. The biggest change here is that the main components of the short subsystems of the protocol are combined into a single "wireless" subsystem and the API. Different devices are implemented by providing a group of user space tools that work from all supported devices. This approach solves many small compatibility issues that have been processed by different devices. In addition to this standardization, there are many global improvements in Linux 2.6, including when the status changes (such as a "roaming" state device), and to better deal with A TCP related to a TCP in the wireless device. Since people 's expectations of wireless support in version 2.4, the above features have been included in the 2.4 version of the kernel. In wireless device space, there is a similar main improvement. IRDA (Infrared Data Associate Group Named Infrared Agreement) has some improvements since the main release, such as power management, integrated into new kernel drive models. The real improvement is also to provide support for Bluetooth devices. Bluetooth is a new wireless protocol, which is designed to be short-distance, low power consumption, and there is no limit on "sight" in Irda. As an agreement, Bluetooth is designed to be "available everywhere". It has been applied to a variety of devices, such as PDA, mobile phones, printers, and more weird (Bizarre) such as in-vehicle devices. The protocol itself consists of two different data connection types: SCO (Synchronous Connection Oriented, synchronous connection) for lossy audio applications; and can support retransmission, etc., more strong connection L2CAP (Logical Link Control and Adaptation Protocal, Logical connection control and adaptation protocols). L2CAP further supports various sub-protocols, including RFCMMMMMMs for point-to-point networks and BNEP for class Ethernet. Linux's support for the use of Bluetooth technology is constantly improving, we can believe that this support will be very mature when there is enough equipment with Bluetooth technology. It is worth mentioning that the initial support for Bluetooth has been integrated into several versions of the 2.4 series. The block device supports the storage bus in 2.6, and the storage bus such as IDE / ATA, SCSI has also been mainly updated. The most important change focuses on the IDE subsystem that is rewritten (once again rewriting), solves many scalability issues and other restrictions. For example, the IDE CD / RW device is now written directly through the IDE disk driver, which is more simple than the past method. (In the past, a special SCSI simulation driver is needed. This is very confusing and it is difficult to achieve.
) Now, when you encounter a controller that cannot be identified, the IDE layer can query the BIOS information of the machine to obtain data or other data required for timing operations. There are many small improvements in the system in the SCSI section to enable it to support more devices while enhance scalability. A special improvement for the old system is that now Linux can support SCSI-2 multi-channel devices (such devices have more than 2 LUNs on a single device). Another important improvement is that Linux can detect changes in media such as MS Windows to better compatibility with devices that are not fully compliant. Since these technologies have been stabilized, then Linux also provides support for them. Linux now contains support for direct access to the new machine's EDD (Enhanced Disk Device) BIOS, which allows the disk device view in the server. The EDD BIOS contains information that connects to the system, BIOS recognition storage buses (including IDE, and SCSI). In addition to obtaining the configuration of the connection device and other information, it has several additional advantages. For example, this new interface enables Linux to know which disk device is started from. This is very useful in new systems, as this system is from which device is not obvious from which device is not obvious. The smart installer can also consider using this information, such as when deciding where the GRUB (a Linux boot loader) is installed. In addition to these changes, it needs to be emphasized here that all bus device types (hardware, wireless and storage) are integrated into the Linux new device model subsystem. Some modifications are just "decorative", and others contain very significant changes (for example, even how to detect the logic of the device needs to be modified). File System Linux (or some other system) The most common usage of block devices is to create a file system on the block device. Relative Linux 2.4, Linux 2.6 has great improvements to the support of the file system. The key changes include support for the Extended Attributes and the Access Controls for the POSIX standard. The EXT2 / EXT3 file system is a file system installed by most Linux systems, which is improved in 2.6. The most important change is support for extended attributes, which is embedded in the file system in the file system to the specified files. Some extended attributes are used by the system and can only be read and written by the root user. Many other operating systems, such as Windows and MacOS systems have used this extension attribute. Unfortunately, UNIX-based operating systems are generally not well supported with extended properties, and many user-level programs (such as tar) need to update and dump these extension attribute information. This is another aspect of Linux growth; Linux supports support for extended attributes is maturing. The first use of the new extension attribute subsystem is to implement the POSIX access control linked list. POSIX Access Control is a supercoming of standard UNIX rights control, supporting finer granular access control. If necessary, such as output files from NFS outputs, these access controls can be mapped to standard USER / Group permission control. In addition to the above, EXT3 has other small changes.
File System Log Submit (commit) time can be adjusted more suitable for laptop (in power saving mode, can accelerate the drive); the default load option can be saved in the file system itself (this does not have to load each time Enter the load option); you can mark a directory "indexed" to accelerate the file search in this directory. Linux also has a large number of improvements to the file system layer to compatible with the mainstream operating system of the PC. First, Linux 2.6 supports Windows's logical volume manager (ie dynamic disk Dynamic Disks). This is a new partition table mechanism in Windows XP and subsequent versions, which can easily support the adjustment of partition size in multi-partition systems and the creation of the new partition. (Of course, the Linux system does not necessarily use this mechanism immediately) Second, Linux 2.6 supports support for NTFS file systems, and now installs an NTFS volume in read / write mode. Write support is still in the experimental phase, gradually improved; the final kernel release may also contain this portion may not contain write support. Finally, Linux eliminates the bugs encountered when using some MP3 players in the support of the DOS file system used on the FAT12 (very old system or floppy disk). Some other technologies in the tracking of the PC will have always been an important part of the Linux core development. The file system is also improved in terms of compatibility with other operating systems. The support for the extended attributes of the HPFS file system (OS / 2 and other systems) have improved. The OS / 2 style extension attribute is separated into another namespace. The XFS file system has also been updated to reach the disk level (ON-DISK) of the IRIX operating system. In addition, there are many dispersed changes in the Linux file system. Quota management has been rewritten so that the system can support more users; users can mark directory as synchronization, so that all changes (additional files, etc.) are atoms (this is especially for mail systems and directory-based database systems Important, and more than the recovery of disk failures); transparent compression (only Linux supported) is added to the ISO9660 file system (used in CD-ROM). Finally, a new memory-based file system (huGetlbfs) is created; creating this file system aims to better support databases based on shared memory. Input Output Devices More "External" of any computer system is an input and output devices, including obvious things like keyboards, mouse, sound cards, graphics cards, but also things like game joysticks and auxiliary equipment. In the development cycle of 2.6, many Linux user terminal systems have been expanded, but most of the common devices are very mature. Memory of these devices is mostly derived from the improvements of the external bus support, such as the Bluetooth wireless keyboard, and other similar devices. Despite this, Linux has a greater improvement in several areas. One of the main internal changes in Linux 2.6 in human-machine interface equipment is a large number of rewrites of human-machine interface layers. The human-machine interface layer is the center of the user experience in the Linux system, including video output, mouse, keyboard, etc. In the new version of the kernel, this layer of rewriting and modular work beyond any of the previous versions. Build a Linux system that does not include full "Headless" that does not include support for the display, etc. is possible. Embedded system developers may be the main beneficiaries of this modular work, which can create devices that can only manage only networks or serial lines; on the other hand, it is also good for ordinary users, because many about equipment and The inherent hypothesis of the architecture is modular.
For example, it always assumes that if you have a PC, you must need to support the standard AT (I8042) keyboard controller. This requirement is removed in the new version of Linux, so that unnecessary code can be thrown in the traditional system. Linux also has many improvements to monitor output processing, but most of them are only useful only when configuring frame buffer control table systems in the kernel. (Most Intel System-based Linux machines do not use this way, but most of the other architectures are adopted.) In my opinion, the biggest highlight is to start the icon (if you have never seen, then I tell you Is a cute penguin) now supports the resolution of 24 bpp. This is an aspect, and the new features of the console include reset size, rotation, etc. (for PDA and other similar devices), as well as hardware acceleration support for more hardware. Finally, Linux is now providing kernel support for queries for VESA monitor's display capability information, although Xfree86 and most published version of installation systems provide this support in user space. In addition to these relatively large improvements, Linux 2.6 has a series of small improvements in human-computer interaction. For example, I now support the touch screen. In addition, the mouse and keyboard drivers have also been updated and standardized, and now there is only a single device node (such as / dev / input / mouse) regardless of the underlying hardware or protocol. Some weird mice (such as multiple rollers) are now supported. The keyboard of the PC keyboard is updated to follow the "Standard" of Windows to support the extension key. Support for game control rods has also been improved, which is not only benefited from many new drivers (including X Box game control panels), but also invested in some new features, such as power feedback (Force-Feedback ). Finally (but not least least), the new version kernel provides support for TIEMAN Voyager's TTY device to make blind users better use Linux. (This feature is important, so that it is replaced to Linux 2.4.) By the way, Linux modifies the System Request interface to better support those systems without local keyboards. The system request interface ("sysrq") is a system administrator to do some advanced work in the local console, such as obtaining debugging information, enforcing system restart, and re-mounting the file system as read-only. Because Linux 2.6 now supports a fully "Headless" system, you can now trigger these events via the / proc file system. (Of course, if your system has hangs and you have to force it to do something, this feature can't help you.) Audio is for desktop users, one of Linux 2.6 is one of the most expectations. Replaced an excessive sound system with ALSA (Advanced Linux Sound Architecture). Old-style sound system OSS (Open Sound System) has provided audio support for Linux very early, but it has many architectural defects. The primary improvement of the new system is that it starts from the beginning of the design, and it can work well in the SMP system. This fixes the problems that the past many drivers in the past are not working properly in the exception of the "desktop".
More importantly, this driver adopts modular design from the beginning (Linux old version) should still remember that in the Linux 2.2 era, the module is deconstructed to adapt to the sound system), which makes the system better support more Block sound card, including different types of sound cards. Regardless of how perfect in the system, if there is no surprising new feature, the system still has no improvements for users. In fact, there are many new features in the new sound system. The most important is to provide support for many new hardware (including USB audio and MIDI devices), support full Dolby recording and playback, seamless mix, support synthesis equipment, and more. Whether you are a sound enthusiast or just like playing MP3, Linux will be a popular progress. Multimedia Today's simple audio support seems to be far less, the user wants to support real novel hardware, such as webcam, broadcast and TV adapter, digital video recorder, etc. Linux has improved the support of the above three in version 2.6. Linux supports broadcast card (usually through several development cycles through user space, and support for TV tuner and video camera is only in the nearest 1, 2 main versions. This system is often referred to as V4L (Vedio4Linux Translator Note: "4" for "for"), a major update is obtained in the new version of kernel development, including the API cleanup work, and support for more features of the device. The new API is not compatible with the old version, Supporting its application needs to upgrade with the kernel. As a new field, Linux 2.6 includes support for DVB (Digital Video Broadcasting, Digital Video Broadcast) Hardware. This hardware is common in the set top box, which makes the Linux server By appropriate software becomes a TIVO (device-like device). Software improvements Linux improvements do not only focus on hardware and other infrastructure. No support software (such as file system and network protocol), hardware support will not Just So Much A DEAD WOOD. Network Advanced Network Support has always been one of Linux's main wealth. LINUX can support most mainstream network protocols in the world, including TCP / IP (V4 and V6) ), AppleTalk, IPX, etc. ("Waiting for", the only more popular is Microsoft, complex NetBIOS / NetBeui protocol.) Like many other subsystems, the change in network hardware for Linux2.6 is behind the scenes It is not that it is not so straightforward. This includes improvements to the bottom of the equipment model designed to use Linux and the upgrade of many device drivers. For example, Linux 2.6 provides a separate MII (media independent interface, or IEEE 802.3u) The system is used by many network devices drivers. The new subsystem replaces multiple instances of each running in the original system, eliminating multiple drivers in the original system to use duplicate code, using similar methods to process MII support for devices The situation. Other changes also include improvements to ISDN, etc. In software, one important improvement in Linux is to provide support for IPsec protocols. IPSec, or secure IP, is the network protocol layer provides encryption for IPv4 and IPv6 A set of protocols supported. Since security is provided in the protocol layer, it is transparent to the application layer. It is similar to the SSL protocol and other Tunneling / Security protocol, but is located in a low-level level.
The encryption algorithm supported by the current kernel includes SHA ("Secure Listance Algorithm"), DES ("Data Encryption Standard"), and the like. In terms of agreement, Linux has also enhanced support for multicast networks. Network multicast makes it possible to receive by multiple computers (traditional point-to-point networks can only be communicated each time). This feature is mainly used by instant messaging systems such as Tibco and audio / video conferencing software. Linux 2.6 now supports several new SSM protocols (fixed source multicast), including MLDV2 (Multicast Listner Discovery multicast discovery) protocols and IGMPv3 (Internet Group Management Protocol) protocols. These are all standard protocols, which are supported by most high-end network hardware providers, such as Cisco. Linux 2.6 also provides an isolated LLC stack. LLC, That is, a logical link control protocol (IEEE 802.2), is an underlying protocol that is used under several common high-level network protocols, such as Microsoft NetBeui, IPX, and AppleTalk. As part of the modified, IPX, AppleTalk, and token ring drivers have been rewritten to utilize this new public subsystem. In addition, an external source integrates the NetBeui protocol stack you can work, and it needs to be studied in the standard kernel to be added. In addition to these, there are other small changes. IPv6 has made some major improvements that can run in the token ring network. Linux's NAT / MASQUERADING support has also been extended, from better processing protocols that require multiple connections (H.323, PPTP, etc.). In the front end of Linux's router, support for configuring VLANs is also mature, no longer "experimental". Network file system Linux supports network file system support above Linux robust network protocol, which is equally sound. Installing or outputting a network file system, which is one of several few upper network related operations that need to be directly involved in the kernel. (Also more obvious, support for network block devices, there is no particularly large change in 2.6, and is only used in specific applications similar to file system operations.) All other network-related operations can be placed in the user The space goes without a core developer to consider. In Linux and class UNIX world, the most common network file system is a file system named Network File System, referred to as NFS. NFS is a complicated file sharing protocol, which has a relatively deep origin of Unix, especially Sun Solaris. You can use TCP or UDP as the main transmission protocol of NFS, but other sub-protocols can also be used, and these protocols are running over the RPC (Remote Process Call) protocol. This includes independent MOUNT protocols and NLM (Network Lock Manager) for file locks. (The usual implementation is also closely combined with other RPC-based protocols, such as NIS-network information services for authentication - for authentication. Nis did not have a wide application on Linux machines, mainly because it Lack of security.) May exactly because NFS protocols are so complex, are not widely accepted as "Internet Protocol". In Linux 2.6, the NFS file system has been greatly updated and improved.
The biggest improvement is to experimentally support new and have not been widely accepted NFSV4 protocols (previous Linux version support NFS2 and NFS3 protocols) implementations on client and server. The new version has stronger, safer authentication (using encryption technology), supports more intelligent locked management, supports pseudo file systems. Linux has not yet implemented new features of all NFS4, but the current version is stable and can support some product level applications. And, the implementation of Linux-based NFS server has been improved, thereby having better scalability, better integrity (supporting UDP also supports TCP), more robust (file system can be adjusted when the file system can be adjusted Some of their own features), easier management (through the new NFSD file system, no longer system call). There are some other improvements, such as separating LOCKD and NFSD, support zero copy transmission, etc. The NFS client also benefits because the underlying RPC protocol is benefited from the improvement in the Cache mechanism, UDP connection control, and other improvements on TCP protocols. Linux supports NFS sharing volumes as a root file system is also improved because of the improvement of NFS on the TCP protocol. In addition to improving network file systems for UNIX style, Linux 2.6 has also improved the support of network file systems for Windows types. The standard shared file system of the Windows server (also including OS / 2 and other operating systems) is followed by the SMB (Server Message Block) protocol, Linux core on the SMB protocol client has very good version of the agreement. support. However, Windows 2000 standardizes a supercoming upgraded version of the SMB protocol, that is, well known CIFS ("CommON Internet FileSystem"). The main purpose of CIFS modification is to simplify some of the more confusing parts in the refined SMB protocol. (Note: The definition of the agreement is very loose, and there will be cases of WIN95 / 98 / ME version with WinNT / Win2K version.) CIFS reached the purpose of modification, and added Unicode support, improved file lock, support hard Link, completely eliminate the dependence on NetBIOS and add some new features to Windows users. Since Linux users are not intended to always stay in the forgotten corner (Translator Note: CIFS is the standard proposed by the Windows system, before the Windows system is implemented, Linux 2.6 core is completely completely carried out by the local installation CIFS file system Override. Linux 2.6 now also supports SMB and CIFS extension - SMB-UNIX, which enables Linux to access possible non-Windows file types on SMB servers (such as Samba) (such as device nodes and symbolic links). Although it is not often seen now, Linux still does not completely forget Novell NetWare users. Linux 2.6 allows 256 Linux clients to install the same NetWare volume that uses NCP (NETWARE CORE Protocol) file system. Linux 2.6 also joins relatively new distributed network file systems (ie, files on a logical volume can be distributed in multiple nodes). In addition to the CODA file system introduced in Linux 2.4, Linux now also includes support for the other two distributed file systems: AFS and Intermezzo.
AFS, the Andrew FileSystem (so naming because it was originally CMU development), which is very limited, and only read operations are currently supported. Another newly supported file system intermezzo (also CMU development) is also supported in Linux 2.6; it has some more advanced features such as: no connection operation (working in the client's cache), suitable for high availability Applications, in those applications, need to ensure that the storage area is always available. At the same time, it also supports the application of maintaining data between multiple computers (such as laptops, PDA and desktop computers). Many projects that provide support for these new file systems are implemented on the Linux platform, which makes Linux to be able to support the front of these new features. Other feature security Linux2.6 has not caused a large change in paying attention to safety-related changes. Even essentially, the entire core-based security system (superuser permissions in the class Unix operating system) has been divided into a security module that can be replaced. (However, the security model currently available has only one default. Suites to show us how to customize security modules.) As part of this change, all parts of the core are updated to have fine-grained user access control Not like the previous "Super User" system. Although there will still be a ROOT user with full access rights in almost all Linux systems, but the above changes make the class Linux system can no longer have. Another security-related change is that some binary modules (such as hardware vendors) cannot be overloaded system calls, and cannot see and modify system calls tables. This greatly limits the access of the non-open source module in the core, and also patches some of the possible vulnerabilities of the GPL copyright protocol in this regard. The last change in security is the new core to use the hardware random number generator (provided in some new processors), rather than relying on random hardware entropy. Virtual Linux Linux 2.6 is a very interesting feature is the architecture that includes "user-mode". It is essentially a transplant - transplant Linux to itself (just like porting to different hardware systems), allowing a completely virtual Linux-ON-Linux running environment. The new Linux instance runs like a normal application. In this new Linux, you can configure pseudo networks, file systems, or some other devices, and the entire process is securely interacting with the host Linux through a dedicated driver. This proves not only in development aspects (analysis, statistics, etc.) and is very useful in security analysis and cousins. Of course, most users don't need this support, it is just as a cool feature that can run on your machine. (I have a deep impression on your friends!) Laptop Computer In addition to some of the general support mentioned above (such as the improvements of APM and ACPI, improved wireless support, etc.), Linux has two difficulties Laptop users related features. The first is the soft shutdown disk storage that is new core support (Sofware-Suspend-to-Disk Translator Note: Save memory mirror to disk, and then stop - similar HALT, after booting, the kernel gets the saved memory mirroring from the disk and restores Run; soft shutdown does not require hardware support such as APM, ACPI). The other is support for the modern mobile processor to automatically adjust according to whether the user is using the machine to make CPU running speeds (and corresponding power supply requirements).
Backward compatibility although Linux 2.6 is a large kernel upgrade, the impact on user layer applications is almost absent. The main exception is thread, some multi-thread programs that can run on 2.4 or 2.2 will not run on 2.6. Of course, some underlying applications such as module tools will definitely not work. In addition, some files and formats in / procalog and / dev directory have also changed, and if the upper layer is dependent on this, it may not be able to continue. (When more content is moved to the / sys virtual file system, the situation is especially true. In the / dev directory, the backwardly compatible device name can be pushed out.) In addition to these obvious changes There are still many small changes that may have an impact on some application environments. First, very old (Linux 2.0 or earlier) swap partitions need to be reformatted to use in 2.6. (Because the exchange partition does not contain permanent data, this will not be a problem for the user.) Because most suppressed Apache, Zeus and other HTTP servers are close to the kernel speed bottleneck has been resolved, the previous allowed core directly provides web services. The khttpd daemon is also removed. Support for Ontrack and EZDRIVEDOS disk managers, such as old hard drives, and corresponding DOS compatibility support are also removed. Support from the floppy-free start sector to start the sector is also removed, and SYSLINUX is replaced. Finally, the SoundModem function is also removed, but the version of the user space is better and more practical. Write the last document mainly read the long reading of Bitkeeper Changelogs, the "Looking" of the source code, reading the message list, and many many of the Google and Lycos that completed this article or This or that search. Despite this, there may be missing or wrong places. I also carefully carefully use those project pages that have been included into the kernel, as they are relatively officially kernel version support to "greatly exceed". If you find any errors in this document, or want Email to ask me questions, you can email give jpranevich@kniggit.net. People with more technical backgrounds may only need a list of announcements, Dave Jones writes another excellent 2.6 development progress: http://www.codemonkey.org.uk/post-halloween-2.5.txt. His work is purely coincident with any similarity of this article, because we are beginning to focus on the X86 system. Copyright in this article: 2003 Joseph Pranevich. Allows the online redistribution of this article, but if you are interested in non-online publishing (magazines, etc.) this article, please email inform me. As a polite, the above release is updated, I hope to take the email to inform me that I will be deeply grateful. Reference resource
Original: http://www.kniggit.net/wwol26.html