CS149 All Midterm2 - REAL

0.0(0)
studied byStudied by 2 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/107

flashcard set

Earn XP

Description and Tags

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

108 Terms

1
New cards
When we execute a C program, CPU runs in ____ mode.
a) user
b) kernel
c) supervisory
d) system
a) user
2
New cards
In ____ mode, the kernel runs on behalf of the user.
a) user
b) kernel
c) real
d) all
b) Kernal
3
New cards
In the layered approach of Operating Systems __________
a) Bottom Layer(0) is the User interface
b) Highest Layer(N) is the User interface
c) Bottom Layer(N) is the hardware
d) Highest Layer(N) is the hardware
b) Highest Layer(N) is the User interface
4
New cards
Less privileged mode is often referred as
A.User Mode
B.Control Mode
C.Kernel Mode
D.System Mode
a) User Mode
5
New cards
What statement concerning privileged instructions is considered false?
A) They may cause harm to the system.
B) They can only be executed in kernel mode.
C) They cannot be attempted from user mode.
D) They are used to manage interrupts.
c) They cannot be attempted from user mode
6
New cards
How can the software run protected functions in kernel mode?
a) Sending signals to CPU through bus
b) Executing a special operation called system call (trap)
c) Executing a special program called system program
d) Executing a special program called interrupt trigger program
b) Executing a special operation called system call (trap)
7
New cards
Switching the CPU to another Process requires to save state of the old process and loading new process state is called as __________.
A. Process Blocking
B. Context Switch
C. Time Sharing
D. None of the above
b) Context Switch
8
New cards
What is true about the timer interrupt?
1.The OS sets up a hardware timer that generate an interrupt every N milliseconds.
2.That interrupt is delivered to the kernel and user-code is interrupted.
3.The CPU knows what code to run when the timer interrupt occurs. The CPU scheduler will run next to schedule another process.
4.All of the above
4(D) all of the above
1.It works like any other hardware interrupt. For example your disk will force a switch to the kernel when it has completed an IO.
9
New cards
A fork system call will fail if
A. The previously executed statement is also a fork call
B. The limit on the maximum number of processes in the system would be exceeded.
C. The limit on the maximum number of processes that can be under execution by a single user would be exceeded.
D. Both (b) & (c)
D. Both (b) & (c)
10
New cards
The PID of the kernel process is
A. Undefined
B. 0
C. 1
D. 3
B

PID of the kernel process is 0.
There are two tasks with especially distinguished process IDs: swapper or sched has process ID 0 and is responsible for paging, and is actually part of the kernel rather than a normal user-mode process. Process ID 1 is usually the init process primarily responsible for starting and shutting down the system.
The process identifier (PID) is a number used by most operating system kernels such as those of UNIX, mac OS and Microsoft windows to uniquely identify an active process.
Process 0 is a special process that is created when the system boots; after forking a child process (process 1), process 0 becomes the swapper process.
11
New cards
How does the OS communicate to an application process?
A)Signals
B)Bus
C)Hardware interrupts
D)Ethernet
A
APUE: Signals are a technique used to notify a process that some condition has occurred. For example, if a process divides by zero, the signal whose name is SIGFPE (floating-point exception) is sent to the process. The process has three choices for dealing with the signal.

1. Ignore the signal. This option isn't recommended for signals that denote a hardware exception, such as dividing by zero or referencing memory outside the address space of the process, as the results are undefined.
2. Let the default action occur. For a divide-by-zero condition, the default is to terminate the process.
3. Provide a function that is called when the signal occurs (this is called ''catching'' the signal). By providing a function of our own, we'll know when the signal occurs and we can handle it as we wish.

