Skip to content
CS-405 · Operating Systems/Quick Revision Short Notes

Operating Systems (CS-405) - Unit 5 Short Notes

How unit 5 is examined

Multiprocessor, network and distributed OS with design issues, transparency, failures, DFS, migration and RPC carry the marks; Linux versus Windows is the case study.

Introduction to Network, Distributed and Multiprocessor Operating Systems

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">High weight</span>

Definition. A multiprocessor OS manages several CPUs sharing one memory; a network OS lets users on separate machines share files and printers while each machine stays independent; <mark>a distributed OS makes a collection of autonomous computers appear to the user as one single system.</mark>

Diagram. <figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u5-01" viewBox="0 0 252 252" width="252" height="252" role="img" aria-label="RPC. C client, CS client stub (marshals), SS server stub (unmarshals), S server procedure"><style>#dsfig-u5-01 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u5-01 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u5-01 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u5-01 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u5-01 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u5-01 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u5-01 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u5-01 .t{fill:#16181D;font-weight:500}#dsfig-u5-01 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u5-01 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u5-01 .dot{fill:#16181D}#dsfig-u5-01 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u5-01 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u5-01 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u5-01 .ah{fill:#454C5A}#dsfig-u5-01 .ah.hi{fill:#2340B8}#dsfig-u5-01 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u5-01 .wl .t{font-size:12px;font-weight:700}#dsfig-u5-01 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u5-01 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u5-01 .e{stroke:#B1B7C3}html.dark #dsfig-u5-01 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u5-01 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u5-01 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u5-01 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u5-01 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u5-01 .t{fill:#E6E8ED}html.dark #dsfig-u5-01 .t.inv{fill:#0F1115}html.dark #dsfig-u5-01 .kd{stroke:#E6E8ED}html.dark #dsfig-u5-01 .dot{fill:#E6E8ED}html.dark #dsfig-u5-01 .ann{fill:#8FA3FF}html.dark #dsfig-u5-01 .lbl{fill:#858D9C}html.dark #dsfig-u5-01 .ptr{fill:#8FA3FF}html.dark #dsfig-u5-01 .ah{fill:#B1B7C3}html.dark #dsfig-u5-01 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u5-01 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u5-01 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u5-01 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah20" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh20" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M33.4,57.8 Q8,126 32.7,192.3" marker-end="url(#ah20)"/><path class="e" d="M57.8,218.6 Q126,244 192.3,219.3" marker-end="url(#ah20)"/><path class="e" d="M218.6,194.2 Q244,126 219.3,59.7" marker-end="url(#ah20)"/><path class="e" d="M205.4,57.8 Q180,126 204.7,192.3" marker-end="url(#ah20)"/><path class="e" d="M194.2,205.4 Q126,180 59.7,204.7" marker-end="url(#ah20)"/><path class="e" d="M46.6,194.2 Q72,126 47.3,59.7" marker-end="url(#ah20)"/><g class="wl"><rect x="0.1" y="116.5" width="40.8" height="18" rx="9"/><text class="t" x="20.5" y="125.5" dy=".35em" text-anchor="middle">call</text></g><g class="wl"><rect x="94.8" y="222.5" width="61.5" height="18" rx="9"/><text class="t" x="125.5" y="231.5" dy=".35em" text-anchor="middle">request</text></g><g class="wl"><rect x="214.7" y="117.5" width="33.6" height="18" rx="9"/><text class="t" x="231.5" y="126.5" dy=".35em" text-anchor="middle">run</text></g><g class="wl"><rect x="165.4" y="116.5" width="54.3" height="18" rx="9"/><text class="t" x="192.5" y="125.5" dy=".35em" text-anchor="middle">result</text></g><g class="wl"><rect x="102.9" y="183.5" width="47.1" height="18" rx="9"/><text class="t" x="126.5" y="192.5" dy=".35em" text-anchor="middle">reply</text></g><g class="wl"><rect x="32.3" y="117.5" width="54.3" height="18" rx="9"/><text class="t" x="59.5" y="126.5" dy=".35em" text-anchor="middle">return</text></g><circle class="n" cx="40" cy="40" r="18"/><text class="t" x="40" y="40" dy=".35em" text-anchor="middle">C</text><circle class="n" cx="212" cy="40" r="18"/><text class="t" x="212" y="40" dy=".35em" text-anchor="middle">S</text><circle class="n" cx="40" cy="212" r="18"/><text class="t" x="40" y="212" dy=".35em" text-anchor="middle">CS</text><circle class="n" cx="212" cy="212" r="18"/><text class="t" x="212" y="212" dy=".35em" text-anchor="middle">SS</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">RPC. C client, CS client stub (marshals), SS server stub (unmarshals), S server procedure</figcaption></figure>

<figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u5-02" viewBox="0 0 338 338" width="338" height="338" role="img" aria-label="Multiprocessor. CPUs C1 to C3 share one bus B, main memory M and I/O under one OS"><style>#dsfig-u5-02 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u5-02 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u5-02 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u5-02 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u5-02 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u5-02 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u5-02 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u5-02 .t{fill:#16181D;font-weight:500}#dsfig-u5-02 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u5-02 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u5-02 .dot{fill:#16181D}#dsfig-u5-02 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u5-02 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u5-02 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u5-02 .ah{fill:#454C5A}#dsfig-u5-02 .ah.hi{fill:#2340B8}#dsfig-u5-02 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u5-02 .wl .t{font-size:12px;font-weight:700}#dsfig-u5-02 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u5-02 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u5-02 .e{stroke:#B1B7C3}html.dark #dsfig-u5-02 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u5-02 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u5-02 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u5-02 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u5-02 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u5-02 .t{fill:#E6E8ED}html.dark #dsfig-u5-02 .t.inv{fill:#0F1115}html.dark #dsfig-u5-02 .kd{stroke:#E6E8ED}html.dark #dsfig-u5-02 .dot{fill:#E6E8ED}html.dark #dsfig-u5-02 .ann{fill:#8FA3FF}html.dark #dsfig-u5-02 .lbl{fill:#858D9C}html.dark #dsfig-u5-02 .ptr{fill:#8FA3FF}html.dark #dsfig-u5-02 .ah{fill:#B1B7C3}html.dark #dsfig-u5-02 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u5-02 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u5-02 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u5-02 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah21" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh21" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M53.4,53.4 L155.6,155.6"/><path class="e" d="M169,59 L169,150"/><path class="e" d="M284.6,53.4 L182.4,155.6"/><path class="e" d="M155.6,182.4 L53.4,284.6"/><path class="e" d="M182.4,182.4 L284.6,284.6"/><circle class="n" cx="40" cy="40" r="18"/><text class="t" x="40" y="40" dy=".35em" text-anchor="middle">C1</text><circle class="n" cx="169" cy="40" r="18"/><text class="t" x="169" y="40" dy=".35em" text-anchor="middle">C2</text><circle class="n" cx="298" cy="40" r="18"/><text class="t" x="298" y="40" dy=".35em" text-anchor="middle">C3</text><circle class="n" cx="169" cy="169" r="18"/><text class="t" x="169" y="169" dy=".35em" text-anchor="middle">B</text><circle class="n" cx="40" cy="298" r="18"/><text class="t" x="40" y="298" dy=".35em" text-anchor="middle">M</text><circle class="n" cx="298" cy="298" r="18"/><text class="t" x="298" y="298" dy=".35em" text-anchor="middle">IO</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">Multiprocessor. CPUs C1 to C3 share one bus B, main memory M and I/O under one OS</figcaption></figure> <figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u5-03" viewBox="0 0 424 252" width="424" height="252" role="img" aria-label="Distributed OS. Autonomous nodes N1 to N4 on a network NW, seen as one system"><style>#dsfig-u5-03 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u5-03 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u5-03 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u5-03 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u5-03 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u5-03 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u5-03 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u5-03 .t{fill:#16181D;font-weight:500}#dsfig-u5-03 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u5-03 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u5-03 .dot{fill:#16181D}#dsfig-u5-03 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u5-03 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u5-03 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u5-03 .ah{fill:#454C5A}#dsfig-u5-03 .ah.hi{fill:#2340B8}#dsfig-u5-03 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u5-03 .wl .t{font-size:12px;font-weight:700}#dsfig-u5-03 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u5-03 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u5-03 .e{stroke:#B1B7C3}html.dark #dsfig-u5-03 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u5-03 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u5-03 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u5-03 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u5-03 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u5-03 .t{fill:#E6E8ED}html.dark #dsfig-u5-03 .t.inv{fill:#0F1115}html.dark #dsfig-u5-03 .kd{stroke:#E6E8ED}html.dark #dsfig-u5-03 .dot{fill:#E6E8ED}html.dark #dsfig-u5-03 .ann{fill:#8FA3FF}html.dark #dsfig-u5-03 .lbl{fill:#858D9C}html.dark #dsfig-u5-03 .ptr{fill:#8FA3FF}html.dark #dsfig-u5-03 .ah{fill:#B1B7C3}html.dark #dsfig-u5-03 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u5-03 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u5-03 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u5-03 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah22" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh22" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M57,48.5 L195,117.5"/><path class="e" d="M57,203.5 L195,134.5"/><path class="e" d="M367,48.5 L229,117.5"/><path class="e" d="M367,203.5 L229,134.5"/><circle class="n" cx="40" cy="40" r="18"/><text class="t" x="40" y="40" dy=".35em" text-anchor="middle">N1</text><circle class="n" cx="40" cy="212" r="18"/><text class="t" x="40" y="212" dy=".35em" text-anchor="middle">N2</text><circle class="n" cx="384" cy="40" r="18"/><text class="t" x="384" y="40" dy=".35em" text-anchor="middle">N3</text><circle class="n" cx="384" cy="212" r="18"/><text class="t" x="384" y="212" dy=".35em" text-anchor="middle">N4</text><circle class="n" cx="212" cy="126" r="18"/><text class="t" x="212" y="126" dy=".35em" text-anchor="middle">NW</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">Distributed OS. Autonomous nodes N1 to N4 on a network NW, seen as one system</figcaption></figure>

