# IT Fundamentals/Operating Systems

This lesson introduces operating systems and file systems.

## Objectives and Skills

Objectives and skills for the operating systems portion of IT Fundamentals certification include:
* Explain the purpose of operating systems.
** Interface between applications and hardware
** Disk management
** Process management/scheduling
*** Kill process/end task
** Application management
** Memory management
** Device management
** Access control/protection
** Types of OS
*** Mobile device OS
*** Workstation OS
*** Server OS
*** Embedded OS
**** Firmware
*** Hypervisor (Type 1)
* Compare and contrast components of an operating system.
** File systems and features
*** File systems
**** NTFS
**** FAT32
**** HFS
**** Ext4
** Features
*** Compression
*** Encryption
*** Permissions
*** Journaling
*** Limitations
*** Naming rules
** File management
*** Folders/directories
*** File types and extensions
*** Permissions
** Services
** Processes
** Drivers
** Utilities
*** Task scheduling
** Interfaces
*** Console/command line
*** GUI

## Readings

* Wikipedia: Operating system
* Wikipedia: File system

## Multimedia

* YouTube: Purpose of Operating Systems
* YouTube: Components of an Operating System
* YouTube: Chapter 5 - IT Fundamentals+ (FC0-U61) Understanding Operating Systems

## Activities

* Perform system updates:
** Windows: Review Microsoft: Windows Update. Run Windows Update and install any missing critical updates.
** macOS: Review Apple: How to update the software on your Mac. Check for software updates and install any missing updates.
** Linux: Review Linux.com: Updating Your System. Check for system updates and install any missing updates.
** Chromium OS: Review Google: Update your Chromebook operating system. Check for system updates and install any missing updates.
* Update device drivers.
** Windows: Review Wikipedia: Device Manager and Microsoft: Update drivers in Windows 10. Run Device Manager on a Windows system. Use Device Manager to check for updated drivers for all display adapters, network adapters, and sound controllers.
** macOS: Review Apple: How to update the software on your Mac. Use Software Update to update software on your system.
** Linux: Review How-To Geek: How to Install Hardware Drivers on Linux. Run Software & Updates and check to see if any additional drivers are in use and update if necessary.
* Use your system's monitoring utilities to review active processes and resources in use.
** Windows: Review Wikipedia: Task Manager (Windows) and Wikipedia: Resource Monitor and run both utilities. Check for any processes unexpectedly using system resources.
** macOS: Review Wikipedia: Activity Monitor and run the utility. Check for any processes unexpectedly using system resources.
** Linux: Review GNOME: System Monitor and run the utility. Check for any processes unexpectedly using system resources.
* Terminate a running application.
** Windows: Review Bleeping Computer: How to close a program using Task Manager. Start a program such as Notepad or Calculator and use Task Manager to terminate the program.
** macOS: Review How to force an app to quit on your Mac. Start a program such as TextEdit or Calculator and use Force Quit Applications to terminate the program.
** Linux: Review It's FOSS: Use Task Manager Equivalent in Linux. Use System Monitor to review running processes in Linux.
* Examine system health and recent events for your system:
** Windows: Review Wikipedia: Event Viewer and run the utility. Review recent events for potential issues or concerns.
** macOS: Review Wikipedia: Console (OS X) and run the utility. Review recent events for potential issues or concerns.
** Linux: Review Lifewire: An Introduction to Linux Log Files and view the system logs. Review recent events for potential issues or concerns.
* Manage folders and files.
** Windows: Review GCF Global: Windows Basics - Working with Files. Review the existing structure and properties for the Documents folder. Improve file organization, if necessary.
** macOS: Review GCF Global: macOS Basics - Working with Files. Review the existing structure and information for the Documents folder. Improve file organization, if necessary.
** Linux: Review IBM: Learn Linux, 101: File and directory management. Review the existing structure and detailed information for the Documents folder. Improve file organization, if necessary.
* Schedule a task to run automatically.
** Windows: Review Windows Central: How to create an automated task using Task Scheduler on Windows 10. Schedule a task to automatically run the calculator five minutes from now. Remove the task after it runs.
** macOS: Review Medium: How to Use launchd to Run Services in macOS. Use launchd to automatically run the calculator five minutes from now. Unload the job after it runs.
** Linux: Review How To Geek: How to Schedule Tasks on Linux: An Introduction to Crontab Files. Schedule a task to automatically run the calculator five minutes from now. Remove the task after it runs.
* Test other operating systems using your web browser:
** All: OnWorks: Free Online Workstations
** Windows: MIT: Windows 10 Simulator
** macOS: alessioatzeni.com: Mac OSX Lion CSS3 - password is admin
** Linux: Test different Linux distributions using distrotest.net. Popular Linux desktop distributions include Ubuntu, Linux Mint, and Fedora.
* Download and install virtualization software for your system. Use it to test other operating systems. This activity will also help you test databases in a future lesson.
** Windows: Microsoft Hyper-V, Oracle VirtualBox, or VMware Player.
*** Microsoft: Enable Hyper-V
*** The Geek Stuff: How to install Oracle VirtualBox and Create a Virtual Machine
*** VMware: Downloading and Installing VMware Player and VMware Workstation Player
** OS X: Oracle VirtualBox, Parallels, or VMware Fusion.
*** The Geek Stuff: How to install Oracle VirtualBox and Create a Virtual Machine
** Linux: Oracle VirtualBox or VMware Player.
*** The Geek Stuff: How to install Oracle VirtualBox and Create a Virtual Machine
*** VMware: Downloading and Installing VMware Player and VMware Workstation Player

