The course discusses the various activities that happen during program execution, and how they are managed by the hardware (architectural features) and system software (operating systems, run-time systems).
Contents:
Program execution: Program, Compilation, Object files, Function call and return, Address space, Data and its representation
Computer organization: Memory, Registers, Instruction set architecture, Instruction processing
Pipelined processors: Pipelining, Structural, data and control hazards, Impact on programming
Virtual memory: Use of memory by programs, Address translation, Paging
Cache memory: Organization, impact on programming, virtual caches
Operating systems: Processes and system calls, Process management
Program profiling
File systems: Disk management, Name management, Protection
Parallel architecture: Inter-process communication, Synchronization, Mutual exclusion, Basics of parallel architecture, Parallel programming with message passing using MPI