Key points.

  1. A multiprocessor OS gives higher throughput, economy (CPUs share memory, disks, power) and reliability, since the remaining CPUs continue if one fails.
  2. It is asymmetric (a master CPU schedules, slaves run) or symmetric (every CPU runs the OS and schedules itself, as in Linux and Windows on multicore PCs).
  3. Locking protects kernel data shared by CPUs: a spinlock makes a CPU busy-wait for a short critical section, while a semaphore puts the waiting process to sleep for a long one. Processor affinity keeps a process on the same CPU so its cache stays warm and cache misses fall. Load balancing does the opposite job: the scheduler pushes work from a busy CPU's run queue to an idle one (push or pull migration), trading some cache warmth for even use of all CPUs. Cache coherence means that when one CPU writes a shared variable, the stale copies in other CPUs' caches are invalidated or updated (snooping bus protocols such as MESI), so every CPU sees the same value.
  4. CPUs connect through a shared bus (cheap, but it saturates), a crossbar switch (many paths, costly) or a multistage network; NUMA machines give each CPU fast local memory.
  5. Design issues of a distributed OS are transparency, communication, reliability, scalability, heterogeneity and security, and each trades against performance. Communication is not only RPC: message passing (send and receive between processes, blocking or non-blocking, over ports or mailboxes) is the basic primitive, and group communication (multicast to a set of processes, as in replicated servers) delivers one message to many members with an agreed order.
  6. Scalability means the system keeps working as nodes and users grow. Mechanisms are replication (many copies share load), caching (fewer remote requests) and decentralised algorithms (no central server or table that becomes a bottleneck). DNS is an example.
  7. Heterogeneity means different hardware, operating systems and networks. It is handled by standard protocols (TCP/IP, RPC), a common data format and middleware or virtual machines such as the JVM.
  8. Security means protecting data on an open network. Authentication (passwords, Kerberos tickets) proves identity, encryption keeps messages private, and access control limits use; Kerberos in the Athena system is an example of ticket-based authentication, while Amoeba protected objects with capabilities, unforgeable tokens that name an object and the rights held on it.
  9. Network transparency hides the network from the user. Access transparency uses one call for local and remote files; location transparency gives names that do not show the machine (/home/x); migration transparency lets a resource move unseen; replication transparency hides that there are copies; concurrency transparency lets users share without interference; failure transparency hides a fault.
  10. Its advantages are ease of use, resource sharing and location independence. Its disadvantages are messaging overhead, complexity and loss of user control over where work runs; security also weakens because the user cannot see which machines hold or carry the data, so trust boundaries blur and a message can be intercepted or forged.
  11. Failure types, each with an example and its reliability effect. Crash: a node halts (power loss), so its services vanish. Omission: a message is lost or dropped (full buffer), so requests hang. Timing: a reply arrives too late (overloaded server), so real-time deadlines or timeouts fail. Byzantine (arbitrary): a node sends wrong or conflicting replies to different peers, for example a corrupted server reporting different balances, so the system needs 3f+1 nodes to tolerate f such nodes. Network partition: the network splits into groups that cannot reach each other, for example a cut link between two data centres, so each side may carry on independently and their data diverges (split brain).
  12. Detection uses timeouts and heartbeat messages (a node silent for several intervals is presumed dead). Recovery uses retransmission for lost messages, replication and failover for crashed nodes, and checkpoints with restart.
  13. A DFS beats a centralized file system through scalability, replication for fault tolerance, availability when one server fails, and parallel access for performance; a centralized one is a single point of failure and a bottleneck.
  14. On a totally reliable network (no loss, delay or partition) drop retransmission, acknowledgements, timeouts for message loss and partition handling; keep tolerance for node crashes, and concentrate on performance, naming (a global name service mapping names to locations) and migration. Example: a LAN cluster where names resolve through one name server and processes move for load balancing. Dropped: retransmission timers, sequence numbers and duplicate detection. Kept: node-crash handling and replication. Security and authentication are still needed, because a reliable network is not a trusted one: a reliable link still lets an eavesdropper read or a forger inject messages, so keep login authentication, access control and encryption.
  15. RPC calls a remote procedure like a local one: the client stub marshals arguments, the message is sent, the server stub unmarshals and runs it, and the result returns. Binding is done through a name or port-mapper service that locates the server (Sun RPC uses rpcbind on port 111). It differs from a local call because it can fail, has separate address spaces (no pointers or globals) and is slower. Its advantages are transparency (the programmer does not write socket code or see the network) and a simple programming model (the familiar procedure call, with stubs generated from an interface definition).
  16. RPC failure semantics: at-least-once retries until a reply comes, so the procedure may run many times (fine for idempotent calls such as reading a block); at-most-once numbers each request so it never runs twice but may not run; exactly-once is hard. Sun RPC underlies NFS.
  17. Process migration moves a running process between machines for load balancing, faster access to resources or fault tolerance. Examples are Sprite (transparent migration with home-node forwarding), the V system (pre-copy of address space) and the JVM (portable bytecode).
  18. Same-OS migration steps: freeze the process, checkpoint its state (registers, program counter, open files, signals), transfer the address space (all at once, pre-copy or on demand), redirect open files by network reference, forward messages and signals in transit through the old node, then restart. A different OS or architecture cannot copy raw state: save it in a machine-independent form, convert data format (byte order big- or little-endian, word size 32 or 64 bit) or run on a virtual machine or interpreter, and migrate only at safe points. Different-OS issues: system-call semantics differ (numbers, arguments and behaviour of calls such as fork versus CreateProcess), so calls must be translated or an emulation layer used; file naming and paths differ (/home/x versus C:\Users\x, case sensitivity, separators), so open files are remapped through a global name. Safe migration points are chosen where state is small and well defined, such as between system calls, at a procedure-call boundary, at a checkpoint or after a message send completes, never in the middle of a system call or an I/O operation.
  19. A thread is a light weight process sharing code, data and files but with its own stack, program counter and registers.

