Top 10 List of Week 04

  1. Logical and Physical Address in Operating System
    A page about the differences between logical and physical address, used in operating systems. I learnt that logical adress is generated by the CPU and computers users can view the logical address of a program, while physical address is located in a memory unit and computer users can never see the physical address of a program.

  2. Little Endian and Big Endian
    While little and big endian has been learnt in previous terms, I’ve never learnt how they are actually used and applied on the computer. Apparently determining little endian or big endian is important to store values in an operating system. I also learnt that little endian is more often used than big endian because it’s easier for computers.

  3. Address Binding
    Address binding the association of program instruction and data to the actual physical memory locations. Apparently there are 3 types of address binding, which are compile-time address binding, load time address-binding, and execution time address binding.

  4. Static and Dynamic Linking
    From this page I learnt that static linking is the process of copying all library modules used in the program into the final executable image, performed by the linker and done as the last step of a compilation process. On the other hand, synamic linking the names of the external libraries are placed in the final executable file while the actual linking takes place at run time when both executable file and libraries are placed in the memory.

  5. Stack vs Heap
    I was taught about stack and heap in my data structures class; it was not a very pleasant experience but back then I already knew it’s gonna be useful sooner or later, and I was right. A stack is a special area of computer’s memory which stores temporary variables created by a function. In stack, variables are declared, stored and initialized during runtime. The heap is a memory used by programming languages to store global variables. By default, all global variable are stored in heap memory space. It supports Dynamic memory allocation.

  6. Contiguous Memory Allocation in Operating System
    I learnt that the main memory of a computer has to accomodate both the operating system and the user space. In Contiguous memory allocation, when the process arrives from the ready queue to the main memory for execution, the contiguous memory blocks are allocated to the process according to its requirement. Now, to allocate the contiguous space to user processes, the memory can be divide either in the fixed-sized partition or in the variable-sized partition.

  7. Pointers in C
    We students were taught to use pointers even from DDP-1, our first ever coding class. At first I though it’s just another method for doing simple coding questions, but turns out it’s more than that and also used in operating systems, mainly in memory allocation, for example in the C language. Whenever a variable is defined in C language, a memory location is assigned for it, in which it’s value will be stored.

  8. Pointers vs References in C++
    Other than pointers, there are also references used in coding. While a pointer is something that holds memory address of another variable, a reference is an alias or another name for another existing variable.

  9. C Memory Management
    There are 4 functions in the C language used for memory allocation and management. Those functions are calloc, free, malloc, and realloc. calloc allocates an array of num elements each of which size in bytes will be size. free releases a block of memory block specified by address. malloc allocates an array of num bytes and leave them uninitialized. realloc re-allocates memory extending it upto newsize.

  10. Page Table
    This page explained about page table and also visualizes how it works. I learnt that page table is a data structure used by the virtual memory system to store the mapping between logical addresses and physical addresses.