Many conditions generate signals. Two terminal keys, called the interrupt key— often the DELETE key or Control-C—and the quit key—often Control-backslash—are used to interrupt the currently running process. Another way to generate a signal is by calling the kill function. We can call this function from a process to send a signal to another process. Naturally, there are limitations: we have to be the owner of the other process (or the superuser) to be able to send it a signal.
12
New cards
What best describes a signal?
a)any hardware device generated interrupt
b) software or hardware generated event, mediated by kernel
c) any interrupt always generated by a user
d) none of the mentioned
B
https://stackoverflow.com/questions/45485093/signal-vs-exceptions-vs-hardware-interrupts-vs-traps
13
New cards
A (harware-generated) interrupt breaks the execution of instructions and diverts its execution to
a) Interrupt handler routine
b) Counter word register
c) Execution unit
d) control unit
a) Interrupt handler routine
14
New cards
What is the name of the signal handler function in this code?
A)sig_int
B)signal
C)err_sys
D)main

#include "apue.h"
#include
static void sig_int(int);
int main(void)
{
char buf[MAXLINE];
pid_t pid;
int status;

if(signal(SIGINT, sig_int) == SIG_ERR){
err_sys("signal error");
}

printf("%% ");
while(fgets(buf, MAXLINE, stdin) != NULL)
{
if(buf[strlen(buf) - 1] == '\n')
{
buf[strlen(buf) - 1] == 0;
}

if((pid = fork()) < 0)
{
err_sys("fork error");
}
else if (pid == 0)
{
execlp(buf, buf, (char *)0);
err_ret("couldn't execute: %s", buf);
exit(127);
}

if ((pid = wait(pid, &status, 0)) < 0)
{
err_sys("waitpid error");
}
printf("%% ");
}
exit(0);

}
void sig_int (int signo)
{
printf("interrupt\n%% ");
}
A
Signals are a technique used to notify a process that some condition has occurred. For example, if a process divides by zero, the signal whose name is SIGFPE (floating-point exception) is sent to the process. The process has three choices for dealing with the signal.
1. Ignore the signal. This option isn't recommended for signals that denote a hardware exception, such as dividing by zero or referencing memory outside the address space of the process, as the results are undefined.
2. Let the default action occur. For a divide-by-zero condition, the default is to terminate the process.
3. Provide a function that is called when the signal occurs (this is called ''catching'' the signal). By providing a function of our own, we'll know when the signal occurs and we can handle it as we wish.
Many conditions generate signals. Two terminal keys, called the interrupt key— often the DELETE key or Control-C—and the quit key—often Control-backslash—are used to interrupt the currently running process. Another way to generate a signal is by calling the kill function. We can call this function from a process to send a signal to another process. Naturally, there are limitations: we have to be the owner of the other process (or the superuser) to be able to send it a signal.
15
New cards
What does the code do?
A)Prints out the signal number
B)Assigns a handler for Ctrl+C (SIGINT) signal
C)Awaits for the user to send a signal
D) All of the above

#include
#include
#include
static void myHandler(int iSig) {
printf("In myHandler with argument %d\n", iSig);
}
int main(void)
{
void (*pfRet) (int);
pfRet = signal(SIGINT, myHandler);
assert(pfRet != SIG_ERR);
printf("Entering an infinite loop\n");
for(;;)
{
;
}

return 0;
}
D) All of the above
#define _GNU_SOURCE /* Use modern handling style */
#include
#include
#include
16
New cards
What does the code do?
A)Prints out the signal number
B)Assigns a handler for many signals
C)Awaits for the user to send a signal
D) All of the above

#include
#include
#include
static void myHandler(int iSig) {
printf("In myHandler with argument %d\n", iSig);
}
int main(void) {
void (*pfRet)(int);
pfRet = signal(SIGHUP, myHandler); /* 1 */
pfRet = signal(SIGINT, myHandler); /* 2 */
pfRet = signal(SIGQUIT, myHandler); /* 3 */
pfRet = signal(SIGILL, myHandler); /* 4 */
pfRet = signal(SIGTRAP, myHandler); /* 5 */
pfRet = signal(SIGABRT, myHandler); /* 6 */
pfRet = signal(SIGBUS, myHandler); /* 7 */
pfRet = signal(SIGFPE, myHandler); /* 8 */
pfRet = signal(SIGKILL, myHandler); /* 9 */
printf("Entering an infinite loop\n");
for (;;);
return 0;
}
D) All of the above
17
New cards
What problem do you see with this program?
A)The file temp.txt could be left open when user does Ctrl+C
B)It removes temp.txt
C)It removes temp.txt after closing the file
D)It returns 0

