페이지

2022년 5월 4일 수요일

1.10.6 Real-Time Embedded Systems

 Embedded computers are the most prevalent form of computers in existence. These devices are found everywhere, from car engines and manufacturing robots to optical drives and microwave ovens. They tend to have very specific tasks. The systems they run on are usually primitive, and so the operating, pefferring to spend their time monitoring and managing hardware devices, such as automobile engines are robotic arms.

These embedded systems vary considerably. Some are general-purpose computers, running standard operating systems-such as Linux-with special-purpose applications to implement the functionality. Others are hardware devices with a special-purpose embedded operating system providing just the functionality desired. Yet others are hardware devices with application-specific integrated circuits(ASICs) that perform their tasks without an operating system.

The use of embedded system continues to expand. The power of these devices, both as standalone units and as elements of networks and the web, is sure to increase as well. Even now, entire house can be computerized, so that a cetral computer-either a general-purpose computer or an embedded system-can access can enable a home owner to tell the house to heat up before she arrives home. Someday, the refrigerator will be able to notify the grocery store when it notices the milk is gone.

Embedded systems almost always run real-time operating systems. A realtime system is used when rigid time requirements have been placed on the operation of a processor or the flow of data; thus, it is often used as a control device ina dedicated applicaiton. Sensors bring data to the computer. The computer must analyze the data and possibly adjust controls to modify the sensor inputs. Systems that control scientfic experiments, medical imaging systems, industrial control systems, and certain display systems are real-time systems. Some automobile-engine fuel-injection systems, home-appliance controllers, and weapon systems are also real-time systems.

A real-time system has well-defined, fixed time constraints. Processing must be done within the defined constraints, or the system will fail. For instance, it would not do for a robot arm to be instructed to halt after it had smashed into the car it was building. A real-time system functions correctly only fi ti return the correct result within tis time constraints. Contrast this system with a traditional laptop system where it is desirable(but not mandatory) to respond quickly.

In Chapter 5, we consider the scheduling facility needed to implement realtime functionality in an operating system, and in Chapter 20 we describe the real-time components of Linux.


2022년 4월 29일 금요일

1.10.5 Cloud Computing

 Cloud computing is a type of computing that delivers computing, storage, and even applications as a service across a network. In some ways, it's a logical extension of virtualization, because it uses virtualization as a base for its functionality. For example, the Amazon Elastic Computer Cloud(ec2) facility has thousands of servers, millions of virtual machines, and petabytes of storage available for use by anyone on the Internet. Users pay per month based on how much of those resources they use. There are actually many types of cloud computing, including the following:

- Public cloud- a cloud available via the Internet to anyone willing to pay for the services

- Private cloud- a cloud arun by a company for that company's own use

- Hybrid cloud- a cloud that includes both public and private cloud components

- Software as a service(SaaS)- one or more applications (such as word processors or spreadsheets) available via the Internet

- Platform as a service (PaaS)- a software stack ready for application use via the Internet (for example, a database server)

- Infrastructure as a service(IaaS)- servers of storage available over the Internet (for example, storage available for making backup copies of production data)

These cloud-computing types are not discrete, as a cloud computing environment may provide a combination of several types. For example, an organization may provide both SaaS and IaaS as publicly available services.

Certainly, there are traditional opoerating systems within many of the types of cloud intrastructiore. Beyond those are the VMMs that manage the virtual machines in which the user processes run. At a higher lever, the VMMs themselves are managed by cloud management tools, such as a VMware vCloud Director and the open-source Eucalyptus toolset. These tools manage the resources within a given cloud and provide interfaces to the cloud components, making a good argument for considering them a new type of operating system. 

Figure 1.24 illustraters a public cloud providing IaaS. Notice that both the cloud services and the cloud user interface are protected by a firewall.



1.10.4 Peer-to-Peer Computing

 Another structure for a distributed system is the peer-to-peer(P2P) system model. In this model, clients and servers are not distinguished from one another. Instead, all nodes within the system are considered peers, and each may act as either a client or a server, depending on whether it is requesting or providing a service. Peer-to-peer systems offer an advantage over traditional client-server systems. In a client-server system, the server is a bottleneck; but in a peer-to-peer system, services can be provided by several nodes distributed throughout the network.

To participate in a peer-to-peer system, a node must first join the network of peers. Once a node has joined the network, it can begin providing services to-and requesting service from-other nodes in the network. Determining what services are available is accomplished in one of two general ways:

- When a node joins a network, it registers its service with a centrlized lookup service on the network. Any node desiring a specific service first contacts this centralized lookup service to determine which node provides the service. The remainder of the communication takes place between the client and the service provider.

- An alternative scheme users no centralized lookup service. Instead, a peer acting as a client must discover what node provides a desired service by broadcasting a request for the service to all other nodes in the network. The node (or nodes) providing that service responds to the peer making the request. To support this approach, a discovery protocol must be provided that allows peers to discover services provided by other peers in the network. Figure 1.23 illustrates such a scenario.

Peer-to-peer networks gained widespread popularity in the late 1990s with several file-sharing services, such as Napster and Gnutella, that enabled peers to exchange files with one another. The Napster system used an approach similar to the first type described above: a centralized server maintained an index of all files stored on peer nodes in the Napster entwork, and the actual exchange of files took place between the peer nodes. The Gnutella system used a technique similar to the second tyupe: a client broadcast file requests to other nodes in the system, and nodes that could service the request responded directly to the client. Peer-to-peer networks can be used to exchange copyrighted materials (music, for example) anonymously, and there are laws governing the distribution of copyrighted materal. Notably, Napster ran into legal trouble for copyright infringment, and its services were shut down in 2001. For this reason, the future of exchanging files remains uncertain.