## Lesson Summary
### Operating System Concepts

* An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between programs and the computer hardware.
* Access to data stored on disks is a central feature of all operating systems. Computers store data on disks using files, which are structured in specific ways in order to allow for faster access, higher reliability, and to make better use of the drive's available space. The specific way in which files are stored on a disk is called a file system, and enables files to have names and attributes. It also allows them to be stored in a hierarchy of directories or folders arranged in a directory tree.
* Multitasking refers to the running of multiple independent computer programs on the same computer; giving the appearance that it is performing the tasks at the same time. Since most computers can do at most one or two things at one time, this is generally done via time-sharing, which means that each program uses a share of the computer's time to execute.
* An operating system kernel contains a scheduling program which determines how much time each process spends executing, and in which order execution control should be passed to programs. Control is passed to a process by the kernel, which allows the program access to the CPU and memory. Later, control is returned to the kernel through some mechanism, so that another program may be allowed to use the CPU. This so-called passing of control between the kernel and applications is called a context switch. Modern operating systems have preemptive control over running applications, device drivers, and kernel code.
* Preemptive multitasking allows the operating system to terminate running processes that stop responding. Different operating systems refer to this capability by different names, such as ending tasks or killing processes.
* Modern CPUs support multiple modes of operation. CPUs with this capability offer at least two modes: user mode and supervisor mode. Supervisor mode is used by the kernel for low level tasks that need unrestricted access to hardware, such as controlling how memory is accessed, and communicating with devices such as disk drives and video display devices. User mode, in contrast, is used for almost everything else. Application programs, such as word processors and database managers, operate within user mode, and can only access machine resources by turning control over to the kernel, a process which causes a switch to supervisor mode.
* Among other things, a multiprogramming operating system kernel must be responsible for managing all system memory which is currently in use by programs. This ensures that a program does not interfere with memory already in use by another program. Since programs time share, each program must have independent access to memory.
* Modern operating systems must be capable of distinguishing between requests which should be allowed to be processed, and others which should not be processed. Systems commonly have some form of requester identity, such as a user name, and to establish identity there may be a process of authentication such as a password, ID card, and/or biometric data.
* Once authenticated, user access to resources must be authorized by verifying that the requester has permission to access the resource. Authorization permissions typically include separate options for read, create, modify, and delete.
* Resource permissions may be granted directly to users, or permissions may be granted to groups of users, and user accounts are added to various administrative groups to inherit permissions.
* Operating system resource management may also include auditing options. These would allow tracking of requests for access to resources (such as, "who has been reading this file?"). Internal security, or security from an already running program is only possible if all possibly harmful requests must be carried out through interrupts to the operating system kernel. If programs can directly access hardware and resources, they cannot be secured.

### Operating System Types

* A mobile operating system (or mobile OS) is an operating system for mobile phones, tablets, smartwatches, 2-in-1 PCs (that can be convert to a laptop mode or detach and work as a tablet mode) or other mobile devices. While computers such as typical laptops are 'mobile', the operating systems usually used on them are not considered mobile ones, as they were originally designed for desktop computers that historically did not have or need specific mobile features. This distinction is becoming blurred in some newer operating systems that are hybrids made for both uses.
* Desktop or workstation operating systems manage computer hardware, software resources, and provides common services for personal computer programs. Popular workstation operating systems include Microsoft Windows, Apple macOS, and various Linux distributions.
* Server operating systems provide functionality for other programs or devices, called "clients". Common server use includes application servers, communication servers, computing servers, database servers, file servers, mail servers, media servers, print servers, virtual servers, and web servers. Popular server operating systems include Linux and Windows Server.
* An embedded operating system is an operating system for embedded computer systems, a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electrical system. This type of operating system is typically designed to be resource-efficient and reliable.
* Firmware is a specific class of computer software that provides the low-level control for a device's specific hardware. Firmware can either provide a standardized operating environment for more complex device software, or, for less complex devices, act as the device's complete operating system, performing all control, monitoring and data manipulation functions.
* A hypervisor (or virtual machine monitor, VMM) is computer software, firmware or hardware that creates and runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called a host machine, and each virtual machine is called a guest machine. The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems.
* Type-1, native or bare-metal hypervisors run directly on the host's hardware to control the hardware and to manage guest operating systems. Type-2 or hosted hypervisors run on a conventional operating system (OS) just as other computer programs do.

