Unit 1-3a.docx
Document Details
Uploaded by StimulatingSpinel
Full Transcript
OBJECTIVE 3a. Identify basic facts and terms associated with fundamentals of information technology systems. - Programming Languages - Service Oriented Architecture (SOA) - Databases - Interfaces - Cross Domain Data Solutions (CDS) - Memory Structure - Interrupt Requests (IRQ)...
OBJECTIVE 3a. Identify basic facts and terms associated with fundamentals of information technology systems. - Programming Languages - Service Oriented Architecture (SOA) - Databases - Interfaces - Cross Domain Data Solutions (CDS) - Memory Structure - Interrupt Requests (IRQ) - Drivers - Complementary Metal-Oxide-Semiconductor (CMOS) - Basic Input/Output System (BIOS) / Unified Extensible Firmware Interface (UEFI) **[PROGRAMMING LANGUAGES]** [] Before we can discuss the software languages used to program with, we must first define what a program is. A program is a set of instructions designed and written to perform a specific task within a computer system. The instructions, specifications and performance requirements are considered the source code or micro-code of the programs. Programming languages, on the other hand, serve as tools for describing, measuring, and expressing processes or algorithms, encompassing both digital and non-digital data that computing machines handle. While programming languages serve various purposes, their fundamental objective lies in governing and regulating the behavior and performance of computing systems, as well as the outcomes they generate. **[PROGRAMMING LANGUAGE COMPONENTS]** There are two basic components of programming languages: syntax and semantics (Ref. Figure 1-4). Syntax and semantics are fundamental concepts in linguistics and programming languages. They represent two different aspects of communication and understanding languages, whether they are human languages or computer languages. **[Syntax]** The syntax is the way symbols, words and characters are formed within each programming language. It's about the arrangement of words and phrases to create well-formed sentences in a particular language. In other words, syntax is concerned with what is grammatically correct in a sentence. **[Semantics]** Semantics deal with the meaning each set of characters convey when arranged in a particular way. While two pieces of code may have the same syntax, their semantics could be different if they perform different tasks. **[PROGRAMMING LANGUAGE CATEGORIES]** [] There are two basic categories of programming languages: Low-level and High-level. **[Low-level Languages]** Are associated with the computer's hardware components and constraints. This code is easily and readily executed by the computer (binary code consisting of 0s and 1s) without any assistance from any other program. Machine code or assemble languages are consider low- level languages. **[High-level languages]** [] Are designed to be more user-friendly, easier to write, and more abstract from machine language. They are closer to human languages and further from machine language. These languages are designed to simplify complex tasks, making the process of developing a program much easier and more understandable than when using a low-level language. Examples of high-level languages are C++, Java or Visual Basic. There are two primary types of high-level languages: Interpreted and Compiled. **[Interpreted Programming Languages]** [] With an interpreted programming language, the code is saved in the same format entered and does not need to be compiled before execution. An interpreter takes the script or code and modifies it so it can be understood and executed by the computer's CPU. (Ex: JavaScript, etc.) **[Compiled Programming Languages]** [] With a compiled programming language, the compiler will translate the program directly into machine code specific to the target computer's CPU. The computer will then run the machine code on its own. This allows compiled programs to generally run faster than interpreted ones. (Examples: C, C++, Visual Basic, etc.) **[COMMON PROGRAMMING LANGUAGES]** [] There is an extensive list of computer programming languages. Each offering different features to serve as a means of communication between the user and the computer system. The following is a list of some of the more common languages: **[C++]** [] This language is built off of the C language. The syntax of C++ is nearly identical to C but it has object-oriented features allowing the programmer to create objects within the code. This makes programming easier and more efficient. This language is a combination of high-level and low- level languages supporting procedural, generic, object-oriented programming and data abstraction. [] [] [] **[JAVA]** [] Java runs in a secure virtual environment through the Java Security Manager (JSM), which provides a sandbox in which Java applications can run. Java also provides more stringent memory protections than C or C++, relying on garbage collection and references memory management in place of the more manual approach used by C and C++. Java allows the user to have almost full control of the virtual environment in which the Java bytecode is run. Java code intended for use on the client runs in a different environment, under a different trust model, than code on the server. There are common requirements, whether the Java code runs on the client or server. Input from untrusted sources should always be checked and filtered. Java code that inherits methods from parents, interfaces, or parents' interfaces also inherits vulnerabilities in those methods. For this reason, it is critical that the developer use inheritance with caution. **[Windows PowerShell]** [] This is Microsoft's command line shell and scripting language. It works in collaboration with Microsoft.NET Framework by means of executables and stand- alone applications. It provides a controlled programming model or environment for building application software. It is designed to automate system tasks and create system management tools for implementing processes. PowerShell also contains script aliases allowing older MSDOS commands to work in the newer Windows environment. Windows PowerShell is a non-GUI program allowing an operator to communicate directly with the operating system. The PowerShell scripting language uses a specialized type of command called a cmdlet. Cmdlets not only use objects for output but also use objects for input via the pipe "\|". Variables are used to store pieces of information so they can be used later.This is just a sample of the massive amount of computer programming languages utilized in technology today. Each programming language is built with different logical structures created for different platforms and for a specific purpose. Every program used by an operator on a computer system is written in source code by computer programmers. The code may be converted into a machine readable 'executable file' by a compiler or interpreter. **[SERVICE ORIENTED ARCHITECTURE (SOA)]** [] Before learning what a Service Oriented Architecture is, we first need to define a Service. Service A service is a function that is well-defined, self-contained and does not depend on the state of other services. It is the endpoint of a connection. **[Service Oriented Architecture]** Services Oriented Architecture is defined as a design blueprint or framework for applications within an enterprise. It allows a collection of services or business processes to communicate with each other in one central location. These services typically implement functionalities most humans would recognize as a service such as filling out an online application for an account, viewing an online bank statement, booking an on-line reservation, or booking an airline ticket order. Instead of services embedding calls to each other in their source code, protocols are defined describing how one or more services can talk to each other. This architecture then relies on a business process to link and sequence services (known as orchestration) to meet a new or existing business system requirement. **Benefits of Service Oriented Architecture** [] **[Reusability]** Services can be re-utilized to create new applications. **[Interoperability]** Services interact together through protocols **[Scalability and Flexibility]** When new applications are needed, resources are available to meet the new demand. **[Cost Efficiency]** As the services are readily available, there is no cost in generating new code over and over again. Instead, only orchestration must take place to allow the services to interact in new ways. **[DATABASE]** A database refers to a systematic and organized collection of data, generally stored electronically on a computer system. It\'s essentially the backbone of most applications, storing all the necessary data in a structured manner. The operations on this data, including access, management, modification, and updates, are typically handled by a database management system (DBMS). Typical types of databases include: **[Flat File Database]** Flat-file databases are databases of just one table. It can be created in database software or in a spreadsheet and is often saved as a CSV file. A flat file is useful because it is highly compatible between databases and other applications. Databases created in spreadsheet applications (like Microsoft Excel) are flat file databases. An old-fashioned example of a flat file or two- dimensional database is the old printed telephone directory. Flat-file databases could be used for several things, such as: \- \- Storing usernames and passwords for a system \- Keeping track of contact details of individuals \- Cataloging product details for a store \- Managing a personal collection of games or music \- Recording entities and attributes for a particular application A single flat-file table is useful for recording a limited amount of data. But a large flat-file database can be inefficient as it takes up more space and memory than a relational database. It also requires new data to be added every time you enter a new record. Finally, data redundancy -- where data is partially duplicated across records -- can occur in flat- file tables **[Relational Database]** Relational databases allow data to be separated and connected across several tables. Tables are connected through primary and foreign keys to increase efficiency. A large set of data about many different entities, it is more efficient to create separate tables and connect them with relationships. Relational databases allow data to be stored in a clear, organized manner across multiple tables. Links, known as relationships, are formed to allow the data to be shared across the tables. For instance, a retail company might have different tables for the following information: - Customer details - Customer orders - Product details stock levels - Stock locations - Staff details Product details could be complicated, e.g. if the company sold books there may be several categories within books, including author name, title, genre, physical size and many other details. Storing all this information in one flat-file table would create a very large table. Normalization is the process of analyzing how to make databases more efficient by using separate tables to reduce redundant data. When a database is normalized, data is broken down into smaller tables and relationships are used to link them. The main characteristics of a relational database are: - It is built from a set of unique tables (also called relations) - A table contains data about just one entity - Tables must have a primary key - Tables are linked by primary and foreign keys When working with relational databases, users need to try to keep information about different entities in separate tables. Each entity has a primary key to provide a unique reference to an entity, which means that an entity can be referenced in another table without having to call up all the details about that entity. Entities can relate to each other in three different ways: one to one, one to many and many to many. Databases store data, but you also need to be able to search and filter the data to find and present results. Some of the tools you use when working with databases include: \- Forms \- Queries \- Reports \- Modules **Forms** are used for data entry; forms help users input data into the database. For instance, when selling a product, users can enter details like product name, brand, and size. **Queries** enable users to search and filter data in a database. For example, when shopping online, users can select options, filter results, and sort items by price or auction time remaining. **Reports** present data from the database in a user-friendly format. For instance, an address book database could generate a report displaying only names and phone numbers. **Modules**: Database software and languages often include pre-written programs called modules. Users can customize these modules or create new ones to meet their specific needs. **[NoSQL Databases]** [] NoSQL, which stands for \"Not Only SQL\", is a type of database design that provides flexible schemas for the storage and retrieval of data. This contrasts with the traditional SQL databases which require a defined schema before storing data. NoSQL databases are particularly useful for dealing with large volumes of structured, semi- structured, or unstructured data. They are designed to be scalable and reliable, especially for real-time applications and for big data performance issues. There are four main types of NoSQL databases: **Document Databases**: These store data in a document-like format, often JSON (JavaScript Object Notation). They are designed to store, retrieve, and manage document-oriented information. MongoDB is a popular example of a document database. **Key-Value Stores**: These are the simplest type of NoSQL databases. Every single item in the database is stored as an attribute name, or key, together with its value. Examples of key-value stores are Redis and DynamoDB. **Wide-Column Stores**: Unlike a relational database, where columns are fixed for all records, wide column stores allow each record to have its own set of columns. These databases are excellent for querying large data sets, and they scale well. Examples include Cassandra and Googles Big Table. **Graph Databases**: These are designed for data whose relations are best represented as a graph and have elements that are interconnected, with an undetermined number of relations between them. Examples include Neo-4j and Amazon Neptune. NoSQL databases are widely used in large-scale applications due to their scalability, flexibility, and high performance. However, their usage is dependent on the specific needs of an application. It\'s worth noting that NoSQL does not imply the replacement of SQL. In fact, many organizations use both NoSQL and SQL databases to meet various data management needs. **[SCHEMA]** A database schema is a formal declaration of how data is organized in a database system. It serves as a blueprint that defines the architectural layout of database objects, such as tables, views, and indexes, and the relationships between them. It is essentially the structure that holds the descriptions of all database objects authorized by the database administrator. There are two fundamental components of any database schema: **Physical database schema** The physical database schema describes how data will be stored physically on a storage system and the form of storage used (files, key-value pairs, indices, etc.). **Logical database schema** The logical database schema describes the logical constraints applied to the data and defines fields, tables, relations, views, integrity constraints, etc. These requirements provide useful information that programmers can apply to the physical design of the database. The rules defined in this logical model help determine how the data in different tables relate to each other. The definition of physical tables in the schema comes from the logical data model. Entities become tables, the entity's attributes become table fields, etc. **[Types of Database Schemas]** [] **Flat model** A "flat model" database schema organizes data in a single, two-dimensional array---think of a Microsoft Excel spreadsheet or a CSV file. This schema is best for simple tables and databases without complex relations between different entities. **Hierarchical model** Database schemas in a hierarchical model have a "tree-like" structure, with child nodes branching out from a root data node. This schema is ideal for storing nested data---for example, family trees or biological taxonomies. **Network model** The network model, like the hierarchical model, treats data as nodes connected to each other; however, it allows for more complex connections, such as many- to-many relationships and cycles. This schema can model the movement of goods and materials between locations, or the workflow required to accomplish a particular task. **Relational model** As discussed above, this model organizes data in a series of tables, rows, and columns, with relationships between different entities. We'll mainly be working with the relational model in the remainder of this article. **Star schema** The star schema is an evolution of the relational model that organizes data into "facts" and "dimensions." Fact data is numerical (e.g. the number of sales of a product), while dimensional data is descriptive (e.g. the product's price, color, weight, etc.). **Snowflake schema** The snowflake schema is a further abstraction on top of the star schema. Fact tables point to dimensional tables, which can also have their own dimensional tables, expanding the descriptiveness possible within the database. (As you might have guessed, the "snowflake" schema is named after the intricate patterns of a snowflake, in which smaller structures radiate off of the central arms.) Database schema design refers to the practices and strategies for constructing a database schema. You can think of database schema design as a "blueprint" for how to store massive amounts of information in a database. The schema is an abstract structure or outline that represents the logical view of the database. By defining categories of data and relationships between those categories, database schema design makes data much easier to retrieve, consume, manipulate, and interpret. Database schema design organizes the data into separate entities, determines how to create relationships between organized entities, and how to apply the constraints on the data. Designers create database schemas to give other database users, such as programmers and analysts, a logical understanding of the data. **Structured Query Language (SQL) Query and Reports** Structured Query Language, commonly known as SQL, is a programming language is specifically designed for managing and manipulating data held in relational databases. Think of a relational database as a collection of tables, each with rows and columns, similar to an Excel spreadsheet. Each row represents a unique record, and each column represents a specific field of information. SQL is based on principles of set theory and relational algebra, which is a fancy way of saying it uses logical rules to handle data. In SQL, data elements, known as attributes, are arranged into columns. The rows, known as tuples, are related sets of these attributes. Together, rows with the same structure from tables. SQL\'s strength lies in its standardization. The American National Standards Institute (ANSI) recognizes SQL as a standard language for accessing and manipulating relational databases. This means if you learn SQL for one database system, you can apply that knowledge to other database systems, making it a versatile tool for handling data. Queries, the questions we ask databases to retrieve specific information, are constructed using SQL\'s command language. With SQL, you tell the database what information you want, and the database figures out the best way to get it. The commands include instructions to select, insert, update, and locate data. Because of its widespread use, most database-related applications or tools translate queries into SQL, even if their own interface looks different. In a relational database, data is divided into tables. SQL can quickly pull specific data items from these different tables and present them as a unified collection of data, known as a result. This ability to group items based on specific relationships, such as the relationship between an employee\'s name and their sales performance, offers great flexibility in managing and understanding the information in the database. **GRAPHICAL USER INTERFACE (GUI)** The user interface is the software layer (sometimes called a shell) used by an operator to communicate with the operating system. The operating system in turn communicates with the computer and the applications hosted on it. The user interface is used to instruct the CPU to load programs into memory as well as interact with the many visual components available on the operating system. The Graphical User Interface (GUI) can be used by the operator to interact with electronic devices (such as computers), hand-held devices and other appliances. This type of interface uses icons, menus, and other visual indicators or graphic representations to display information as well as related user controls. GUI representations are manipulated by a pointing device like a mouse, trackball, stylus, or finger on a touch screen. The GUI draws pictures on a screen to interact with using a mouse or similar device. These tiny pictures called icons represent programs and data structures. By clicking on icons and the other graphical features (like menus and buttons), the operator can send commands to the operating system of applications. **GUI Benefits** In a GUI, the user simply clicks the item to interact with it. The interface designs are similar throughout the application. It is also designed to enhance media applications such as images, videos and music. One benefit to an organization using a GUI is fewer skills are required for individuals to perform job tasks thereby providing higher productivity. The benefit to individual is having greater accessibility to information within the computer via a user-friendly interface. **COMMAND-LINE** The Command Line Interface (CLI) is a text-based interface allowing a user to type commands directly to the operating system and the system responds by carrying out those commands. The user can also respond to visual prompts from the software as well. Because the Command Line Interface requires unique commands. It more difficult to learn because the need to memorize dozens of different commands and their syntax. The commands are unique to the operating system utilized. An incorrect command syntax (or the correct command issued at the wrong location in the file system) can lead to devastating results. There are no built-in safety mechanisms as are usually employed in a GUI to prevent an operator from inadvertently deleting files that are critical for the computer to operate. However, a command line operating system can be a very valuable resource and should not be ignored. CLI users perform tasks by entering commands. The working mechanism is very easy, but it is not user friendly. The operator enters a command; presses "Enter" and then waits for a response. After receiving the command, the CLI processes it accordingly and returns the output/result on the same screen. A command line interpreter is used for this purpose. With the CLI, the operator has more control over the file and operating systems then if they were using a GUI. Window's MS-DOS and PowerShell are the best examples of a CLI. **CROSS DOMAIN DATA SOLUTIONS** Cross Domain Solutions (CDS) offer information assurance while providing the ability to manually or automatically access or transfer information between two or more differing security domains (i.e., Unclassified, Secret, or Top Secret). It gives us the ability to share information between systems of different security levels. In some cases, the mission requires data which exists or is processed on an unclassified network to be moved into a classified (or coalition) network while still maintaining the security integrity of the networks involved. Facilities using CDS typically cannot house workstations into each security domain. Use of specialized servers to transfer data one-way (low-to-high: i.e., from Unclassified to Secret) across network boundaries operating at different security classifications without the possibility of data "leaking" out of the target network. This differs from a "Controlled Interface" where the system operates between two different network enclaves but they have the same security classification. Cross domain solution usually performs one of three possible functions. **Transfer** Most common solution. This type of CDS is used to move data from one security domain to another. When data is moved, it must meet the security classification of the target system (ie data on a classified domain must be unclassified to be moved to an unclassified one). Failure will lead to "spillage" on the unclassified target domain. **Access** Access solution allows a user an individual login session to their choice of security domain. **Multi Level** Allows user to initiate multiple simultaneous login sessions to differing security domains. **CDS IMPLEMENTATION PHASES** Prior to use, any CDS has an in-depth review/accreditation process involving numerous agencies including DISA. **Phase I - Requirements Validation** The requirement is evaluated to determine if it indeed requires a CDS solution and if that proposed solution can be supported by DISA. **Phase II - Risk Analysis** The environment where the proposed CDS is to be employed is validated to determine the risk the cross-security domain connection poses to DoD. **Phase III - Engineering Review** The CDS is stringently configurations tested to ensure it will operate as described. **Phase IV - Authorized to Operate** Once implemented, the CDS may be used for a period of up to three years (but will be reviewed at least annually) **MEMORY** Computer processes memory, one of the most intricate yet smallest parts of a computer, is an electronic component that stores data and applications. This storage can either be temporary or permanent, depending on the computer system\'s needs and its users. Without these memory components, the processor wouldn\'t have a place to store its calculations and, rendering the computer useless. There are two types of computer memory: Primary and Secondary Memory **Primary Memory** Primary memory, also known as main memory or internal memory, refers to the memory directly accessible to the computer\'s processor. It is used for storing data and instructions that the processor actively uses during program execution. Primary memory is essential for the smooth operation of a computer system, as it provides fast access to data and instructions that are required for immediate processing. It serves as a workspace for the processor, allowing it to read and write data quickly. Note: There are two types of PRIMARY memory: RAM and ROM. **Secondary Memory** On the other hand, secondary memory isn\'t directly accessible by the CPU. Instead, it provides a permanent storage solution on mass storage devices. The data stored on these devices remains intact even without a power supply. When a computer needs to run or execute an application stored on secondary memory, it transfers it to the primary memory first. Various devices, such as external hard disk drives, flash drives (like pen drives, memory cards, etc.), optical drives, and zip drives, serve as secondary memory devices. Optical drives such as a Compact Disc (CD), Digital Video Disc (DVD) or Blu-Ray Disc (BD) are all manufactured with onboard RAM (also called buffer RAM, buffer, or cache memory), processor, and the actual driving module. This buffer stores incoming data from a recording source (like a computer) and stores it until it can be written to disk. **Random Access Memory (RAM)** Random Access Memory (RAM) is a memory chip within the computer system responsible for storing data on a temporary basis so it can be promptly accessed by the CPU. (Ref. Figure 1-12) It is volatile in nature meaning data will be erased once power supplied to the storage device is turned off. So when the system is switched off, the RAM loses all stored information. This is unlike data stored in secondary storage that can be retrieved when the system turned on and running again. RAM stores data randomly for the CPU accesses. Information stored on RAM is loaded from the computer's hard disk for the CPU to use or from the CPU to store on the hard disk. This information includes data related to the operating system as well as applications. **Static RAM (SRAM)** Static RAM stores data bits using bi-stable flip-flops. Once data is written into SRAM, it remains there and doesn\'t need to be refreshed as frequently as other RAM types. SRAM helps bridge the speed gap between the CPU and the RAM by preloading as many instructions as possible and keeping copies of previously processed instructions and data ready for the CPU when needed. This is done through a method called caching. Caching enhances a computer's performance by storing frequently accessed program code or data for later use by the processor. Cache memory is faster and therefore more expensive than regular RAM. When data from RAM is accessed for the first time, it\'s stored in cache memory. All processors have integrated cache memory built into them, but there can also be non- integrated or external cache located outside the processor. **Dynamic RAM** Dynamic RAM is commonly used in modern computer systems. As the name implies, this memory type is dynamic, constantly changing and accessing information as needed before moving on to other tasks. DRAM must be continually refreshed (or rewritten) to maintain its data. With advancements in technology, manufacturers have developed new forms of DRAM, such as Synchronous DRAM (SDRAM) and Double Data Rate Synchronous DRAM (DDR SDRAM), to optimize data flow. **Non-volatile RAM (NVRAM)** Non-volatile Random Access Memory (NVRAM) is a type of memory that retains its stored information even after the system is powered off. In other words, unlike volatile memory (like standard RAM), it doesn't lose its contents when the power is turned off or if the computer experiences a power interruption. **Read Only Memory (ROM)** A ROM chip stores programs exactly like RAM but ROM differs from RAM in two important ways. First, ROM chips are non-volatile, meaning the information stored on ROM isn't erased when the computer is turned off. Second, traditional ROM chips are read-only, meaning once a program is stored on one, it can't be changed. ROM is used to store frequently used instructions and data to control the basic input and output operations of the computer. Frequently used program such as operating system routines and data, are stored on ROM. When the computer is switched on, instructions on routines and data, are stored on ROM. When the computer is switched on, instructions on the ROM are automatically activated. Electrically Erasable Programmable Read Only Memory (EEPROM) EEPROM is a type of ROM that can be written or changed with the help of electrical devices. Data stored in this ROM type can be easily modified, making it the most flexible ROM variant. EEPROM is commonly used to store BIOS programs. When you hear terms like a flash BIOS or BIOS upgrade by \"flashing,\" they refer to reprogramming the BIOS EEPROM with special software programs. However, EEPROM has a limit to the number of read/write cycles it can handle before it becomes unusable. **INTERRUPT REQUESTS (IRQ)** An IRQ is a signal from a device attached to a computer or from a program within the computer. The IRQ causes the main program (operating system) to stop what it is doing and to prepare for a new task. Basically, computers today are interrupt-driven. There are means to activate computer instruction in one program and continue running the instructions until either there are no more instructions or an interrupt signal is sensed. After the interrupt signal is sensed, the computer either resumes running the program it was executing or begins executing another program. A computer system can perform only one computer instruction at a time. Because it can be interrupted, it permits the system to alternate between programs or set of instructions. There are hardware interrupts and software interrupts. A hardware interrupt occurs when an I/O operation has completed (Ex: reading data into the computer from a CD). A software interrupt occurs when an application program terminates or requests certain services from the operating system. Each interrupt must have a unique IRQ number. This number will uniquely identify the device to the main bus. An IRQ sends a message to the computer instructing it to stop what it is doing and pay attention to the device or component. **DRIVERS** A device driver is a software program written to control a particular type of device attached to your computer. These files, containing the commands to interface with whatever device it was written to support, are stored on the hard drive. Some of the more usual devices are printers, displays, CD-ROM readers, diskette drives, etc. When loading an operating system, many of the device drivers are pre-built into the operating system. However, if a device is purchased (typically just released to the market) the operating system didn't anticipate, you'll have to install the new device driver either from the included CD-ROM or from the manufacturer's website. Each driver is based on the operating system platform. In other words, a driver designed for use on a Linux operating system will not function on a Microsoft Windows system. Just like any software (operating system, games, etc.), device drivers need to be periodically checked for updated versions. **COMPLEMENTARY METAL-OXIDE-SEMICONDUCTOR (CMOS)** CMOS, or Complementary Metal-Oxide-Semiconductor, is a technology used in various electronic devices, including computer systems. CMOS refers to a small amount of memory on the computer's motherboard, maintained by a CMOS battery. CMOS contains the computer's inventory list and advanced setup options. The information stored in CMOS is absolutely necessary for the computer to function. If the data stored on CMOS about a particular piece of hardware is different from the specs for the actual hardware attached, the computer cannot access that piece of hardware. It is crucial that this information be correct. **BASIC INPUT/OUTPUT SYSTEM (BIOS) / UNIFIED EXTENSIBLE FIRMWARE** **INTERFACE (UEFI)** The Basic Input/Output System (BIOS) and the Unified Extensible Firmware Interface (UEFI) are types of firmware interfaces for computers. They help the system start up, or boot, and prepare the computer before the operating system takes over. BIOS is the older, traditional firmware interface. It is a collective name for hundreds of tiny programs that tell your CPU everything from what time it is to what components comprise the computer. When you turn on your computer, the BIOS is the first software to run. It performs a Power -On Self-Test (POST) to check the computer's hardware components like the processor, memory, disk drives, and more. If the POST is successful, the BIOS locates the bootable drive (like your hard drive, an optical disk, or a USB drive) and loads the operating system into you computer's memory. UEFI, modern version of BIOS, is a specification for the interface between a computer's operating system and its firmware. It's meant to replace the Basic Input/Output System (BIOS) firmware interface, which was the traditional method used to boot up a computer. UEFI come with several advantages over BIOS: Support for larger drives, faster boot times, Secure boot, BIOS/UEFI executes the Power-On-Self Test (POST). The POST is a self- diagnostics routine the system goes through each time it boots up. During the POST, the BIOS/UEFI checks for the presence and function of each component it is programmed to manage. This includes the processor (CPU), the Random Access Memory (RAM), and then system-critical and non-critical devices (hard drive, keyboard, monitor and etc.). The BIOS/UEFI retrieves the resource settings from flash memory. Once the POST is completed, it points the CPU to the location of the operating system for loading.