Sign In

Gopal Chakraborty

Graphics Software Engineer | GPU Driver Development | DirectX, OpenGL, OpenCL | Linux, Android, QNX | Team Leadership | Debugging Expert | Problem Solver | Continuous Learner

Gopal Chakraborty is an experienced computer engineer with a strong background in Graphics Device Driver validation and development. He has worked with prominent tech giants such as Intel and AMD, contributing significantly to their system BIOS, firmware, USB, and sensors debugging. Gopal possesses strong skills in C/C++ programming which he has used to debug graphics device drivers, graphics functionalities, GPU tools, and device monitors on Linux and Windows. He also has in-depth knowledge of various video codecs and related multimedia functions.

Notably, Gopal is a graduate of the West Bengal University of Technology, Kolkata, where he obtained his Bachelor's degree in Computer Science. He has a solid understanding of DirectX, OpenGL, OpenCL, and multimedia functionalities, and has been responsible for testing, developing test cases, and test strategies to optimize performance.

As a GPU System Debug Lead at Intel Corporation, Gopal has honed his interpersonal and communication skills, which have seen him thrive in a team environment. He has demonstrated the ability to work well under pressure, consistently delivering projects to meet tight timelines.

Highlights

Aug 31 · linkedin

Concurrency in embedded systems:

Managing concurrency in embedded systems is crucial because these systems often involve multiple tasks or threads that need to run simultaneously and efficiently. Proper concurrency management ensures that tasks operate correctly without causing race conditions, deadlocks, or other issues that can compromise system reliability and performance.

👉 Multitasking and Thread Management 1️⃣ Multitasking: Multitasking refers to the ability of an operating system to manage multiple tasks or threads of execution concurrently. In embedded systems, multitasking is usually managed by a real-time operating system (RTOS) that supports multiple threads or tasks. Each task can be scheduled to run based on its priority and timing constraints. 2️⃣ Task Scheduling: Preemptive Scheduling: Higher-priority tasks can interrupt lower-priority ones. This is useful for meeting real-time constraints. Cooperative Scheduling: Tasks voluntarily yield control to allow other tasks to run. This can be simpler but less flexible for real-time systems.

👉 Synchronization Mechanisms 1️⃣ Mutexes: Prevent multiple tasks from accessing shared resources simultaneously. Implementation: A mutex ensures that only one task can acquire it at a time, blocking other tasks until the mutex is released. 2️⃣ Semaphores: Binary Semaphores: Similar to mutexes, used to signal between tasks. Counting Semaphores: Used to manage access to a finite number of resources. 3️⃣ Event Flags: Allow tasks to signal and respond to events. Implementation: Tasks can set or clear flags to indicate or check the occurrence of events. 4️⃣ Critical Sections: Sections of code that should not be interrupted to avoid data corruption. Critical sections are protected using disabling interrupts or acquiring mutexes to prevent concurrent access.

👉 Inter-Process Communication (IPC) 1️⃣Message Queues: Allow tasks to send and receive messages or data. Tasks can post messages to a queue and read from it, enabling communication and data exchange. 2️⃣ Pipes and Buffers: Facilitate data transfer between tasks or between tasks and peripheral devices. Circular buffers or FIFO (First In, First Out) queues can be used for efficient data handling.

👉 Real-Time Constraints 1️⃣ Rate Monotonic Scheduling (RMS): A fixed-priority scheduling algorithm where tasks are assigned priorities based on their periodicity. Shorter-period tasks have higher priorities. Suitable for systems with periodic tasks with known execution times and deadlines. 2️⃣ Earliest Deadline First (EDF): A dynamic priority scheduling algorithm where tasks are assigned priorities based on their deadlines. The task with the closest deadline gets the highest priority. Useful for systems where task deadlines vary and need to be met dynamically.

Image credits: Scaler

#rtos #linux #kernel #programming #systemdesign #learning

Aug 28 · linkedin

System calls:

System calls are the primary mechanism by which user-space programs interact with the operating system kernel. They provide an interface for performing operations that are not directly executable in user space, such as file manipulation, process control, and inter-process communication.

✅ What Are System Calls? 1️⃣ Definition: System calls are a set of functions provided by the operating system kernel that allow user-space applications to request services from the kernel. These services include operations such as reading or writing files, creating or terminating processes, and communicating between processes. 2️⃣ Purpose: System calls serve as a controlled gateway for user programs to request access to kernel-level operations while maintaining system security and stability. They ensure that user-space programs cannot directly execute privileged operations.

✅ How Do System Calls Work? This high-level overview explains how system calls work: 1. System Call Request. The application requests a system call by invoking its corresponding function. For instance, the program might use the read() function to read data from a file. 2. Context Switch to Kernel Space. A software interrupt or special instruction is used to trigger a context switch and transition from the user mode to the kernel mode. 3. System Call Identified. The system uses an index to identify the system call and address the corresponding kernel function. 4. Kernel Function Executed. The kernel function corresponding to the system call is executed. For example, reading data from a file. 5. System Prepares Return Values. After the kernel function completes its operation, any return values or results are prepared for the user application. 6. Context Switch to User Space. The execution context is switched back from kernel mode to user mode. 7. Resume Application. The application resumes its execution from where it left off, now with the results or effects of the system call.

✅What Are the Features of System Calls?

  1. Abstraction. For example, programs do not need to know the specifics of network hardware configurations to send data over the internet or disk operations to read a file, as the OS handles these tasks.
  2. Access Control. System calls enforce security measures by checking whether a program has the appropriate permissions to access resources.
  3. Synchronous Operation. Many system calls operate synchronously, blocking the calling process until the operation is complete.
  4. Process Control. System calls facilitate stable process management and multitasking through process creation, termination, scheduling, and synchronization mechanisms.
  5. Device Management. System calls enable processes to request device access, perform read or write operations on these devices, and release them afterwards.

#linux #kernel #memory #learning #embedded #systemdesign

Related Questions

What specific projects has Gopal Chakraborty worked on at Sasken Technologies Limited?
How long has Gopal Chakraborty been working on GPU device drivers?
What is Gopal Chakraborty's educational background?
Does Gopal Chakraborty have any notable achievements or awards in his career?
What technologies or programming languages does Gopal Chakraborty specialize in?
Gopal Chakraborty
Gopal Chakraborty, photo 1
Gopal Chakraborty, photo 2
Add to my network

Location

Bengaluru, Karnataka, India