int main(void) {
FILE *psFile;
psFile = fopen("temp.txt", "w");
...
fclose(psFile);
remove("temp.txt");
return 0;
}
A) A)The file temp.txt could be left open when user does Ctrl+C
Program generates lots of temporary data
- Stores the data in a temporary file
-Must delete the file before exiting
18
New cards
What does the code do?
A)It opens a new file temp.txt
B)It cleans up the file if user presses Ctrl+C
C)It raises a Ctrl+C signal
D)All of the above
...
static FILE *psFile; /* Must be global. */
static void cleanup(int iSig) {
fclose(psFile);
remove("tmp.txt");
exit(EXIT_FAILURE);
}
int main(void) {
void (*pfRet)(int);
psFile = fopen("temp.txt", "w");
pfRet = signal(SIGINT, cleanup);
...
raise(SIGINT);
return 0; /* Never get here. */
}
D) all of the above
19
New cards
What does the code do?
A)Specifies a handler for SIGINT signal
B)Specifies a handler for any signal
C)Removes the signal handlers
D)None of the above

#include
#include
#include
static void myHandler(int iSig) {
printf("In myHandler with argument %d\n", iSig);
}
int main(void) {
int iRet;
struct sigaction sAction;
sAction.sa_flags = 0;
sAction.sa_handler = myHandler;
sigemptyset(&sAction.sa_mask);
iRet = sigaction(SIGINT, &sAction, NULL);
assert(iRet == 0);

printf("Entering an infinite loop\n");
for (;;) ;
return 0;
}
A) Specifies a handler for SIGINT signal
20
New cards
____ is the number of processes that are completed per time unit.
A) CPU utilization
B) Response time
C) Turnaround time
D) Throughput
D) Throughput
21
New cards
____ is how long it took to execute a process from the time of submission to completion.
A) CPU utilization
B) Response time
C) Turnaround time
D) Throughput
C) Turnaround time
22
New cards
____ is how long it took for a process from the time of submission to produce the first response.
A) CPU utilization
B) Response time
C) Turnaround time
D) Throughput
B) Response time
23
New cards
Which of the following is true of preemptive scheduling?
A) It requires a timer.
B) A process keeps the CPU until it releases the CPU either by terminating or switching to waiting/blocked state.
C) It incurs a cost associated with access to shared data.
D) A process switches from the running state to the ready state when an interrupt occurs.
B is more common in case it is waiting for I/O to complete. D also has sense (relinguishing CPU forcibly because of a timer interrupt)
24
New cards
The ____ scheduling algorithm is more suitable for time-sharing systems.
A) SJF
B) FCFS (FIFO)
C) RR
D) STCF
C) RR
25
New cards
Process are classified into different groups in ____________
a) shortest job scheduling algorithm
b) round robin scheduling algorithm
c) priority scheduling algorithm
d) multilevel feedback queue scheduling algorithm
d) multilevel feedback queue scheduling algorithm
26
New cards
Which of the following is true of multilevel feedback queue scheduling?
A) Processes can move between queues.
B) Each queue has its own scheduling algorithm.
C) A queue cannot have absolute priority over lower-priority queues.
D) It is the most general CPU-scheduling algorithm.
a) A) Processes can move between queues.
27
New cards
In multilevel feedback scheduling algorithm ____________
a) a process can move to a different classified ready queue
b) classification of ready queue is permanent
c) processes are not classified into groups
d) none of the mentioned
a) a process can move to a different classified ready queue
28
New cards
How many read/write heads are there per platter?
a.1
b.2
c.3
d.4
2
b
29
New cards
The "geometry" specification of a drive consists of
a. Tracks
b. Heads
c. Sectors/track
d. Cylinders
e. Total sectors
b, c, and d

b. Heads
c. Sectors/track
d. Cylinders
https://www.brainbell.com/tutors/A+/Hardware/_Geometry.htm

