Skip to main content

OS

Hardware => Operating system => Application

 OS Provide
- Hardware Abstraction
- Resource management

Abstraction: B/W Application and hardware

- Easy program writing
- Reusable functionality
- Portable

Resource management
- Multiple app but limited resource
- Manage CPU, Memory, Network, Secondary Memory etc
  ---------------

CPU
Each have a unique address

- Memory addrs
- IO Addrs
- Memory Mapped IO addrs

Memory addrs
32 bit process
Range: 0- 2^32-1
 ----------------
Process
Stack
Heap
Data
Text

System call use to access resources of kernel mode
 ------------------

Sharing the CPU - Multi-programming and multi-tasking - Sharing in multi-processor environments * Race conditions and synchronization * Scheduling * Isolation of the OS and user programs * Security mechanisms * Access control * Security assessment

-------------------
CPU Vs RAM
- RAM hold data CPU compute on data

Memory Management
- Fragmentation: Under utilization
    -  Finding Right fit (First fit, Right fit)
- Deallocation: Merge smaller block when process free memory
Modern OS manage above using
- Virtual memory
- Segmentation
-----------
Virtual Memory (Memory Management technique)
- RAM split into fixed size partition called frames
- Page frames typically 4KBs

Split Process into equal block size
Block size = page frame size

Allocate block into page frame

Page table: to maintain map of page and block

- Need not to be contiguous
- Need to lookup page table to access memory

TLV Caches 
- Process block are on user space
- Page table are in kernel space

Demand paging:?
Page fault trap?

Replacement polices
- First in first out
- Last recently used
- least frequent useed

Swap in & swap out

Dirty Bit
Present BIT
 protection Bit

PAGE TABLE
block | Page frame | P | D  | protection Bit

MMU and Virtual memory mapping

---------------------------
Segmentation
Segment Descriptor table
------------------------
Process: program in execution


Process table
block | page frame

Kernel metadata

- Kernel stack
- user stack

PID: process unique id

process state
- new
- ready
- Block
- running

Queue of ready process

Process tree

init.d

Zombies: process terminated but PCB exist

Orphan: parent exit but child running
- Intentional
- daemons

 ELF executable
----------------------------
Event
- Interrupt
- Trap
- Exception

IDTR: Interrupt Descriptor table

CPU Context switching
Multitasking
 -------------------------------
CPU Scheduler
- FCFS (First come first serve)
     - The Convoy Effect
Simple
Fair: all job execute

Waiting time depend
short process stuck

2. SJF (Shortest job first)
- Min average waiting time
Not predictable
starvation

3. SRTF

4. Round robin
Data struct: FIFO (Queue)

Critical process:

Priority based scheduling
starvation

Multilevel queue
------------
Multiprocessor scheduling
 - Global queue
- Each cpu has own queue

Load balance
- Pull migration
- Push migration
------------------------------
Inter process communication
- Shared memory

Signal
- Async unidirectional

Synchronization

Race condition
- Critical section

Critical section
- Mutual exec
- Progress
- No starvation

Locks
Unlock

Critical section solution

Deadlock

Bakery Algorithm
Synchronization N > 2 process
Use to solve critical section problem

Hardware lock
spinlock

Mutexes
Thundering herd problem
priority inversion
priority inheritance

Semaphore
Producer-Consumer problem

             Buffer
P                              c

Dinning philosopher problem

Deadlock
Handle deadlock

Thread
Process can have multiple thread
Thread can have its own stack section, register
Light weight
Efficient communication b/w entities
Efficient context switching

pthread lib

User thread
Kernel thread

Thread pool

Comments

Popular posts from this blog

Install Virtual Environment

VIRTUAL ENV Virtualenv is a tool to create an isolated Python environment. In this post, we will learn how to setup virtualenv on ubuntu. Prerequisite pip Install Virtualenv If you have pip3  sudo pip3 install virtualenv if you have pip sudo pip install virtualenv Create a Virtualenv virtualenv venv venv is a directory in which virtual environment will be created. Working with Virtualenv source venv/bin/activate Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Equations

In general we frame real life problems into some mathematical formula called equations in which we use constant and some variables(unknown) Example: Ram is 12 years old.Ram 's age is 3/5 of Shyam's age what is Shyam's age. Let Shyam's age is x then 3/5 of sham's age is 3*x/5 x*3/5=12 x=60/3=20 so Shyam's age is 20. Linear equations When there is a linear combination of unknown variables is there then eqn is linear Example: 3x+ 2y+ 4z=9 Non Linear Equations: Equations in which non linear combination of the variable is there then eqn is non linear. When any 2 unknown variable multiplication present in the equation then it is the nonlinear equation. Example: 2x+5yz=98 is a nonlinear equation because yz multiplication is there: Quadratic equation in one variable: x^2 + 4*x + 2=0 is non linear because unknown variable x is being multiplied in term x^2 Quadratic equation in many variable: x^2 + y^2 +z^2 + w=0 cubic equati...

How Machine Learning (ML) Work

How Machine Learning (ML) Work In this post, We will learn how machine learning work. What is machine learning (ML) ? Machine learning is a study of model that compute use to progressively improve their performance on a specific task. What is Machine learning models ? Machine learning model contains a set of instruction or mathematical formula or in simple word it contain a piece of code in which we provide some data as input and model return some output. We learn more about model and how use a machine leaning model latter. How Machine Learning (ML) Work  ? This part we will understand with an example. Suppose want to have a simple application which will take a picture and banana or apple and application will tell us either it is banana or apple or picture is neither banana nor apple. To solve this problem first we provide a set of banana picture to our model and we will tell our model that this is a banana picture similarly we will provide a set of apple...

How to install certificates for command line

Install Certificates In this post, We will learn how to install the certificate on Ubuntu with the command line. Open your terminal and execute the following sequence of command. Here mycert.cer is the certificate that you want to install. $ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem $ sudo dpkg-reconfigure ca-certificates $ sudo update-ca-certificates $ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.