Threads. A thread is the unit of CPU use inside a process. User threads are managed by a library without the kernel (fast to create, but one blocking call blocks the whole process); kernel threads are managed by the OS (can run on different CPUs, but slower to switch). Benefits are responsiveness, resource sharing, economy and use of multiprocessors. States are new, ready, running, blocked and terminated. Models are many-to-one, one-to-one (Linux, Windows) and many-to-many. <figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u5-04" viewBox="0 0 338 389.6" width="338" height="389.6" role="img" aria-label="One process, three threads (own stack and registers each, shared code, data, files), mapped to kernel threads K"><style>#dsfig-u5-04 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u5-04 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u5-04 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u5-04 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u5-04 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u5-04 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u5-04 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u5-04 .t{fill:#16181D;font-weight:500}#dsfig-u5-04 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u5-04 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u5-04 .dot{fill:#16181D}#dsfig-u5-04 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u5-04 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u5-04 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u5-04 .ah{fill:#454C5A}#dsfig-u5-04 .ah.hi{fill:#2340B8}#dsfig-u5-04 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u5-04 .wl .t{font-size:12px;font-weight:700}#dsfig-u5-04 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u5-04 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u5-04 .e{stroke:#B1B7C3}html.dark #dsfig-u5-04 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u5-04 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u5-04 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u5-04 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u5-04 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u5-04 .t{fill:#E6E8ED}html.dark #dsfig-u5-04 .t.inv{fill:#0F1115}html.dark #dsfig-u5-04 .kd{stroke:#E6E8ED}html.dark #dsfig-u5-04 .dot{fill:#E6E8ED}html.dark #dsfig-u5-04 .ann{fill:#8FA3FF}html.dark #dsfig-u5-04 .lbl{fill:#858D9C}html.dark #dsfig-u5-04 .ptr{fill:#8FA3FF}html.dark #dsfig-u5-04 .ah{fill:#B1B7C3}html.dark #dsfig-u5-04 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u5-04 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u5-04 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u5-04 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah23" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh23" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M157.6,55.2 L51.4,196.8"/><path class="e" d="M169,59 L169,193"/><path class="e" d="M180.4,55.2 L286.6,196.8"/><path class="e" d="M53,225.9 L154.6,334.3" marker-end="url(#ah23)"/><path class="e" d="M169,231 L169,328.6" marker-end="url(#ah23)"/><path class="e" d="M285,225.9 L183.4,334.3" marker-end="url(#ah23)"/><circle class="n" cx="169" cy="40" r="18"/><text class="t" x="169" y="40" dy=".35em" text-anchor="middle">P</text><circle class="n" cx="40" cy="212" r="18"/><text class="t" x="40" y="212" dy=".35em" text-anchor="middle">T1</text><circle class="n" cx="169" cy="212" r="18"/><text class="t" x="169" y="212" dy=".35em" text-anchor="middle">T2</text><circle class="n" cx="298" cy="212" r="18"/><text class="t" x="298" y="212" dy=".35em" text-anchor="middle">T3</text><circle class="n" cx="169" cy="349.6" r="18"/><text class="t" x="169" y="349.6" dy=".35em" text-anchor="middle">K</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">One process, three threads (own stack and registers each, shared code, data, files), mapped to kernel threads K</figcaption></figure>

