Programming

mihalis's picture

Mastering Go TOC

Mastering Go Table Of Contents:

Chapter 1: Go and the Operating System
Chapter 2: Understanding Go Internals
Chapter 3: Working with Basic Go Data Types
Chapter 4: The Uses of Composite Types
Chapter 5: Enhancing Go code with Data Structures
Chapter 6: What you might not know about Go Packages
Chapter 7: Reflection and Interfaces for all seasons
Chapter 8: Telling a UNIX system what to do
Chapter 9: Go Concurrency – Goroutines, Channels and Pipelines
Chapter 10: Go Concurrency – Advanced Topics
Chapter 11: Code Testing, Optimization and Profiling
Chapter 12: The Foundations of Network Programming in Go
Chapter 13: Network Programming – Building Servers and Clients

mihalis's picture

What is Systems Programming?

Systems programming is a special area of programming on UNIX machines. Most commands that have to do with System Administration tasks such as disk formatting, network interface configuration, module loading, kernel performance tracking, etc. are implemented using the techniques of Systems Programming. Additionally, the /etc directory, which can be found on all UNIX systems, contains plain text files that deal with the configuration of a UNIX machine and its services and are also manipulated using systems software.

You can group the various areas of systems software and related system calls in the following sets:

  • File I/O: this area deals with file reading and writing operations, which is the most important task of an operating system. File input and output must be fast and efficient but, above all, it must be reliable.
  • Advanced File I/O: apart from the basic input and output system calls, there are also more advanced ways to read or write to a file including asynchronous I/O and non-blocking I/O.
  • System Files and Configuration: this group of systems software includes functions that allow you to handle system files such as /etc/passwd and get system specific information such as system time and DNS configuration.
  • Files and Directories: this cluster includes functions and system calls that allow the programmer to create and delete directories and get information such as the owner and the permissions of a file or a directory.
  • Process Control: this group of software allows you to create and interact with UNIX processes.
  • Threads: when a process has multiple threads, it can perform multiple tasks. However, threads must be created, terminated and synchronized, which is the purpose of this collection of functions and system calls.
  • Server Processes: this set includes techniques that allow you to develop server processes, which are processes that get executed in the background without the need for an active terminal.
  • Interprocess Communication: this set of functions allows processes that run on the same UNIX machine to communicate with each other using features such as pipes, FIFOs, message queues, semaphores and shared memory.
  • Signal Processing: signals offer processes a way of handling asynchronous events, which can be very handy. Almost all server processes have extra code that allows them to handle UNIX signals using the system calls of this group.
  • Network Programming: this is the art of developing applications that work over computer networks with the help of TCP/IP and is not Systems programming per se. However, most TCP/IP servers and clients are dealing with system resources, users, files and directories so most of the times you cannot create network applications without doing some kind of Systems programming.

    The challenging thing with Systems Programming is that you cannot afford to have an incomplete program; you can either have a fully working, secure program that can be used on a production system or nothing at all. This mainly happens because you cannot trust end users and hackers!

    Want to learn about Systems Programming using Go?
    Get my book Go Systems Programming from Packt or from Amazon.com.

  • mihalis's picture

    Go Systems Programming book FAQ

    1. Does the book have a web page?
    Yes: https://www.packtpub.com/networking-and-servers/go-systems-programming

    2. Is it a book for amateur programmers?
    If you already know how to program, then you will not have any difficulties reading the book.

    3. Which Go version should I have?
    Any Go version will do. However, there are some specific Go features that need a recent Go version (1.8 or newer).

    4. Where can I find the code for the book?
    https://github.com/PacktPublishing/Go-Systems-Programming

    5. Is it for UNIX only?
    The book is mainly for UNIX machines, which includes Linux, macOS, Mac OS X, *BSD, etc. However, most of the code should work fine on Windows machines.

    6. Where can I buy it?
    Everywhere including https://www.packtpub.com/networking-and-servers/go-systems-programming, https://www.amazon.co.uk/Go-Systems-Programming-Master-programming/dp/17... and https://www.amazon.com/Go-Systems-Programming-Master-programming/dp/1787....

    7. Is it possible to contact you about the book?
    Yes – use the contact form (http://www.mtsoukalos.eu/contact) or Twitter (https://twitter.com/mactsouk).

    8. What are you doing now?
    I am currently writing another book on Go!

    9. Have more questions?
    Contact me using http://www.mtsoukalos.eu/contact.

    mihalis's picture

    Go Systems Programming TOC

    1: GETTING STARTED WITH GO AND UNIX SYSTEMS PROGRAMMING
    2: WRITING PROGRAMS IN GO
    3: ADVANCED GO FEATURES
    4: GO PACKAGES, ALGORITHMS, AND DATA STRUCTURES
    5: FILES AND DIRECTORIES
    6: FILE INPUT AND OUTPUT
    7: WORKING WITH SYSTEM FILES
    8: PROCESSES AND SIGNALS
    9: GOROUTINES - BASIC FEATURES
    10: GOROUTINES - ADVANCED FEATURES
    11: WRITING WEB APPLICATIONS IN GO
    12: NETWORK PROGRAMMING

    You can get an even more detailed TOC at https://www.packtpub.com/networking-and-servers/go-systems-programming

    mihalis's picture

    Source code of Go Systems Programming

    You can find the Go code of the "Go Systems Programming" book at https://github.com/PacktPublishing/Go-Systems-Programming

    Image: 

    Pages

    Subscribe to RSS - Programming