diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/100-process-forking.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/100-process-forking.md index cad3419a6..8a5d002c0 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/100-process-forking.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/100-process-forking.md @@ -1 +1,8 @@ -# Process forking \ No newline at end of file +# Process Forking + +Process forking is a way to create a new process from an existing process. The new process is a copy of the existing process. The new process is called a child process and the existing process is called a parent process. + +Free Content +Understanding fork() system call for new process creation +fork() and exec() System Calls +The fork() function in C diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/101-memory-management.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/101-memory-management.md index 9349679e5..1ec4c0372 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/101-memory-management.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/101-memory-management.md @@ -1 +1,7 @@ -# Memory management \ No newline at end of file +# Memory Management + +Memory management is the process of allocating and deallocating memory. It is a very important part of any programming language. + +Free Content +MIT 6.004 L15: The Memory Hierarchy +MIT 6.004 L16: Cache Issues diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md index 86eb658e6..e0ead8d7f 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md @@ -1 +1,12 @@ -# Lock mutex semaphore \ No newline at end of file +# Lock / Mutex / Semaphore + +A lock allows only one thread to enter the part that's locked and the lock is not shared with any other processes. + +A mutex is the same as a lock but it can be system wide (shared by multiple processes). + +A semaphore does the same as a mutex but allows x number of threads to enter, this can be used for example to limit the number of cpu, io or ram intensive tasks running at the same time. + +Free Content +What is the difference between lock, mutex and semaphore? +What is a Semaphore +Mutex vs Semaphore diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-concurrency-in-multiple-cores.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-concurrency-in-multiple-cores.md index d06105eaf..970c6b146 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-concurrency-in-multiple-cores.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-concurrency-in-multiple-cores.md @@ -1 +1,5 @@ -# Concurrency in multiple cores \ No newline at end of file +# Concurrency in Multiple Cores + +Free Content +What is the difference between multicore and concurrent programming? +Concurrency in Multicore systems diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-scheduling-algorithms.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-scheduling-algorithms.md index 40e668cf7..babe0e880 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-scheduling-algorithms.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/103-scheduling-algorithms.md @@ -1 +1,15 @@ -# Scheduling algorithms \ No newline at end of file +# Scheduling Algorithms + +CPU Scheduling is the process of selecting a process from the ready queue and allocating the CPU to it. The selection of a process is based on a particular scheduling algorithm. The scheduling algorithm is chosen depending on the type of system and the requirements of the processes. + +Here is the list of some of the most commonly used scheduling algorithms: + +- **First Come First Serve (FCFS):** The process that arrives first is allocated the CPU first. It is a non-preemptive algorithm. +- **Shortest Job First (SJF):** The process with the smallest execution time is allocated the CPU first. It is a non-preemptive algorithm. +- **Shortest Remaining Time First (SRTF):** The process with the smallest remaining execution time is allocated the CPU first. It is a preemptive algorithm. +- **Round Robin (RR):** The process is allocated the CPU for a fixed time slice. The time slice is usually 10 milliseconds. It is a preemptive algorithm. +- **Priority Scheduling:** The process with the highest priority is allocated the CPU first. It is a preemptive algorithm. +- **Multi-level Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. It is a preemptive algorithm. +- **Multi-level Feedback Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. If a process is preempted, it is moved to the next queue. It is a preemptive algorithm. +- **Lottery Scheduling:** The process is allocated the CPU based on a lottery system. It is a preemptive algorithm. +- **Multilevel Feedback Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. If a process is preempted, it is moved to the next queue. It is a preemptive algorithm. diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/104-cpu-interrupts.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/104-cpu-interrupts.md index 5d1b07a9c..2210b330e 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/104-cpu-interrupts.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/104-cpu-interrupts.md @@ -1 +1,6 @@ -# Cpu interrupts \ No newline at end of file +# CPU Interrupts + +CPU Interrupts are a way for the CPU to communicate with the rest of the computer. They are a way for the CPU to tell the rest of the computer that it needs to do something. For example, if the CPU is running a program and it needs to read from the keyboard, it will send an interrupt to the keyboard to tell it to send the data to the CPU. The CPU will then wait for the keyboard to send the data and then continue running the program. + +Free Content +Video on Interrupts diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/105-processes-vs-threads.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/105-processes-vs-threads.md index 8021e8930..83ea94bb0 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/105-processes-vs-threads.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/105-processes-vs-threads.md @@ -1 +1,7 @@ -# Processes vs threads \ No newline at end of file +# Processes and Threads + +Processes and threads are the basic building blocks of a computer program. They are the smallest units of execution in a program. A process is an instance of a program that is being executed. A thread is a sequence of instructions within a process that can be executed independently of other code. + +Free Content +What's the difference between Process and a Thread? +Operating Systems and System Programming diff --git a/content/roadmaps/103-computer-science/content/121-processes-and-threads/readme.md b/content/roadmaps/103-computer-science/content/121-processes-and-threads/readme.md index 54aa29b55..83ea94bb0 100644 --- a/content/roadmaps/103-computer-science/content/121-processes-and-threads/readme.md +++ b/content/roadmaps/103-computer-science/content/121-processes-and-threads/readme.md @@ -1 +1,7 @@ -# Processes and threads \ No newline at end of file +# Processes and Threads + +Processes and threads are the basic building blocks of a computer program. They are the smallest units of execution in a program. A process is an instance of a program that is being executed. A thread is a sequence of instructions within a process that can be executed independently of other code. + +Free Content +What's the difference between Process and a Thread? +Operating Systems and System Programming