Aspect Process Thread
Memory Own address space Shares the process address space
Creation and switch Heavy, slow Light, fast
Communication Needs IPC Shared memory directly
Failure Isolated from others One thread can crash the whole process
Own resources Code, data, files, stack Only stack, registers, program counter

DFS. A distributed file system stores files on many servers but shows one namespace. NFS (stateless server, client caching with periodic checks, Sun RPC) and AFS (whole-file caching, callbacks that tell clients when a copy is stale, Kerberos security) are the examples. Caching gives speed, so consistency needs a rule: write-through, delayed write, or callback invalidation. Naming and transparency give location-independent names such as /home/user. Drawbacks are network dependence, security exposure, consistency cost and complex administration.

Aspect Centralized FS DFS
Storage One machine Many servers
Failure Single point of failure Replicas keep service up
Growth Limited by one server Add servers
Access Local speed Network latency, cached
Sharing Same machine users Users anywhere
Consistency Simple Needs cache protocols

<figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u5-05" viewBox="0 0 424 252" width="424" height="252" role="img" aria-label="DFS. Clients C1, C2 reach servers S1, S2 through the network N under one namespace"><style>#dsfig-u5-05 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u5-05 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u5-05 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u5-05 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u5-05 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u5-05 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u5-05 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u5-05 .t{fill:#16181D;font-weight:500}#dsfig-u5-05 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u5-05 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u5-05 .dot{fill:#16181D}#dsfig-u5-05 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u5-05 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u5-05 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u5-05 .ah{fill:#454C5A}#dsfig-u5-05 .ah.hi{fill:#2340B8}#dsfig-u5-05 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u5-05 .wl .t{font-size:12px;font-weight:700}#dsfig-u5-05 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u5-05 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u5-05 .e{stroke:#B1B7C3}html.dark #dsfig-u5-05 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u5-05 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u5-05 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u5-05 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u5-05 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u5-05 .t{fill:#E6E8ED}html.dark #dsfig-u5-05 .t.inv{fill:#0F1115}html.dark #dsfig-u5-05 .kd{stroke:#E6E8ED}html.dark #dsfig-u5-05 .dot{fill:#E6E8ED}html.dark #dsfig-u5-05 .ann{fill:#8FA3FF}html.dark #dsfig-u5-05 .lbl{fill:#858D9C}html.dark #dsfig-u5-05 .ptr{fill:#8FA3FF}html.dark #dsfig-u5-05 .ah{fill:#B1B7C3}html.dark #dsfig-u5-05 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u5-05 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u5-05 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u5-05 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah24" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh24" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M57,48.5 L193.2,116.6" marker-end="url(#ah24)"/><path class="e" d="M57,203.5 L193.2,135.4" marker-end="url(#ah24)"/><path class="e" d="M229,117.5 L365.2,49.4" marker-end="url(#ah24)"/><path class="e" d="M229,134.5 L365.2,202.6" marker-end="url(#ah24)"/><circle class="n" cx="40" cy="40" r="18"/><text class="t" x="40" y="40" dy=".35em" text-anchor="middle">C1</text><circle class="n" cx="40" cy="212" r="18"/><text class="t" x="40" y="212" dy=".35em" text-anchor="middle">C2</text><circle class="n" cx="212" cy="126" r="18"/><text class="t" x="212" y="126" dy=".35em" text-anchor="middle">N</text><circle class="n" cx="384" cy="40" r="18"/><text class="t" x="384" y="40" dy=".35em" text-anchor="middle">S1</text><circle class="n" cx="384" cy="212" r="18"/><text class="t" x="384" y="212" dy=".35em" text-anchor="middle">S2</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">DFS. Clients C1, C2 reach servers S1, S2 through the network N under one namespace</figcaption></figure>