●Head: If a hard disk drive has four platters, it can have up to eight heads.
●Sectors are like pie slices. Each arc is a sector and holds 512 bytes of data.
●Data is stored in circular paths on the surface of each head.
30
New cards
Sectors are typically
a.1.2 megabytes
b.256 kilobytes
c.512 bytes
d.512 kilobytes
e.1024 bytes
c.512 bytes
31
New cards
A file is scattered into pieces across surface of a disk, when it is
A.compressed
B.archived
C.defragmented
D.fragmented
D.fragmented
32
New cards
How often would you use a disk defragmenter?
a.Twice a day
b.Once a day
c.Once a week
d.Once a month
d.Once a month
33
New cards
Division of a hard disk into separate areas of data is called
a.Clustering
b.Formatting
c.Sectioning
d.Fragmenting
e.Partitioning
e.Partitioning
34
New cards
Partition tables on a hard disk drive may contain:
a. d and e
b. Two primary partitions and two extended partitions
c.Unlimited partitions
d.Up to four primary partitions
e.Three primary partitions and one extended partition
A: D e

d.Up to four primary partitions
e.Three primary partitions and one extended partition
35
New cards
"Volumes" are
a.Groups of cylinders
b.Partitions
c.Master boot records
d.Usually assigned a unique identifier, such as a drive letter or folder
e.Groups of folders
B d
"Volumes" generally has several meanings

b. Partitions
d. Usually assigned a unique identifier, such as a drive letter or folder
36
New cards
All primary partitions must have
a.An operating system
b.An entry in the partition table
c.Logical drives
d.A corresponding extended partition
e.A unique identifier such as a drive letter or folder
b. An entry in the partition table
and

e. A unique identifier such as a drive letter or folder
37
New cards
Partitioning a hard drive allows one to
a.Increase disk space
b.Install multiple operating systems on it
c.Proceed with logical partitioning
d.Share drive letters
e.Encrypt files
b.Install multiple operating systems on it

and

c.Proceed with logical partitioning
38
New cards
Where is the boot sector located on a hard disk drive?
a.First sector
b.Second sector
c.Last sector
d.In the cache
e.The file allocation table
a.First sector
39
New cards
The boot sector on a hdd contains
a.The master boot record
b.Speadsheets
c.A copy of system BIOS
d.Games
e.The partition table
a.The master boot record

e.The partition table
40
New cards
The first sector of the hard drive is called
a.The first partition
b.Cylinder 0
c.The boot sector
d.The partition table
e.The stripe
c.The boot sector
41
New cards
The boot sector in a basic disk contains
a.The master boot record and file allocation table
b.The master boot record and partition table
c.BIOS and file allocation table
d.The partition table and file allocation table
e.Boot.ini
b.The master boot record and partition table
42
New cards
Filenames in UNIX are case-sensitive.
a) True
b) False
a) True
43
New cards
The most common file type is ___
a) ordinary (data) file
b) directory file
c) device file
d) ordinary file and directory file
A
Explanation: The most common file type is an ordinary file or a regular file. It contains data as a stream of characters. Ordinary files are also of two types, text file and binary file.
44
New cards
What is a directory file?
a) a directory containing data
b) a directory containing details of the files and subdirectories it contains
c) a directory contains files
d) a directory containing data and files
B
Explanation: A directory file contains no data but some details of the subdirectories and files that it contains. Directory files contain an entry for every file and subdirectory in it and each entry has some necessary information regarding files and subdirectories.
45
New cards
When we log in, the UNIX places us in a directory, called ______ directory
a) home
b) main
c) parent
d) current
a) home
46
New cards
The root directory in UNIX-like OSs is represented by ___
a) \
b) /
c) *
d) $
b) /
47
New cards
UNIX treats everything as a file.
a) True
b) False
A
Explanation: All physical devices such as printers, hard disk are treated as files by the UNIX system. Even the kernel, shell and main memory is treated as a file by UNIX operating system.
48
New cards
UNIX imposes no rule for framing filename extensions - but software applications may impose rules (e.g. C compiler expects source code filenames to end with .c).
a) True
b) False
A
Explanation: UNIX imposes no rules for framing filename extensions. For example, a shell script doesn't need to have the .sh implication, even though it helps in identification. In all cases, it's the application that imposes the restriction. For example, C compiler expects C program filenames to end with .c .
49
New cards
What is a buffer?
a. A section of memory used as a temp staging area for input or output data.
b. The cable that connects a data source to the bus.
c. Any stream that deals with IO.
d. A file that contains binary data.
a. A section of memory used as a temp staging area for input or output data.
50
New cards
Buffer cache helps to
a) Store data
b) Improved read/write performance
c) Allocate memory
d) None of the mentioned
B
https://lwn.net/Articles/457667/
51
New cards
In UNIX, the file name and file size are stored in the file itself.
a) True
b) False
B
Explanation: A UNIX file's size is not stored in the file, nor its name. All this information is stored separately in a separate area of hard disk.
52
New cards
Smallest addressable storage unit on hard disk, typically 512 bytes
1. FAT
2. bit
3. Sector
4. MBR
3. Sector
53
New cards
1,000,000,000 bytes
i. Gigabyte
ii. Kilobytes
iii. Megabyte
iv. Terabyte
i. Gigabyte
54
New cards
Independent organizational structure that allows the user to store and retrieve data
1. File System
2. Files
3. File Slack
4. File System Area
1. File System
55
New cards
Group of sectors
1.Sector
2.Acquire
3.File
4.Cluster
Answer: 4. Cluster

