Ebook Modern operating systems (3rd edition) Part 2

305 354 0
Ebook Modern operating systems (3rd edition) Part 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

(BQ) Part 2 book Modern operating systems has contents Multimedia operating systems, deadlocks, multiple processor systems, security, case study 1 linux, case study 2 windows vista, case study 3 symbian os, operating system design, reading list and bibliography.

464 DEADLOCKS CHAP 28 Repeat the previous problem, but now avoid starvation When a baboon that wants to cross to the east arrives at the rope and finds baboons crossing to the west, he waits until the rope is empty, but no more westward-moving baboons are allowed to start until at least one baboon has crossed the other way 29 Write a program to implement the deadlock detection algorithm with multiple resources of each type Your program should read from a file the following inputs: the number of processes, the number of resource types, the number of resources of each type in existence (vector E), the current allocation matrix C (first row, followed by the second row, and so on) the request matrix R (first row, followed by the second row, and so on) The output of your program should indicate if there is a deadlock in the system or not In case there is a deadlock in the system, the program should print out the identities of all processes that are deadlocked MULTIMEDIA OPERATING SYSTEM 30 Write a program that detects if there is a deadlock in the system by using a resource allocation graph Your program should read from a file the following inputs: the number of processes and the number of resources For each process if should read four numbers: the number of resources it is currently holding, the IDs of resources it is holding, the number of resources it is currently requesting, the IDs of resources it is requesting The output of program should indicate if there is a deadlock in the system or not In case there is a deadlock in the system, the program should print out the identities of all processes that are deadlocked Digital movies, video clips, and music are becoming an increasingly common way to present information and entertainment using a computer Audio and video files can be stored on a disk and played back on demand However, their characteristics are very different from the traditional text files that current file systems were designed for As a consequence, new kinds of file systems are needed to handle them Stronger yet, storing and playing back audio and video puts new demands on the scheduler and other parts of the operating system as well In this chapter, we will study many of these issues and their implications for operating systems that are designed to handle multimedia Usually, digital movies go under the name multimedia, which literally means more than one medium Under this definition, this book is a multimedia work After all, it contains two media: text and images (the figures) However, most people use the term "multimedia" to mean a document containing two or more continuous media, that is media that must be played back over some time interval In this book, we will use the term multimedia in this sense Another term that is somewhat ambiguous is "video." In a technical sense, it is just the image portion of a movie (as opposed to the sound portion) In fact, camcorders and televisions often have two connectors, one labeled "video" and one labeled "audio," since the signals are separate However, the term "digital video" normally refers to the complete product, with both image and sound Below we will use the term "movie" to refer to the complete product Note that a movie in this sense need not be a two-hour long film produced by a Hollywood 465 466 MULTIMEDIA OPERATING SYSTEMS CHAP studio at a cost exceeding that of a Boeing 747 A 30-sec news clip streamed from CNN's home page over the Internet is also a movie under our definition We will also call these "video clips" when we are referring to very short movies 7.1 INTRODUCTION TO MULTIMEDIA Before getting into the technology of multimedia, a few words about its current and future uses are perhaps helpful to set the stage On a single computer, multimedia often means playing a prerecorded movie from a DVD (Digital Versatile Disk) DVDs are optical disks that use the same 120-mm polycarbonate (plastic) blanks that CD-ROMs use, but are recorded at a higher density, giving a capacity of between GB and 17 GB, depending on the format Two candidates are vying to be the successor to DVD One is called Blu-ray, and holds 25 GB in the single-layer format (50 GB in the double-layer format) The other is called HD DVD and holds 15 GB in the single-layer format (30 GB in the double-layer format) Each format is backed by a different consortium of computer and movie companies Apparently the electronics and entertainment industries are nostalgic for the format wars of the 1970s and 1980s between Betamax and VHS, so they decided to repeat it Undoubtedly this format war will delay the popularity of both systems for years, as consumers wait to see which one is going to win Another use of multimedia is for downloading video clips over the Internet Many Web pages have items that can be clicked on to download short movies Websites such as YouTube have thousands of video clips available As faster distribution technologies take over, such as cable TV and ADSL (Asymmetric Digital Subscriber Line) become the norm, the presence of video clips on the Internet will skyrocket Another area in which multimedia must be supported is in the creation of videos themselves Multimedia editing systems exist and for best performance need to run on an operating system that supports multimedia as well as traditional work Yet another arena where multimedia is becoming important is in computer games Games often run video clips to depict some kind of action The clips are usually short, but there are many of them and the correct one is selected dynamically, depending on some action the user has taken These are increasingly sophisticated Of course, the game itself may generate large amounts of animation, but handling program-generated video is different than showing a movie Finally, the holy grail of the multimedia world is video on demand, by which people mean the ability for consumers at home to select a movie using their television remote control (or mouse) and have it displayed on their TV set (or computer monitor) on the spot To enable video on demand, a special infrastructure is needed In Fig 7-1 we see two possible video-on-demand infrastructures Each SEC 7.1 INTRODUCTION TO MULTIMEDIA 467 one contains three essential components: one or more video servers, a distribution network, and a set-top box in each house for decoding the signal The video server is a powerful computer that stores many movies in its file system and plays them back on demand Sometimes mainframes are used as video servers, since connecting, say, 1000 large disks to a mainframe is straightforward, whereas connecting 1000 disks of any kind to a personal computer is a serious problem Much of the material in the following sections is about video servers and their operating systems B p En] Wm \ Video server Copper twisted pair' (a) Cable TV coaxial cable (b) Figure 7-1 Video on demand using different local distribution technologies, (a) ADSL, (b) Cable TV The distribution network between the user and the video server must be capable of transmitting data at high speed and in real time The design of such networks is interesting and complex, but falls outside the scope of this book We will not say any more about them except to note that these networks always use fiber optics from the video server down to a junction box in each neighborhood 468 MULTIMEDIA OPERATING SYSTEMS CHAP where customers live In ADSL systems, which are provided by telephone companies, the existing twisted-pair telephone line provides the last kilometer or so of transmission In cable TV systems, which are provided by cable operators, existing cable TV wiring is used for the local distribution ADSL has the advantage of giving each user a dedicated channel, hence guaranteed bandwidth, but the bandwidth is low (a few megabits/sec) due to limitations of existing telephone wire Cable TV uses high-bandwidth coaxial cable (at gigabits/sec), but many users have to share the same cable, giving contention for it and no guaranteed bandwidth to any individual user However, in order to compete with cable companies, the telephone companies are starting to put in fiber to individual homes, in which case ADSL over fiber will have much more bandwidth than cable The last piece of the system is the set-top box, where the ADSL or TV cable terminates This device is, in fact, a normal computer, with certain special chips for video decoding and decompression As a minimum, it contains a CPU, RAM, ROM, interface to ADSL or the cable, and connector for the TV set An alternative to a set-top box is to use the customer's existing PC and display the movie on the monitor Interestingly enough, the reason set-top boxes are even considered, given that most customers probably already have a computer, is that video-on-demand operators expect that people will want to watch movies in their living rooms, which usually contain a TV but rarely a computer From a technical perspective, using a personal computer instead of a set-top box makes far more sense since it is more powerful, has a large disk, and has a far higher resolution display Either way, we will often make a distinction between the video server and the client process at the user end that decodes and displays the movie In terms of system design, however, it does not matter much if the client process runs on a set-top box or on a PC For a desktop video editing system, all the processes run on the same machine, but we will continue to use the terminology of server and client to make it clear which process is doing what Getting back to multimedia itself, it has two key characteristics that must be well understood to deal with it successfully: Multimedia uses extremely high data rates Multimedia requires real-time playback The high data rates come from the nature of visual and acoustic information The eye and the ear can process prodigious amounts of information per second, and have to be fed at that rate to produce an acceptable viewing experience The data rates of a few digital multimedia sources and some common hardware devices are listed in Fig 7-2 We will discuss some of these encoding formats later in this chapter What should be noted is the high data rates multimedia requires, the need for compression, and the amount of storage that is required For example, an uncompressed 2-hour HDTV movie fills a 570-GB file A video server that stores 1000 such movies needs 570 TB of disk space, a nontrivial amount by current SEC 7.1 469 INTRODUCTION TO MULTIMEDIA standards What is also of note is that without data compression, current hardware cannot keep up with the data rates produced We will examine video compression later in this chapter Source Mbps GB/hr Device Mbps Telephone (PCM) 0.064 0.03 Fast Ethernet MP3 music 0.14 0.06 EIDE disk 133 Audio CD 1.4 0.62 ATM OC-3 network 156 MPEG-2 movie (640 x 480) Digital camcorder (720 x 480) 1.76 25 IEEE 1394b (FireWire) 100 800 11 Gigabit Ethernet 1000 SATA disk 3000 Ultra-640 SCSI disk 5120 Uncompressed TV (640 x 480) 221 97 Uncompressed HDTV (1280 x 720) 648 288 Figure 7-2 Some data rates for multimedia and high-performance I/O devices Note that Mbps is 10 bits/sec but GB is bytes The second demand that multimedia puts on a system is the need for real-time data delivery The video portion of a digital movie consists of some number of frames per second The NTSC system, used in North and South America and Japan, runs at 30 frames/sec (29.97 for the purist), whereas the PAL and SECAM systems, used in most of the rest of the world, runs at 25 frames/sec (25.00 for the purist) Frames must be delivered at precise intervals of ca 33.3 msec or 40 msec, respectively, or the movie will look choppy Officially NTSC stands for National Television Standards Committee, but the poor way color was hacked into the standard when color television was invented has led to the industry joke that it really stands for Never Twice the Same Color PAL stands for Phase Alternating Line Technically it is the best of the systems SECAM is used in France (and was intended to protect French TV manufacturers from foreign competition) and stands for SEquentiel Couleur Avec Memoire SECAM is also used in Eastern Europe because when television was introduced there, the then-Communist governments wanted to keep everyone from watching German (PAL) television, so they chose an incompatible system The ear is more sensitive than the eye, so a variance of even a few milliseconds in delivery times will be noticeable Variability in delivery rates is called jitter and must be strictly bounded for good performance Note that jitter is not the same as delay If the distribution network of Fig 7-1 uniformly delays all the bits by exactly 5.000 sec, the movie will start slightly later, but will look fine On the other hand, if it randomly delays frames by between 100 and 200 msec, the movie will look like an old Charlie Chaplin film, no matter who is starring The real-time properties required to play back multimedia acceptably are often described by quality of service parameters They include average bandwidth available, peak bandwidth available, minimum and maximum delay (which MULTIMEDIA OPERATING SYSTEMS 470 CHAP together bound the jitter), and bit loss probability For example, a network operator could offer a service guaranteeing an average bandwidth of Mbps, 99% of the transmission delays in the interval 105 to 110 msec, and a bit loss rate of 10~ , which would be fine for MPEG-2 movies The operator could also offer a cheaper, lower-grade service, with an average bandwidth of Mbps (e.g., ADSL), in which case the quality would have to be compromised somehow, possibly by lowering the resolution, dropping the frame rate, or discarding the color information and showing the movie in black and white The most common way to provide quality of service guarantees is to reserve capacity in advance for each new customer The resources reserved include a portion of the CPU, memory buffers, disk transfer capacity, and network bandwidth If a new customer comes along and wants to watch a movie, but the video server or network calculates that it does not have sufficient capacity for another customer, it has to reject the new customer to avoid degrading the service being provided to current customers As a consequence, multimedia servers need resource reservation schemes and an admission control algorithm to decide when they can handle more work SEC 7.2 MULTIMEDIA FILES Frame 10 7.2 M U L T I M E D I A F I L E S In most systems, an ordinary text file consists of a linear sequence of bytes without any structure that the operating system knows about or cares about With multimedia, the situation is more complicated To start with, video and audio are completely different They are captured by distinct devices (CCD chip versus microphone), have a different internal structure (video has 25-30 frames/sec; audio has 44,100 samples/sec), and they are played back by different devices (monitor versus loudspeakers) Furthermore, most Hollywood movies are now aimed at a worldwide audience, most of which does not speak English The latter point is dealt with in one of two ways For some countries, an additional sound track is produced, with the voices dubbed into the local language (but not the sound effects) In Japan, all televisions have two sound channels to allow the viewer to listen to foreign films in either the original language or in Japanese A button on the remote control is used for language selection In still other countries, the original sound track is used, with subtitles in the local language In addition, many TV movies now provide closed-caption subtides in English as well, to allow English-speaking but hearing-impaired people to watch the movie The net result is that a digital movie may actually consist of many files: one video file, multiple audio files, and multiple text files with subtitles in various languages DVDs have the capability for storing up to 32 language and subtitle files A simple set of multimedia files is shown in Fig 7-3 We will explain the meaning of fast forward and fast backward later in this chapter 471 | Video f I ! f I f f ! If Sure is |Ho eyou| Greai j And you | Good | Prima | ] Goed j f English audio French audio G e r m a n audio English subtitles Dutch subtitles • Bob | Hello Alice | Wee day | Oag.ScS [ p ,Alice | Mooiedag | 39 Jazeker wa JHoogaalhelj Enjij F a s t forward Fas! backward Figure 7-3 A movie may consist of several files As a consequence, the file system needs to keep track of multiple "subfdes" per file One possible scheme is to manage each subfile as a traditional file (e.g., using an i-node to keep track of its blocks) and to have a new data structure that lists all the subfiles per multimedia file Another way is to invent a kind of twodimensional i-node, with each column listing the blocks of each subfile In general, the organization must be such that the viewer can dynamically choose which audio and subtitle tracks to use at the time the movie is viewed In all cases, some way to keep the subfiles synchronized is also needed so that when the selected audio track is played back it remains in sync with the video If the audio and video get even slightly out of sync, the viewer may hear an actor's words before or after his lips move, which is easily detected and fairly annoying To better understand how multimedia files are organized, it is necessary to understand how digital audio and video work in some detail We will now give an introduction to these topics 7.2.1 Video Encoding The human eye has the property that when an image is flashed on the retina, it is retained for some number of milliseconds before decaying If a sequence of images is flashed at 50 or more images/sec, the eye does not notice that it is 472 MULTIMEDIA OPERATING SYSTEMS CHAP looking at discrete images All video- and film-based motion picture systems exploit this principle to produce moving pictures To understand video systems, it is easiest to start with simple, old-fashioned black-and-white television To represent the two-dimensional image in front of it as a one-dimensional voltage as a function of time, the camera scans an electron beam rapidly across the image and slowly down it, recording the light intensity as it goes At the end of the scan, called a frame, the beam retraces This intensity as a function of time is broadcast, and receivers repeat the scanning process to reconstruct the image The scanning pattern used by both the camera and the receiver is shown in Fig 7-4 (As an aside, CCD cameras integrate rather than scan, but some cameras and all CRT monitors scan.) Scan line The next Held / s t a r t s here Scan line painted / on the screen x , Horizontal retrace , Vertical, r e t r a c e SEC 7.2 MULTIMEDIA FILES increase the frame rate, which would require using more scarce bandwidth, a different approach is taken Instead of displaying the scan lines in order from top to bottom, first all the odd scan lines are displayed, then the even ones are displayed Each of these half frames is called a field Experiments have shown that although people notice flicker at 25 frames/sec, they not notice it at 50 fields/sec This technique is called interlacing Noninterlaced television or video is said to be progressive Color video uses the same scanning pattern as monochrome (black and white), except that instead of displaying the image with one moving beam, three beams moving in unison are used One beam is used for each of the three additive primary colors: red, green, and blue (RGB) This technique works because any color can be constructed from a linear superposition of red, green, and blue with the appropriate intensities However, for transmission on a single channel, the three color signals must be combined into a single composite signal To allow color transmissions to be viewed on black-and-white receivers, all three systems linearly combine the RGB signals into a luminance (brightness) signal, and two chrominance (color) signals, although they all use different coefficients for constructing these signals from the RGB signals Oddly enough, the eye is much more sensitive to the luminance signal than to the chrominance signals, so the latter need not be transmitted as accurately Consequently, the luminance signal can be broadcast at the same frequency as the old black-and-white signal, so it can be received on black-and-white television sets The two chrominance signals are broadcast in narrow bands at higher frequencies Some television sets have knobs or controls labeled brightness, hue, and saturation (or brightness, tint and color) for controlling these three signals separately Understanding luminance and chrominance is necessary for understanding how video compression works So far we have looked at analog video Now let us turn to digital video The simplest representation of digital video is a sequence of frames, each consisting of a rectangular grid of picture elements, or pixels For color video, bits per pixel are used for each of the RGB colors, giving = 16 million colors, which is enough The human eye cannot even distinguish this many colors, let alone more To produce smooth modon, digital video, like analog video, must display at least 25 frames/sec However, since good quality computer monitors often rescan the screen from images stored in video RAM at 75 times per second or more, interlacing is not needed Consequently, all computer monitors use progressive scanning Just repainting (i.e., redrawing) the same frame three times in a row is enough to eliminate flicker In other words, smoothness of motion is determined by the number of different images per second, whereas flicker is determined by the number of times the screen is painted per second These two parameters are different A still image painted at 20 frames/sec will not show jerky motion but it will flicker because one frame will decay from the retina before the next one appears A movie Figure 7-4 The scanning pattern used for NTSC video and television The exact scanning parameters vary from country to country NTSC has 525 scan lines, a horizontal to vertical aspect ratio of 4:3, and 30 (really 29.97) frames/sec The European PAL and SECAM systems have 625 scan lines, the same aspect ratio of 4:3, and 25 frames/sec In both systems, the top few and bottom few lines are not displayed (to approximate a rectangular image on the original round CRTs) Only 483 of the 525 NTSC scan lines (and 576 of the 625 PAL/SECAM scan lines) are displayed While 25 frames/sec is enough to capture smooth motion, at that frame rate many people, especially older ones, will perceive the image to flicker (because the old image has faded off the retina before the new one appears) Rather than 473 474 MULTIMEDIA OPERATING SYSTEMS CHAP with 20 different frames per second, each of which is painted four times in a row at 80 Hz, will not flicker, but the motion will appear jerky The significance of these two parameters becomes clear when we consider the bandwidth required for transmitting digital video over a network Many computer monitors use the 4:3 aspect ratio so they can use inexpensive, mass-produced picture tubes designed for the consumer television market Common configurations are 640 x 480 (VGA), 800 x 600 (SVGA), 1024 x 768 (XGA), and 1600 x 1200 (UXGA) A UXGA display with 24 bits per pixel and 25 frames/sec needs to be fed at 1.2 Gbps, but even a VGA display needs 184 Mbps Doubling these rates to avoid flicker is not attractive A better solution is to transmit 25 frames/sec and have the computer store each one and paint it twice Broadcast television does not use this strategy because television sets not have memory, and in any event, analog signals cannot be stored in RAM without first converting them to digital form, which requires extra hardware As a consequence, interlacing is needed for broadcast television but not for digital video SEC 7.2 MULTIMEDIA FILES 475 mathematically by a physicist at Bell Labs, Harry Nyquist, in 1924 and is known as the Nyquist theorem Sampling more often is of no value since the higher frequencies that such sampling could detect are not present 1.00 f /~v r ,(, r Figure 7-5 (a) A sine wave, (b) Sampling the sine wave, (c) Quantizing the samples to bits 7.2.2 Audio Encoding An audio (sound) wave is a one-dimensional acoustic (pressure) wave When an acoustic wave enters the ear, the eardrum vibrates, causing the tiny bones of the inner ear to vibrate along with it, sending nerve pulses to the brain These pulses are perceived as sound by the listener In a similar way, when an acoustic wave strikes a microphone, the microphone generates an electrical signal, representing the sound amplitude as a function of time The frequency range of the human ear runs from 20 Hz to 20,000 Hz; some animals, notably dogs, can hear higher frequencies The ear hears logarithmically, so the ratio of two sounds with amplitudes A and B is conventionally expressed in dB (decibels) according to the formula dB = 201og (A/5) I0 If we define the lower limit of audibility (a pressure of about 0.0003 dyne/cm ) for a 1-kHz sine wave as dB, an ordinary conversation is about 50 dB and the pain threshold is about 120 dB, a dynamic range of a factor of million To avoid any confusion, A and B above are amplitudes If we were to use the power level, which is proportional to the square of the amplitude, the coefficient of the logarithm would be 10, not 20 Audio waves can be converted to digital form by an ADC (Analog Digital Converter) An ADC takes an electrical voltage as input and generates a binary number as output In Fig 7-5(a) we see an example of a sine wave To represent this signal digitally, we can sample it every AT seconds, as shown by the bar heights in Fig 7-5(b) If a sound wave is not a pure sine wave, but a linear superposition of sine waves where the highest frequency component present is /, then it is sufficient to make samples at a frequency 2/ This result was proven Digital samples are never exact The samples of Fig 7-5(c) allow only nine values, from -1.00 to +1.00 in steps of 0.25 Consequently, bits are needed to represent all of them An 8-bit sample would allow 256 distinct values.' A 16-bit sample would allow 65,536 distinct values The error introduced by the finite number of bits per sample is called the quantization noise If it is too large, the ear detects it Two well-known examples of sampled sound are the telephone and audio compact discs Pulse code modulation is used within the telephone system and uses 7-bit (North America and Japan) or 8-bit (Europe) samples 8000 times per second This system gives a data rate of 56,000 bps or 64,000 bps With only 8000 samples/sec, frequencies above kHz are lost Audio CDs are digital with a sampling rate of 44,100 samples/sec, enough to capture frequencies up to 22,050 Hz, which is good for people, bad for dogs The samples are 16 bits each, and are linear over the range of amplitudes Note that 16-bit samples allow only 65,536 distinct values, even though the dynamic range of the ear is about million when measured in steps of the smallest audible sound Thus using only 16 bits per sample introduces some quantization noise (although the full dynamic range is not covered—CDs are not supposed to hurt) With 44,100 samples/sec of 16 bits each, an audio CD needs a bandwidth of 705.6 Kbps for monaural and 1.411 Mbps for stereo (see Fig 7-2) Audio compression is possible based on psychoacoustic models of how human hearing works A compression of lOx is possible using the MPEG layer (MP3) system Portable music players for this format have been common in recent years Digitized sound can easily be processed by computers in software Dozens of programs exist for personal computers to allow users to record, display, edit, mix 476 MULTIMEDIA OPERATING SYSTEMS CHAP and store sound waves from multiple sources Virtually all professional sound recording and editing is digital nowadays Analog is pretty much dead 7.3 V I D E O C O M P R E S S I O N It should be obvious by now that manipulating multimedia material in uncompressed form is completely out of the question—it is much too big The only hope is that massive compression is possible Fortunately, a large body of research over the past few decades has led to many compression techniques and algorithms that make multimedia transmission feasible In the following sections we will study some methods for compressing multimedia data, especially images For more detail, see (Fluckiger, 1995; and Steinmetz and Nahrstedt, 1995) All compression systems require two algorithms: one for compressing the data at the source, and another for decompressing them at the destination In the literature, these algorithms are referred to as the encoding and decoding algorithms, respectively We will use this terminology here, too These algorithms have certain asymmetries that are important to understand First, for many applications, a multimedia document, say, a movie will only be encoded once (when it is stored on the multimedia server) but will be decoded thousands of times (when it is viewed by customers) This asymmetry means that it is acceptable for the encoding algorithm to be slow and require expensive hardware provided that the decoding algorithm is fast and does not require expensive hardware On the other hand, for real-time multimedia, such as video conferencing, slow encoding is unacceptable Encoding must happen on-the-fly, in real time A second asymmetry is that the encode/decode process need not be 100% invertible That is, when compressing a file, transmitting it, and then decompressing it, the user expects to get the original back, accurate down to the last bit With multimedia, this requirement does not exist It is usually acceptable to have the video signal after encoding and then decoding be slightly different than the original When the decoded output is not exactly equal to the original input, the system is said to be lossy All compression systems used for multimedia are lossy because they give much better compression 73.1 The J P E G S t a n d a r d The JPEG (Joint Photographic Experts Group) standard for compressing continuous-tone still pictures (e.g., photographs) was developed by photographic experts working under the joint auspices of ITU, ISO, and IEC, another standards body It is important for multimedia because, to a first approximation, the multimedia standard for moving pictures, MPEG, is just the JPEG encoding of each frame separately, plus some extra features for interframe compression and motion SEC 7.3 VIDEO COMPRESSION 477 compensation JPEG is defined in International Standard 10918 It has four modes and many options, but we will only be concerned with the way it is used for 24-bit RGB video and will leave out many of the details Step of encoding an image with JPEG is block preparation For the sake of specificity, let us assume that the JPEG input is a 640 x 480 RGB image with 24 bits/pixel, as shown in Fig 7-6(a) Since using luminance and chrominance gives better compression, the luminance and two chrominance signals are computed from the RGB values For NTSC they are called Y, I, and Q, respectively For PAL they are called Y, U, and V, respectively, and the formulas are different Below we will use the NTSC names, but the compression algorithm is the same RGB 640 24-Bit pixel F i g u r e 7-6 (a) R G B input data, (b) After block preparation Separate matrices are constructed for Y, /, and Q, each with elements in the range to 255 Next, square blocks of four pixels are averaged in the / and Q matrices to reduce them to 320 x 240 This reduction is lossy, but the eye barely notices it since the eye responds to luminance more than to chrominance Nevertheless, it compresses the data by a factor of two Now 128 is subtracted from each element of all three matrices to put in the middle of the range Finally, each matrix is divided up into x blocks The Y matrix has 4800 blocks; the other two have 1200 blocks each, as shown in Fig 7-6(b) Step of JPEG is to apply a DCT (Discrete Cosine Transformation) to each of the 7200 blocks separately The output of each DCT is an x matrix of DCT coefficients DCT element (0, 0) is the average value of the block The other elements tell how much spectral power is present at each spatial frequency For those readers familiar with Fourier transforms, a DCT is a kind of twodimensional spatial Fourier transform In theory, a DCT is lossless, but in practice using floating-point numbers and transcendental functions introduces some roundoff error that results in a little information loss Normally, these elements decay rapidly with distance from the origin, (0, 0), as suggested by Fig 7-7(b) Once the DCT is complete, JPEG moves on to step 3, which is called quantization, in which the less important DCT coefficients are wiped out This (lossy) CHAP MULTIMEDIA OPERATING SYSTEMS 478 SEC VIDEO COMPRESSION 7.3 479 most of them to small values No differentials are computed from the other values The (0, 0) values are referred to as the DC components; the other values are the AC components Step linearizes the 64 elements and applies run-length encoding to the list Scanning the block from left to right and then top to bottom will not concentrate the zeros together, so a zig-zag scanning pattern is used, as shown in Fig 7-9 In this example, the zig-zag pattern ultimately produces 38 consecutive Os at the end of the matrix This string can be reduced to a single count saying there are 38 zeros 150 S* p f Figure 7-7 (a) One block of the Y matrix, (b) The DCT coefficients X transformation is done by dividing each of the coefficients in the x DCT matrix by a weight taken from a table If ail the weights are 1, the transformation does nothing However, if the weights increase sharply from the origin, higher spatial frequencies are dropped quickly An example of this step is given in Fig 7-8 Here we see the initial DCT matrix, the quantization table, and the result obtained by dividing each DCT element by the corresponding quantization table element The values in the quantization table are not part of the JPEG standard Each application must supply its own quantization table, giving it the ability to control its own loss-compression tradeoff ISO 80 92 75 52 38 12 2 1 0 40 36 26 I 0 14 10 i 0 0 0 0 0 Quantization table Q u a n t i z e d coefficients D C T Coefficients 0 0 0 0 0 0 0 150 80 92 75 26 19 0 0 0 20 18 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 4 8 16 16 32 32 64 64 2 16 32 64 4 4 16 32 64 X 8 8 16 16 16 16 16 16 16 32 32 64 64 32 32 32 32 32 32 32 64 54 64 64 64 64 64 64 64 Figure 7-8 Computation of the quantized DCT coefficients Steo reduces the (0, 0) value of each block (the one in the upper left-hand comeS by Sg it Ufa the amount it differs from the corresponding element tocSXttSt Since these elements are the averages of their respective S o ^ S Sould change slowly, so taking the differential values should reduce 7* X x X ' 7 ° X A J X X X X X X X X X X X X x V X X X X X X X X X X X X X" X X B S 0^ I A s " Figure 7-9 The order in which the quantized values are transmitted Now we have a list of numbers that represent the image (in transform space) Step uses Huffman encoding on the numbers for storage or transmission JPEG may seem complicated, but that is because it is complicated Still, since it often produces a 20:1 compression or better, it is widely used Decoding a JPEG image requires running the algorithm backward JPEG is roughly symmetric: it takes about as long to decode an image as to encode it 7.3.2 The M P E G Standard Finally, we come to the heart of the matter: the MPEG (Motion Picture Experts Group) standards These are the main algorithms used to compress videos and have been international standards since 1993 MPEG-1 (International Standard 11172) was designed for video recorder-quality output (352 x 240 for NTSC) using a bit rate of 1.2 Mbps MPEG-2 (International Standard 13818) was designed for compressing broadcast quality video into to Mbps, so it could fit in a NTSC or PAL broadcast channel Both versions take advantages of the two kinds of redundancies that exist in movies: spatial and temporal Spatial redundancy can be utilized by simply coding each frame separately with JPEG Additional compression can be achieved by 480 MULTIMEDIA OPERATING SYSTEMS CHAP taking advantage of the fact that consecutive frames are often almost identical (temporal redundancy) The DV (Digital Video) system used by digital camcorders uses only a JPEG-like scheme because encoding has to be done in real time and it is much faster to just encode each frame separately The consequences of this decision can be seen in Fig 7-2: although digital camcorders have a lower data rate than uncompressed video, they are not nearly as good as full MPEG-2 (To keep the comparison honest, note that DV camcorders sample the luminance with bits and each chrominance signal with bits, but there is still a factor of five compression using the JPEG-like encoding.) For scenes where the camera and background are rigidly stationary and one or two actors are moving around slowly, nearly all the pixels will be identical from frame to frame Here, just subtracting each frame from the previous one and running JPEG on the difference would fine However, for scenes where the camera is panning or zooming, this technique fails badly What is needed is some way to compensate for this motion This is precisely what MPEG does; in fact, this is the main difference between MPEG and JPEG MPEG-2 output consists of three different kinds of frames that have to be processed by the viewing program: I (Intracoded) frames: Self-contained JPEG-encoded still pictures P (Predictive) frames: Block-by-block difference with the last frame B (Bidirectional) frames: Differences with the last and next frame I-frames are just still pictures coded using JPEG, also using full-resolution luminance and half-resolution chrominance along each axis It is necessary to have I-frames appear in the output stream periodically for three reasons First, MPEG can be used for television broadcasting, with viewers tuning in at will If all frames depended on their predecessors going back to the first frame, anybody who missed the first frame could never decode any subsequent frames This would make it impossible for viewers to tune in after the movie had started Second, if any frame were received in error, no further decoding would be possible Third, without I-frames, while doing a fast forward or rewind, the decoder would have to calculate every frame passed over so it would know the full value of the one it stopped on With I-frames, it is possible to skip forward or backward until an I-frame is found and start viewing there For these reasons, I-frames are inserted into the output once or twice per second P-frames, in contrast, code interframe differences They are based on the idea of macroblocks, which cover 16 x 16 pixels in luminance space and x pixels in chrominance space A macroblock is encoded by searching the previous frame for it or something only slightly different from it An example of where P-frames would be useful is given in Fig 7-10 Here we see three consecutive frames that have the same background, but differ in the position of one person Such scenes are common when the camera is fixed on a SEC 7.3 VIDEO COMPRESSION 481 tripod and the actors move around in front of it The macroblocks containing the background scene will match exactly, but the macroblocks containing the person will be offset in position by some unknown amount and will have to be tracked down Figure 7-10 Three consecutive video frames The MPEG standard does not specify how to search, how far to search, or how good a match has to be to count This is up to each implementation For example, an implementation might search for a macroblock at the current position in the previous frame, and all other positions offset ±Ax in the x direction and ±Ay in the y direction For each position, the number of matches in the luminance matrix could be computed The position with the highest score would be declared the winner, provided it was above some predefined threshold Otherwise, the macroblock would be said to be missing Much more sophisticated algorithms are also possible, of course If a macroblock is found, it is encoded by taking the difference with its value in the previous frame (for luminance and both chrominances) These difference matrices are then subject to the JPEG encoding The value for the macroblock in the output stream is then the motion vector (how far the macroblock moved from its previous position in each direction), followed by the JPEG-encoded differences with the one in the previous frame If the macroblock is not located in the previous frame, the current value is encoded with JPEG, just as in an I-frame B-frames are similar to P-frames, except that they allow the reference macroblock to be in either a previous frame or a succeeding frame, either in an I-frame or in a P-frame This additional freedom allows improved motion compensation, and is also useful when objects pass in front of, or behind, other objects For example, in a baseball game, when the third baseman throws the ball to first base, there may be some frame where the ball obscures the head of the moving second baseman in the background In the next frame, the head may be partially visible to the left of the ball, with the next approximation of the head being derived from the following frame when the ball is now past the head B-frames allow a frame to be based on a future frame To B-frame encoding, the encoder needs to hold three decoded frames in memory at the same time: the past one, the current one, and the future one To simplify decoding, frames must be present in the MPEG stream in dependency 482 MULTIMEDIA OPERATING SYSTEMS CHAP order, rather than in display order Thus even with perfect dming, when a video is viewed over a network, buffering is required on the user's machine to reorder the frames for proper display Due to this difference between dependency order and display order, trying to play a movie backward will not work without considerable buffering and complex algorithms Films with lots of action and rapid cutting (such as war films), require many I-frames Films in which the director can point the camera and then go out for coffee while the actors recite their lines (such as love stories) can use long runs of P-frames and B-frames, which use far less storage than I-frames From a diskefficiency point of view, a company running a multimedia service should therefore try to get as many women customers as possible 7.4 AUDIO C O M P R E S S I O N CD-quality audio requires a transmission bandwidth of 1.411 Mbps, as we just saw Clearly, substantial compression is needed to make transmission over the Internet practical For this reason, various audio compression algorithms have been developed Probably the most popular one is MPEG audio, which has three layers (variants), of which MP3 (MPEG audio layer 3) is the most powerful and best known Large amounts of music in MP3 format are available on the Internet, not all of it legal, which has resulted in numerous lawsuits from the artists and copyright owners MP3 belongs to the audio portion of the MPEG video compression standard Audio compression can be done in one of two ways In waveform coding the signal is transformed mathematically by a Fourier transform into its frequency components Figure 7-11 shows an example function of time and its first 15 Fourier amplitudes The amplitude of each component is then encoded in a minimal way The goal is to reproduce the waveform accurately at the other end in as few bits as possible The other way, perceptual coding, exploits certain flaws in the human auditory system to encode a signal in such a way that it sounds the same to a human listener, even if it looks quite different on an oscilloscope Perceptual coding is based on the science of psychoacoustics—how people perceive sound MP3 is based on perceptual coding The key property of perceptual coding is that some sounds can mask other sounds Imagine you are broadcasting a live flute concert on a warm summer day Then all of a sudden, a crew of workmen nearby turn on their jackhammers and start tearing up the street No one can hear the flute any more Its sounds have been masked by the jackhammers For transmission purposes, it is now sufficient to encode just the frequency band used by the jackhammers because the listeners cannot hear the flute anyway This is called frequency masking—the ability of a loud sound in one frequency band to hide a softer sound in another frequency SEC 7.4 AUDIO COMPRESSION o 483 o 0.50 0.25 I Time ' I (a) 101112131415 Harmonic number A Address space, 36, 38, 177-185 Address windowing extensions, 880 Addressing large memories, Vista, 879-880 Admission control algorithm, 470 ADSL (see Asymmetric Digital Subscriber Line) Advanced configuration and power interface, 422 Advanced LPC, 841 Adversary, 613 Adware, 685 Affinitized thread, Vista, 858 Affinity scheduling, 543 Agent, 703 Aging, 156 Aging algorithm, 206 Aiken, Howard, Alarm signal, 37 Algorithmic paradigm, -962 ALPC (see Advanced LPC) Alternate data stream, Vista, 908 Analog digital converter, 474 Analytical engine, Antivirus techniques, 693-699 APC (see Asynchronous Procedure Call) Absolute path, 777 Absolute path name, 267 Access control entry, 916 Access control list, 622-625 Vista, 824 Access token Vista, 915 Access violation, Vista, 884 Accidental data loss, 614 ACE (see Access Control Entry) Acknowledged datagram service, 585 Acknowledgement, 140 Acknowledgement packet, 584 ACL (see Access Control List) ACPI (see Advanced Configuration and Power Interface) Active message, 556 Active object, Symbian, 935-936 ActiveX control, 684, 855 Ada, Adapter, 329 ADC (see Analog Digital Converter) 1045 1046 INDEX Aperiodic real-time system, 159 API (see Application Programming Interface) Applet, 703 Application program issues, 422 Application programming interface, 58,572 Application verifier, Vista, 848 Architectural coherence, 961 Architecture, Associative memory, 194 Asymmetric digital subscriber line, 466,771 Asynchronous call, 554-556 Asynchronous input/output, 342 Asynchronous procedure call, 829,835-837 Atanasoff, John, 7-8 Atomic action, 126 Atomic transaction, 286 Attribute, file, 261 Audio compression, 482-485 Audio encoding, 474-476 Audio visual disk, 383 Authentication, 140,639-654 Authentication using a password, 640-641 Authentication using a physical object, 649 Authentication using biometrics, 651 Automounting, 795 NFS, 794 Available resource vector, 442 AWE (see Address Windowing Extensions) B B programming language, 717 Babbage, Charles, Backdoor, 666 Backing store, 229-231 Backup, file system, 296-302 Bad-news diode, 992 Balance set manager Vista, 887 Bandwidth reservation, Vista, 894 Bank switching Vista, 879 Banker's algorithm, 449-452 multiple resources, 450-452 single resource, 449-450 Barrier, 144-145 INDEX Base priority, Vista, 871 Base record, Vista, 904 Base register, 178-179 Basic block, 571 Basic input output system, 31,174 Batch scheduling, 148-149 Batch system, 9-10 Battery management, 421-422 Battery-powered computer, 998 Behavioral checker, 697-698 Bell-La Padula model, 632-634 Berkeley UNIX, 719-720 Berry, Clifford, 7-8 Best-fit algorithm, 184 Biba model, 634 Big kernel lock, 751 Binary exponential backoff, 582 Binary semaphore, 127 Binary translation, 571 Binding time, 974-975 Biometrics, 651 BIOS (see Basic Input Output System) BitLocker, 914 Bitmap, 409-411,410 device-independent, 411 Black-hat hacker, 640 Block cache, 305 Block caching, multimedia, 509-510 Block device, 328,348 Block size, 290 Block special file, 41,258 Linux, 768 Block started by symbol, 754 Blocking call, 553-556 Blocking network, 528 Biu-ray, 373-374,466 Blue pill, 686 Blue screen of death, 839 Bluetooth, 397 Boot, 751 Boot block, 271 Boot driver, Vista, 843 Boot sector virus, 675-676 Booting Linux, 751-753 Booting the computer, 31 Booting Vista, 843-844 Botnet, 666 Bottom-up implementation, 976-977 Bounded-buffer, 124 Bridge, 582 Brinch Hansen, Per, 134 Brooks, Fred, 11 Browser hijacking, 685 Brute force, 981-982 BSD, 12 BSOD (see Blue Screen Of Death) BSS (see Block Started by Symbol) Buddy algorithm, 762 Buffer cache, 305 Buffer overflow attack, 658-660 Buffered input/output, 342, 353-255 Burst mode, 336 Bus, 28-30 Busy waiting, 27,120, 344 Byron, Lord, Byte code, 708 c C-list (see Capability list) C preprocessor, 72 C programming, 70-73 C programming language, 717 CA (see Certification Authority) Cache, 773, 840, 890, 891 file, 305-308 web server, 96 write-through, 307 Cache-coherence protocol, 525 Cache-coherent NUMA multiprocessor, 529 Cache hit, 22 Cache line, 22,525 Cache manager, Vista, 840 Cache memory, 21-22 Caching, 987-988 multimedia, 508-511 Vista, 890-892 Call gate, 244 Canonical mode, 394 Capability, 625-628 1047 Capability list, 625, 636 Cavity virus, 674 CC-NUMA (see Cache-Coherent NUMA multiprocessor) CD-Recordable, 369-371 CD-Rewritable, 371 CD-ROM, 365-371 multisession, 370 CD-ROM file system, 310-311 CD-ROM sector, 367 CD-ROM track, 370 CD-ROM XA, 370 Central processing unit, 17-21,419-420 CERT (see Computer Emergency Response Team) Certificate, 619 Certification authority, 619 Challenge-response authentication, 648 Character device, 328, 348 Character special file, 41, 258 Linux, 768 Checkerboarding, 236 Checkpoint, 445 Chief programmer team, 992 Child process, 37,736 Chip-level multiprocessor, 531 Chrominance, 473 Ciphertext, 615 Circuit switching, 549 Circular buffer, 354 Class driver Vista, 843 Classical IPC problems, 161-167 Cleaner, 284 Cleaning policy, 224 Client, 65 Client-server design, Symbian, 931-932 Client-server model, 65 Client-server system, 969-970 Client stub, 557 Clock, 386-392 Clock algorithm, 203-204 Clock hardware, 386-388 Clock software, 388-392 Clock tick, 387 Cluster computer, 546 Cluster of workstations, 546 Cluster size, 317 1048 INDEX CMP (see Chip-Level Multiprocessor) CMS (see Conversational Monitor System) Co-scheduling, 545 Code bugs, exploiting, 657-665 Code injection attack, 664 Code review, 655 Code signing, 699-700 Symbian, 947 Colossus, COM (see Component Object Model) Command interpreter, 36 Committed page Vista, 877 Common criteria, 840 Common object request broker architecture, 594-595 Communication deadlock, 456-457 Communication in Symbian, 933, 949-953 Communication software, multicomputer 551-556 Companion virus, 671 Compatible time sharing system, 11 Component object-model, 826 Composite signal, 473 Compute-bound process, 145 Computer emergency response team, 682 Computer hardware review, 17-31 Computer utility, 13 Condition variable, 131, 135 Configuration manager, Vista, 840 Confinement problem, 635 Connection-oriented service, 584 Connectionless service, 584 Constant data length organization, 502 Constant time length organization, 502 Context data structure, Vista, 861 Context switch, 25, 152 Contiguous allocation, 272 Control object, 833 Control program for microcomputers 13-14,810 Conversational monitor system, 66-67 Cooked mode, 394 Coordination-based middleware, 596-601 Copy-on-write, 221,744, 879 CORBA (see Common Object Request Broker Architecture) INDEX Core, 20, 531 Core image, 36 Core memory, 23 Covert channel, 635-639 COW (see Cluster Of Workstations) CP/M (see Control Program for Microcomputers) CPU (see Central Processing Unit) CPU-bound job, 12 Cracker, 640 Crackers, break-in methods, 641-645 CreateProcessA, 822 CreateProcessW, 822 Critical region, 119-120 Critical section, 119-120, 866 Crossbar switch, 525 Crosspoint, 526 Cryptographic hash function, 617 Cryptography, 614-620 Csrss.exe, 817 CSY module, Symbian, 951 CTSS (see Compatible Time Sharing System) Cube, 547 Current allocation matrix, 442 Current directory, 268 Current priority, Vista, 871 Current virtual time, 209 Cutler, David, 15 Cycle stealing, 336 Cylinder, 24 Cylinder skew, 374 D D-space, 219 DACL (see Discretionary ACL) Daemon, 85,357,736 DAO (see Directed Acyclic Graph) Data caging, 949 Data confidentiality, 611 Data integrity, 612 Data paradigm, 963 Data segment, 53-54, 754 Datagram service, 585 DB (see DeciBel) Deadlock, 431-461 communication, 456-457 conditions for, 435-436 resource, 435-436 Deadlock avoidance, 446-452 Deadlock detection and recovery, 440-446 Deadlock modeling, 436-439 Deadlock prevention, 452-455 attacking circular wait, 454455 attacking hold and wait, 453 attacking mutual exclusion, 452-453 attacking no preemption, 453 Deadlock recovery, 445-446 through killing processes, 445-446 through preemption, 445 through rollback, 445-446 Deadlock research, 459 Deadlock trajectories, 449-450 Decibel, 474 Decoding, video, 476 Dedicated input/output devices, 356 Default data stream, Vista, 908 Defense against malware, 690-710 Defense in depth, 690 Deferred procedure call, 834-835 Defragmentation, 309 Degree of multiprogramming, 92 Dekker's algorithm, 121 Demand paging, 207 Denial of service, 612 Dentry data structure, Linux, 785 Design techniques brute force, 981-982 caching, 987-988 error checking, 982 exploiting locality, 989 hiding the hardware, 977-980 hints, 988-989 indirection, 980 optimizing the common case, 989 performance optimization, 983-990 reentrancy, 981 reusability, 980-981 space-time tradeoffs, 984-987 Device context, 408 Device controller, 329 1049 Device driver, 26, 347-351 dynamically loaded, 26 Symbian, 941-942 Vista, 841-843, 897-898 Device driver interface, 351-353 Device driver virus, 676-677 Device independence, 343, 356 Device-independent bitmap, 411 Device object, 820 Vista, 841 Device stack, Vista, 841, 900-902 Diameter, 547 DIB (see Device-independent Bitmap) Die, 531 Digital research, 13-14 Digital rights management, 829 Digital signature, 617-619 Digital versatile disk, 371-374, 466 Digital video, 480 Dijkstra, E.W., 126 Dining philosophers problem, 162-165 Direct memory access, 27-28,334-337, 345 Symbian, 942-943 Directed acyclic graph, 281 Directory, 39, 258, 266 current, 268 hierarchical, 266-267 implementation, 278-280 single-level, 266 working, 268-269 Directory-based multiprocessor, 529 Directory hierarchy, 590-591 Directory operation, 270-271 Dirty bit, 192 Disabling interrupts, 120-121 Disco, 68 Discovery protocol, Jini, 599 Discretionary access control, 632 Discretionary ACL, Vista, 915 Disk, 46-47 CD-ROM, 365-370 DVD, 371-374 IDE, 359 interleaved, 376 RAID, 361-365 SATA, 359 1050 INDEX INDEX Dynamic link library, 221 Disk farm, 506 Dynamic relocation, 178 Disk formatting, 374-377 Disk hardware, 359-373 Disk memory, 24-25 Disk operating system, 14 E Disk quota, 295-296 Disk scheduling, multimedia, 511-514 E-cos, 177 Disk scheduling algorithm, 377-380 Earliest-deadline-first scheduling, 489-491 elevator, 379 Early binding, 974 shortest seek first, 378 Echoing, 394 Disk space management, 290-296 Eckert, J Presper, Dispatcher object, 834,836 EEPROM (see Electrically Erasable PROM) Dispatcher thread, 96 Effective UID, 800 Distributed operating system, 16 Distributed shared memory, 225,558, 558-563 EFS (see Encrypting File System) Electrically erasable PROM, 23 Distributed system, 523,578,578-601 Elevator algorithm, 379 Distributed systems, 997 Linux, 774-775 DLL (see Dynamic Link Library) Embedded operating system, 33-34,998 DLL hell, 855 Encoding, video, 476-482 DMA (see Direct Memory Access) Encryption, 615,616,694,913,914 DNS (see Domain Name System) Encryption file system, 913 Document-based middleware, 588-589 End-to-end argument, 968 Domain, 620 ENIAC, Domain 0,576 EPOC, 927 Domain name system, 587 Brmo variable, 112 DOS (see Disk Operating System) Error checking, 982 Dotted decimal notation, 642 Error-correcting code, 330 Double buffering, 354 Error handling, 341 Double-indirect block, 320,791 disk, 380-383 Double-interleaved disk, 376 Error reporting, 355 Double torus, 547 Escape character, 396 DPC (see Deferred procedure call) Escape sequence, 398 Drive-by download, 683 Ethernet, 581-582 Driver interface, 422 Event, 866 Driver-kernel interface, 772 Event-driven paradigm, 962 Driver object, 820 Exclusive lock, 780 Vista, 893 Executable program virus, 672-674 Driver verifier Vista, 897 Execution paradigms, 962-963 DRM (see Digital Rights Management) Executive, Vista, 832 Dropper, virus, 671 Executive layer, Vista, 837-841 DSM (see Distributed Shared Memory) Existing resource vector, 442 DV (see Digital Video) Exokernei, 69,968-969 DVD (see Digital Versatile Disk) Exploiting code bugs, 657-665 Dynamic disk, Vista, 893 Exploiting locality, 989 Dynamic disk scheduling, multimedia Ext2 file system, Linux, 784-791 513-514 Ext3 file system, Linux, 791-792 Extensible system, 970 Extent, file, 274 External fragmentation, 236 1051 File handle, NFS, 794 File naming, 255-257 File operation, 262-263 File sharing, semantics, 592-594 File structure, 257-258 File system, 253-323 CD-ROM, 310-311 F FAT-16,902 free block management, 293-295 Fair-share scheduling, 158 ISO 9660,311-314 False sharing, 561-562 Linux, 775-797 FAT (see File Allocation Table) log-structured, 285-287 FAT-16 file system, 255, 902 multimedia, 491-514 FAT-32 file system, 255,902 Symbian, 932,944-949 FCFS (see First-Come First-Served algorithm) UNLXV7,319-321 Fiber, 468, 583, 860, 867 virtual, 286-289 Field, 473 Vista, 902-914 FIFO (see First-in First-Out algorithm) File system, FAT-32,902 File, 38-41 File system backup, 296-302 block special, 41,258,768 File-system-based middleware, 589-594 character special, 41,258, 768 File system block size, 290 goat, 693 File system calls header, 71-72,732 example, 263-266 immediate, 908 Linux, 781 implementation, 272-278 File system consistency, 302-305 implemented with list, 275-276 File system filter driver, 842 mapped, 223 File system implementation, 271-289 memory-mapped, 756 File system layout, 271-272 object, 72 File system management, 290-310 persistent, 254 File system performance, 305-309 random access, 260 File system research, 322 raw block, 774 File system security, Symbian, 945-946 regular, 258 File system structure, Vista, 904-908 sequential access, 260 File type, 258-260 shared, 281-283 Filter, 729,901 sparse, 908 Vista, 841 special, 768 Filter driver, Vista, 900 File access, 260 Finger daemon, 681 File allocation table, 276 Finite-state machine, 97 File attribute, 261-262 Firewall, 691-693 File caching, multimedia, 510-511 stateless, 692 File compression Vista, 912-913 First-come first-served algorithm, 377 File data structure, Linux, 785 First-come first-served scheduling, 150-151 File descriptor, 40,265,781 First-fit algorithm, 184 File encryption, Vista, 913-914 First generation computer, 7-8 File extension, 256-257 First-tn first-out algorithm, 202 INDEX INDEX Flag, command, 728 Flash device, 859 Flash memory, 23 Flashing, 843 Fly-by mode, 336 Folder (see Directory) Font, 411 Format string attack, 660-662 FORTRAN, 8-10 FORTRAN monitor system, 10-11 Fourth generation computer, 13-16 Fragmentation, 218, 310 Frame, 472 CD-ROM, 367 Free block, 293 FreeBSD, 16 Frequency masking, 482 Group ID, Linux, 799 GRUB (see GRand Unified Bootloader) Guaranteed scheduling, 156-157 Guest operating system, 69, 568 GUI (see Graphical User Interface) H Hacker, 640 HAL (see Hardware Abstraction Layer) Handheld computer operating system, 33 Handle, 87,818 Symbian, 929 Vista, 846-848 Hard fault, Vista, 885 Hard link, 271 Hard real time, 158 Hard real-time operating system, 34 Hardware abstraction layer, 829-832, 830 HD DVD (see High-Definition DVD) Gabor wavelet, 653 Head skew, 375 Gang scheduling, 544-546 Header files, C, 71-72,731 Gates, Bill, 13-14 Heap, 755 GDI (see Graphics Device Interface) Hibernation, Vista, 901 GDT (see Global Descriptor Table) Hierarchical directory system, 266 Generic right, 627 High-definition DVD, 373-374,466 GID (see Group ID) High-level format, 377 Global descriptor table, 240 High Sierra CD-ROM, 368 Global paging algorithm, 214-215 Hints, 988-989 Global variable, 114-115 History of Linux, 722-724 Globus toolkit, 601 History of MS-DOS, 810 Gnome, 16,5 History of operating systems, 7-16 GNU Public License, 723 History of UNIX and Linux, 716-724 Goat file, 693 History of Windows, 809-815 Gooey (see Graphical user interface) Hive, Vista, 825,826, 840 GPL (see GNU Public License) Hoare, C.A.R., 134 Grand unified bootloader, 751 Graphical user interface, 1-2,14,402-409,721 Honeypot, 703 Host, 457,583 Graphics adapter, 404 Host operating system, 68,568 Graphics device interface, 408 Hungarian notation, 407 Green book, CD-ROM, 368 Hypercube, 548 Grid, 547, 601 Hyperlink, 588 Group, 624 Hyperthreading, 20 Group ID, 37 Hypervisor, 68 type 1,568,569-570 type 2,570-571 Hypervisor call, 572 1053 Implementation of the file system in Vista, 904-914 Implementation of the object manager in Vista, 844-854 Implementation of threads in Linux, 741-748 Implementation of threads in Vista, 867-869 Import address table, Vista, 855 I Imprecise interrupt, 340-34! Incremental dump, 298 I-node, 55,277-278 Indirection, 980 I-node data structure, Linux, 785 Industry standard architecture, 29 I-node table, Linux, 788 Input/output, 327-425,41-42 I-space, 219 buffered, 342,353-355 IAT (see Import Address Table) interrupt-driven, 344-345 IBM 1401,9 programmed, 342-344 IBM 7094,9-10 software layers, 346-358 IBM zSeries, 11 Symbian, 941-944 IBSYS, 10 using DMA, 345 IC (see Integrated Circuit) Input/output-bound process, 145 IDE disk (see Integrated Drive Electronics disk) Input/output completion port, Vista, 896 Ideal processor, Vista, 872 Input/output device, 25-28, 328-329 Idempotency, 286 Input/output hardware, 327-34f Identity theft, 667 Input/output in Linux, 767-775 IDL (see Interface Definition Language) Input/output in Vista, 892-902 IDS (see Intrusion Detection System) Input/output manager, Vista, 838 HOP, 595 Input/output MMU, 576 Input/output port, 330 Immediate file, Vista, 908 Input/output port space, 26 Impersonation, Vista, 916 Input/output request packet, 851,898-899 Implementation of I/O in Linux, 771 Input/output research, 423-424 Implementation of I/O in Vista, 897-902 Input/output scheduler, 773 Implementation of memory management Input/output software in Linux, 758-767 Implementation of memory management device-independent, 351-356 in Vista, 881-890 goals, 341-342 Implementation of operating principles, 341-345 systems, 967-982 user-space, 357-358 Implementation of paging, 225-232 Input/output system calls in Linux, 771 Implementation of processes Input/output virtualization, 576-577 in Linux, 741-748 Input software, 392-397 Implementation of processes Insider attacks, 654-657 in Vista, 867-869 Instruction backup, 227-228 Implementation of security in Linux, 802 Integer overflow attack, 663 Implementation of security in Vista, 918 Integrated circuit, 11 Implementation of segmentation, 235-236 Integrated drive electronics disk, 26, 359 Implementation of the file system in Integrity checker, 697 Integrity level, 917 Linux, 784-792 1054 Intel core 2,15 Interconnection technology, 547-549 Interface definition language, 594 Interfaces to Linux, 726-727 Interlaced video, 473 Interleaved disk, 529 Internal fragmentation, 217-218 Internet, 582-584 Internet interorb protocol, 595 Internet protocol, 586,770 Interpretation, 706-707 Interprocess communication, 37,117-145 Symbian, 936-937 Vista, 864-865 Interrupt, 27, 337-241 imprecise, 340-341 precise, 339-340 Interrupt-driven input/output, 344-345 Interrupt handler, 346-347 Interrupt service routine, 834 Interrupt vector, 27,90,338 Intrinsics, 400 Intruder, 613-614 Intrusion detection system, 693, 701 Invalid page, Vista, 877 Inverted page table, 198-199 IP (see Internet Protocol) IP address, 586,642 IPC (see InterProcess Communication) Iris recognition, 653 IRP (see Input/output Request Packet) ISA (see Industry Standard Architecture) ISO 9660 file system, 311-314 ISR (see Interrupt Service Routine) J Jailing, 700-701 Java development kit, 708 Java security, 707-709 Java virtual machine, 69, 706-708 JavaSpace, 600-601 JBD (see Journaling Block Device) JDK (see Java Development Kit) INDEX INDEX Jiffy, 748 Jini, 599-601 Jitter, 469 Job, Jobs, Steve, 14 Jobs and fibers Vista, 859-860 Joint photographic experts group, 476 Joliet extensions, 315-316 Journal, 824 Journaling, Vista, 913 Journaling block device, 792 Journaling file system, 285-286 Journaling file system, Linux, 791 JPEG (see Joint Photographic Experts Group) JPEG Standard, 476-479 JVM (see Java Virtual Machine) K KDE, 16,5 Kerckhoffs' principle, 615 Kernel, Vista, 828, 832 Kernel extension, Symbian, 942 Kernel layer Vista, 832-834 Kernel mode, Kernel-mode driver framework, 897 Kernel structure, Linux, 732-735 Kernel threads, 970 Key cryptographic, 615 file, 258 Vista, 844 Keyboard software, 393-396 Keylogger, 666 Kildall, Gary, 13 KMDF (see Kernel-Mode Driver Framework) L -2,23 -2,23 LAN (see Local Area Network) Land, CD-ROM, 365,366 Laptop mode, 767 Large address spaces, 996 Large memory, 45 Large programming project, 72-73 Late binding, 974 Layered system, 61-62, 967-968 LDT (see Local Descriptor Table) Lease, 599 Least recently used algorithm, 204-205, 884 simulating, 205-207 Legacy hardware, 31 Lightweight process, 99 Limit register, 178-179 Linda, 596-597 Line discipline, 774 Linear address, 242 Link, 281,777 Linked list allocation, 275-276 Linker, 72 Linus elevator scheduler, 774-785 Linux, 13,5,715-802 booting, 751-753 history, 13,722-724 implementation of processes, 741-748 Linux block special file, 768 Linux character special file, 768 Linux CLONE call, 746-747 Linux dentry data structure, 785 Linux disk scheduler, 774-775 Linux elevator algorithm, 774-775 Linux ext2 file system, 784-791,785 Linux ext3 file system, 791-792 Linux file data structure, 785 Linux file system, 775-797, 775-798 Linux file system cails, 781, 781-784 Linux goals, 725-726 Linux group ID, 799 Linux i-node data structure, 785 Linux i-node table, 788 Linux input/output, 767-775 Linux input/output system calls, 771-775 Linux interfaces, 726-727 Linux journaling file system, 791 Linux kernel structure, 732-735 Linux loadable module, 775 1055 Linux memory allocation mechanism, 762-763 Linux memory management, 754-767 Linux memory-management system calls, 757-758 Linux networking, 769-771 Linux object cache, 763 Linux open file description table, 790 Linux page descriptor, 759 Linux page reclaiming algorithm, 764-767 Linux paging, 764-767 Linux physical memory management, 758-762 Linux process, 735-753 Linux process identifier, 736 Linux process management, 737-741 Linux process-management system calls, 737-741 Linux process scheduling, 748-751 Linux raw block file, 774 Linux raw file, 774 Linux runqueue, 749 Linux scheduling, 748-751 Linux security, 799-802 Linux special file, 768 Linux superblock, 786 Linux system call access, 112,637,677, 801, 802 alarm, 114,388,741,990 brk, 53, 755,757 chdir, 56,673, 747, 783 chmod, 57,670, 801 chown, 670 clone, 746,748,972,973 close, 54, 262,288,491,702,770,781,795,796 closedir, 270 creat, 781,784 create, 262,270,631,781 exec, 52, 53,79, 108, 621, 659, 675, 738, 739 740, 744,758, 817, 863, 965, 972, 973 execve, 52, 58, 85, 86 exit, 53, 86,702,740 fend, 783 fork, 50, 52,58,79, 85, 86,102,103,220 221,458, 535,736,737,738,743, 744 745, 746, 747, 764,804, 805, 817, 858 859, 863, 965, 972, 982 fstat, 54, 782 fsuid, 807 fsync, 767 1056 INDEX Linux system call (continued) getpid, 736 ioctl, 771, 894, 896 kill, 57, 87,741 link, 55, 270,783,784 lseek, 54,79, 287,745,747, 782, 806, 961 mkdir, 55,783 mmap, 757, 805,823 mount, 40, 56,796, 797 munmap, 757 nice, 749 open, 54, 112, 262, 268, 287, 316, 323, 356 433,439,491,625, 701,768,781,785 787,795, 796,798, 894,929,931 opendir, 270 pause, 89,741 pipe, 782 read, 19, 36,47,48,54,57, 64,96, 97, 102 106,107,168,260, 262, 265, 270, 287 288, 289, 342, 353,4, 491, 492,592 593, 620, 701,702,726,750, 756, 767 768, 781,782,785,788,790,795,796 797,802,894,959, 961,965 readdir, 270,783 rename, 263,270,323 request, 433 rewinddir, 784 rmdir, 55,783 select, 106, 107,169, 837 setgid, 802 setuid, 802, 807 sigaction, 741 signal, 135,346 S t a t , 54,782, 786,788 sync, 307,767, 896 umount, 56 unlink, 56,79,271,783,784 wait, 135, 136,137,346 waitpid, 52,53,738,740 write, 4, 54,263,265,287,288, 307, 354 357,592,620,701, 702,756, 767, 768 770,781,782,785,792,798, 802, 894 Linux task, 742 Linux thread, 744-748 Linux user ID, 799 Linux utility program, 730-732 INDEX Linux virtual address space, 763-764 Linux virtual file system, 784-785 Linux waitqueue, 751 Livelock, 457-458 Load balancing, 563-566 Load control, 216-217 Loadable module, Linux, 775 Local area network, 581 Local descriptor table, 240 Local paging algorithm, 214-215 Local procedure call, 817 Local vs global paging, 214-216 Locality of reference, 207 Location independence, 592 Location transparency, 591-592 Lock, fde, 779 Lock variable, 119 Locking pages, 228-229 Log-structured file system, 283 Logic bomb, 654-655 Logical block addressing, 361 Logical dump, 299 Login spoofing, 656 Lookup service, Jini, 599 Loosely coupled system, 523 Lossy encoding, 476 Lottery scheduling, 157 Low-level format, 374 LPC (see Local Procedure Call) LRU (see Least Recently Used algorithm) Luminance, 473 M Macintosh, 14, 16 Macro, 71 Macro virus, 677 Macroblock, 480 Magic number, 259 Magnetic disk, 359 Mailbox, 141 Mailslot, 864 Mainframe, 1057 Mainframe operating system, 32 Major device, 352,768 Malware, 665-690 Mandatory access control, 632 Mapped file, 223 Mapped page writer Vista, 889 Marshaling, parameter, 557 Mask, audio, 482 Master boot record, 271,377,751 Master file table, Vista, 904 Master-slave multiprocessor, 534 Mauchley, John, MBR (see Master Boot Record) MD5 (see Message Digest 5) MDL (see Memory Descriptor List) Mechanism vs policy, 65, 159-160 231-232,971-972 Memory, 21-24,420 managing free, 182-185 paged, 186-232 segmented, 232-245 virtual, 186-245 Memory allocation mechanism Linux, 762-763 Memory compaction, 181 Memory descriptor list, 899 Memory hierarchy, 21,173 Memory management, 173-246 Linux,754-767 Symbian, 933,937-941 using bitmaps, 183 using free lists, 183-185 using overlays, 186 Vista, 840, 875-890 Memory management research, 245 Memory management system calls in Linux, 757 Memory management system calls in Vista, 880 Memory management unit, 25, 187-190 Memory manager, 173 Memory-mapped file, 756 Memor> • -mpped input/output, 330-334 Mesh, 547 Message digest 5, 618 Message passing, 140-144 Message passing design issues, 138,140 Message-passing interface, 142 Message type module, Symbian, 952 Metadata, 261 Metafile, 410 Method, 407,594 Metric units, 76-77 MFT (see Master File Table) Mickey, 397 Microcomputer, 13 Microkernel, 62-65, 572-573,930-933, 969-970 MINIX 3,63-65 Microkernel design, Symbian, 930 Microprogram, 241 Microsoft, 14-15 Microsoft disk operating system, 14, 15, 254 316-319,324,810,811,906 Middleware, 580 coordination-based, 596 document-based, 588-589 file-system-based, 589-594 object-based, 594-595 Millennium edition, 15 Mimicry attack, 703 Mini-port, Vista, 843 MINIX, 721-722 history, 14 MINIX 3, 63-65 Minor device, 56, 352,768 Missing block, 303 MMU (see Memory Management Unit) Mobile code, 703-704 Model-based intrusion detection, 701-703 Modeling multiprogramming, 91-93 Modified page writer, Vista, 889 Modules in Linux, 775 Monitor, 134-140 Monoalphabetic substitution cipher, 616 Monolithic system, 60-61 Moore's law, 531 Menu Motif, 400 Motion picture experts group, 479 Mounted file system, 40,341 ssure, 887 Memo Wl^ident virus, 674-675 Memory virtualization, 574-575 1058 INDEX 1059 Network processor, 551 Network protocol, 585,585-587 Network service, 584-585 Networking, 996-997 Linux, 769-771 Symbian, 932 New technology file system, 902-914 New technology operating system, 816 Next fit algorithm, 184 NFS (see Network File System) NFU (see Not Frequently Used algorithm) No cache NUMA multiprocessor, 529 No silver bullet, 994 Nonblocking call, 553-556 Nonblocking network, 526 Noncanonical mode, 394 Nonpreemptable resource, 432-433 Nonpreemptive scheduling, 146 Nonresident attribute, NTFS, 906 Nonuniform memory access, 872 Nonuniform memory access multiprocessor 529-531 Nonvolatile RAM, 385 Not frequently used algorithm, 205-206 Not recently used algorithm, 201-202 Notification event, 866 Notification object, 837 NRU (see Not Recently Used algorithm) NT (see Windows NT) NT-based Windows, 811-814 NT namespace, 820 NTFS (see New Technology File System) NTOS (see New Technology Operating System) NUMA multiprocessor (see Nonuniform memory access multiprocessor) Nyquist theorem, 475 Object file, 72 Object manager, 820 Vista, 838 Object name space Vista, 848-854 Object orientation, Symbian, 929-930 Object request broker, 594 Off-line operation, Omega network, 527 One-shot mode, 387 One-time password, 647-648 One-way function, 617 One-way hash chain, 647 Ontogeny recapitulates phylogeny, 44-47 Open file description table, Linux, 790 Operating system, as a resource manager, 6-7 as extended machine, 4-5 Berkeley UNIX, 719-720 BSD, 13 FreeBSD, 16 history, 7-16 Linux, 5,13,715-802 MINIX, 12,63-65,7256 PDP-11 UNIX, 717-718 Portable UNIX, 718-719 Standard UNIX, 720-721 UNIX, 12 Windows 2000,15,3,813 Windows 2003,814 Windows 3.0, 812 Windows 95,3,811 Windows 98, 3,811 Windows Me, 15,3,811 Windows NT, 15,3 Windows NT 4.0, 813 Windows server 2008, 809 Windows Vista, 3,809-922 Windows XP, 15,3,813 Operating system concepts, 35-47 Operating system design, 955-999 brute force, 981-982 caching, 987-988 error checking, 982 exploiting locality, 989 goals, 956-957 hiding the hardware, 977-980 INDEX Multiprocessor operating system types Mounting, 56 534-538 Mouse software, 397 Multiprocessor scheduling, 540-546 MP3 (see MPEG audio layer 3) Multiprocessor synchronization, 536-539 MPEG (see Motion Picture Experts Group) Multiprogramming, 11, 82-84 MPEG audio layer 3,482-485 modeling, 91-93 MPEG standard, 479-482 Multisession CD-ROM, 370 MPI (see Message-Passing Interface) Multistage switching network, 527-529 MS-DOS (see Microsoft Disk Operating Multithreaded code, 114-117 System) Multithreading, 20,99 MS-DOS 1.0, 810 Murphy's law, 116 MS-DOS-based Windows, 811 Mutation engine, 696 MS-DOS file system, 316-319 Mutex, 130-134 Multicomputer, 546-566 Mutexes in E^hreads, 130 Multicomputer hardware, 547-551 Mutual exclusion, 117 Multicomputer scheduling, 563 Multicore chip, 20-21,531,577-578,995-996 busy waiting, 20 MULTICS (see MULTiplexed Information disabling interrupts, 120-121 and Computing Service) lock variable, 119 Multilevel page table, 196-198 Peterson's solution, 123-124 Multilevel security, 632-634 priority inversion, 124 Multimedia, 465-516,997 sleep and wakeup, 125-126 Multimedia caching, 508-511 spin lock, 120 Multimedia disk scheduling, 511-514 strict alternation, 121 -122 Multimedia file placement, 497-508 with busy waiting, 120-125 Multimedia file system, 491-514 Mythical man month, 990 near video on demand, 502-504 organization, 497-502 Multimedia files, 470-476 Multimedia in Symbian, 933 N Multimedia operating systems, 465-516 audio encoding, 482-485 Naming, 973 introduction, 466-470 Naming transparency, 591-592 Nanokernel, Symbian, 931 process scheduling, 485-491 Nanothread, Symbian, 934-935 research, 514-515 Narrow striping, 508 video encoding, 471-474 Multimedia scheduling, 485-491 NC-NUMA (see No Cache NUMA multiprocessor) Multimedia server, 492 Near video on demand, 494-497 Multiple-processor system research, 602-603 Network device, 774 Multiple queue scheduling, 154-156 Network file system, 288,792-798 Multiplexed Information and Computing Service architecture, 793 implementation, 796-798 12-13,47,236-240,716 Multiplexing, 6-7 protocols, 793-796 Multiprocessor, 82,524-546 version 4,798 Multiprocessor hardware, 524-532 Network hardware, 581-584 Multiprocessor operating system Network interface, 549-551 34-35,532-546 Network operating system, 16 o Object, 594,623,820,838, 844,848 849,850, 851,852,853 Object adapter, 595 Object-based middleware, 594-595 Object cache, Linux, 763 1060 INDEX Operating system design {continued) hints, 988-989 implementation, 967-982 interfaces, 959-966 paradigms, 961-964 performance optimization, 983-990 principles, 959-961 reentrancy, 981 space-time tradeoffs, 984-987 trends, 994-999 why is it hard?, 957-959 Operating system structure, 60-70 client-server, 65 layered, 61-62 microkernel, 62-65 monolithic, 60-61 virtual machine, 65-69 Optimal page replacement algorithm, 200-201 Optimization, goals, 984 Optimizing the common case, 989 Orange book, 369 ORB (see Object Request Broker) Organ-pipe algorithm, 505 Orthogonality, 972-973 OS/2,811 OS/360, 11-12 Ostrich algorithm, 439 Output software, 397-412 Overlapped seek, 359 Overlay, 186 Overview of Linux, 724-735 Overwriting virus, 672 P P operation, 126 -2,720 Packet sniffer, 644 PAE (see Physical Address Extension) Page, 186-190 Page allocator, 762 Page daemon, 765 Page descriptor, Linux, 759 INDEX Page directory, 243 Symbian, 939 Page fault, 189 Page fault frequency algorithm, 215-216 Page-fault handling, 226-227 Linux, 764-767 Vista, 882-886 Page frame, 188 Page frame number database Vista, 887 Page frame reclaiming algorithm, 764-767 Page replacement algorithm, 199-214, 765 aging, 206 clock, 203-204 ftrst-in first-out, 202 global, 214-215 least recently used, 204-205 Linux, 764-767 local, 214-215 not frequently used, 205-206 not recently used, 201-202 optimal, 200-201 page fault frequency, 215-216 second-chance, 202-203 summary of, 213-214 Vista, 886-887 working set, 207-211 WSclock, 211-212 Page size, 217-218 Page table, 190-192 inverted, 198-199 multilevel, 196-198 Page table, large memory, 196 Page table entry, 191-192 Pagefile, Vista, 877-879 Paging, 187-190 copy-on-write, 221 implementation, 225-232 instruction backup, 227-228 locking pages, 228-229 optimization, 192-196 separation of policy and mechanism, 231-232 shared pages, 219-221 Paging daemon, 224 Paging in Linux, 764-767 Paging systems, design issues, 214-225 Parallel systems, 997 Parasitic vims, 673 Paravirt ops, 574 Paravirtualization, 69, 572-574 Parent process, 736 Partition, 12,31, 56,229,286,310,317, 318 377, 675, 765,786 Password, 261, 624, 640-651, 655, 656 Password security, UNIX, 645-646 Paterson, Tim, 14 Path name, 40,267-270 absolute, 267 relative, 268 Payload, virus, 671 PCI bus, 29 PCI Express, 29 PDA (see Personal Digital Assistant) PDP-1, 14 PDP-11, 717, 718 PDP-11 UNIX, 717-718 PEB (see Process Environment Block) Pentium, 15 Pentium, segmentation, 240-235 Perceptual coding, 482 Perfect shuffle, 527 Performance, 983-990 Periodic real-time system, 159 Peripheral component interconnect, 29 Personal computer operating system, 33 Personal digital assistant, 33 Personal firewall, 693 Peterson, G.L., 121 Peterson's solution, 121 PFF (see Page fault frequency algorithm) PFN database (see Page Frame Number database) PFRA (see Page Frame Reclaiming Algorithm) Physical address extension, 763, 884 Physical dump, 298 Physical memory management Linux, 758-762 Vista, 887-890 PID (see Process IDentifier) Pidgin Pascal, 136-138 Pinned page, 228-229, 759 Pipe, 41,737 1061 Pipe symbol, 729 Pipeline, 18-19,730 Pit, CD-ROM, 365-366 Pixel, 473 PKI (see Public Key Infrastructure) Plaintext, 615 Play point, 496 Plug and play, 30, 839, 893 Pointer, in C, 70-71 POLA (see Principle of Least Authority) Policy vs mechanism, 65, 159-160 231-232,971-972 Polling, 344 Polymorphic virus, 696 Pop-up thread, 112-114,556 Port, 644 Portable C compiler, 718 Portable UNIX, 718-719 Port number, 692 Port scan, 644 Position-independent code, 223 POSIX, 12,48-57, 720 POSIX threads, 104-106 Power management, 415-423 application issues, 422-423 battery, 421-422 CPU, 419-420 disk, 418-419 display, 417-418 hardware issues, 416-417 memory, 420 operating system issues, 417 thermal, 421 wireless communication, 420-421 Power manager Vista, 901 PowerShell, 826 Preamble, 330 Precise interrupt, 339-340 Preemptable resource, 432-433 Preemptive scheduling, 147 Prepaging, 208, 882, 885 Present/absent bit, 189 Primary volume descriptor, 311 Principal, 623,76 Principle of least authority, 621 Printer daemon, 116 1062 Priority inversion, 124, 874 Priority scheduling, 153-154 Privacy, 612 Privilege escalation attack, 665 Privileged instruction, 569 Process, 36-38, 81-15,89-91 compute-bound, 145 implementation in Linux, 741-748 input/output-bound, 145 IPC Linux, 735-753 IPC Symbian, 932, 933-937 IPC Vista, 857-875, 858-859 Process behavior, 147-148 Process control block, 89 Process creation, 84-86 Process environment block, Vista, 858 Process group, 737 Process hierarchy, 87 Process ID, 52 Process identifier, 736 Process management, Linux, 737-741 Process manager Vista, 839 Process model, 82-84 Process scheduling, Linux, 748-751 multimedia, 485-491 Process state, 88-89 Process switch, 152 Process table, 36, 89 Process termination, 86-87 Processor, 17-21 Processor allocation algorithm, 564 graph-theoretic, 564-565 receiver-initiated, 566 sender-initiated, 565-566 Processor sharing, 170 Producer-consumer problem, 124 with Java, 139-141 with message passing, 142-144 with monitors, 137-139 with Pthreads, 133 with semaphores, 129-130 Program counter, 18 Program status word, 18 Programmed input/output, 342-344 Programming Vista, 815-827 Progressive video, 473 INDEX INDEX Project management, 990-994 bad-news diode, 992 chief programmer team, 992 mythical man month, 990 no silver bullet, 994 role of experience, 993 second-system effect, 993 team structure, 991-993 Prompt, 43 shell, 728 Proportionality, 149 Protection, 42 Protection command, 631 Protection domain, 620-622 Protection hardware, 45-46 Protection mechanism, 611,620-639 Protection ring, 244 Protocol, 585 BFS, 794 communication, 456 Symbian, 951-952 Protocol stack, 586 PRT module, Symbian, 952 Pseudoparallelism, 82 Psion, 926-927 PSW, 18 Psychoacoustics, 482 Pthreads, 104-106,132-134 Public-key cryptography, 616-617 Public key infrastructure, 619 Publish/subscribe, 598,599 Publish/Subscribe system, 598-599 Pull server, multimedia, 492 Pulse code modulation, 475 Push server, multimedia, 492 Q Quality of service, 469,584 Quantization, 477 Quantization noise, 475 Quantum, 152 Quick-fit algorithm, 185 Quota, 295,296,846 R R-node, 797 NFS, 797 Race condition, 117-119,125 RAID (see Redundant Array of Inexpensive Disks) RAM (see Random Access Memory) Random access file, 260 Random access memory, 23 Rate monotonic scheduling, 488-489 Raw block file, Linux, 774 Raw mode, 394 Read ahead, 308 NFS, 798 Read-only memory, 23 Readers and writers problem, 165-166 Readyboost, Vista, 892 Readyboot, Vista, 892 Real time, 388 Real-time operating system, 34-35 Real-time scheduling, 158-161,486-491 Recovery console Vista, 844 Recovery from deadlock, 445-446 through killing processes, 446 through preemption, 445 through rollback, 445-446 Recycle bin, 297 Red book, CD-ROM, 365 Redundant array of inexpensive disks 361-365 Reed-Solomon code, 368 Reentrancy, 981 Reentrant device driver, 350 Reference monitor, 706 Referenced pointer, 846 Regedit, 826 Registry, Windows, 825 Regular file, 258 Reincarnation server, 64 Relative path, 777 Relative path name, 268 Remote access model, 589-590 Remote procedure call, 556-558 implementation, 557-558 Removable media, Symbian, 944 1063 Rendezvous, 142 Reparse point Vista, 904,907,911 Replication, 561 Request matrix, 442 Request-reply service, 585 Research deadlock, 459 file system, 322 input/output, 423-424 memory management, 245 multimedia operating system, 514-515 multiple-processor system, 602-603 operating systems in general, 74-75 processes and threads, 166-167 security, 709-710 Reserved page Vista, 877 Resource, 402,432-435 nonpreemptable, 432-433 preemptable, 432-433 Resource acquisition, 433-435 Resource deadlock, 435-436 Resource trajectories, 447-448 * Response time, 149 Restricted token, Vista, 859 Return to Hoc attack, 662-663 Reusability, 980-981 Right, 620 RMS (see Rate Monotonic Scheduling) Rock ridge extensions, 314-315 Role, 624 Role of experience, 993 Root, 800 Root directory, 40, 266 Root file system, 40 Rootktt, 686-690 Sony, 689-690 types, 686-687 Rootkit detection, 687-689 Round, 511 Round robin scheduling, 152-153 Router, 457,583 RFC (see Remote Procedure Call) RSA (Rivest-Shamir-Adelman) algorithm, 617 Run time for C programs, 73 Runqueue, Linux, 749 RWX bits, 42 1064 s SACL (see System Access Control List) Safe-boot, Vista, 843 Safe state, 448-449 Salt, 646 Sandboxing, 704-706 SATA disk (see Serial ATA disk) Scan code, 393 Scan-EDF algorithm, 513 Schedulable real-time system, 159 Scheduler, 143 Linux disk, 774-775 Scheduler activations, 111-112 Scheduling, when to do, 148-149 Scheduling algorithm, 145-161 affinity, 543 batch system, 149-148,150-152 categories, 147 earliest-deadline-first, 489-491 fair-share, 158 first-come first-served, 150-151 gang, 544-546 goals, 148-150 guaranteed, 156-157 interactive system, 148-149, 152-158 introduction, 145-150 Linux, 748-751 lottery, 157 multicomputer, 563 multimedia, 485-491 multiple-queue, 154-156 multiprocessor, 540-546 nonpreemptive, 147 preemptive, 147 priority, 153-154 rate-monotonic, 488-489 real-time, 148,150,158-161,486-491 round-robin, 152-153 shortest-job-first, 151-152 shortest-process-next, 156 shortest-remaining-time-next, 152 smart, 542 thread, 160-161 two-level, 543 Vista, 870-875 INDEX INDEX Scheduling mechanism, 159 Scheduling policy, 159 Script kiddy, 645 SCSI (see Small Computer System Interface) Second-chance algorithm, 202-203 Second-generation computer, Second-system effect, 993 Secret-key cryptography, 615-616 Section, 819 Secure hash algorithm-1, 618 Secure hash algorithm-256,618 Secure hash algorithm-512,618 Secure system, formal model, 630-632 Secure virtual machine, 569 Security, 609-711 Linux, 799-802 Symbian, 945-949 Vista, 914-920 Security by obscurity, 615 Security descriptor Vista, 819,916 Security identifier, 915 Security in Symbian, 946-949 Security in Vista, 914-920 Security reference monitor, Vista, 840 Security research, 709-710 Security system calls Linux, 801 Vista, 917-918 Segment, 233 data, 53-54 stack, 53-54 text, 53-54 Segmentation, 232-244 implementation, 235-236 Segmentation with paging, 236-245 MULTICS 238-242 Pentium, 240-245 Self-map, Vista, 868,885 Semantics of file sharing, 592-594 Semaphore, 128-130 binary, 127 Send and receive primitives, 553 Sensitive instruction, 569 Sensor node, 999 Sensor node operating system, 34 Separate instruction and data space, 219 Separation of policy and mechanism, 231-232 Sequential access, 260 Sequential consistency, 562-563, 592 Sequential process, 82 Serial ATA disk, 359 Server, 65 Server operating system, 32 Server stub, 557 Session, CD-ROM, 370 Session semantics, 593 Set-top box, 468 SETUID bit, 800 SHA-I (see Secure Hash Algorithm-1) SHA-256 (see Secure Hash Algorithm-256) SHA-512 (see Secure Hash Algorithm-512) Shadow page table, 575 Shared fde, 281-283 Shared hosting, 67 Shared library, 221-223 Shared lock, 780 Shared-memory multiprocessor, 524-546 Shared page, 219-221 Shared text segment, 756 Shell, 36, 1,42-44,727-730 Shell script, 730 Shellcode, 662 Short name, Vista, 906 Shortest-job-first scheduling, 151-152 Shortest-process-next, 156 Shortest-remaining-time-next scheduling, 152 Shortest-seek-first algorithm, 378 SID (see Security Identifier) Side-by-side versions, Vista, 856 Side-channel, 651 Signal, 737 Signals, in multithreaded code, 114 Signature block, 618 Simple security property, 633 Single-indirect block, 320,791 Single-interleaved disk, 376 Single large expensive disk, 361 Single-level directory system, 266 Skeleton, 594 SLED (see Single Large Expensive Disk) Sleep and wakeup, 125-126 Small computer system interface, 30 1065 Smart card, 649-651 Smart card operating system, 35 Smart scheduling, 542 SMP (see Symmetric Multiprocessor) Snooping, 531 Socket, 769, 864 Symbian, 936-937 Soft fault, Vista, 877,885 Soft real time, 158 Soft real-time operating system, 34-35 Soft timer, 391-392 Sony rootkit, 689-690 Source code virus, 677-678 Space sharing,543 Space-time trade-offs, 984-987 Sparse file Vista, 908 Special file, 41 Special file, Linux, 768 Spin lock, 120,537 Spinning vs switching, 539-540 Spooler directory, 117-118 Spooling, 11,357 Spooling directory, 357 Spyware, 682-686 actions taken, 685-686 Square-wave mode, 387 Stable storage, 383-386 Stack pointer, 18 Stack segment, 53-54 Standard error, 729 Standard input, 729 Standard output, 729 Standard UNIX, 720-721 Standby list, Vista, 878 Standby mode, Vista, 902 Star property, 633 Starvation, 163,459 Stateful firewall, 693 Stateful server, 798 Stateless firewall, 692Stateless server, 795 Static disk scheduling, multimedia, 511-513 Static relocation, 177 Static vs dynamic structures, 975-976 Steganography, 637-639 Storage allocation, Vista, 908-911 1066 INDEX Store-and-forward packet switching, 548 Stored value card, 649 Strict alternation, 121-122 Striping, disk, 362 Structure, operating system, 967-971 Stub, 557, 558, 594 Subject, 623 Superblock, 272,785 Linux, 786 Superfetch, Vista, 882 Superscalar CPU, 18-19 Superuser, 37, 800 Supervisor mode, Svchost.exe, 857 SVID (see System V Interface Definition) SVM (see Secure Virtual Machine) Swap area, 765 Swapper process, 764 Swappiness, 766 Swapping, 179-182 Symbian, 925-100 history, 926-928 overview, 928-933 Symbian active object, 935-936 Symbian application engine, 926 Symbian communication, 933, 949-953 Symbian device driver, 941-942 Symbian DMA, 942-943 Symbian features, 932-933 Symbian file system, 932,944-949 Symbian handle, 929 Symbian history, 926-93 Symbian input/output, 941-944 Symbian kernel layer, 931 Symbian memory management, 933, 937-941 Symbian microkernel, 930 Symbian modules, 951-952 Symbian multimedia, 933 Symbian nanokernel, 931 Symbian nanothread, 934-935 Symbian networking, 932 Symbian object orientation, 929-930 Symbian process, 932,933-937 Symbian security, 946-949 Symbian thread, 934-935 Symbolic link.^pL.281 INDEX Symmetric-key cryptography, 615-616 Symmetric multiprocessor, 534-536 Synchronization, 128 barrier, 144-145 Vista, 865-867 Synchronization event, 866 Synchronization object, 837 Synchronized method, java, 137 Synchronous call, 553-556 Synchronous input/output, 342 System access control list, 916 System availability, 612 System call, 19 directory management, 55-57 file management, 54 Linux file system, 781-784 Linux input/output, 771-775 Linux memory management, 757-758 Linux process management, 737-741 Linux security, 801-802 miscellaneous, 56-57 process management, 50-54 Vista input/output, 894-896 Vista memory management, 880-881 Vista process management, 865-867 Vista security, 917-918 System call interface, 964-966 System calls, 47-59 System on a chip, 532 System process, Vista, 862 System structure, 967-971 System V, 12 System V interface definition, 720 T Tagged architecture, 626 Tape, 25 Task, Linux, 742 TCB (see Trusted Computing Base) TCP (see Transmission Control Protocol) TCP/IP, 720 Team structure, 991-993 TEB (see Thread Environment Block) Template, Linda, 597 Temporal masking, 484 Termcap, 398 Terminal, 392 Text segment, 53-54,754 Text window, 398 Thermal management, 421 Thin client, 413-415 THINC (see THIN Client) Third generation computer, 10-13 Thompson, Ken, 12 Thrashing, 207 Thread environment block Vista, 858 Thread local storage, Vista, 858 Thread model, classical, 100-104 Thread scheduling, 160 Thread usage, 93-10 Threads, 93-11 hybrid implementation, 110-111 kernel space implementation, 109-110 Linux, 744-748 POSIX, 104-106 Symbian, 934-935 user space implementation, 106-109 Vista, 860-875 Threat, 6II-6I2 Throughput, 149 Tightly coupled system, 523 Time bomb, 655 Time-space tradeoffs, 984-987 Timer, 386-392 Timesharing, 11-13 multiprocessor, 541-543 TLB (see Translation Lookaside Buffer) Token, 824 Top-Down implementation, 976-977 TPM (see Trusted Platform Module) Transactional memory, 859 Transfer model, 589-590 remote access model, 589-590 upload/download model, 589 Translation lookaside buffer, 193-195, 194 195-196, 881 hard miss, 196 soft miss, 196 Translation table base register, 939 1067 Transmission control protocol, 586, 770 Transparency location, 591-592 naming, 591-592 Trap, 19-20,655 Trap door, 655 TRAP instruction, 49-50 Trends in operating system design, 994-999 distributed systems, 997 embedded systems, 998 large address spaces, 996 mobile devices, 998 multicore chips, 995-100 multimedia, 997 networking, 996-997 parallel systems, 997 sensors, 999 virtualization, 995 Triple-indirect block, 320, 791 Trojan horse, 668-670 Trusted computing base, 629-630 Trusted platform module, 619 Trusted system, 628-629 TSL instruction, 124-125 TSY module, Symbian, 952 TTBR (see Translation Table Base Register) Tuple, 596-597 Tuple space, 596-597 Turnaround time, 149 Two-level scheduling, 543 Two-Phase locking, 455-456 Type hypervisor, 568, 569-570 Type hypervisor, 568, 570-571 u UAC (see User Account Control) UDF (see Universal Disk Format) UDP (see User Datagram Protocol) UID (see User ID) UMA multiprocessor bus-based, 524-525 crossbar switched, 525-527 with multistage switching, 527-529 1068 INDEX UMA multiprocessor (see Uniform Memory Access multiprocessor) UMDF (see User-Mode Driver Framework) Unbuffered input/output, Vista, 891 Undefined external, 221 Unicode, 820 UNICS.716-717,721 FONT Uniform memory access multiprocessor 524-529 Uniform naming, 341 Uniform resource locator, 588-589 Universal coordinated time, 387 Universal disk format, 274 Universal serial bus, 30 UNIX, 16 (see also Linux) Berkeley, 719-720 history, 717-721 PDP-11, 717-718 portable, 718-719 standard, 720-721 UNIX Password Security, 645-646 UNIX V7 File system, 319 Unsafe state, 448-449 Upcall, 110 Upload/download model, 589-590 URL (see Uniform Resource Locator) USB (see Universal Serial Bus) User account control, 919 User datagram protocol, 770 User-friendly system, 14 User ID, 37 Linux, 799 User interface paradigms, 961 User mode, User-mode driver framework, 897 User shared data, Vista, 858 UTC (see Universal Coordinated Time) V V-node, 288,797 V-node, NFS, 796 V operation, 126 INDEX VAD (see Virtual Address Descriptor) Vampire tap, 581 VCR Control Functions, 492 VFS (see Virtual File System) Video compression, 476-482 Video decoding, 476 Video encoding, 471-474,476-482 Video on demand, 466 Video RAM, 404 Video server, 467 Virtual address, 187-190 Virtual address allocation, Vista, 877 Virtual address descriptor, 881 Virtual address space, 187-190 Linux, 763-764 Virtual appliance, 577 Virtual disk, 571 Virtual file system, 286 Linux, 784-785 Virtual kernel mode, 569 Virtual machine, 568,65-69 rediscovery, 67-69 Virtual machine interface, 573 Virtual machine monitor, 66-68, 568 Virtual memory, 24-25,47, 180,186-245 design issues, 214-225 MULTICS, 236-240 page replacement algorithms, 199-214 paging, 187-190 Pentium, 240-245 Virtual memory interface, 224-225 Virtualization, 566-578,995 input/output, 576-577 licensing issues, 578 memory, 574-575 requirements, 568-569 Virtualization technology, 569 Virus, 670 boot sector, 675-676 cavity, 674 companion, 671 device driver, 676-677 executable program, 672-674 macro, 677 memory resident, 674-675 operation of, 671 Virus (continued) overwriting, 672 parasitic, 673 polymorphic, 696 source code, 677-678 Virus avoidance, 698-699 Virus dropper, 671 Virus pay load, 671 Virus scanner, 693-697 Vista, 3,809-922 history, 814-815 Vista access control list, 824 Vista access token, 915 Vista access violation, 884 Vista afUnitized thread, 85S Vista alternate data stream, 908 Vista and large memories, 879-880 Vista API call AddAccessAllowedAce, 917 AddAccessDeniedAce, 918 CreateDirectory, 59 CreateFile, 823,853,917 CreateFileMapping, 881 CreateProcess, 58,86, 817, 862, 867, 868 869,917,965 CreateSemaphore, 847,865 DeleteAce, 918 DupIicateHandle, 865 EnterCriticalSection, 866,989 ExceptPortHandle, 819 ExitProcess, 58, 86 FlushFileBuffers, 307 GetFileAttributesEx, 59 GetLocalTime, 59 GetTokenlnformation, 915 InitiaiizeAcI,917 InitializeSecurityDescriptor, 917 loCallDriver, 897,898 IoCompleteRequest, 897,911 lopParseDevice, 851,852 LeaveCriticalSection, 866 Lookup AccountSid, 917 NtAllocateVirtualMemory, 820 NtCancelloFile, 896 NtClose, 849, 850 NtCreateFile, 820, 849, 851, 895, 896 1069 NtCreateProcess, 817, 819, 849,863 NtCreateThread, 820, 863 NtCreateUserProcess, 868, 869 NtDeviceloControIFile, 896 NtDuplicateObject, 820 NtFlushBuffersFile, 896 NtFsControlFile, 896,913 NtLockFile, 896 NtMapViewOfSection, 820 NtNotifyChangeDirectoryFile, 896,913 NtQueryDirectoryFile, 895 NtQuerylnformationFile, 896 NtQueryVolumelnformationFile, 895 NtReadFile, 895 NeReadVirtualMemory, 820 NtResumeThread, 869 NtSetlnformationFile, 896 NtSetVolumelnformationFile, 895 NtUnlockFile, 896 NtWriteFile, 895 NtWriteVirtualMemory, 820 ObCreateObjeefType, 853 ObOpenObjectByName, 851 OpenSemaphore, 847 ProcHandle, 820 PulseEvent, 866 QueueUserAPC, 836 ReadFile,911 ReleaseMutex, 866 Releases emaphore, 865 RemoveDirectory, 59 ResetEvent, 866 SectionHandle, 819 SetCurrentDirectory, 59 SetEvent, 866 SetFilePointer, 59 SetPriorityCIass, 871 SetSecurityDescriptorDacl, 918 SetThreadPriority, 871 SwitchToFiber, 860 ' TerminateProcess, 87 ValidDataLength, 891 WaitForMuItipIeObjects, 837,844,865, 922 WaitForSingleObject, 58, 865,866 Vista application verifier, 848 Vista balance set manager, 887 INDEX 1070 Vista bandwidth reservation, 894 Vista bank switching, 879 Vista base priority, 871 Vista base record, 904 Vista boot drivers, 843 Vista cache manager, 840 Vista class driver, 843 Vista committed page, 877 Vista configuration manager, 840 Vista context data structure, 861 Vista current priority, 871 Vista default data stream, 908 Vista device driver, 897-898 Vista device drivers, 841-843 Vista device object, 841 Vista device stack, 841,900-902 Vista discretionary acl, 915 Vista driver object, 893 Vista driver verifier, 897 Vista dynamic disk, 893 Vista executive, 832 Vista executive layer, 837-841 Vista file compression, 912-913 Vista file encryption, 913-914 Vista file system, 902-914 Vista file system structure, 904-908 Vista filter, 841 Vista filter driver, 900 Vista handle, 846-848 Vista hard fault, 885 Vista hibernation, 901 Vista hive, 825 Vista ideal processor, 872 Vista immediate file, 908 Vista impersonation, 916 Vista import address table, 855 Vista input/output API calls, 894 Vista input/output completion port, 896 Vista input/output manager, 838 Vista interprocess communication, 864-865 Vista invalid page, 877 Vista jobs and fibers, 859-860 Vista journaling, 913 Vista kernel -828r832-834" • Vista key, 844 Vista mapped page writer, 889 ; Vista master file table, 904 Vista memory manager, 840 Vista memory pressure, 887 Vista mini-port, 843 Vista modified page writer, 889 Vista nonresident attribute, 906 Vista object manager, 838 Vista object name space, 848-854 Vista page fault handling, 882-886 Vista page frame number database, 887 Vista page replacement algorithm, 886-887 Vista pagefile, 877-879 Vista physical memory management, 887-890 Vista power manager, 901 Vista process, 857-875, 858-859 Vista process API calls, 862-867 Vista process environment block, 858 Vista process manager, 839 Vista readyboost, 892 Vista readyboot, 892 Vista recovery console, 844 Vista reparse points, 904,911 Vista restricted token, 859 Vista safe-boot, 843 Vista scheduling, 870-875 Vista security API calls, 917-918 Vista security descriptor, 916 Vista security reference monitor, 840 Vista self-map, 868, 885 Vista short name, 906 Vista side-by-side versions, 856 Vista soft fault, 877, 885 Vista sparse files, 908 Vista standby list, 878 Vista standby mode, 902 Vista storage allocation, 908-911 Vista structure, 827-857 Vista superfetch, 882 Vista synchronization, 865-867 Vista system process, 862 Vista thread environment block, 858 Vista thread local storage, 858 Vista threads, 860-875 : Vista unbuffered input/output, 891 Vista user shared data, 858 Vista virtual address allocation, 877 1071 INDEX Vista volume shadow copy, 893 Vista zeropage thread, 889 VM/370, 66-67 VMI (see Virtual Machine Interface) VMS, 15 VMware, 68, 570 Volume shadow copy, Vista, 893 Volume table of contents, 370 VT {see Virtualization Technology) VTOC (see Volume Table Of Contents) W WaitForMultipieObject, 837 Waitqueue, Linux, 751 VVakeup, 126 Wakeup-waiting bit, 126 WAN (see Wide Area Network) War dialer, 642 Watchdog timer, 390 Waveform coding, 482 WDF (see Windows Driver Foundation) WDM (see Windows Driver Model) Web browser, 588 Web page, 588 Web server, multithreaded, 95-97 When to schedule, 148-149 White-hat hacker, 640 Wide area network, 581 Wide striping, 508 Widgets, 400 Wild card, 624, 728 Win32 API, 57-59,812, 821-827 Window, 404 Window manager, 401 Windows 3.0,812 Windows 95,3,811 Windows 98, 3,811 Windows 2000,15, 3,813 Windows 2003, 814 Window_s^river^undation 892, —, Windows NT 4.0, 813 Windows NT API, 818-821 Windows on Windows, 821-822 Windows registry, 825 Windows server 2008, 809 Windows subsystem, 816 Windows Vista (see Vista) Windows XP, 15,3,813 Wireless communication, 420 WndProc, 407 Worker thread, 96 Working directory, 40, 268-269,777 Working set, 207 Working set algorithm, 207-211 Working set model, 208 Worm, 680-682 Wormhole routing, 549 Worst-fit algorithm, 185 WOW (see Windows on Windows) Write-through cache, 307 Wsclock,211 WSclock,2I3 WSClock algorithm, 211 X X (see X Window System) X client, 399 X intrinsics, 400 X resource, 402 X server, 399 X widget, 400 X window manager, 401 X window system, 5,16,398-402,722 -2 -2, 15 Xenix, 14 Xlib, 400 Winff6ws^nver^r3eTf^%^^^ Y Windows Me, 15, , 1 " " " Windows NT, 3,15 Yellow book, CD-ROM, 366-367 1072 Z Z/VM, 66 ZeroPage thread, Vista, 889 Zipf, George, 504 Zipfslaw, 504 Zombie, 612,666 Zombie state, 740 ZSeries, IBM, 11 , INDEX ... 150 80 92 75 26 19 0 0 0 20 18 13 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 4 8 16 16 32 32 64 64 2 16 32 64 4 4 16 32 64 X 8 8 16 16 16 16 16 16 16 32 32 64 64 32 32 32 32 32 32 32 64 54 64... Stream 23 i 24 ! * Track i { I 9000 18000 27 000j36000 45000 54000 63000! 720 00i81000! ™~j 9001 Stream 15 : 18001 27 0bT) 36001 45001 54001 63001 720 01isiQOlt 90 02 180 02 270 02| 360 02 450 02| 540 02 63002j 720 02. .. 90 02 180 02 270 02| 360 02 450 02| 540 02 63002j 720 02 81002j Stream \ |20 7000 20 7001 [20 70 02] \ * F r a m e 27 0 02 ( a b o u t 15 into the m o v i e ) Figure 7 -21 Optimal frame placement for near video

Ngày đăng: 16/05/2017, 10:06

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan