Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Articles by Arnab Chakraborty
Page 164 of 377
What is Multicore Programming?
Multicore programming is a software development approach that creates concurrent systems designed to run efficiently on multicore processors and multiprocessor systems. It leverages multiple processing units to execute tasks simultaneously, improving system performance and responsiveness. Multicore vs Multiprocessor Systems A multicore processor system contains a single processor chip with multiple execution cores, while a multiprocessor system has multiple separate processors on the motherboard or chip. Both architectures can also include specialized components like Field-Programmable Gate Arrays (FPGAs) — integrated circuits with programmable logic blocks and reconfigurable interconnects that process input data to produce outputs. ...
Read MoreWhat is Amdahl's Law?
Amdahl's Law is a fundamental principle in computer science that describes the theoretical maximum speedup achievable when improving part of a system. It demonstrates that the overall performance improvement is limited by the portion of the system that cannot be enhanced. Consider this analogy: Three friends must travel to a party separately but arrive together to enter. One drives a car, another takes the bus, and the third walks. No matter how fast the car and bus arrive, they must wait for the slowest person (the walker). To improve overall arrival time, focus must be on helping the walker, ...
Read MoreTypes of Parallelism in Processing Execution
Parallelism in processing execution refers to the simultaneous execution of multiple tasks or operations to improve computational performance. There are four main types of parallelism, each operating at different levels of the computing system. Data Parallelism Data Parallelism involves concurrent execution of the same task on multiple computing cores, but with different portions of data. Each core performs identical operations on separate data segments. Consider summing an array of size N. For a single-core system, one thread sums elements [0] ... [N−1]. For a dual-core system, thread A on core 0 sums elements [0] ... [N/2−1], while ...
Read MoreData parallelism vs Task parallelism
Data parallelism and task parallelism are two fundamental approaches to parallel computing that enable efficient utilization of multi-core systems. Understanding their differences is crucial for designing optimal parallel applications. Data Parallelism Data parallelism involves executing the same task concurrently on different subsets of the same dataset across multiple computing cores. Each core performs identical operations on its assigned portion of data. Example − Array Summation Consider summing an array of size N: Data Parallelism - Array Summation Array [0, 1, 2, 3, 4, 5, 6, 7] ...
Read MoreHow to implement monitors using semaphores?
Monitors are high-level synchronization constructs that provide mutual exclusion and condition synchronization. Since many systems only provide semaphores as primitive synchronization tools, we need to implement monitors using semaphores. This implementation requires careful handling of mutual exclusion, condition variables, and signaling semantics. Basic Monitor Structure with Semaphores For each monitor, we need several semaphores and counters: mutex − A binary semaphore (initialized to 1) for mutual exclusion next − A semaphore (initialized to 0) for signaling processes to wait next_count − Integer counter for processes suspended on next Every monitor function F is wrapped ...
Read MoreProcess Synchronization in Solaris
Process Synchronization in Solaris refers to the mechanisms used by the Solaris operating system to coordinate access to shared resources among multiple processes and threads. Solaris implements a variety of sophisticated locking mechanisms to support multitasking, multithreading, and multiprocessing environments while ensuring data consistency and preventing race conditions. Types of Synchronization Mechanisms Solaris provides several synchronization primitives, each optimized for different scenarios and performance requirements. Solaris Synchronization Mechanisms Synchronization Primitives ...
Read MoreConcept of Address Split in OS
Address splitting is a memory management technique used in operating systems to divide the virtual address space of processes into distinct logical segments. This approach enables efficient memory allocation, enhanced security through access control, and improved system performance by organizing memory into manageable units with specific purposes. Memory Segmentation Memory segmentation divides the process address space into logical segments such as code, data, stack, and heap segments. Each segment serves a specific purpose and can have different access permissions and sizes based on process requirements. Process Address Space Segmentation ...
Read MoreTransactional memory
Transactional memory originated in database theory and provides an alternative strategy for process synchronization. It allows multiple operations on shared data to be grouped together and executed atomically, without the complexity of traditional locking mechanisms. A memory transaction is an atomic sequence of memory read-write operations. If all operations in a transaction complete successfully, the transaction is committed. Otherwise, the operations must be aborted and rolled back to maintain data consistency. Traditional Locking vs Transactional Memory Consider a function update() that modifies shared data. Traditionally, this function would use mutex locks or semaphores: void update() ...
Read MoreDeadlock with mutex locks
Deadlock can occur in multithreaded Pthread programs when multiple threads compete for mutex locks in conflicting orders. This happens when threads acquire locks in different sequences, potentially creating a circular dependency where each thread waits for resources held by others. Mutex Lock Initialization An unlocked mutex is initialized using the pthread_mutex_init() function. Threads acquire and release mutex locks using pthread_mutex_lock() and pthread_mutex_unlock() respectively. If a thread attempts to acquire an already locked mutex, the call to pthread_mutex_lock() blocks the thread until the owner releases the lock. Example − Deadlock Scenario Consider the following example where two ...
Read MoreHow does a process look like in memory?
A process is a program loaded into memory and executing. When a program is created, it exists as bytes stored on the hard disk as a passive entity. The program becomes an active process when loaded into memory — either by double-clicking in Windows or entering the executable name on the command line (e.g., a.out or prog.exe). A process in memory consists of several distinct segments, each serving a specific purpose during program execution. Process Memory Layout STACK (High Address) Grows Down ...
Read More