explanation:
2.Number of Sectors per cluster can range between 1 and 64
3.Sectors per cluster established when the volume is formatted
4.Windows will usually set 8 sectors per cluster which would give a cluster size of 4096
56
New cards
Are written at the cluster level
1.Files
2.Byte
3.Bit
4.FAT
Answer: 1. Files

explanation:
2.Two files can not be allocated to the same cluster at the same time3.If a file is larger than a single cluster it will use multiple clusters in the volume4.When using multiple clusters they may be contiguous or non-contiguous5.Often have a physical size and logical size
57
New cards
A hard drive has 1 sector (512 bytes) per cluster, and we know that the data area begins in sector 33. Suppose a certain file begins in cluster number 5. Which disk sector contains the beginning of the file?
A)38
B)33
C)5
D)0
A)38
58
New cards
A certain hard drive has 4 KB per cluster, and we know that the data area begins in sector 100. If a particular file begins in cluster 10, which disk sectors are used by the cluster?
A)180-187
B)180-183
C)100-107
D)110-117
A)180-187
59
New cards
This is a table that contains information about the clusters that are set up by the file system. Acts as a roadmap for the operation system to find all of the clusters in a file
i. File Name Area
ii. File to File
iii. File Allocation Table
iv. File System Area
iii. File Allocation Table
60
New cards
Collection of addressable sectors that an Operating System or application can use for that data storage
1.Nibble
2.Volume
3.Files
4.byte
Answer 2.Volume

explain:
1.Hard disk is a volumeMultiple smaller volumes can be combined o create a larger volume
61
New cards
With the Windows FAT filesystem, a larger cluster size means
1. less internal fragmentation
2. larger disk partitions can be handled
3. less external fragmentation
4. more disk I/O operations per cluster
5. none of the above
Answer: 3, 4
3. less external fragmentation
4. more disk I/O operations per cluster

explanation:
External fragmentation also occurs in file systems as many files of different sizes are created, change size, and are deleted. The effect is even worse if a file which is divided into many small pieces is deleted, because this leaves similarly small regions of free spaces.
https://en.wikipedia.org/wiki/Fragmentation_(computing)

