페이지

2022년 5월 7일 토요일

1.11.2 Free Operating Systems

 To counter the move to limit software use and redistribution, Richard Stallman in 1984 started developing a free, UNIX-compatible operating system called GNU(which is a recursive acronym for "GNU's Not Unix!"). To Stallman, "free" refers to freedom of use, not price. The free-software movement does not object to trading a copy for an amount of money but holds that users are entitled to four certain freedoms: (1) to freely run the program, (2) to study and change the source code, and to give or sell copies either (3) with or (4) without changes. In 1985, Stallman published the GNU Manifesto, which argues that all software should be free. He also formed the Free Software Foundation (FSF) with the goal of encouraging the use and developement of free software.

The FSF uses the copyrights on its programs to implement "copyleft," a form of licensing invented by Stallman. Copylefting a work gives anyone that prossesses a copy of the work the four essential freedoms that make the work free, with the condition that redistribution must preserve these freedoms. The GNU General Publish License (GPL) is a common license under which free software is released. Foudamentally, the GPL requires that the source code be distributed with any binaries and that all copies (including modified versions) be released under the same GPL license. The Creative Commons "Attribution Sharealike" license is also a copyleft license; "sharealike" is another way of stating the idea of copyleft.

1.11.1 History

 In the early days of modern computing (that is, the 1950s), software generally came with source code. The original hackers (computer enthusiasts) at MIT's came Tech Model Railroad Club left their programs in drawers for others to work on. "Homebrew" user groups exchange code during their meetings. Company-specific user groups, such as Digital Equipement Corporation's DECUS, accepted contributions of source-code programs, collected  them onto tapes, and distributed the tapes to interested members. In 1970, Digital's operating systems were distributed as source code with no restrictions or copyright notice.

Computer and software companies eventually sought to limit the use of the binary files compiled from the source code, rather than the source code itself, helped them to achieve this goal, as well as protecting their code and their ideas from their competitors. Although the Homebrew user groups of the 1970s exchanged code during their meetings, the operating systems for hobbyist machines(such as CPM) were proprietary. By 1980, proprietary software was the usual case.

1.11 Free and Open-Source Operating Systems

 The study of operating systems has been made easier by the availability of a vast number of free software and open-source releases. Both free operating systems and open-source operating systems are available in source-code format rather than as compiled binary code. Note, though, that free software and open-source software are two different ideas championed by different groups of people (see http://gnu.rog/phliosophy/open-source-misses-the-point.html/ for a discussion on the topic). Free software (sometimes referred to as freellibresoftware) not only makes source code available but also is licensed to allow no-cost use, redistribution, and modification. Open-source software does not necessarily offer such licensing. Thus, although all free sotrware is open source, some open-source software is not "free." GNU/Linux is the most famous open-source operating system, with some distributions free and others open source only (http://www.gnu.org/distros/). Microsoft Windows is a well-known example of the opposite closed-cource approach. Wiundows is proprietary software-Microsoft owns it, restricts its use, and carefully protects its source code. Apple's macOS opoerating system comprises a hybrid approach. It contains an open-source kernel named Darwin but includes proprietary, closed-source components as well.

Starting with the source code allows the programmer to produce binary code that can be executed on a system. Doing the opposite-reverse engineering the source code from the binaries-is quite a lot of work, and useful items such as comments are never recovered. Learning operating systems by examining the source code has other benefits as well. With the source code in hand, a student can modify the operating system and then compile and run the code to try out these changes, which is an excellent learning tool. This text includes projects that involve modifying operating-system source code, while also describing algorithms at a high level to be sure all important operating-system topics are covered. Throughout the text, we provide pointers to examples of open-source code for deeper study.

There are many benefits to open-source operating systems, including a community of interested(and usually unpaid)programmers who contribute to the code by helping to write it, debug it, analyze it, provide support, and suggest changes. Arguably, open-source code is more secure than closed-source code because many more eyes are viewing the code. Certainly, open-source code has bugs, but open-source advocates argue that bugs tend to be found and fixed faster owing to the nbumber of people using and viewing the code. Companies that earn revenue from selling their programs ofter hesitate to open-source their code, but RED Hat and a myriad of other companies are doing just that and showing that commercial companies benefit, rather than suffer, when they open-source their code. Revenue can be generated though support contracts and the sale of hardware on which the software runs, for example.


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.