File protection. Protection controls which user may do what to a file. The access matrix has users as rows and files as columns, each cell holding rights (read, write, execute). Stored by column it is an ACL; stored by row it is a capability list. Unix uses 9 permission bits, owner, group, others, each rwx (r=4, w=2, x=1), so 754 means owner rwx, group r-x, others r--. Example: chmod 640 notes.txt. Windows ACL example: Alice Full control, Students Read.

<figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u5-06" viewBox="0 0 338 252" width="338" height="252" role="img" aria-label="Access matrix as a graph. Users Alice A and Bob B, files F1 and F2, edge label is the right held"><style>#dsfig-u5-06 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u5-06 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u5-06 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u5-06 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u5-06 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u5-06 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u5-06 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u5-06 .t{fill:#16181D;font-weight:500}#dsfig-u5-06 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u5-06 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u5-06 .dot{fill:#16181D}#dsfig-u5-06 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u5-06 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u5-06 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u5-06 .ah{fill:#454C5A}#dsfig-u5-06 .ah.hi{fill:#2340B8}#dsfig-u5-06 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u5-06 .wl .t{font-size:12px;font-weight:700}#dsfig-u5-06 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u5-06 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u5-06 .e{stroke:#B1B7C3}html.dark #dsfig-u5-06 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u5-06 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u5-06 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u5-06 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u5-06 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u5-06 .t{fill:#E6E8ED}html.dark #dsfig-u5-06 .t.inv{fill:#0F1115}html.dark #dsfig-u5-06 .kd{stroke:#E6E8ED}html.dark #dsfig-u5-06 .dot{fill:#E6E8ED}html.dark #dsfig-u5-06 .ann{fill:#8FA3FF}html.dark #dsfig-u5-06 .lbl{fill:#858D9C}html.dark #dsfig-u5-06 .ptr{fill:#8FA3FF}html.dark #dsfig-u5-06 .ah{fill:#B1B7C3}html.dark #dsfig-u5-06 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u5-06 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u5-06 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u5-06 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah25" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh25" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M59,40 L277,40" marker-end="url(#ah25)"/><path class="e" d="M55.8,50.5 L280.5,200.4" marker-end="url(#ah25)"/><path class="e" d="M55.8,201.5 L280.5,51.6" marker-end="url(#ah25)"/><path class="e" d="M59,212 L277,212" marker-end="url(#ah25)"/><g class="wl"><rect x="155.8" y="31" width="26.4" height="18" rx="9"/><text class="t" x="169" y="40" dy=".35em" text-anchor="middle">rw</text></g><g class="wl"><rect x="159.4" y="117" width="19.2" height="18" rx="9"/><text class="t" x="169" y="126" dy=".35em" text-anchor="middle">r</text></g><g class="wl"><rect x="159.4" y="117" width="19.2" height="18" rx="9"/><text class="t" x="169" y="126" dy=".35em" text-anchor="middle">r</text></g><g class="wl"><rect x="155.8" y="203" width="26.4" height="18" rx="9"/><text class="t" x="169" y="212" dy=".35em" text-anchor="middle">rw</text></g><circle class="n" cx="40" cy="40" r="18"/><text class="t" x="40" y="40" dy=".35em" text-anchor="middle">A</text><circle class="n" cx="40" cy="212" r="18"/><text class="t" x="40" y="212" dy=".35em" text-anchor="middle">B</text><circle class="n" cx="298" cy="40" r="18"/><text class="t" x="298" y="40" dy=".35em" text-anchor="middle">F1</text><circle class="n" cx="298" cy="212" r="18"/><text class="t" x="298" y="212" dy=".35em" text-anchor="middle">F2</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">Access matrix as a graph. Users Alice A and Bob B, files F1 and F2, edge label is the right held</figcaption></figure>

