What are systems programming and architecture?

Architecture is what software needs to know about hardware and what hardware needs to know about software. It is the abstraction boundary between the highest level of hardware design and the lowest level of software design, which is called systems programming. Building up from the architecture, it is the job of the systems programmer to make convenient abstractions for developers to write application software without worrying too much about how hardware works.

Of course, the word ‘architecture’ originally applied to the design and planning that goes into contructing a building (note that it is still an abstraction in that context; even when you’re making a house, architecture is different from construction). Early computers were so unique that there was generally little need to discuss their abstract design separately from their physical existence. The word came to be applied to computers in the writings of Fred Brooks during the IBM/360 project when it became increasingly important to be able to discuss explicitly the abstraction between hardware design and software design.

The term architecture is used here to describe the attributes of a system as seen by the programmer, i.e., the conceptual structure and functional behavior, as distinct from the organization of the data flow and controls, the logical design, and the physical implementation. 1

This course will focus on architecture from the systems side. Consequently, computer organization—i.e. the highest level of hardware design—will often be relevant to us, but the primary focus is on this theme: What really happens when software runs?

1

Gene Amdahl, Gerrit Blaauw, and Fred Brooks (1964) ‘Architecture of the IBM System’ in IBM Journal of Research and Development Vol 8 (2) p. 87–101

You have attempted of activities on this page