### File Systems

A file system or filesystem (often abbreviated to fs), controls how data is stored and retrieved.
* NTFS (New Technology File System) a proprietary journaling file system developed by Microsoft, for use with Windows NT and later Windows operating systems.
* FAT32 (32-bit File Allocation Table) is a legacy industry-standard computer file system with support for an increased number of possible clusters compared to previous versions.
* HFS (Hierarchical File System) is a proprietary file system developed by Apple Inc. in 1998 for use in computer systems running macOS.
* APFS (Apple File System) is a proprietary file system released in 2017 for macOS, optimized for flash and solid-state drive storage, with a primary focus on encryption.
* ext (extended file system) is a file system created specifically for the Linux kernel. ext4 is the fourth version of this file system.
File system features include:
* Compression is the process of encoding information using fewer bits than the original representation.
* Encryption is the process of encoding a message or information in such a way that only authorized parties can access it and those who are not authorized cannot.
* Permissions provide access rights to specific users and groups of users. These permissions control the ability of the users to view, change, navigate, and execute the contents of the file system.
* Journaling keeps track of changes not yet committed to the file system's main part by recording the intentions of such changes in a data structure known as a "journal", which is usually a circular log. In the event of a system crash or power failure, such file systems can be brought back online more quickly with a lower likelihood of becoming corrupted.
* Not all file systems support all features. For example, the FAT32 file system doesn't support compression, encryption, permissions, or journaling.
* File systems often have restrictions on file names, such file name length and use of special characters in the name. There may also be special meaning given to specific characters, such as using a leading period (.) to indicate a hidden file or a tilde (~) for a temporary system file.
File management includes directories (folders), file types and extensions, and permissions.
* A directory is a file system cataloging structure which contains references to other computer files, and possibly other directories. On some file systems, directories are known as folders.
* A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium. Different operating systems have traditionally taken different approaches to determining a particular file's format, with each approach having its own advantages and disadvantages.
* A popular method used by many operating systems, including Windows, macOS, CP/M, DOS, VMS and VM/CMS is to determine the format of a file based on the end of its name, more specifically the letters following the final period. This is known as the filename extension.
* Another way of storing the format of a file is to explicitly store information about the format in the file system, rather than within the file or file name itself. This is known as external metadata.
* An access-control list (ACL) is a list of permissions attached to an object. An ACL specifies which users or system processes are granted access to objects, as well as what operations are allowed on given objects.

### Operating System Components

* A service, also known as a daemon, is a computer program that runs as a background process, rather than being under the direct control of an interactive user. Systems often start daemons at boot time which will respond to network requests, hardware activity, or other programs by performing some task.
* A process is the instance of a computer program that is being executed by one or many threads. It contains the program code and its activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently.
* A device driver is a computer program that operates or controls a particular type of device that is attached to a computer. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about the hardware being used.
* Utility software is software designed to help to analyze, configure, optimize or maintain a computer. It is used to support the computer infrastructure - in contrast to application software, which is aimed at directly performing tasks that benefit ordinary users. Common utility categories include system, storage device management, and file management.
* A task or job scheduler is a computer application or service for controlling unattended background program execution of tasks. Modern task schedulers typically provide a graphical user interface and a single point of control for definition and monitoring of background executions in a distributed network of computers.

### Operating System User Interfaces

* A CLI (Command Line Interface) is a type of interface that processes commands to a computer program in the form of lines of text.
* A GUI (Graphical User Interface) is a form of user interface that allows users to interact with electronic devices through graphical icons.

## Key Terms
### APFS (Apple File System)

    A proprietary file system released in 2017 for macOS, optimized for flash and solid-state drive storage, with a primary focus on encryption.

### CLI (Command Line Interface)

    A type of interface that processes commands to a computer program in the form of lines of text.

### ext (extended file system)

    A file system created specifically for the Linux kernel.

### FAT (File Allocation Table)

    A legacy computer file system architecture and a family of industry-standard file systems utilizing it.

### FAT32 (32-bit File Allocation Table)

    An updated legacy computer file system which supports an increased number of possible clusters.

### HFS (Hierarchical File System)

    A proprietary file system developed by Apple Inc. in 1998 for use in computer systems running macOS.

### GUI (Graphical User Interface)

    A form of user interface that allows users to interact with electronic devices through graphical icons.

### kernel

    A computer program at the core of a computer's operating system with complete control over everything in the system.

### NTFS (New Technology File System)

    A proprietary journaling file system developed by Microsoft, for use with Windows NT and later Windows operating systems.

### OS (Operating System)

    System software that manages computer hardware and software resources and provides common services for computer programs.

## Assessments

* Flashcards: Quizlet: IT Fundamentals - Operating Systems
* Quiz: Quizlet: IT Fundamentals - Operating Systems

## See Also

* Operating Systems