●Both 3 and 4 make sense, so I checked them both on the slide.When you have smaller cluster size, it means files will be in many small pieces scattered all over the diskand as you delete files there will be more small clusters (blocks) that are free for use. Thus more external fragmentation.Larger cluster size -> less external fragmentationThe larger cluster size also means more disk I/O since there are more sectors to move between disk and memory.Larger cluster size -> more internal fragmentation because a file with a small size (e.g. just 1 byte) will still take a complete cluster (block), effectively wasting a lot of storage space.
62
New cards
Hard links and symbolic links are the same
a) TRUE
b) FALSE
B: Symlinks have diff inodenum, hardlinks have same inodenum.
If remove orig file symlinks broken, hardlinks not broken due to link_count.
Symlinks can be to directories, hardlinks only to regular files.
Symlinks can traverse partitions, hardlinks only to the same partition (inodenums are specific to a part)
63
New cards
How to make a filesystem?
🞐After you partition a hard disk, use mkfs tool to make a file system
🞐Write an empty file system, starting with a root directory, on to a disk partition.
⬥Input:
🞆A device (such as a disk partition, e.g., /dev/sda1)
🞆A file system type (e.g., ext3)
prompt> mkfs -t ext3 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
prompt> file -sL /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext3 filesystem data (large files)
64
New cards
How to Mount a file system?
🞐mount()
⬥Take an existing directory as a target mount point.
⬥Paste a new file system onto the directory tree at that point.
⬥Examples:
prompt> sudo mount /dev/sdd1 /media/usb

prompt> sudo mount /dev/sdb1 /mnt/media
🞆The pathname /media/usb and /mnt/media/ now refer to the roots of the newly-mounted directories.
65
New cards
The directory /media is the
a) mount point for removable media
b) mount point for filesystem
c) mount point for removable media & filesystem
d) none of the mentioned
a) mount point for removable media
66
New cards
# cat /sys/block/sda/queue/hw_sector_size
512

What does it show?
a.Total and free memory
b.Number of running processes
c.Hard Disk Sector size
d.Number of open files
c.Hard Disk Sector size

Everything is a file in UNIX
C
67
New cards
# cat /proc/meminfo
MemTotal: ....
MemFree: ....
What does it show?
a.Total and free memory
b.Number of running processes
c.Hard Disk Sector size
d.Number of open files
a.Total and free memory

Everything is a file in UNIX
A
68
New cards
Which languages necessarily need heap allocation in the run time environment?
A) Those that support recursion
B) Those that use dynamic scoping
C) Those that use global variables
D) Those that allow dynamic data structures
D) Those that allow dynamic data structures
69
New cards
Consider the following program. Where are i, j, k stored in memory?
____________
int i;
int main()
{
int j;
int *k = (int *)malloc(sizeof(int));
}

________
A) i, j and *k are stored in stack segment
B) i and j are stored in stack segment. *k is stored on heap.
C) i is stored in uninitialized part of data segment, j, k are stored in stack segment. *k is stored on heap.
D) j is stored in uninitialized part of data segment, i is stored in stack segment. *k is stored on heap.
C) i is stored in uninitialized part of data segment, j, k are stored in stack segment. *k is stored on heap.
70
New cards
We use malloc and calloc for
A) Dynamic memory allocation
B) Static memory allocation
C) Both dynamic and static memory allocation
D) None of the above
A) Dynamic memory allocation
_____
A Both Calloc() and Malloc() are used for dynamic memory allocation.
calloc() gives you a zero-initialized buffer, while malloc() leaves the memory uninitialized.
71
New cards
We use malloc and calloc for
A) Dynamic memory allocation int S=100; int *a = (int *) malloc(S*sizeof(int));
B) Static memory allocation int[] a = int[100];
C) Both dynamic and static memory allocation
D) None of the above
Look at example written on side of answer options:

A) Dynamic memory allocation
_____
A Both Calloc() and Malloc() are used for dynamic memory allocation.
calloc() gives you a zero-initialized buffer, while malloc() leaves the memory uninitialized.
72
New cards
What is the return type of malloc() or calloc()?
A)void *
B)Pointer of allocated memory type
C)void **
D)int *
A)void *
_______
A malloc() and calloc() return void *. you may get warning in C if you don't type cast the return type to appropriate pointer.
73
New cards
What is the problem with this code?
_______
#include
int main()
{
int *p = (int *)malloc(sizeof(int));
p = NULL;
free(p);
}
________
A) Compiler Error: free can't be applied on NULL pointer
B) Memory Leak
C) Dangling Pointer
D) The program may crash as free() is called for NULL pointer.
B) Memory Leak
______
B free() can be called for NULL pointer, so no problem with free function call. The problem is memory leak, p is allocated some memory which is not freed, but the pointer is assigned as NULL. The correct sequence should be following:
free(p);
p = NULL;
74
New cards
Which languages necessarily need heap allocation in the run time environment?
A) Those that support recursion
B) Those that use dynamic scoping
C) Those that use global variables
D) Those that allow dynamic data structures
D) Those that allow dynamic data structures
75
New cards
Consider the following program. Where are i, j, k stored in memory?
______________
int i;
int main()
{
int j;
int *k = (int *) malloc(sizeof(int));
}