file1 file2
Alice rw r
Bob r rw

File systems. A Unix inode holds owner, permissions, size, timestamps and 12 direct, one single, one double and one triple indirect block pointer; with 4 KB blocks (1024 pointers) this reaches about 4 TiB, so 12 direct blocks cover 48 KB. FAT keeps a table with one entry per cluster chaining the next cluster of each file. NTFS keeps a Master File Table (MFT) with one record per file. Directory structure: an ext directory is a file of (name, inode number) entries, in a linear list or a hashed B-tree in ext4, while NTFS keeps directories as B-trees of file names indexed in the MFT. Block allocation: ext2 and ext3 allocate single blocks through block groups with a bitmap and inode table each, and ext4 allocates an extent, a contiguous run of blocks described by one (start block, length) entry, so a large file needs few pointers and fragments less; NTFS stores a file as data runs (extents) of clusters in its MFT record. Free-space management: ext keeps a bitmap per block group with one bit per block, and NTFS keeps a bitmap file ($Bitmap) with one bit per cluster. Journaling writes intended changes to a log first, then applies them, so after a crash the log is replayed and the file system stays consistent.

FS Max file Max volume Used in
ext2 2 TiB 32 TiB old Linux, USB
ext3 2 TiB 32 TiB Linux with journal
ext4 16 TiB 1 EiB modern Linux, Android
FAT32 4 GiB minus 1 byte 2 TiB pen drives, cameras
NTFS 16 TiB in practice 256 TiB in practice Windows disks

Answer frame. Open with the definition; draw a client-server or RPC diagram; develop points 3 to 6 for design issues or transparency; close with the trade-off of transparency against performance. For failures, name three with an example each, the reliability effect, then detection and recovery. For threads, draw the thread diagram and the process table. For migration, give the same-OS steps then the extra conversion for different OS. For RPC, draw the stub diagram and add binding and failure semantics. For file protection, draw the access matrix and the rwx example. For a comparison with a centralized file system use a table.

Pitfall: Do not call a network OS a distributed OS; in a network OS users know the machine they use.

Asked: [14 marks] (Nov 2019) Short notes (any three): multiprocessor OS, distributed OS, threads, file protection Asked: [7 marks] (May 2019) Write down the features of a multiprocessor operating system Asked: [7 marks] (Nov 2023) Discuss the design issues of a distributed operating system Asked: [7 marks] (Jun 2024) Advantages and disadvantages of making the computer network transparent to the user Asked: [7 marks] (Jun 2024, Jun 2025) Three possible types of failures in a distributed system Asked: [7 marks] (Jun 2024) Benefits of a DFS compared to a file system in a centralized system Asked: [7 marks] (Jun 2025) Which aspects of a distributed system would you select for a totally reliable network Asked: [7 marks] (Jun 2025) Method for process migration across architectures running (i) the same OS (ii) different OS Asked: [3 marks] (Jun 2023) Short notes: Remote Procedure Call (RPC)

Case Studies: Unix/Linux

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Medium weight</span>

Definition. <mark>Unix and Linux are multi-user, multitasking, open-source style operating systems with a monolithic kernel and a shell, while Windows is a proprietary GUI-oriented OS from Microsoft.</mark>

