Correct Answer: B. The API provides a portable, convenient interface that hides low-level system-call details
Explanation:
An API presents stable functions and data types while libraries translate requests into platform-specific system calls.
This improves portability and reduces dependence on low-level calling conventions.
Registers provide a direct and efficient way to pass a small number of system-call arguments.
Larger or more numerous arguments are often placed in a memory block instead.
Correct Answer: D. Store the arguments in a memory block and pass its address
Explanation:
A memory block can hold many or large parameters, while a register passes the block address.
This avoids being limited by the small number of available argument registers.
fork() creates a child process whose initial state is based on the parent process.
The other calls access files or change permissions rather than create processes.
exec() loads a new program into the current process while preserving the process identity.
It replaces the address-space contents rather than creating an additional process.
wait() lets a parent collect a child's termination status and synchronize with the child's completion.
Without it, a completed child may remain as a zombie until its status is collected.
Resource allocation assigns limited hardware and software resources among competing processes and users.
This includes processor scheduling, memory allocation, and device allocation decisions.
Accounting tracks resource usage for billing, quotas, auditing, or performance analysis.
The other options solve synchronization, memory, or I/O transfer problems.
Correct Answer: B. Protection controls authorized access inside the system, while security also defends against external and internal threats
Explanation:
Protection defines and enforces which subjects may access which objects and operations.
Security is broader and includes authentication, attack resistance, confidentiality, integrity, and related defenses.
A shell is a user-facing system program that interprets commands and requests operating-system services.
Interrupt handlers belong to kernel code, while the other choices are hardware components.
The program-execution service prepares a program, starts it, and handles normal or abnormal completion.
The other services may be useful but do not define the act of starting a program.
The I/O service provides controlled access to devices through operating-system interfaces and drivers.
Applications therefore avoid manipulating device registers and protocols directly.