BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) Question Paper 2078 Nepal
This is the official BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) question paper for 2078, as set in the regular annual examination. It carries 80 full marks and a time allowance of 180 minutes, across 13 questions. On Kekkei you can attempt this Operating System (IOE, CT 656) past paper online with a timer, get instant AI feedback and step-by-step solutions, and track the topics where you lose marks — completely free. Whether you are revising for your BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) exam or solving previous years' question papers, this 2078 paper is a great way to practise under real exam conditions.
Section A: Long Answer Questions
Attempt all / any as specified.
Consider the following set of processes arriving in a single-processor system, with the length of the CPU burst given in milliseconds:
| Process | Arrival Time | Burst Time | Priority |
|---|---|---|---|
| P1 | 0 | 8 | 3 |
| P2 | 1 | 4 | 1 |
| P3 | 2 | 9 | 4 |
| P4 | 3 | 5 | 2 |
(a) Draw the Gantt charts illustrating the execution of these processes using Preemptive Priority scheduling (lower number = higher priority) and Round Robin scheduling (time quantum = 3 ms). [6]
(b) Compute the average waiting time and average turnaround time for each of the two algorithms, and comment on which performs better for this workload. [6]
(a) Gantt Charts
Preemptive Priority (lower number = higher priority). At each instant the ready process with the smallest priority number runs.
- : only P1 runs.
- : P2 (priority 1) arrives and preempts P1.
- P2 runs to completion (it has the highest priority) finishing at .
- : ready = P1(pr3, 7 left), P3(pr4), P4(pr2). P4 has the highest priority → runs 5 ms → done at 10.
- : P1(pr3) vs P3(pr4) → P1 runs its remaining 7 ms → done at 17.
- : P3 runs 9 ms → done at 26.
| P1 | P2 | P4 | P1 | P3 |
0 1 5 10 17 26
Round Robin (time quantum = 3 ms). Newly arrived processes join the tail of the ready queue before a preempted process.
| P1 | P2 | P3 | P4 | P1 |P2| P3 | P4 | P1 | P3 |
0 3 6 9 12 15 16 19 21 23 26
Completion: P1=23, P2=16, P3=26, P4=21.
(b) Average Waiting Time and Turnaround Time
Turnaround = Completion − Arrival; Waiting = Turnaround − Burst.
Preemptive Priority (completions: P1=17, P2=5, P3=26, P4=10)
| Process | TAT | WT |
|---|---|---|
| P1 | 17 | 9 |
| P2 | 4 | 0 |
| P3 | 24 | 15 |
| P4 | 7 | 2 |
- Average TAT ms
- Average WT ms
Round Robin (completions: P1=23, P2=16, P3=26, P4=21)
| Process | TAT | WT |
|---|---|---|
| P1 | 23 | 15 |
| P2 | 15 | 11 |
| P3 | 24 | 15 |
| P4 | 18 | 13 |
- Average TAT ms
- Average WT ms
Comment: Preemptive Priority performs better for this workload (avg WT 6.5 vs 13.5 ms, avg TAT 13 vs 20 ms). Round Robin shares the CPU fairly but its frequent context switches and round-trips inflate waiting and turnaround times. Priority scheduling, however, risks starvation of low-priority processes (here P3), which RR avoids.
(a) State the critical section problem and explain the three requirements (mutual exclusion, progress, and bounded waiting) that any solution must satisfy. [4]
(b) Explain how semaphores can be used to solve the bounded-buffer (producer-consumer) problem. Write the structure of the producer and consumer processes using the semaphores mutex, full, and empty. [8]
(a) The Critical-Section Problem
When several processes share data, each has a segment of code called the critical section (CS) in which it accesses or updates the shared data. The critical-section problem is to design a protocol the processes can use to cooperate, so that no two processes execute in their critical sections at the same time. Each process has the structure: entry section → critical section → exit section → remainder section.
Any correct solution must satisfy three requirements:
- Mutual Exclusion — If a process is executing in its critical section, then no other process can be executing in its critical section at the same time.
- Progress — If no process is in its CS and some processes wish to enter, then only those not in their remainder section participate in deciding who enters next, and this decision cannot be postponed indefinitely (no process outside the CS may block another from entering).
- Bounded Waiting — There exists a bound on the number of times other processes are allowed to enter their critical sections after a process has made a request to enter and before that request is granted (prevents starvation).
(b) Bounded-Buffer Problem using Semaphores
A producer puts items into a buffer of slots and a consumer removes them. Three semaphores coordinate them:
mutex— a binary semaphore (initial value 1) providing mutual exclusion on the buffer.empty— a counting semaphore (initial value n) counting the empty slots.full— a counting semaphore (initial value 0) counting the filled slots.
Producer process:
do {
// produce an item in next_produced
wait(empty); // wait for an empty slot
wait(mutex); // enter critical section
// add next_produced to the buffer
signal(mutex); // leave critical section
signal(full); // one more full slot
} while (true);
Consumer process:
do {
wait(full); // wait for a filled slot
wait(mutex); // enter critical section
// remove an item from buffer into next_consumed
signal(mutex); // leave critical section
signal(empty); // one more empty slot
// consume the item in next_consumed
} while (true);
empty/full block the producer when the buffer is full and the consumer when it is empty, while mutex guarantees that the buffer is updated by only one process at a time. Note that wait(empty)/wait(full) must precede wait(mutex) to avoid deadlock.
(a) What is demand paging? Explain the steps taken by the operating system to handle a page fault with the help of a diagram. [6]
(b) Consider the page reference string: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 for a memory with three frames. Determine the number of page faults using FIFO, Optimal, and LRU page replacement algorithms. Which algorithm suffers from Belady's anomaly and why? [6]
(a) Demand Paging and Page-Fault Handling
Demand paging is a virtual-memory technique in which a page is brought from secondary storage into main memory only when it is actually referenced (on demand), rather than loading the whole process at once. Each page-table entry carries a valid/invalid bit: valid means the page is in memory, invalid means it is not (it is on disk or illegal).
Steps to handle a page fault:
- The CPU references a page; the MMU finds the page-table entry marked invalid → a page-fault trap to the OS.
- The OS checks an internal table to decide whether the reference is legal (just not yet loaded) or illegal (terminate the process).
- Find a free frame in physical memory (from the free-frame list). If none is free, run a page-replacement algorithm to free one (write it back to disk if dirty).
- Schedule a disk read to bring the desired page from backing store into the chosen frame; the process is blocked meanwhile.
- On I/O completion, update the page table (set the frame number and the valid bit) and the OS internal tables.
- Restart the instruction that caused the fault; the reference now succeeds.
Diagram (in words): CPU → reference → page table (invalid) → trap to OS → check legality → locate page on backing store → bring page into a free frame → reset page table → restart the trapped instruction.
(b) Page Replacement — 3 Frames
Reference string: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
FIFO (replace the oldest-loaded page): Faults occur at: 7,0,1,2,3,0,4,2,3,0,1,2,7,0,1 → 15 page faults.
Optimal (replace the page not used for the longest time in future): 9 page faults.
LRU (replace the least-recently-used page): 12 page faults.
| Algorithm | Page faults |
|---|---|
| FIFO | 15 |
| Optimal | 9 |
| LRU | 12 |
Belady's anomaly: Only FIFO suffers from it — increasing the number of frames can increase the number of page faults. This happens because FIFO replaces pages purely by load order, ignoring usage, so its set of pages held with more frames is not guaranteed to be a superset of the set held with fewer frames. Optimal and LRU are stack algorithms (the pages held with frames are always a subset of those held with frames), so they never exhibit Belady's anomaly.
Consider a system with five processes (P0 through P4) and three resource types (A, B, C) with A having 10 instances, B having 5 instances, and C having 7 instances. At time T0 the state is:
| Process | Allocation (A B C) | Max (A B C) |
|---|---|---|
| P0 | 0 1 0 | 7 5 3 |
| P1 | 2 0 0 | 3 2 2 |
| P2 | 3 0 2 | 9 0 2 |
| P3 | 2 1 1 | 2 2 2 |
| P4 | 0 0 2 | 4 3 3 |
(a) Compute the Need matrix and the Available vector. [3]
(b) Using the Banker's algorithm, determine whether the system is in a safe state and give a safe sequence if one exists. [6]
(c) If a request (1, 0, 2) arrives from process P1, can it be granted immediately? Justify your answer. [3]
Total resources: A=10, B=5, C=7.
(a) Need Matrix and Available Vector
Need = Max − Allocation.
| Process | Allocation | Max | Need (A B C) |
|---|---|---|---|
| P0 | 0 1 0 | 7 5 3 | 7 4 3 |
| P1 | 2 0 0 | 3 2 2 | 1 2 2 |
| P2 | 3 0 2 | 9 0 2 | 6 0 0 |
| P3 | 2 1 1 | 2 2 2 | 0 1 1 |
| P4 | 0 0 2 | 4 3 3 | 4 3 1 |
Total allocated = (7, 2, 5). Available = Total − Allocated = (10−7, 5−2, 7−5) = (3, 3, 2).
(b) Safe-State Check (Banker's Algorithm)
Start with Work = Available = (3, 3, 2); all processes unfinished.
| Step | Process | Need ≤ Work? | New Work = Work + Allocation |
|---|---|---|---|
| 1 | P1 | (1,2,2) ≤ (3,3,2) ✓ | (3,3,2)+(2,0,0) = (5,3,2) |
| 2 | P3 | (0,1,1) ≤ (5,3,2) ✓ | (5,3,2)+(2,1,1) = (7,4,3) |
| 3 | P0 | (7,4,3) ≤ (7,4,3) ✓ | (7,4,3)+(0,1,0) = (7,5,3) |
| 4 | P2 | (6,0,0) ≤ (7,5,3) ✓ | (7,5,3)+(3,0,2) = (10,5,5) |
| 5 | P4 | (4,3,1) ≤ (10,5,5) ✓ | (10,5,5)+(0,0,2) = (10,5,7) |
All processes finish, so the system is in a safe state, with safe sequence ⟨P1, P3, P0, P2, P4⟩ (other valid sequences also exist).
(c) Request (1, 0, 2) from P1
Apply the Resource-Request algorithm:
- Request (1,0,2) ≤ Need(P1) = (1,2,2)? Yes.
- Request (1,0,2) ≤ Available = (3,3,2)? Yes.
- Tentatively allocate: Available = (3,3,2) − (1,0,2) = (2,3,0); Allocation(P1) = (3,0,2); Need(P1) = (0,2,0).
Run the safety check from Work = (2,3,0):
- P1: Need(0,2,0) ≤ (2,3,0) ✓ → Work = (5,3,2)
- P3: (0,1,1) ≤ (5,3,2) ✓ → (7,4,3)
- P0: (7,4,3) ≤ (7,4,3) ✓ → (7,5,3)
- P2: (6,0,0) ✓ → (10,5,5)
- P4: (4,3,1) ✓ → (10,5,7)
The resulting state is safe (sequence ⟨P1, P3, P0, P2, P4⟩), so the request can be granted immediately.
Section B: Short Answer Questions
Attempt all / any as specified.
Draw and explain the process state transition diagram. Describe the contents of a Process Control Block (PCB) and state why it is needed during a context switch.
Process State Transition Diagram
A process passes through these states (arrows show transitions):
admit dispatch exit
NEW ----------> READY -----------> RUNNING --------> TERMINATED
^ | |
I/O / event | timeout / | | I/O or event wait
completion | interrupt | v
+---------------- WAITING
- New — the process is being created.
- Ready — waiting to be assigned to the CPU.
- Running — instructions are being executed.
- Waiting (Blocked) — waiting for an event such as I/O completion.
- Terminated — the process has finished execution.
Key transitions: admit (New→Ready), dispatch (Ready→Running by the scheduler), timeout/interrupt (Running→Ready), I/O or event wait (Running→Waiting), I/O completion (Waiting→Ready), exit (Running→Terminated).
Process Control Block (PCB)
The PCB is the data structure the OS keeps for each process. It stores:
- Process state (new, ready, running, waiting, terminated).
- Process identifier (PID).
- Program counter — address of the next instruction.
- CPU registers — accumulators, index registers, stack pointers, general-purpose registers.
- CPU-scheduling information — priority, scheduling-queue pointers.
- Memory-management information — base/limit registers, page or segment tables.
- Accounting information — CPU used, time limits, process numbers.
- I/O status information — open files, allocated devices.
Why the PCB is needed during a context switch
When the CPU switches from one process to another, the OS must save the current process's state into its PCB (program counter, registers, etc.) and load the next process's state from its PCB. The PCB thus preserves the complete execution context so a suspended process can later resume exactly where it left off, making safe multiplexing of the CPU among processes possible.
Differentiate between preemptive and non-preemptive scheduling. Explain the meaning of the scheduling criteria: CPU utilization, throughput, turnaround time, waiting time, and response time.
Preemptive vs Non-Preemptive Scheduling
| Aspect | Preemptive | Non-Preemptive |
|---|---|---|
| CPU release | The OS can forcibly take the CPU from a running process (e.g., on timer interrupt or arrival of a higher-priority process) | A process keeps the CPU until it finishes or voluntarily blocks (terminates or requests I/O) |
| Context switches | More frequent → higher overhead | Fewer → lower overhead |
| Responsiveness | Better; suits time-sharing/real-time systems | Poorer; a short job may wait behind a long one (convoy effect) |
| Examples | Round Robin, Preemptive SJF (SRTF), Preemptive Priority | FCFS, Non-preemptive SJF, Non-preemptive Priority |
| Data consistency | Needs synchronization for shared data | Simpler, fewer race conditions |
Scheduling Criteria
- CPU Utilization — the fraction of time the CPU is kept busy doing useful work; we want to maximize it (ideally 40–90% in real systems).
- Throughput — the number of processes completed per unit time; we want to maximize it.
- Turnaround Time — total time from submission of a process to its completion: ; minimize.
- Waiting Time — total time a process spends in the ready queue: ; minimize.
- Response Time — time from submission until the first response (first time the process gets the CPU), important in interactive systems; minimize.
(a) Explain what a deadlock is and list the four necessary conditions that must hold simultaneously for a deadlock to occur. [3]
(b) Differentiate between deadlock prevention and deadlock avoidance. [3]
(a) Deadlock and the Four Necessary Conditions
A deadlock is a situation in which a set of processes are blocked because each process is holding a resource and waiting to acquire a resource held by another process in the set, so none can proceed.
Four conditions must hold simultaneously for a deadlock (Coffman conditions):
- Mutual Exclusion — at least one resource is held in a non-sharable mode; only one process can use it at a time.
- Hold and Wait — a process holding at least one resource is waiting to acquire additional resources held by other processes.
- No Preemption — a resource cannot be forcibly taken away; it is released only voluntarily by the holding process.
- Circular Wait — there exists a set such that waits for a resource held by , for one held by , …, for one held by .
(b) Deadlock Prevention vs Deadlock Avoidance
| Deadlock Prevention | Deadlock Avoidance |
|---|---|
| Ensures deadlock can never occur by structurally negating at least one of the four necessary conditions (e.g., no hold-and-wait, allow preemption, impose resource ordering to break circular wait). | Allows the four conditions to be possible but uses advance knowledge of future resource needs (Max claims) to keep the system in a safe state at all times. |
| Decisions are static / built into the resource-request rules. | Decisions are dynamic; each request is examined before granting (e.g., Banker's algorithm). |
| Can lead to low resource utilization and reduced throughput. | Better resource utilization, but requires knowing maximum needs in advance and is computationally costlier. |
Explain the concept of paging. Given a logical address space of 16 pages with a page size of 1 KB mapped into a physical memory of 32 frames, determine the number of bits required for the logical address and the physical address, and show how a logical address is translated into a physical address using the page table.
Concept of Paging
Paging is a non-contiguous memory-management scheme. Physical memory is divided into fixed-size blocks called frames and logical memory into blocks of the same size called pages. When a process runs, its pages are loaded into any available frames, and a per-process page table maps each page number to a frame number. A logical (virtual) address is split into a page number () and a page offset (); indexes the page table to obtain the frame number , and the physical address is formed as . Paging eliminates external fragmentation.
Given Data and Address Sizes
- Logical address space = 16 pages → , so page number = 4 bits.
- Page size = 1 KB = bytes → offset = 10 bits.
- Physical memory = 32 frames → , so frame number = 5 bits.
Logical address size (logical space KB).
Physical address size (physical memory KB).
Address Translation
Logical address (14 bits): | page no. p (4 bits) | offset d (10 bits) |
|
v
page table[p] = frame no. f (5 bits)
|
v
Physical address (15 bits): | frame no. f (5 bits) | offset d (10 bits) |
Example: suppose page 2 maps to frame 5 and the offset is 100. Physical address . The 10-bit offset is copied unchanged; only the page-number field is replaced by the frame number from the page table.
What is fragmentation? Distinguish between internal and external fragmentation. Explain how the First-fit, Best-fit, and Worst-fit contiguous memory allocation strategies work and compare their effect on fragmentation.
Fragmentation
Fragmentation is the wastage of memory that arises as memory is allocated to and freed by processes, leaving unusable space.
| Internal Fragmentation | External Fragmentation |
|---|---|
| Wasted space inside an allocated block/partition because the process needs less than the fixed block size. | Total free memory is enough, but it is scattered in small non-contiguous holes, so no single hole is large enough for a request. |
| Occurs with fixed-size partitions / paging (last partial page). | Occurs with variable-size (dynamic) contiguous allocation. |
| Remedy: smaller block sizes. | Remedy: compaction or paging/segmentation. |
Contiguous Allocation Strategies
For a request of size , the OS searches the list of free holes:
- First-fit — allocate the first hole that is large enough. Fast (least searching); leaves leftover holes spread throughout memory.
- Best-fit — allocate the smallest hole that is large enough (search whole list / keep it sorted). Minimizes leftover in that hole, but tends to create many tiny, unusable holes and is slower.
- Worst-fit — allocate the largest available hole. The idea is that the leftover is large enough to be useful, but in practice it wastes big holes quickly and performs worst on utilization.
Comparison
- First-fit and Best-fit are generally better than Worst-fit in storage utilization; First-fit is also faster.
- Best-fit produces the most external fragmentation in the form of many small leftover holes.
- Worst-fit leaves larger usable leftovers but exhausts large blocks fastest, giving the poorest overall utilization. All three suffer from external fragmentation, which can be reduced by compaction.
Compare the contiguous, linked, and indexed file allocation methods. For each method, discuss its support for sequential and direct (random) access and its disadvantages.
File Allocation Methods
| Method | How it works | Sequential access | Direct (random) access | Disadvantages |
|---|---|---|---|---|
| Contiguous | File occupies a set of consecutive blocks; directory stores start block + length. | Excellent — just read the next block. | Excellent — block = start + (simple arithmetic). | Suffers external fragmentation; hard to grow a file; need to know size in advance; may require compaction. |
| Linked | Each block holds data plus a pointer to the next block; directory stores first and last block. | Good — follow pointers block by block. | Poor — to reach block you must traverse pointers from the start. | Pointer overhead (space lost per block); poor random access; reliability problem if a pointer is lost/damaged the rest of the file is lost. |
| Indexed | All block pointers are gathered into an index block; directory points to the index block. | Good. | Good — the -th entry of the index block gives block directly. | Index-block overhead (wastes space for small files); for very large files a single index block may be insufficient, needing multi-level/linked indexes. |
Summary
- Contiguous gives the best access in both modes but the worst space management (fragmentation, growth problems).
- Linked solves fragmentation and growth but cripples direct access and adds reliability risk.
- Indexed supports both sequential and direct access well and avoids external fragmentation, at the cost of index-block space overhead.
A disk queue with requests for I/O to blocks on cylinders arrives in the order: 98, 183, 37, 122, 14, 124, 65, 67. The disk head is currently at cylinder 53. Calculate the total head movement (in cylinders) required to service these requests using the FCFS, SSTF, and SCAN disk scheduling algorithms (assume the head is moving toward the higher numbered cylinders for SCAN).
Request queue (cylinders): 98, 183, 37, 122, 14, 124, 65, 67. Head starts at 53. (SCAN assumes a 0–199 cylinder disk; head first moves toward higher cylinders.)
FCFS (serve in arrival order)
Path: 53 → 98 → 183 → 37 → 122 → 14 → 124 → 65 → 67
SSTF (always serve the nearest request)
Path: 53 → 65 → 67 → 37 → 14 → 98 → 122 → 124 → 183
SCAN (move up to the end, then reverse)
Sorted requests: 14, 37, 65, 67, 98, 122, 124, 183. Going up: 53 → 65 → 67 → 98 → 122 → 124 → 183 → 199 (disk end), then reverse: 199 → 37 → 14.
Summary
| Algorithm | Total head movement |
|---|---|
| FCFS | 640 |
| SSTF | 236 |
| SCAN | 331 |
SSTF gives the least movement here; FCFS the most. (If SCAN does not travel to cylinder 199 but reverses at the last request 183, the total would be .)
What is thrashing? Explain its cause with reference to the degree of multiprogramming and CPU utilization. Describe how the working-set model can be used to control thrashing.
Thrashing
Thrashing is a condition in which a process (or the system) spends more time paging (servicing page faults) than executing useful instructions, because it does not have enough frames to hold its actively used pages.
Cause — Degree of Multiprogramming vs CPU Utilization
The OS monitors CPU utilization; when it is low, it raises the degree of multiprogramming by admitting more processes. As more processes compete for a fixed amount of physical memory, each gets fewer frames. Eventually a process does not have enough frames for its working set, so it faults frequently. Faulting processes queue for the paging device, the ready queue empties, and CPU utilization drops further. The OS misreads this as needing even more processes, admits more, and the situation worsens sharply.
Graphically, CPU utilization rises with the degree of multiprogramming up to a point, then falls steeply once thrashing begins.
Controlling Thrashing — The Working-Set Model
The working set of a process is the set of pages referenced in the most recent references (the working-set window). Its size approximates the locality the process currently needs.
- Compute the total demand over all processes.
- If (total available frames), the system will thrash. The OS then suspends/swaps out one or more processes (lowering the degree of multiprogramming) and distributes their frames to the rest.
- A process is only allowed to run if enough frames are available to hold its entire working set, which keeps the page-fault rate low and prevents thrashing.
(An alternative practical control is the page-fault-frequency (PFF) scheme: keep each process's fault rate between an upper and lower bound by allocating/reclaiming frames accordingly.)
Write short notes on any TWO of the following: (a) Inter-process communication (IPC) using message passing (b) Multithreading models (many-to-one, one-to-one, many-to-many) (c) System calls and their types
(Answer any two.)
(a) Inter-Process Communication (IPC) using Message Passing
Message passing lets processes communicate and synchronize without sharing an address space, using two primitives send(message) and receive(message). A communication link must exist between the processes. Implementation choices:
- Direct vs indirect — name the receiver/sender explicitly, or send through a shared mailbox/port.
- Synchronous (blocking) vs asynchronous (non-blocking) — blocking send waits until the message is received; non-blocking send continues immediately.
- Buffering — zero, bounded, or unbounded capacity queue.
It is well suited to distributed systems and avoids race conditions on shared memory, but has higher overhead (kernel involvement, copying).
(b) Multithreading Models
These describe how user threads map to kernel threads:
- Many-to-One — many user threads map to one kernel thread. Thread management is fast (user space) but a single blocking system call blocks the whole process, and it cannot run threads in parallel on multiple cores.
- One-to-One — each user thread maps to its own kernel thread. True parallelism and a blocking call blocks only that thread, but creating many kernel threads is costly (used by Linux, Windows).
- Many-to-Many — many user threads are multiplexed onto a smaller or equal number of kernel threads. Combines concurrency with parallelism and avoids the drawbacks of the other two.
(c) System Calls and Their Types
A system call is the programmatic interface through which a user program requests a service from the OS kernel, switching from user mode to kernel mode (usually via an API such as the Win32 API or POSIX). Major categories:
- Process control —
fork(),exit(),wait(), load, execute. - File management —
open(),read(),write(),close(), create/delete. - Device management — request/release device, read/write.
- Information maintenance —
getpid(), get/set time, system data. - Communication — create/delete connection,
send()/receive(), pipes. - Protection — set permissions, allow/deny access.
Frequently asked questions
- Where can I find the BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) question paper 2078?
- The full BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) 2078 (regular) question paper is available free on Kekkei. You can read every question online and attempt the paper under timed exam conditions.
- Does the Operating System (IOE, CT 656) 2078 paper come with solutions?
- Yes. Every question on this Operating System (IOE, CT 656) past paper includes a step-by-step solution, plus instant AI feedback when you attempt it on Kekkei.
- How many marks is the BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) 2078 paper?
- The BE Computer Engineering (IOE, TU) Operating System (IOE, CT 656) 2078 paper carries 80 full marks and is meant to be completed in 180 minutes, across 13 questions.
- Is practising this Operating System (IOE, CT 656) past paper free?
- Yes — reading and attempting this Operating System (IOE, CT 656) past paper on Kekkei is completely free.