Key points.

  1. Linux file systems are ext2, ext3 (adds journaling) and ext4 (extents, very large files), all with Unix permissions of owner, group and others.
  2. Windows uses FAT (simple, no permissions, small files), FAT32 and NTFS (journaling, ACL permissions, encryption, compression, huge volumes).
  3. Linux is free and open source, while Windows is paid and proprietary.
  4. Linux is command-line centred with optional GUIs; Windows is GUI first.
  5. Linux is stable for servers and needs few reboots; Windows dominates desktops and has more application support but more malware.
  6. Both are multitasking with virtual memory and preemptive scheduling.
  7. Linux file systems: ext2 has no journal, ext3 adds journaling, ext4 adds extents and 16 TiB files; Windows: FAT32 caps files at 4 GiB, NTFS has ACLs, journaling and encryption (see the size table above).
  8. Hybrid kernel means Windows keeps the microkernel idea of separate subsystems but runs many services in kernel mode for speed; a monolithic kernel runs all services in one kernel address space, so it is fast but a faulty driver can crash it (Linux loads modules to soften this).
  9. Security: Linux root is all-powerful and ordinary users work with limited permissions (sudo raises rights briefly); Windows UAC asks for consent before an administrator action.
  10. Process and memory management: Linux uses fork and exec, the Completely Fair Scheduler and demand paging with swap; Windows uses CreateProcess, priority-based preemptive scheduling with 32 levels, and paging with a page file.
  11. Stability: Linux servers often run for months without reboot; Windows needs more restarts after updates and is the larger malware target.
  12. Windows architecture: user-mode subsystems and services sit on top of the kernel-mode executive (object manager, process manager, memory manager, I/O manager, security reference monitor), which runs over the microkernel (scheduling, interrupts) and, at the bottom, the hardware abstraction layer (HAL) that hides hardware differences so one kernel runs on many platforms.
  13. Examples: Unix versions are Solaris, AIX, HP-UX, BSD; Linux distributions are Ubuntu, Red Hat, Debian, Fedora; Windows versions are 7, 10, 11 and Server 2022.
Aspect Unix/Linux Windows
Source Open Proprietary
Kernel Monolithic, modular Hybrid
File system ext2/3/4 FAT, NTFS
Security Permissions, root ACLs, UAC
Interface CLI with shell GUI
Cost Free Licensed
Use Servers Desktops

Answer frame. Open with one line on each OS; draw the comparison table; develop file systems, then security and interface; close with use cases.

Asked: [7 marks] (Jun 2023) Explain file system used in Linux and Windows Asked: [7 marks] (Jun 2026) Compare Unix/Linux and Windows operating systems

Case Studies: WINDOWS and other Contemporary Operating Systems

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. <mark>Windows NT-family systems are layered, hybrid-kernel operating systems with an object-based executive.</mark>

Key points.

  1. The hybrid kernel has a hardware abstraction layer, kernel, executive (object, memory, process, I/O managers) and user-mode subsystems.
  2. NTFS is the file system, with a registry for configuration.
  3. Other contemporary systems are macOS, Android (Linux kernel) and iOS.

Last-minute revision

  • Distributed OS: many computers appearing as one system.
  • Multiprocessor OS: asymmetric (master-slave) or symmetric (peers).
  • Transparency types: location, migration, replication, concurrency, failure.
  • Failures: crash, omission, timing, Byzantine, partition.
  • RPC: client stub marshals, server stub unmarshals.
  • DFS gives scalability, replication and availability.
  • ext4 and NTFS are journaling file systems.
  • Linux is open source with a monolithic kernel; Windows is hybrid.

Memory hooks

  • COTBP: crash, omission, timing, Byzantine, partition.
  • Stub in, stub out: RPC marshals then unmarshals.
  • Master decides, peers share: asymmetric versus symmetric.

Coverage checklist

  • Introduction to Network, Distributed and Multiprocessor Operating Systems: Nov 2019 short notes, May 2019, Nov 2023, Jun 2024 (three), Jun 2025 (three), Jun 2023 RPC.
  • Case Studies: Unix/Linux: Jun 2023, Jun 2026.
  • Case Studies: WINDOWS and other Contemporary Operating Systems: no past questions.
Go to where you left off?

Quick Add to Notes

Save questions, your own notes and screenshots into notes filed by unit. It takes a free account.

Create free account

Have an account? Log in