Operating System
Operating systems are the software programs that manage a computer’s hardware resources
and facilitate the running of software applications and utilities.
They have three main components:
Linux, Apple OS X, Microsoft Windows, Android, and Apple iOS.
Kernel
The central component of an operating system (OS) is the kernel. The main functions of the kernel include:
Device Drivers
Device drivers are software code that enables the kernel to communicate with different hardware components. They act as intermediaries, translating generic kernel commands into specific instructions that hardware components can comprehend. This architecture simplifies the kernel by allowing it to focus on generic device communication.
Tools
Tools are standalone programs bundled with the OS and used to manage configuration, file systems, and devices. These tools are essentially like regular applications,
Operating System Security Functions
Applications
Applications are software programs designed for user-initiated tasks, ranging from complex systems like corporate financial management or enterprise resource planning to simpler tools like a bank loan calculator. They execute instructions that involve input data, calculations, and generating output data, with their functionality varying based on their purpose and underlying technologies.
Agents
Agents are compact, independent programs within larger applications that carry out specific tasks, often without human intervention. They typically operate autonomously, running as services on Windows systems or background processes on Unix systems. Another term for agents is “daemons.” Examples of agents include:
Applet
An applet is a software program that runs within the context of another program. Unable to run on its own, an applet performs a narrow function. Unlike a subroutine, which is a part of a running program, an applet is a separate object. Probably the most common use of applets is within web browsers.
Examples of web browser applets include media players such as Flash and Shockwave players, Java applets, and content viewers such as Adobe Reader. Figure 3-1 shows a Java applet running in a web browser window
Client-Server Applications
Client-server applications have software components distributed between clients and servers, communicating via networks. Clients typically contain user interface logic and run on personal workstations or mobile devices, while servers execute business logic and centralize services on robust network operating systems. Client-server architecture addresses processing demands by shifting display and input logic to user workstations while maintaining back-end functions on servers. They communicate using protocols like ODBC, CORBA, and SQL*Net.
Modern client-server setups utilize virtualization software and storage area networks (SANs) for efficiency and redundancy. Virtualization allows a single server to host multiple operating systems, reducing hardware and energy costs. SANs store data centrally and offer redundancy through distribution layer switches.
Recent trends involve cloud-based architectures, where clients access applications through Ethernet connections. Third-party providers often manage data centers, but this model presents challenges like lack of local control and potential availability issues.
Initial client-server systems faced scalability and throughput limitations but improved with faster connectivity options. Storage capacity and performance issues were addressed, and software interfaces became web-based, making transitions to cloud storage more seamless for users.
Distributed applications
Distributed applications run on separate systems with various architectures, like two-tier or three-tier setups, often dividing functions for scalability, performance, geography, and security. Components from different sources can be part of these applications, with some complex systems extending to other platforms. Performance, legal, and security concerns drive this component separation.
To bolster security, distributed applications frequently employ multiple tiers, such as a front-end for business logic and a separate database back end (two-tier) or a user interface front end, middle-tier logic, and a database back end (three-tier).
Managing version control and standardisation is challenging in distributed applications due to frequent component updates. Ongoing coordination and regression testing are necessary to maintain functionality amid constant changes.
Thin Client Web Applications Advantages
Thin Client Web Applications, emerging in the late 1990s, offer several advantages over traditional client-server and distributed applications:
Thin Client Applications Drawbacks