Skpe is another example of peer-to-peer computing. It allows client to make voice calls and video calls and to send text messages over the Internet using a technology known as voice over IP(VoIP). Skype users a hybrid peer-to-peer approach. It includes a centralized login server, but it also incorporates decentralized peers and allows two peers to communicate.


2022년 4월 28일 목요일

1.10.3 Client-Server Computing

 Contemporary network architecture features arrangements in which server systems satisfy requests generrated by client systems. This form of specialized distributed system, called a client-server system, has the general structure depicted in Figure 1.22.

Server system can be broadly categorized as compute servers and file servers:

* The computer-server system provides an interface to which a client can send a request to perform and action (for example, read data). In response, the server executes the action and sends the result to the client. A server running a database that responds to client requests for data is an example of such a system.

* The file-server system provides a file-system interface where clients can create, update, read, and delete files. An example of such a system is a webserver that delivers files to clients running web browsers. The actual contents of the files can vary greatly, ranging from traditional web pages to rich multimedia content such as high-definition video.


1.10.2 Mobile Computing

 Mobile computing refers to computing on handheld smartphones and tablet computers. These devices share the distinguishing physical features of being portable and lightweight. Historically, compared with desktop and laptop computers, mobile systems gave up screen size, memory capacity, and overall functionality in return for handheld mobile access to services such as e-mail and web browsing. Over the past few years, however, features on mobile devices have become so rich that the distinction in functionllity between, say, a comsumer laptop and tablet computer amy be difficult to discern, In fact we might argue that the features of a contemporary mobile device allow it toprovide functionality that is either unavailable or impractical on a desktop or laptop computer.

Today, mobile systems are used not only for e-mail and web browsing but also for playing music and video, reading digital books, taking photos, and recording and editing high-definition video. Accordingly, tremendous growth continues in the wide range of applications that run on such devices. Many developers are now designing applications that take advantage of the unique features of mobile devices, such as global prositioning system (GPS) chips, accelerometers, and gyroscopes. An embedded GPS chip allows a mobile device to use satelites to determine its precise on Earth. That functionality is especially useful in designing applications that provide navigation-for example, telling users which way to walk or drive or perhaps directing them to nearby services, such as restaurants. An accelerometer allows a mobile device to detect its orientation with respect to the ground and to detecct certain other forces, such as titling and shaking. In serveral computer games that employ accelerometers, players interface with the system not by using a mouse or a keyboard but rather by tilting and shaking. In serveral computer games that employ accelerometers, players interface with the system not by using a mouse or a keyboard but rather by tilting and shaking. In several computer games that employ accelerometers, players interface with  the system not by using a mouse or a keyboard but rather by titing, roating, and shaking the mobile device! Perhaps more a practial use of these features is found in augmented-reality applications, which overlay information on a display of the current environment. It it difficult to imagine how equivalent applications could be developed on traditional laptop or desktop computer systems.

To provide access to on-line services, mobile devices typically use either IEEE standard 802.11 wireless or cellular data networks. The memory capacity and processing speed of mobile devices, however, are more limited than those of PCs. Whereas a smarphone or tablet may have 256GB in storage, it isi not uncommon to find 8 TB in storage on a desktop computer, Similarly, because power consumption is such a concern, mobile devices often use processors that are smaller, are slower, and offer fewer processing core than processors found on traditional desktop and laptop computers.

Two operating systems currently dominate mobile computering: Apple iOS and Google Android. iOS was designed to run on Apple iPhone and iPad mobile devices, Android powers smartphones and tablet computers available from many manufacturers. We examine these two mobile operating system in further detail in Chapter 2.


2022년 4월 27일 수요일

1.10.1 Traditional Computing

 As computing has matured, the lines separating many of the traditional computing environments have blurred. Consider the "typical office environment." Just a few yuears ago, this environmnt consisted of PCs connected to a network, with servers profiding file and print services. Remote access was awkward, and porability was achieved by use of laptop computers.

Today, web technologies and increasing WAN bandwidth are stretching the boundaries of traditional c omputing. Companies establish portals, which provide web accessiblity to theiur internal servers. Network computers (or thin clients)-which are essentially terminals that understand web-based computing-are used in place of traditional workstationis where more security or easier maintenance is desired. Mobile computers can synchronize with PCs to allow very portable use of company information. Mobile devices can also connect to wireless networks and cellular data networks to use the company's web portal(as well as the myriad other web resources).

At home, most users once had a single computer with a slow modem connection to the office, the Internet, or both. Today, network-connection speeds once availabe only at great cost azre relatively inexpensive in many places, giving home users more access to more data. These fast data connections are allowing home computers to serve up we pages and to run networks that include printers, client PCs, and servers. Many homes use firewall to protect their networks from security breaches. Firewalls limit the communications between devices on a network.

In the latter half of the 20th century, computing resources were relatively scarce. (Before that, they were nonexistent!) For a period of time, systems were either batch or interactive. Batch systems processed jobs in bulk, with predetermined input from files or other data sources. Interactive systems waited for input from users. To optimize the use of the computing resources, multiple users shared time on these systems. These time-sharing systems used a timer and scheduling algorithms to cycle processes rapidly through the CPU, giving each user a share of the resources.

Traditional time-sharing systems are rare today. The same scheduling technique is still in use on desktop computers, laptaps, servers, and even mobile computers, but frequently all the processes are owned by the same user(or a single user and the operating system). User processes, and system processes that provide service to the user, are managed so that each frequently gets a slice of computer time. Consider the windows created while a user is working at the same time. Even a web broiwser can be composed of multiple processes, one for each website currently being visited, with time sharing applied to each web browser process.

1.10 Computing Environments

 So far, we have briefly described several aspects of computer systems and the operating system that manage them. We turn now to a discussion of how operating systems are used in a variety of computing environments.