A) i, j and *k are stored in stack segment
B) i and j are stored in stack segment. *k is stored on heap.
C) i is stored in uninitialized part of data segment, j, k are stored in stack segment. *k is stored on heap.
D) j is stored in uninitialized part of data segment, i is stored in stack segment. *k is stored on heap.
C) i is stored in uninitialized part of data segment, j, k are stored in stack segment. *k is stored on heap.
76
New cards
We use malloc and calloc for
A) Dynamic memory allocation
B) Static memory allocation
C) Both dynamic and static memory allocation
D) None of the above
A) Dynamic memory allocation
_____
A Both Calloc() and Malloc() are used for dynamic memory allocation.
calloc() gives you a zero-initialized buffer, while malloc() leaves the memory uninitialized.
77
New cards
What is the output of this program?
#include
#include
________
int main()
{
int *ptr;
*ptr = 10;
*ptr = 20;
printf("%d\n",*ptr);
return 0;
}
_______
A)10
B)20
C)Segmentation fault
D)None of the above
C The segmentation fault occurs because memory for the pointer has not been allocated in this program.
78
New cards
What is the output of this program?
#include
#include
______
int main()
{
int *ptr1, *ptr2;
ptr1 = (int *) malloc(4);
*ptr1 = 10;
*ptr2 = free(ptr1);
printf("%d\n",*ptr2);
return 0;
}
_____
A)10
B)It will print the address in ptr1
C)It will print the address in ptr2
D)It will give an error
D)It will give an error
______
D The free() function returns no value
79
New cards
What is the problem with following code?
________
#include
int main()
{
int *p = (int *)malloc(sizeof(int));
p = NULL;
free(p);
}
_______
A) Compiler Error: free can't be applied on NULL pointer
B) Memory Leak
C) Dangling Pointer
D) The program may crash as free() is called for NULL pointer.
B
free() can be called for NULL pointer, so no problem with free function call. The problem is memory leak, p is allocated some memory which is not freed, but the pointer is assigned as NULL. The correct sequence should be following:
free(p);
p = NULL;
80
New cards
What is the output?
# include
# include

void fun(int *a)
{
a = (int*)malloc(sizeof(int));
}

int main()
{
int *p;
fun(p);
*p = 6;
printf("%dn",*p);
return(0);
}
_______
A) May not work
B) Works and prints 6
A
fun() makes a copy of the pointer, so when malloc() is called, it is setting the copied pointer to the memory location, not p. p is pointing to random memory before and after the call to fun(), and when you dereference it, it will crash. If you want to add memory to a pointer from a function, you need to pass the address of the pointer (ie. double pointer).
81
New cards
Which of the following is/are true
A) calloc() allocates the memory and also initializes the allocates memory to zero, while memory allocated using malloc() has random data.
B) malloc() can be used to get the same effect as calloc().
C) calloc() takes two arguments, but malloc takes only 1 argument.
D) Both malloc() and calloc() return 'void *' pointer.
E) All of the above
E) All of the above
82
New cards
What is the output of this program?
#include
#include

int main()
{
int *ptr;
ptr = (int *)calloc(1,sizeof(int));
if (ptr != 0)
printf("%d\n",*ptr);
return 0;
}
________
A)0
B)-1
C)Garbage value
D)none of the mentioned
A)0
83
New cards
This program will allocate the memory of ___ bytes for pointer "ptr".
#include
#include

int main()
{
int *ptr;
ptr = (int*)malloc(sizeof(int)*4);
ptr = realloc(ptr,sizeof(int)*2);
return 0;
}
_________
A)2
B)4
C)8
D)none of the mentioned
C 8
84
New cards
Consider the following three C functions:
_____
[PI] int * g (void)
{
int x= 10;
return (&x);
}
_____
[P2] int * g (void)
{
int * px;
*px= 10;
return px;
}
_______
[P3] int *g (void)
{
int *px;
px = (int *) malloc (sizeof(int));
*px= 10;
return px;
}
_______
Which of the above three functions are likely to cause problems with pointers?
A)Only P3
B)Only P1 and P3
C)Only P1 and P2
D)P1, P2 and P3
C)Only P1 and P2

C In P1, pointer variable x is a local variable to g(), and g() returns pointer to this variable. x may vanish after g() has returned as x exists on stack. So, &x may become invalid. In P2, pointer variable px is being assigned a value without allocating memory to it. P3 works perfectly fine. Memory is allocated to pointer variable px using malloc(). So, px exists on heap, it's existence will remain in memory even after return of g() as it is on heap.
85
New cards
What is the output of this program?
#include
#include

int main()
{
int ret;
int *ptr;
ptr = (int *)malloc(sizeof(int)*10);
free(ptr);
free(ptr);
return 0;
}
_______
A)it will print nothing
B)it will give segmentaion fault
C)undefined behaviour
D)none of the mentioned
C)undefined behaviour
86
New cards
What is the output of this program?
#include
#include

int main()
{
int *ptr;
ptr = (int *)malloc(sizeof(int));
printf("%d\n",*ptr);
return 0;
}
_______
A)4
B)-1
C)undefined
D)none of the mentioned
C undefined

https://www.sanfoundry.com/tricky-buggy-questions-answers-malloc-free/
87
New cards
Which of the following is true of compaction?
A) It can be done at assembly, load, or execution time.
B) It is used to solve the problem of internal fragmentation.
C) It cannot shuffle memory contents.
D) It is possible only if relocation is dynamic and done at execution time.
D) It is possible only if relocation is dynamic and done at execution time.
88
New cards
_________ allocates the largest hole (free fragment) available in the memory.
a.Best Fit
b.Worst Fit
c.First Fit
d.None of the above
b.Worst Fit
89
New cards
_________ allocates the smallest hole (free fragment) available in the memory.
a.Best Fit
b.Worst Fit
c.First Fit
d.None of the above
a.Best Fit
90
New cards
_____ is the dynamic storage-allocation algorithm which results in the smallest leftover hole in memory.
1.A) First fit
2.B) Best fit
3.C) Worst fit
4.D) None of the above
2.B) Best fit
91
New cards
_____ is the dynamic storage-allocation algorithm which results in the largest leftover hole in memory.
1.A) First fit
2.B) Best fit
3.C) Worst fit
4.D) None of the above
3.C) Worst fit
92
New cards
The problem of fragmentation arises in ________.
a.Static storage allocation
b.Stack allocation storage
c.Stack allocation with dynamic binding
d.Heap allocation
d.Heap allocation
93
New cards
Which of the following memory allocation scheme suffers from External fragmentation?
a.Best-fit
b.Worst-fit
c.First-fit
d.All of the above
d.All of the above
D Mostly best-fit, though suffers
94
New cards
With paging there is no ________ fragmentation.
a) internal
b) external
c) either type of
d) none of the mentioned
b) external
95
New cards
Logical memory is broken into blocks of the same size called _________
a) frames
b) pages
c) backing store
d) none of the mentioned
b) pages
96
New cards
Physical memory is broken into fixed-sized blocks called ________
a) frames
b) pages
c) backing store
d) none of the mentioned
a) frames
97
New cards
Every address generated by the CPU is divided into two parts. They are ____________
a) frame bit & page number
b) page number & page offset
c) page offset & frame bit
d) frame offset & page offset
b) page number & page offset
98
New cards
The _____ table contains the base address of each page in physical memory.
a) process
b) memory
c) page
d) frame
c) page
99
New cards
For every process there is a __________
a) page table
b) copy of page table
c) pointer to page table
d) all of the mentioned
a) page table
100
New cards
The operating system maintains a ______ table that keeps track of how many frames have been allocated, how many are there, and how many are available.
a) page
b) mapping
c) frame
d) memory
c) frame