HOME


Top 10 List of Week 04

  1. An overview on addressing
    In the field of computing, a memory address represents a reference to a specific location in the computer’s memory that is utilized in various levels of software and hardware. These addresses take the form of fixed-length sequences of digits that are usually displayed and manipulated as unsigned integers. Memory addresses come in two types, both crucial in the machine’s ecosystem: Physical and Logical addresses. I’ll expand on both of them in the next point.

  2. Logical Addresses
    In operating systems, the logical address is a virtual address generated by the CPU during a program’s runtime. This address does not exist physically, rather it is generated and used as a reference in order to access the physical memory location by the CPU. In the anatomy of a computer, there exists the memory-management unit which takes care of mapping logical addresses to its corresponding physical address.

  3. Physical Addresses
    A physical address, on the other hand, represents the physical location of some data in the memory. Anyone using a computer never directly deals with the physical address, rather they use the computer as a medium to access it via the logical addresses created by the CPU.

  4. Swap Memory
    I’ve mentioned this topic some time before, so I’ll briefly expand on it now since this week’s topics are closely related to this. Swapping is the act of utilizing the computer’s storage space as temporary memory. This is done when the computer has to to tasks that take up more memory than any physical RAM available on the system. Swapping is also utilized, especially in linux and on computers with non-volatile storage solutions such as solid-state or flash, in order to hibernate the PC. Hibernating involves saving the machine state by moving whatever data is in the computer’s memory and storing it in non-volatile (preferrably persistent) storage.

  5. Paging
    Paging in operating systems is a scheme that completely eliminates the need for contiguous allocation of physical memory. In this scheme, the memory management unit (as mentioned above) handles the mapping from virtual to physical addresses. The process is as follows: The physical address space is conceptually divided into a number of fixed-sized blocks called frames. Then, the logical address space is split into fixed-sized blocks called pages. The resulting page and frame size should be equal. We indirectly learned parts of this topic back during the Intro to Computer Organization course.

  6. Fragmentation
    Fragmentation in computer storage is a phenomenon in which storage space is used inefficiently. This causes the computer to lose both performance and memory capacity. Fragmentation comes in three types: External fragmentation where there exists adequate memory space, but it is not contiguous (i.e. it is fragmented into a number of holes). Internal fragmentation, where the allocated memory may be larger than the requested memory. And finally data fragmentation, where a group of data in the memory is broken up into many pieces that are not contiguous.

  7. Endianness
    This was a brief callback from the Introduction to Digital Systems course previously. Endianness comes in two flavors: Big endian, where the most significant byte of the word is storred at the smallest memory address, and Little endian where the most the most significant byte is instead store in the largest memory address.

  8. ELF Files
    ELF? Like, in Lord of the Rings or Dungeons & Dragons, maybe even Santa’s little helpers? Nope, though I wouldn’t blame you for coming to that thought. ELF stands for Executable and Linkable Format. This is, in short, a formal specification that defines how instructions are stored in executable code. I had the opportunity to play around with it during this week’s assignment, though I didn’t quite know what I was dealing with when I first tried to open the file.

  9. Linux Libraries
    Libraries in linux are basically bundles of compiled files. These libraries come in two types: Static libraries, in which the library which the code is linked with becomes part of the application. And Dynamically linked libraries, which can be used in two ways, where the library and objects are linked at runtime, and where the library is loaded/unloaded then linked during execution.

  10. What else did I learn today?
    In light of some things I’ve learned a few weeks ago, specifically about privacy, I got a bit curious and went down a little rabbit hole and discovered Tor. Tor (The Onion Router) is a network that is used by various people around the world to maintain their anonymity. This network works by routing your web traffic through a number of nodes in order to mask your real IP address. Many people use Tor regularly such as activists, whistleblowers, people living in nations that restrict internet access, and even regular people who want to stay anonymous on the internet.