[{"content":" Intro Session 1 ran on Thursday, 24th September in AT7.14. The session covered the fundamentals of Operating Systems. This session was ran by Kacper and Archie.\nSession Content + Resources Session Slides (Click Me!) Session slides were made with content generally available on the internet + some content from Operating System Concepts 10th Edition (2018) by A.Silberschatz.\nCall for Committee members, speakers \u0026amp; presentations If you\u0026rsquo;re someone who would like to help us run BitSIG, please let us know by pinging us in our Discord server (linked at the bottom of this post). Similarly, if you\u0026rsquo;re already very experienced in OS, low-level programming and other areas that BitSIG involves itself in and would like to give a talk or presentation about your research and/or experience, please let us know! We wanna hear from you!\nSemester 1 Schedule Meetings take place every Thursday, 18:00-19:00 in AT 7.14. We may sometimes run until 8pm if people are very interested, and otherwise we might go out to Teviot or some other social after the session.\nWe have an alternating schedule each week, where one week we\u0026rsquo;ll run a discussion / theory session and then the next week will be a more practical workshop (e.g. code-writing). Since this week is a theory / discussion session week, the next session will be a practical workshop. This scheduling gives us time to prepare workshop materials which require more effort than the theory sessions.\nWhat are Operating Systems? Many different definitions. People disagree on what features should be included / packaged as part of an ‘OS’ and what features are actually user applications / shipped separately (see Microsoft vs US DoJ in 1998) Loose definition can be “\u0026hellip;the one program running at all times on the computer – usually called the kernel.” [A.Silberschatz in OS Concepts 10e]\nThe Operating System can be viewed as a resource allocator (CPU, memory, I/O devices) or control program (which manages the execution of user programs)\nSome examples of Operating Systems include MSDOS, macOS, Windows, Linux, iOS, Android. See this xkcd comic .\nThe structure of operating systems tends to revolve around a \u0026lsquo;stack\u0026rsquo; approach, where applications communicate with the Kernel, and the Kernel acts as the bridge between the applications and hardware like the CPU, Memory, I/O and other devices.\nKey components of a Computer System One or more CPUs Multiple device controllers connected through a shared system bus (Memory, CPU, USB, Graphics adapters -\u0026gt; monitors, etc.) Device controllers interface with the OS through \u0026lsquo;device drivers\u0026rsquo; (which you\u0026rsquo;ll know tons about if your GPU drivers ever broke). The drivers provide the OS with a common interface to interact with device controllers. Interaction with Hardware Let\u0026rsquo;s dive a bit deeper:\nHow does a resource let the CPU know when it needs computation? How do we know when said computation is finished, or, for example, when a user presses a key? Interrupts The solution: Interrupts. They\u0026rsquo;re called that because they \u0026lsquo;interrupt\u0026rsquo; the CPU\u0026rsquo;s work to tell it that another resource needs the CPU. For example, a device controller for a keyboard may signal to the CPU that it requires processing, thus taking the CPU out of the work it was currently doing and switching it to \u0026lsquo;interrupt handling\u0026rsquo;. When the interrupt is handled, the CPU no longer needs to work on the \u0026lsquo;interrupt\u0026rsquo; and the past state of the CPU is usually restored.\nContext Switching \u0026amp; PCBs Working with interrupts, we have the idea of context switching. This is where the OS switches which process is currently being executed / worked on by the CPU(s). Note that context switching can also refer to when the CPU switches from operating in user mode to kernel mode (i.e. from restricted app code to privileged OS code).\nWhen the context switches, we need a way of storing the state of the registers of the previous context so we can restore them once we want to switch back. Otherwise we\u0026rsquo;d get lost or have to start over with processes that got interrupted, and that\u0026rsquo;s not very efficient. We can store this information by using PCBs (Process Control Blocks, not Printed Circuit Boards) which are maintained by the Operating System.\nKernel Space (don\u0026rsquo;t touch) Kernel space is the most highly-privileged region of memory in a Computer. This is where the Kernel (OS) manages system resources, CPU scheduling, memory mapping + more.\nUser apps do not run in Kernel space and instead run in User Space; a crash in Kernel space can really screw things up (kernel panics: if the kernel can’t trust its own state, it stops as that is usually the safer thing to do than still going).\nKernel design \u0026amp; tradeoffs (monolithic, microkernels and hybrids) Monolithic Kernels:\nMore OS services in Kernel space (shared memory space) = faster (don\u0026rsquo;t have to context switch often) A bug or crash in a driver or program in kernel space can crash the entire system Examples include LINUX \u0026amp; UNIX Operating Systems Microkernels:\nMore stuff in user space; a crash won\u0026rsquo;t be as damaging and not cause a kernel panic. Slower because of frequent context switches + IPC (Inter-process communication) Examples include QNX, MINIX \u0026amp; GNU Hurd Hybrid Kernels:\nExamples include Windows (NT) \u0026amp; macOS (XNU) These are more common and combine features of both monolithic kernels and microkernels - it\u0026rsquo;s quite rare to see a purely monolithic kernel or purely microkernel. Usually a single address space (like monolithic) Subsystems organised in a modular fashion (i.e. messaging / communication between processes with IPC, similar to microkernels) Next time: Practical workshop (bring laptop) on writing a minimal Rust Kernel (with Phil Oppermann’s blog).\nSame time, same place next week!\nWe\u0026rsquo;re going to Teviot after this session :-)\nEnd of Post If you have any questions, join our discord and ask away!\n42 49 54 53 49 47 20 3C 33 20 59 4F 55\n","date":"September 25, 2026","permalink":"/posts/session_1_os_fundamentals/","summary":"Content \u0026amp; Summary from Session 1 (24/9/2026)","title":"OS Fundamentals / Intro (Session 1)","type":"posts"},{"content":" Intro The Welcome Week Session (Session 0) ran on Tuesday, 15th September 2026. It covered a basic introduction to BitSIG but also the basics of digital logic, functional completeness, FSMs and implementing these concepts in Minecraft.\nSession Content Session Slides (Click Me!) Welcome to BitSIG! Kacper: President, former president of CompSoc, master larper Archie: Vice President, former president of SIGINT, fluent in SIMD Ryan: Logistics \u0026amp; Moral Support, ex President of QuantSIG, has millions of supplier contacts + we\u0026rsquo;re always looking for new people to help out with the committee! What is BitSIG? Group of nerds who talk about OS, embedded systems, low level programming and all sorts of hardware-adjacent stuff. We also wanna lower the age of the average low-level dev from 40+ to the mid 20s.\nWe’ll be holding weekly sessions ranging from chats about recent developments in OS and hardware to workshops on processors, memory and maybe even some FPGA stuff if we get around to it\nWhat are we doing today? Computers.. in Minecraft - the basics of digital logic that’ll lay the foundation for hardware design. People can join the Minecraft Server with the IP bitsig.dev but need to be whitelisted - ask for a whitelist in the BitSIG Discord! The server\u0026rsquo;s version is 1.21.11\nBasics of Digital Logic: Logic Gates Logic gates allow us to output a specific signal depending on input signal(s). For example, a NOT gate (inverter) would invert a HIGH signal into a LOW signal and vice versa. By combining many gates, we can achieve more complicated logic. (Minecraft Gates Demo happens here, where we saw how AND, NOT and OR gates can be implemented in Minecraft)\nFunctional Completeness If we have the right ‘types’ of gates, we can achieve ‘functional completeness’. That is, we can make any gate out of the ones we have. Key example is NAND Equivalence. Examples of functionally complete sets: {NAND}, {NOR}, {AND, NOT}, {AND, OR, NOT}.\nFinite State Machines If we have a Functionally Complete set of gates, we can then create any Finite State Machine from ‘vending machines’ to Control Units used in single-cycle and multi-cycle processors! This opens us up to the realm of building processors in Minecraft and by extension actual computers!\nAt this point, the practical half of the session started where people were encouraged to build adders on the Minecraft server.\nEnd of Post If you have any questions, join our discord and ask away!\n42 49 54 53 49 47 20 3C 33 20 59 4F 55\n","date":"September 18, 2026","permalink":"/posts/ww_session/","summary":"Post with content from the Welcome Week Session","title":"Welcome Week Session (Session 0)","type":"posts"},{"content":"BitSIG is the University of Edinburgh\u0026rsquo;s Low Level \u0026amp; Embedded Programming society and exists as a SIG (Special Interest Group) under CompSoc. We host weekly sessions dedicated to teaching and learning about low level programming, operating systems, embedded systems and more. As we appreciate there\u0026rsquo;s a knowledge gap for the average first year student, we aim to start off with easy, simple sessions before progressing to more advanced topics.\nWe\u0026rsquo;re looking forward to meeting you during welcome week! We\u0026rsquo;ll be at plenty of CompSoc events and can\u0026rsquo;t wait to get new members into our group. Weekly meetup locations will be confirmed once the semester starts and room booking are in place.\nIf you have any questions, join our discord and ask away!\n42 49 54 53 49 47 20 3C 33 20 59 4F 55\n","date":"August 9, 2026","permalink":"/posts/info_post/","summary":"Introduction to the BitSIG Society","title":"BitSIG - Intro","type":"posts"}]