D386 Study Guide - Essentials
D386 Study Guide - Essentials
GPU
● A GPU, or Graphics Processing Unit, is a specialized electronic circuit designed to accelerate the
processing of images and videos. It is particularly efficient at handling tasks that involve parallel
processing, where many calculations can be performed simultaneously
● Types of GPU:
○ Integrated GPUs: These are built into the CPU and share the system's RAM. They are
sufficient for basic tasks like web browsing, office applications, and some light gaming.
○ Dedicated GPUs: These are separate cards installed in the system, with their own VRAM,
and are much more powerful, suitable for demanding tasks.
● Use-cases for GPU:
○ Gaming: High-performance GPUs are essential for rendering complex graphics in real-
time, providing smooth frame rates and high-resolution textures in modern video games.
○ Video Editing and Rendering: Tasks such as video editing, 3D rendering, and animation
rely heavily on GPU power to handle intensive processing tasks efficiently, reducing
render times significantly.
○ Scientific Computing: GPUs are used in scientific research for simulations, data analysis,
and computational tasks that require massive parallel processing, such as climate
modeling, molecular dynamics, and astrophysics.
○ Machine Learning and AI: Training deep learning models involves processing large
datasets and performing numerous computations. GPUs speed up this process
significantly due to their parallel processing capabilities.
○ Professional Applications: Professionals in fields such as architecture, engineering, and
design use GPUs for CAD (Computer-Aided Design) applications, which require rendering
detailed models and simulations.
RAM
● RAM (Random Access Memory): Stores data and instructions that the CPU needs quickly.
○ ARAM (Asynchronous RAM)
■ Asynchronous RAM (ARAM) is a type of RAM where memory operations are not
synchronized to a clock signal.
■ Each operation (read or write) is initiated independently and can occur at any
time without needing to wait for a clock edge.
■ Different Types:
● DRAM (Dynamic Random Access Memory)
○ Must be refreshed periodically to preserve the stored data
○ Use: General purpose memory for computers and other devices
○ Pins: Varies, early DRAM used DIP packages with 16 of 18 pins
● SRAM (Static Random Access Memory)
○ The data is not stored as charge on a capacitor, but in a pair of
cross-coupled inverters, so SRAM does not need to be refreshed.
○ Use: Cache memory in CPUs, small amounts of fast memory
○ Pins: Varies
○ SDRAM (Synchronous DRAM)
■ A type of computer memory that is synchronized with the system bus, allowing
for faster data transfer rates compared to earlier types of random-access
memory (RAM)
■ Use: Main memory in older computers and graphics cards
■ Different Types:
● SDR (Single Data Rate)
○ Pins: 168
○ Data Rate: One per clock cycle
○ Usage: Older desktop and laptop computers
● DDR (Double Data Rate)
○ Pins: 184
○ Data Rate: Twice per clock cycle
○ Usage: Early 2000s desktop and laptop computers
● DDR2
○ Pins: 240
○ Data Rate: Twice per clock cycle, but with improved speed and
efficiency over DDR
○ Latency: Lower latency compared to DDR
○ Usage: Mid-2000’s desktop and laptop computers
● DDR3
○ Pins: 240
○ Data Rate: Twice per clock cycle with further improvements over
DDR2
○ Latency: Improved latency and power efficiency compared to
DDR2
○ Usage: Late 2000’s to mid-2010’s desktop, laptop computers,
and servers
● DDR4
○ Pins: 288
○ Data Rate: Twice per clock cycle with further enhancements
○ Latency: Improved latency and power efficiency compared to
DDR3
○ Usage: Mid-2010’s to present day desktop, laptop computers,
and servers
● DDR5
○ Pins: 288
○ Data Rate: Twice per clock cycle with significant improvements
○ Latency: Further improvements in latency, power efficiency, and
increased density compared to DDR4
○ Usage: High-performance computing, modern desktop, laptop
computers, and servers
● Virtual RAM: also known as virtual memory, is a memory management technique used by
operating systems to extend the apparent amount of RAM available to applications. This is done
by using a portion of a computer's storage (such as an SSD or HDD) to simulate additional RAM.
○ Paging: The operating system divides physical memory and virtual memory into small
fixed-sized blocks called pages. When the system runs out of physical RAM, it can swap
inactive pages to the storage device, freeing up RAM for active processes.
○ Pagefile/Swap Space: On Windows systems, this is often referred to as a pagefile, while
on Unix-like systems, it is called swap space. This file or partition on the storage device is
used to store pages that are moved out of physical RAM.
○ Address Translation: The CPU uses a memory management unit (MMU) to translate
virtual addresses (used by programs) into physical addresses (used by the hardware).
This allows applications to use more memory than is physically available.
● RAM Related Issues
○ Insufficient RAM:
■ Symptoms: Slow performance, frequent freezing, slow response times when
opening applications, and excessive hard drive activity due to increased
paging/swap file usage.
■ Scenario: Running multiple applications simultaneously on a computer with 4GB
of RAM can lead to insufficient memory, causing the system to slow down and
frequently use the hard drive for virtual memory.
■ Solution: Upgrade RAM to handle the memory demands of multiple design
applications.
○ Faulty RAM
■ Symptoms: Random system crashes, blue screens of death (BSODs), data
corruption, and errors during software installation or while running programs.
■ Scenario: A computer with a damaged RAM module may experience frequent
crashes and errors, particularly when performing memory-intensive tasks like
video editing or gaming.
■ Solution: Swap or Replace Faulty RAM. If you have multiple RAM modules, test
each one individually by removing all but one and booting the computer. If a
specific module is identified as faulty, replacing it is the most effective solution.
○ Incompatible RAM
■ Symptoms: System fails to boot, constant reboots, or the BIOS does not
recognize the installed RAM.
■ Scenario: Upgrading an old motherboard with new, higher-speed RAM without
checking compatibility can lead to the system failing to boot or operating
incorrectly.
■ Solution: Make sure the RAM is installed correctly and there is no physical
damage. Replace the RAM if it is damaged or not compatible with the
motherboard specifications.
○ Memory Leaks
■ Symptoms: Gradual decrease in available memory, system slows down over
time, and applications may crash or freeze.
■ Scenario: Running poorly designed software that does not properly manage
memory allocation and deallocation can cause a memory leak, leading to a
gradual slowdown and eventual freezing of the system.
■ Solution: Look for improper memory allocation and deallocation patterns.
○
ROM
● ROM, or Read-Only Memory, is a type of non-volatile memory used in computers and other
electronic devices.
● Unlike RAM (Random Access Memory), which is volatile and loses its data when the power is
turned off, ROM retains its data even when the device is powered down. This makes ROM ideal
for storing firmware, which is software that is closely tied to specific hardware and unlikely to
need frequent updates.
● Types of ROM:
○ Masked ROM (MROM): This is the original form of ROM. Data is written during the
manufacturing process and cannot be altered. It's used for simple, unchangeable
firmware.
○ Programmable ROM (PROM): This type of ROM can be written once after manufacturing.
The data is programmed using a special device called a PROM programmer.
○ Erasable Programmable ROM (EPROM): EPROM can be erased by exposing it to
ultraviolet light and then reprogrammed. It allows for the modification of data if
necessary, but the process is not simple.
○ Electrically Erasable Programmable ROM (EEPROM): EEPROM can be erased and
reprogrammed using electrical charge, making it more flexible than EPROM. It allows for
byte-level modification and is commonly used for firmware updates.
○ Flash Memory: A type of EEPROM that can be erased and reprogrammed in blocks. It's
widely used in USB drives, SSDs, and memory cards due to its ability to retain data
without power and support frequent rewrites.
RAID
● RAID 0 (Striping)
○ Great for speed, but provides NO data redundancy. Has no loss of space on the disks.
○ Minimum Disks: 2
○ Explanation: RAID 0 requires a min of two disks because it stripes data across multiple
disks without any redundancy. This configuration is used primarily for performance
enhancement, as data is split and written simultaneously across multiple disks,
improving read/write speeds.
○ Use Case: Video editing, gaming, or any application requiring high-speed data access.
■ Reason: RAID 0 splits data across multiple disks, allowing for faster read and
write speeds. However, it does not provide redundancy, so if one disk fails, all
data is lost.
● RAID 1 (Mirroring and Redundancy)
○ Provides full redundancy, but has loss of space on one of the disks. "Failure Resistant"
"Fault Tolerant"
○ Minimum Disks: 2
○ Explanation: RAID 1 also requires a minimum of two disks. In RAID 1, data is mirrored
across two or more disks, providing redundancy. If one disk fails, the data can still be
accessed from the mirrored disk(s). RAID 1 sacrifices storage capacity for data
protection.
○ Use Case: Small businesses or home users needing data redundancy.
■ Reason: RAID 1 duplicates the same data on two or more disks. This provides
high availability since data is still accessible even if one disk fails, but it does not
improve performance or storage efficiency.
● RAID 5 (Striping and Redundancy through Parity)
○ Offers a balance between performance, storage efficiency, and fault tolerance. One of the
most common RAIDs you will see. "Failure Resistant" "Fault Tolerant"
○ Minimum Disks: 3
○ Explanation: RAID 5 requires a min of three disks. It uses striping for performance and
distributes parity across all disks in the array for redundancy. If one disk fails, the parity
information allows for data reconstruction. RAID 5 offers a balance between
performance, storage efficiency, and fault tolerance.
○ Use Case: File servers, database servers, and application servers.
■ Reason: RAID 5 combines striping with parity, providing a balance of improved
read performance, storage efficiency, and redundancy. It requires a minimum of
three disks and can tolerate the failure of one disk without data loss.
● RAID 6 (Striping and Redundancy through Double Parity)
○ Similar to RAID 5, but with double parity. Provides an additional level of fault tolerance by
using dual parity. "Fault Tolerant"
○ Minimum Disks: 4
○ Explanation: RAID 6 needs a min of four disks. It is similar to RAID 5 but provides an
additional level of fault tolerance by using dual parity. This means it can withstand the
simultaneous failure of up to two disks without data loss. RAID 6 is suitable for
applications that require high fault tolerance.
○ Use Case: Enterprise environments requiring high fault tolerance, such as data
warehouses or large-scale storage systems.
■ Reason: RAID 6 is similar to RAID 5 but with an additional parity block, allowing it
to tolerate the failure of two disks. This offers greater data protection at the cost
of more storage space used for parity.
● RAID 10 (1+0, Mirroring + Striping)
○ Two RAID arrays used together. Really good for both speed and redundancy, but you have
to use 4 disks to accomplish this. "Disaster Tolerant"
○ Minimum Disks: 4
○ Explanation: RAID 10 combines mirroring (RAID 1) and striping (RAID 0). It requires a min
of four disks arranged in pairs, where each pair is mirrored, and data is striped across
these mirrored pairs. RAID 10 provides both redundancy (through mirroring) and
performance benefits (through striping).
○ Use Case: High-performance databases and applications requiring both high availability
and performance.
■ Reason: RAID 10 combines the benefits of RAID 0 and RAID 1 by striping data
across mirrored pairs of disks. This provides high redundancy and performance,
but it requires a minimum of four disks and is less storage-efficient.
IaaS, PaaS, SaaS, and DaaS.
● Cloud Computing Models
○ IaaS (Infrastructure as a Service): Provides virtualized computing resources over the
internet.
■ Software Examples: Amazon Web Services (AWS), Microsoft Azure, Google
Cloud Platform (GCP), IBM Cloud.
■ System Examples: Virtual machines (VMs), storage services, networking
resources, and other infrastructure components provided by IaaS providers.
○ PaaS (Platform as a Service): Offers platforms and tools for application development and
deployment.
■ Software Examples: Heroku, Google App Engine, Microsoft Azure App Service,
AWS Elastic Beanstalk.
■ System Examples: Development frameworks, database management systems,
application hosting environments, and other tools and services for developers to
build, deploy, and manage applications without managing the underlying
infrastructure.
○ SaaS (Software as a Service): Delivers software applications over the internet on a
subscription basis.
■ Software Examples: Salesforce, Google Workspace (formerly G Suite), Microsoft
Office 365, Dropbox.
■ System Examples: Fully functional software applications delivered over the
internet on a subscription basis, allowing users to access and use the software
without needing to install or manage it locally.
○ DaaS (Desktop as a Service): Virtual desktop infrastructure provided over the internet.
■ Software Examples: Citrix Virtual Apps and Desktops, VMware Horizon Cloud,
Microsoft Windows Virtual Desktop.
■ System Examples: Virtual desktop infrastructure (VDI) solutions that provide
users with virtual desktop environments hosted and managed in the cloud,
allowing access to desktops and applications from any device with an internet
connection.
Tech Stacks
● LAMP Stack
○ Components
■ Linux: Operating system
■ Apache: Web server
■ MySQL: Database management system
■ PHP: Server-side scripting language
○ Common Use: Traditional web development stack, popular for PHP-based applications.
○ Advantages:
■ Open Source: All components are open source, which makes it cost-effective.
■ Security: Linux and Apache are known for their robust security features.
■ Stability and Reliability: Linux and Apache are mature technologies with a strong
track record of stability and reliability.
■ Community Support: Extensive community support and documentation are
available.
■ Flexibility: Works well for a variety of web applications.
○ Disadvantages:
■ Learning Curve: May have a steeper learning curve, especially for those not
familiar with Linux.
■ Performance: PHP is generally slower compared to some modern server-side
languages.
■ Configuration: Requires manual configuration and tuning for optimal
performance.
● WAMP Stack
○ Components
■ Windows: Operating system
■ Apache: Web server
■ MySQL: Database management system
■ PHP: Server-side scripting language
○ Common Use: Similar to LAMP but used in Windows environments.
○ Advantages:
■ Ease of Use: Easier to set up and manage on Windows systems.
■ Development Tools: Compatible with various Windows-based development tools.
■ Flexibility: Similar to LAMP but easier for developers familiar with Windows.
○ Disadvantages:
■ Cost: Windows operating system can be expensive compared to Linux.
■ Performance: May not perform as well as LAMP in high-load scenarios.
■ Security: Windows may have more vulnerabilities compared to Linux.
● MEAN Stack
○ Components
■ MongoDB: NoSQL database
■ Express.js: Web application framework for Node.js
■ AngularJS or Angular: Frontend JavaScript framework
■ Node.js: JavaScript runtime environment
○ Common Use: Modern web development stack using JavaScript across the entire
application.
○ Advantages:
■ JavaScript Everywhere: Single language (JavaScript) across the entire stack
simplifies development.
■ Real-Time Applications: Well-suited for real-time applications due to Node.js’s
non-blocking architecture.
■ Performance: Node.js offers high performance and scalability.
■ NoSQL Database: MongoDB is flexible and handles large volumes of data well.
○ Disadvantages:
■ Complexity: Can be complex to set up and manage, especially for beginners.
■ Security: JavaScript has inherent security risks that need careful management.
■ Community: While growing, the community is not as large or mature as LAMP’s.
● MEVN Stack
○ Components
■ MongoDB: NoSQL database
■ Express.js: Web application framework for Node.js
■ Vue.js: Frontend JavaScript framework
■ Node.js: JavaScript runtime environment
○ Common Use: Similar to MEAN but uses Vue.js for the frontend instead of Angular. More
similar to MEAN than MERN.
○ Advantages:
■ JavaScript Everywhere: Consistent language across the stack.
■ Vue.js: Vue.js is lightweight, flexible, and easy to learn.
■ Performance: Node.js offers excellent performance and scalability.
■ NoSQL Database: MongoDB provides flexibility and handles large volumes of
data well.
○ Disadvantages:
■ Community: Vue.js has a smaller community compared to Angular and React.
■ Maturity: Vue.js is relatively newer and may have fewer resources compared to
Angular or React.
■ Security: Similar to other JavaScript-based stacks, security needs careful
management.
● MERN Stack
○ Components
■ MongoDB: NoSQL database
■ Express.js: Web application framework for Node.js
■ React: Frontend JavaScript library
■ Node.js: JavaScript runtime environment
○ Common Use: Similar to MEAN but uses React for the frontend instead of Angular.
○ Advantages:
■ JavaScript Everywhere: Single language for the entire stack.
■ React: React offers a powerful and flexible way to build user interfaces.
■ Performance: Node.js ensures high performance and scalability.
■ NoSQL Database: MongoDB provides flexibility and handles large data volumes
effectively.
○ Disadvantages:
■ Complexity: Can be complex to manage, especially for newcomers.
■ Learning Curve: React has a steep learning curve compared to some other
frontend frameworks.
■ Security: Like other JavaScript stacks, security needs careful handling.
IDEs
Visual Studio Anything from HTML to C++ Used to develop websites, web
apps and mobile apps
Network Topologies
● Ring Topology: In a ring topology, devices are connected in a closed loop, forming a ring. Each
device is connected to exactly two other devices, creating a continuous pathway for data
transmission. Data travels in one direction around the ring until it reaches its destination. Ring
topologies are less common in modern networks due to their susceptibility to a single point of
failure.
○
● Star Topology: In a star topology, devices are connected to a central hub or switch. All
communication between devices passes through this central point. This structure simplifies
troubleshooting and allows for easy addition or removal of devices without disrupting the entire
network. However, if the central hub fails, the entire network can be affected.
○
● Mesh Topology: A mesh topology involves every device being connected to every other device in
the network. This creates multiple paths for data to travel, offering redundancy and fault
tolerance. Mesh topologies can be either full mesh (every device is connected to every other
device) or partial mesh (only some devices have multiple connections). While mesh topologies
are robust, they can be complex to manage and require more cabling.
○
● Bus Topology: In a bus topology, all devices are connected to a single cable called a bus. Data
travels along the bus, and each device receives the data intended for it. Devices can be
connected to the bus using T-connectors. Bus topologies are straightforward and require less
cabling, but they can suffer from signal degradation if the cable length or number of devices
exceeds certain limits.
○
● Tree Topology: A tree topology combines characteristics of bus and star topologies. Devices are
arranged hierarchically, with groups of devices connected to a central bus or switch, and these
groups are further connected to each other or to other branches. Tree topologies are scalable
and can accommodate large networks, but they can be complex to manage and may still be
vulnerable to a central point of failure depending on the structure.
○
Computer Viruses
● Trojans: Named after the Trojan Horse from Greek mythology, Trojans are deceptive programs
that appear legitimate but carry malicious payloads. They don't self-replicate but can create
backdoors for attackers, steal data, or damage systems.
● Rootkits: Rootkits are advanced malware that hide their presence and activities on a
compromised system. They often manipulate system functions to evade detection and gain
privileged access (root/administrator) to the system.
● Companion Virus: A companion virus attaches itself to legitimate program files and creates a
new executable file with a different extension. When the user runs the legitimate program, the
companion virus also executes, potentially causing harm.
● Macro Virus: These viruses infect documents or files that support macros (automated sequences
of commands) such as Microsoft Word or Excel documents. When the infected document is
opened, the macro virus can execute malicious actions.
● Armored Virus: Armored viruses use techniques to make it difficult for antivirus programs to
detect and analyze them. They may encrypt or obfuscate their code, making it challenging for
security software to identify them.
● Botnet: A botnet is a network of compromised computers (bots) controlled by a central
command (botmaster). Botnets can be used for various malicious activities, such as launching
distributed denial-of-service (DDoS) attacks or sending spam emails.
● Stealth Virus: Stealth viruses actively hide themselves from detection by antivirus software. They
often intercept and modify system calls to conceal their presence and actions.
● Polymorphic Virus: Polymorphic viruses are capable of changing their appearance (code
structure or encryption) each time they infect a new file or system. This variability makes them
difficult to detect using traditional signature-based methods.
● Multipartite Virus: Multipartite viruses are hybrids that can infect both executable files and boot
sectors of storage devices. They combine the characteristics of file infectors and boot sector
viruses, making them more complex and potentially damaging.
Non-Functional Requirements
● Non-functional requirements (NFRs) are criteria that specify the operation of a system, as
opposed to the specific behaviors or functions the system must support.
● They define the overall qualities or attributes of the system, focusing on how the system
performs rather than what the system does.
● Key types of non-functional requirements:
○ Performance: This includes response time, throughput, resource utilization, and
scalability. It specifies how well the system performs under various conditions.
i. Example: The system must handle 1,000 concurrent users with a response time
of less than 2 seconds.
○ Reliability: This refers to the system's ability to function correctly and consistently over
time. It includes factors such as availability, mean time to failure (MTTF), and mean time
to repair (MTTR).
i. Example: The system must be available 99.99% of the time.
○ Usability: This involves the ease with which users can learn, use, and interact with the
system. It includes user interface design, accessibility, and user documentation.
i. Example: New users should be able to complete the primary task within 10
minutes of first use.
○ Security: This encompasses the protection of the system and its data from unauthorized
access and breaches. It includes authentication, authorization, encryption, and auditing.
i. Example: All sensitive data must be encrypted using AES-256.
○ Maintainability: This refers to the ease with which the system can be modified, including
bug fixes, upgrades, and other changes. It includes modularity, readability, and testability.
i. Example: Code changes must be able to be deployed to production within 24
hours of being identified.
○ Scalability: This describes the system's ability to handle increased load by adding
resources, such as processing power, memory, or storage.
i. Example: The system must be able to scale horizontally to support an additional
10,000 users.
○ Interoperability: This involves the system's ability to work with other systems or
components, often through standardized interfaces or protocols.
i. Example: The system must support data exchange with third-party systems
using RESTful APIs.
○ Portability: This refers to the system's ability to operate in different environments or
platforms with minimal changes.
i.Example: The application must be able to run on both Windows and Linux
operating systems.
○ Efficiency: This focuses on the system's use of resources, including CPU, memory, disk
space, and network bandwidth.
i. Example: The system must not exceed 70% CPU utilization under normal
operation.
○ Compliance: This involves adherence to regulatory, legal, and industry standards.
i. Example: The system must comply with GDPR regulations for data protection.