Computer Architecture

On Processes and Threads

Tags: C, Computer Architecture, Linux, Programming

Some time ago I followed an interesting discussion on a board where people were discussing multi-core software development. During the course of the discussion it became apparent that there is a lot of confusion and misconceptions about a 'process' and a 'thread' as they exist on e.g., a Linux system. Both are applicable to make use of multi-core systems, but they do so in different ways. Even though the exact distinction while compared to early definitions of the terms has perhaps become somewhat blurred, the two remain separate entities which can complement each other perfectly. In this post I'm going to try and illustrate the similarities and differences, and show you some real life scenarios of both. Keep in mind that we will be making some generalizations - and there are lots of examples where these generalizations do not directly apply, or where there are other possible implementations of the cited examples. Going into these would turn this blog entry into an entire book...

Multiprocess

MIPS 101

Tags: Computer Architecture, MIPS, Programming

To truly understand how a computer (or rather, the processor) does what it does, I highly recommend trying out an assembly language. You might never need it in your professional life (unless you're an embedded coder, or when you're working with portable devices and need to use ARM NEON for example), but understanding assembly can give you more insight into the inner workings of a computer system and help you design better code in other programming languages.

SPIM screenshot