Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions _posts/2017-07-31-LIFO_FIFO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
layout: post
title: What is FIFO and LIFO??!
tags: OS
description: Understand what LIFO and FIFO are.
---

-- [Rohit Bhaskar](https://github.com/rohitbhaskar)

-- [Chirag Trasikar](https://github.com/chirag16)

![Fifo_Vs_Lifo](/assets/posts/FiFo_Vs_Lifo/fifolifo.jpg)

A very important (yet easy to understand) topic in computer engineering. LIFO and FIFO refer to methods of storage of data in memory stacks. A memory stack is nothing but a set of memory locations in a block of memory. (Computer science students might have made use of the concept of stack memory quite often).

The stack memory is nothing but a fixed set of memory locations that is reserved for storage when the code runs. This memory is mainly used when functions are called.

There are 2 operations that go along with any stack memory, and those are the Push and Pull operations. The Push instruction is used to load data onto the stack, and the Pull instruction is used to take data from the stack. Based on the method of storage and accessing of data, the stack can be classified into 2 types.
1. LIFO
2. FIFO

In LIFO type memory, the data that is stored last on the stack is removed 1st. i.e It the data to be stored stacks on top of each other.
In FIFO type memory the data that is stored 1st is removed 1st. It is like accessing the stack from below.

Both the methods are used in different situations based on the system requirement. An example of LIFO is the stack memory that is used in 8085 and 8086 micro-processors. FIFO, on the other hand is widely used in accounting tools and software.

Hope you understood!! Take a look [here](https://www.diffen.com/difference/FIFO_vs_LIFO) to read more about it!
75 changes: 75 additions & 0 deletions _posts/2017-09-06-HyperThreading.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
layout: post
title: Hyper-Threading Explained In 2 Minutes!
tags: OS
description: Understand what hyper-threading is.
---

-- [Rohit Bhaskar](https://github.com/rohitbhaskar)

-- [Chirag Trasikar](https://github.com/chirag16)

<img src="/assets/posts/Hyperthreading/What-is-Hyper-Threading-Technology-Intel-.jpg" alt="Hyper-Threading Intel" />

This is a term that everyone must have heard of, especially if you researched for buying a new laptop. But not many understand what it is.. so lets do a quick dive into the topic.



Lets say its a rainy day and you're sitting at home with just your laptop and a cup of coffee. Just like any normal day, you have a word doc, a music playing app and a browser window open(maybe 2 or 3 if you really need it. Lets add an incognito window to the list too ;P). Now you might think all these are running parallely... but they really aren't. They are actually running sequentially. It's just that your processor is so fast that you cant see the delay.

This doesn't mean that there isn't any delay. And here is where hyper threading comes into play.



One thing you need to understand before going any further is that Hyper-Threading doesn't add a new set of core automatically to your processor. Hyper-Threading only helps handle threads (small processes) better so that the processor wastes as little time as possible in fetching those tasks. Hyper-Threading wont add extra streams for the fisherman it will just help in queuing the fishes properly in line so that the fisherman can catch them faster and more efficiently.





Now that we have understood what it is, lets dive into some technical jargon :)



HyperThreading is the proprietary simultaneous multithreading implementation of Intel for their microprocessors. Simultaneous multithreading or hyperthreading is basically a method to increase the speed and efficiency of the processor by running tasks when the processor is waiting for the other devices (such as memory, GPU etc) to complete the task given to them.



You may ask what is a thread.

A thread is basically a program that needs to run on the cpu to perform its task.



For example, a simple Hello World C program is also thread, the thread is created when the program is launched. The program needs the CPU and memory time to perform its task of displaying the text Hello World. Now, a thread is defined by the operating system so, it can also be a bunch of tasks (or threads) combined together to form a thread but for our purposes we will consider a thread as a singular program requesting CPU time to do its task.



So why would a CPU be idle you may ask.

The microprocessor not only needs to do the calculations required by the thread but also needs to fetch and manage data for the thread and give instructions to the other devices (GPU, RAM, HDD etc). For eg. assume we want to run a simple program that adds two numbers and displays the result on screen, the numbers to be added need to be fetched into the processor, then the answer needs to be computed and then sent to the gpu to be displayed on the screen. Here first the entire program needs to be moved into the RAM from the hard disk, then the numbers to be added need to be moved into the processor to add. But, the processor is way faster then the memory so it has to wait while the memory fetches the numbers to be added. This time is wasted and thus the processor remains idle. Then when the addition is done the result needs to be sent to the display unit/gpu to be displayed on to the screen this time is also wasted as the processor is sitting there doing nothing while the gpu does its job.



There are three methods to handle threads:

<img src="/assets/posts/Hyperthreading/Superscalar_MT.jpg" alt="Thread handling methods" />

1. First, we can just let the thread run on its own and let the processor be idle which is the
least efficient method and wastes the time of the processor. This is shown in the first part of
the image.
2. Second, we can allocate time to each thread to run on the processor. This has the advantage
that multitasking performance increases and if the time slot allotted is less than the memory
fetching time then some time of the processor is saved. This is in the second part of the
image, here efficiency increased as less time is wasted.
3. Third we could just let the first thread run and intelligently guess when the processor is
going to be idle and run the other threads while the processor is waiting for an operation to
complete. This is depicted in the third part of the image here when the processor waits for a
long operation to be completed by the memory meanwhile the second thread is given time to do
its job on the processor thus saving a lot of time and increasing the speed of the processor.

All this being said, Hyper-Threading doesn't literally double your processor performance (as most people would think). It actually just gives a boost of upto 30% (max). Sometimes, doesn't improve performance at all. But it it extremely useful for applications such as high end graphics, games, computational software (like MATLAB) etc.

So, that's all for this post. Hope you understood what Hyper-Threading is (and will hopefully not get caught off guard by this when you go to buy a new laptop ;) )

## - Chinmay Khopde
39 changes: 39 additions & 0 deletions _posts/2018-04-02-32bit_vs_64bit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
layout: post
title: 32-bit vs. 64-bit OSs, What's the Fuss All About ? In 2 Minutes
tags: compilers interpreters
description: The difference between a compiler and an interpreter.
---

-- [Apoorva Gokhale](https://github.com/apoorva-21)

-- [Chirag Trasikar](https://github.com/chirag16)

<img src="/assets/posts/32bit_vs_64bit_OS/5bEGgqZEHBMf7k3njWLZgnnmqyqgjpqxrXMfYMkQW58TxggubXULsPhE55WVjigQy5fD16Qf4kiQQnjGz6qpEjjdhPqrmMPk.png" alt="32 bit vs 64 bit" />

Are you thinking of extending your laptop's RAM because it runs at the speed of a turtle? Wait before you do that! because you might end up wasting money without getting improved results, except the lighter wallet.

We'll just quickly go through basic terms (techies can GOTO the next paragraph directly). Computers only know Binary when it comes to computing, i.e they know 1's and 0's, and these are called bits. In 1 bit computing, you get two possible values; 2 bit computing ,you get 4 possible values; 32 bit computing, you get (2 to the 32nd power) worth 4,294,967,296 values(4 gigabytes); 64-bit (or 2 to the 64th power) is worth 18,446,744,073,709,551,616 values(16 exabytes). Damn,that's a lot of bits and we can clearly make out **how a chip with more bits 'can' have its computing power more than doubled** .

Now, about an Operating System (OS) ,it works as **an interface between computer hardware and an end user** like you. How well your computer utilize system hardware largely depends on OS.

Let's say you and a toddler are given a corn to eat. Obviously because you have stronger teeth you will be able to savour it's taste on a rainy day and the poor toddler will probably just try hard to eat and fail multiple times before giving up. I want to make a point here,your system chipset is corn in this case and teeth is your OS.


Let's have a look at how computer system is made.

<img src="/assets/posts/32bit_vs_64bit_OS/LPAbZ.jpg" alt="Overview">

It is clear from the image that to run a 64 bit application we require a 64 bit OS and 64 bit chip set. Now basically 64 bit architecture and 32 bit architecture have difference in size of their registers. A register is a small amount of storage where the CPU keeps whatever data it needs to access quickly for optimal computer performance.Coming to OSes,the main difference between them is in the amount of RAM they utilize.(Random Access Memory, or RAM (pronounced as ramm), is the physical hardware inside a computer that temporarily stores data, serving as the computer's "working" memory.) 32 bit OS utilize 4GB of RAM theoretically while 64 bit OS can utilize 17.2 billion GBs of RAM(This number is too big and as of now we don't have efficient hardware to support this theoretical statement 😉)(**note**:Windows 64-bit Home editions are still limited to 16 GB of RAM for licensing reasons, but the Professional and Ultimate versions can use up to 192 GB of RAM).

So, a system having 64bit architecture will have a greater computing power but for it's proper utilization we require a 64 bit version of OS,we can't install a 32 bit version of OS and expect it to address larger amount of RAM(few smarties might have got the reason behind the first statement of this blog).

**The biggest drawback of 32 bit OSs is the restriction in usage of RAM**, also a part of RAM is utilized by video cards and other such applications further reducing the size of RAM that your OS actually accesses. 64 bit OS comes to the rescue here!
A system with 64 bit OS is more efficient , uses more memory and **can allot more memory to individual applications**(engineers who use huge softwares like autoCAD know the problems faced while using such applications 😉). This also means that your video cards and other devices will not be stealing usable memory space from the operating system.


Hope you have understood why there is no dearth of computers with 64 bit today.

If you are still curious to know which system you are using follow the instructions [here](https://support.microsoft.com/en-us/windows/32-bit-and-64-bit-windows-frequently-asked-questions-c6ca9541-8dce-4d48-0415-94a3faa2e13d).

## -Bansi Derashri
23 changes: 23 additions & 0 deletions _posts/LamingtonRoad.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
layout: post
title: Lamington Road
tags: Resources
description: A brief idea about Lamington Road
---

Lamington Road is that place everyone has heard about but no one has been to. Everyone’s uncle buys computers from there, but it is relatively unknown that it is actually a hub of electronic items, and due to demand, robotics for Bombay’s thousands of engineers.

Step out of Grant Road Station (East) facing Merwaans and Co., a fine Irani with brilliant mawa cakes, and walk right under the bridge. Go left and immediately right, till you come to Servo Electronics, the house of all kinds of motors, propellors and wheels, and a very entertaining owner. Walk out of servo to the left and at the end of the lane turn right. Continue walking along this road as it curves left, till you cross a bank on the left and see Chip Components. Chip components has all the ICs you’ll need initially atleast, and at a fairly good price. Walk straight and you’ll come across Bombay Electronics (Motors/Wheels), Music Masters (Switches), Toyo Connectors (WIre Connectors). At the end of the lane, you’ll reach the real Lamington Road. Taking a left here will make you reach Lamington Road Police Station, just across the road from which is Visha Electronics and Gala Electronics, two shops perfect for beginners, but they’re out for your money. Be vary about both and prefer to buy stuff from a host of other shops I haven’t mentioned but are a dime a dozen in the Chip Components lane. Visha Electronics can be visited for basic stuff like PCBs, Discrete electronics components and some ICs and sensors which are hard to find elsewhere.

Some stuff you’ll need to start off with Electronics:

Multimeter (Buy a good one for about Rs. 150)
Soldering Iron (Soldron, again buy a good one unless you’re okay with getting electric shocks all the time)
Soldering Wire
Wires

But first figure out what you want to do. Perhaps a good idea is to look at a competition to take part in, maybe our own Technovanza or IITB’s Techfest/Nexus. Plenty of resources are given on their website as well, so have a look to understand more. Otherwise look out for other festivals that happen around Bombay under the IEEE.

Happy Botting

Admin.
42 changes: 42 additions & 0 deletions _posts/Links.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
layout: post
title: Links
tags: Resources
description: A collection of all important links
---

## COMPETITIONS
- [Technovanza](https://technovanza.org/)
- [IIT TECHFEST](https://www.techfest.org/)
- [World Robotics Olympiad](https://wro-association.org/home)

## PROGRAMMING
- [ROS tutorials](http://wiki.ros.org/Documentation)
- [Introduction to C programming](https://www.youtube.com/playlist?list=PLBlnK6fEyqRhX6r2uhhlubuF5QextdCSM)
- [Introduction to C++ programming](https://www.youtube.com/playlist?list=PLOzRYVm0a65eklyMDXGSWObRA-7lCdkSm)
- [Data Structures and Algorithm](https://www.youtube.com/playlist?list=PLD9781AC5EBC9FA16)

## MATHEMATICS
- [Linear Algebra by Gilbert Strang](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8)
- [Essence of Linear Algebra by 3Blue1Brown](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)
- [Linear Algebra Done Right](https://www.youtube.com/playlist?list=PLGAnmvB9m7zOBVCZBUUmSinFV0wEir2Vw)
- [Bayesian Statistics](https://www.youtube.com/playlist?list=PLwJRxp3blEvZ8AKMXOy0fc0cqT61GsKCG)

## SHOP-LIFTING
- [SPARKFUN](https://www.sparkfun.com/)
- [TRI-INDIA]()
- [NEX-ROBOTICS](http://www.nex-robotics.com/)
- [ROBOKITS](https://robokits.co.in/)
- [Robosoft](http://www.robosoftsystems.co.in/)

## HARDWARE
- [SOCIETY OF ROBOTS](https://www.societyofrobots.com/)
- [MOTORS AND ACTUATORS](https://www.societyofrobots.com/actuators.shtml)
- [BATTERIES](https://www.societyofrobots.com/batteries.shtml)
- [BASIC ELECTRONIC COMPONENTS](https://www.societyofrobots.com/electronics_tutorials.shtml)

## ROBOTICS
- [SLAM - Clauss Brenner](https://www.youtube.com/playlist?list=PLpUPoM7Rgzi_7YWn14Va2FODh7LzADBSm)
- [SLAM - Cyrill Stachniss](https://www.youtube.com/playlist?list=PLgnQpQtFTOGQrZ4O5QzbIHgl3b1JHimN_)
- [Photogrammetry - Cyrill Stachniss](https://www.youtube.com/playlist?list=PLgnQpQtFTOGRsi5vzy9PiQpNWHjq-bKN1)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/posts/32bit_vs_64bit_OS/LPAbZ.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/posts/FiFo_Vs_Lifo/fifolifo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/posts/Hyperthreading/Superscalar_MT.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.