Bird
Raised Fist0
Operating Systemsknowledge~10 mins

Memory-mapped files in Operating Systems - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a memory-mapped file in Python.

Operating Systems
import mmap
with open('example.txt', 'r+b') as f:
    mm = mmap.mmap(f.fileno(), [1])
    print(mm.readline())
Drag options to blanks, or click blank then click option'
A1024
B-1
C0
DNone
Attempts:
3 left
💡 Hint
Common Mistakes
Using 0 or -1 as size causes errors or unexpected behavior.
2fill in blank
medium

Complete the code to open a memory-mapped file with read-only access.

Operating Systems
import mmap
with open('data.bin', 'rb') as f:
    mm = mmap.mmap(f.fileno(), 0, access=[1])
    print(mm.read(10))
Drag options to blanks, or click blank then click option'
Ammap.ACCESS_WRITE
Bmmap.ACCESS_DEFAULT
Cmmap.ACCESS_COPY
Dmmap.ACCESS_READ
Attempts:
3 left
💡 Hint
Common Mistakes
Using ACCESS_WRITE allows writing, which is not desired here.
3fill in blank
hard

Fix the error in the code to correctly map the entire file size.

Operating Systems
import os
import mmap
filename = 'logfile.log'
size = os.path.getsize(filename)
with open(filename, 'r+b') as f:
    mm = mmap.mmap(f.fileno(), [1])
    print(mm[:10])
Drag options to blanks, or click blank then click option'
A-1
B0
Csize
Dlen(filename)
Attempts:
3 left
💡 Hint
Common Mistakes
Passing 0 maps the whole file only on some systems, which is not portable.
4fill in blank
hard

Fill both blanks to create a memory-mapped file and write data to it.

Operating Systems
import mmap
with open('file.dat', 'r+b') as f:
    mm = mmap.mmap(f.fileno(), [1], access=[2])
    mm[0:5] = b'Hello'
    mm.flush()
Drag options to blanks, or click blank then click option'
A10
Bmmap.ACCESS_READ
Cmmap.ACCESS_WRITE
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using ACCESS_READ prevents writing and causes errors.
5fill in blank
hard

Fill all three blanks to create a memory-mapped file, read a slice, and close it properly.

Operating Systems
import mmap
with open('sample.txt', 'r+b') as f:
    mm = mmap.mmap(f.fileno(), [1], access=[2])
    data = mm[[3]:[3]+5]
    print(data)
    mm.close()
Drag options to blanks, or click blank then click option'
A20
Bmmap.ACCESS_READ
C10
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using ACCESS_WRITE when only reading is needed.

Practice

(1/5)
1. What is the main advantage of using memory-mapped files in an operating system?
easy
A. They allow programs to access file data as if it were in memory, improving speed.
B. They compress files automatically to save disk space.
C. They encrypt files for security purposes.
D. They convert files into executable programs.

Solution

  1. Step 1: Understand what memory-mapped files do

    Memory-mapped files let programs treat file contents like part of the computer's memory.
  2. Step 2: Identify the benefit of this approach

    This allows faster and easier access to file data without explicit read/write calls.
  3. Final Answer:

    They allow programs to access file data as if it were in memory, improving speed. -> Option A
  4. Quick Check:

    Memory-mapped files = fast file access [OK]
Hint: Memory-mapped files map files to memory for speed [OK]
Common Mistakes:
  • Confusing memory-mapping with file compression
  • Thinking memory-mapping encrypts files
  • Assuming memory-mapping creates executables
2. Which system call is commonly used on Unix-like systems to create a memory-mapped file?
easy
A. open()
B. fork()
C. mmap()
D. exec()

Solution

  1. Step 1: Recall Unix system calls related to memory mapping

    The mmap() system call is designed to map files or devices into memory.
  2. Step 2: Differentiate from other system calls

    open() opens files, fork() creates processes, and exec() runs programs, none map files to memory.
  3. Final Answer:

    mmap() -> Option C
  4. Quick Check:

    Unix memory mapping = mmap() [OK]
Hint: Unix memory mapping uses mmap() call [OK]
Common Mistakes:
  • Choosing open() instead of mmap()
  • Confusing fork() with memory mapping
  • Thinking exec() maps files
3. Consider this pseudocode using memory-mapped files:
map = mmap(file)
map[0] = 'A'
print(file.read(1))
What will be printed?
medium
A. Nothing, because mmap disables file reading
B. The first byte of the file before mapping
C. An error because file.read() conflicts with mmap
D. 'A', the updated first byte via memory mapping

Solution

  1. Step 1: Understand memory-mapped file behavior

    Writing to the mapped memory changes the file content directly.
  2. Step 2: Analyze the print statement

    Reading the first byte from the file after mapping reflects the change 'A'.
  3. Final Answer:

    'A', the updated first byte via memory mapping -> Option D
  4. Quick Check:

    Memory map write updates file content [OK]
Hint: Changes in mmap reflect in file reads immediately [OK]
Common Mistakes:
  • Assuming file.read() shows old data
  • Thinking mmap disables file reading
  • Expecting an error from simultaneous access
4. Identify the error in this memory-mapped file usage snippet:
fd = open('data.txt', 'r')
map = mmap(fd, length=100)
map[0] = 'B'
medium
A. Length parameter must be zero for mmap
B. File opened in read-only mode but writing to map attempted
C. File descriptor should be closed before mmap
D. map[0] cannot be assigned a character

Solution

  1. Step 1: Check file open mode

    The file is opened with 'r' (read-only), so writing to mapped memory is not allowed.
  2. Step 2: Understand mmap write restrictions

    Writing to a read-only mapped area causes an error or undefined behavior.
  3. Final Answer:

    File opened in read-only mode but writing to map attempted -> Option B
  4. Quick Check:

    Read-only file + write mmap = error [OK]
Hint: Write to mmap needs writable file open mode [OK]
Common Mistakes:
  • Ignoring file open mode when writing
  • Thinking length=0 is required
  • Believing file must be closed before mmap
5. You want to share data between two running processes efficiently. Which feature of memory-mapped files helps achieve this?
hard
A. Mapping the same file into both processes' memory spaces to share data
B. Compressing the file to reduce memory usage
C. Encrypting the file to secure shared data
D. Automatically syncing file changes to a remote server

Solution

  1. Step 1: Understand inter-process communication needs

    Sharing data between processes requires a common memory area accessible to both.
  2. Step 2: Identify memory-mapped file feature for sharing

    Mapping the same file into both processes' memory allows them to read/write shared data efficiently.
  3. Final Answer:

    Mapping the same file into both processes' memory spaces to share data -> Option A
  4. Quick Check:

    Memory-mapped files enable shared memory between processes [OK]
Hint: Shared mapping = shared data between processes [OK]
Common Mistakes:
  • Confusing compression with sharing
  • Assuming encryption shares data
  • Thinking syncing to server shares memory
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard