Wednesday 3 February 2016

Test answers for Kernel Programming Test (Solaris 2.x internals)

93 NOT Answered Yet Test Questions:

(hold on, will be updated soon)
1. Which of the following cache entries need to be purged/invalidated if a file is deleted?
Answers:
• DNLC
• Page Cache
• Buffer Cache
• Inode Cache
2. How many LWPs must a process have to maximize its parallelism?
Answers:
• None
• Two
• It should be the same as the number of processors.
• It should be a factor of the available RAM.
3. What is the correct way of deinitializing a mutex on solaris?
Answers:
• mutex_deinit(lock pointer)
• mutex_destroy(lock pointer)
• mutex_deinitialize(lock pointer)
• lockpointer-mutex_deinit()
4. What are the basic mutex operations supported by the solaris operating system?
Answers:
• Initializing and deinitializing the mutex
• Exclusively locking and unlocking the mutex
• Reader writer locking semantics on the mutex
• Try acquire mutex exclusive
5. Which of the following interfaces are invoked by the OS to flush all data belonging to a filesystem to a disk?
Answers:
• VOP_FSYNC
• VFS_SYNC
• VOP_PUTPAGE
• VOP_WRITE
6. What does the VOP_INACTIVE interface do?
Answers:
• It drops the reference count on a vnode.
• It deletes all data associated with a vnode.
• It drops the reference count on a vnode and if required it deletes all data associated with a vnode.
• It increments the reference count on a vnode.
7. What does the v_vfsmountedhere field of a vnode indicate?
Answers:
• If set to 1, it indicates that a filesystem is mounted on that vnode.
• It points to the root vnode of the filesystem to which the vnode belongs.
• It points to the vfs structure of the mounted on filesystem.
• It points to the root vnode of the mounted on filesystem.
8. Which of the following commands prints out the kernel device tree?
Answers:
• ls
• drvconf
• prtconf
• devlinks
9. Which of the following interfaces is used by the driver to signal the completion of an IO initiated by a strategy call?
Answers:
• biowait
• cv_broadcast
• biodone
• cv_signal
10. The OS guarantees that a thread blocked on a cv via a cv_wait call does not wakeup prematurely and hence does not need to re-check for the reason for blocking.
Answers:
• True
• False
11. Which of the following interfaces needs to be implemented for a filesystem to support swap files?
Answers:
• VOP_WRITE and VOP_READ
• VOP_GETPAGE and VOP_PUTPAGE
• VOP_MAP and VOP_UNMAP
• VOP_PAGEIO
12. Which of the following interfaces can be used to avert a thundering herd of waiters?
Answers:
• cv_broadcast
• cv_signal
• cv_wakeall
• cv_wakeone
13. Which of the following components is responsible for speeding up file paths to inode lookups?
Answers:
• Page Cache
• DNLC
• Buffer Cache
• Vnode Cache
14. Which of the following is pageable?
Answers:
• kernel stack.
• user addresses.
• kernel heap.
• kernel code.
15. In which of the following contexts does the solaris kernel handle interrupts?
Answers:
• User context.
• LWP context.
• On a separate interrupt stack without any special context.
• In a kernel thread context.
16. What is the significance of setting the kernel global variable 'kmem_flags' to '0xf'?
Answers:
• It turns on buffer redzone (write past end of buffer).
• It turns on freed buffer checking.
• It turns on allocator auditing.
• It turns on uninitialized data checking.
• All of the above
17. Which of the following sequences correctly builds the loadable module 'mymod'?
Answers:
• cc mymod.c
• cc -o mymod.o mymod.c; ld -o mymod mymod.o
• cc -D_KERNEL mymod.c
• cc -D_KERNEL -o mymod.o; ld -r -o mymod mymod.o
18. What does the vfs_vnodecovered field of a vfs structure indicate?
Answers:
• It points to the mounted on directory's vnode structure.
• It points to the root inode of the filesystem.
• It points to the root directory of the parent filesystem.
• It points to the vfs structure of the parent filesystem.
19. Which of the following calls fits in at 'statement xxx'
to produce correct results in the code snippet below?

mutex_enter(mutex pointer);
while (condition is false) {
      cv_wait(cv pointer, mutex pointer);
}

statement xxx;
mutex_exit(mutex pointer);
Answers:
• mutex_enter(mutex pointer)
• mutex_exit(mutex_pointer)
• nothing needs to be done.
• cv_signal(cv pointer)
20. Which of the following locking sequences is correct?
Answers:
• rw_init; rw_enter; rw_destroy
• rw_enter; rw_destroy
• rw_init; rw_enter; rw_exit; rw_destroy
• rw_init; rw_tryenter; unconditional rw_exit; rw_destroy
21. What do the following mdb commands do?

::allocdby
::freedby
Answers:
• They are used to print the log of transactions on a particular memory location.
• They are used to print the log of transactions by a particular thread.
• They are used to print the slab cache that refers to the particular address.
• They are used to print the arenas that refer to the particular address.
22. Which of the following commands can be used to examine and delete kernel breakpoints?
Answers:
• $b, :d
• ::break, ::delete
• $b, ::delete
• display break, delete break
23. Which of the following is true of memory allocated by kmem_alloc?
Answers:
• It is physical memory.
• It is virtual memory.
• It is pageable.
• It is a part of the global kernel heap.
24. On a solaris system with no special kmem_flag settings,
what happens when a thread running buggy code frees a buffer twice.
Answers:
• The results are unpredictable including a panic.
• The kernel fails the second kmem_free.
• The kernel kills the thread with a SEGFAULT.
• The second free is harmless as the kernel knows that the memory has already been freed.
25. Which of the following structures keeps track of the positional offset within the file where the next IO is to be performed?
Answers:
• struct file
• struct vnode
• struct inode
• struct proc
26. Which of the following structures describes the user initiated IOs?
Answers:
• struct buf
• struct file
• struct uio
• struct sio
27. Which of the following interfaces can be used by a driver interface routine to copy data from and to the user address space?
Answers:
• memcpy
• bcopy
• copyin;copyout
• memmove
28. Which of the following abstractions is the fundamental schedulable entity on a solaris machine?
Answers:
• User process.
• LWP.
• Kernel thread.
• Interrupt handler.
29. Which of the following adb/kadb commands can be used to determine the function which caused the panic?
Answers:
• $<msgbuf
• panic address?ia
• $r
• $C
30. Solaris rw locks are recursive locks. A thread that already holds a lock in the read mode can acquire the lock in the read mode
again.
Answers:
• True
• False
31. Which of the following sets does a breakpoint at the start of the kernel function ufs_read?
Answers:
• ufs_read:b
• ufs_read!break
• ::break ufs_read
• ufs_read>break
32. Which of the following sparc instructions forms the basis of all other locking strategies?
Answers:
• lock
• ldstub
• movsb
• save
33. Can the mutex be locked by one kernel thread and unlocked by another kernel thread?
Answers:
• Yes
• No
34. In which of the following driver interfaces should device instance specific resources be handled?
Answers:
• _init; _fini
• open; close
• attach; detach
• probe
35. What is the outcome if an interrupt handler needs to block on a resource?
Answers:
• The kernel will detect this situation and will panic the system.
• The system will hang.
• The interrupt handler will block until it can run again.
• None of the above.
36. Which of the following has the lowest scheduling latency?
Answers:
• User thread.
• Kernel thread.
• User Process.
• LWP.
37. Which of the following commands can be used to examine the panic stack trace?
Answers:
• $r
• $<msgbuf
• $C
• $<threadlist
38. Which of the following sparc instructions is employed before returning from a function to restore the original context?
Answers:
• restore
• pop
• revert
• ret
39. Which of the following kernel interfaces can be used by a driver interface like open to identify the specific device instance involved in the operation?
Answers:
• getmajor(dev_t)
• getminor(dev_t)
• open
• ((dev_t) dev) & 0xFFFF0000;
40. The memory allocated by kmem_alloc is private to the kernel thread that allocated it.
Answers:
• True
• False
41. Which of the following interfaces is the preferred way for drivers to log messages?
Answers:
• printf
• cmn_err
• dmesg
• log
42. How many times can a semaphore be acquired without blocking?
Answers:
• It depends on the count associated with the semaphore.
• 1
• 2
• 0
43. Which of the following firmware commands causes a kernel core file to be dumped to the dump device?
Answers:
• $sync
• sync
• dump
• $dump
44. What does the following kernel interface do?

rw_lock_held(lock pointer);
Answers:
• It checks if the lock is held in the read mode.
• It checks if the lock is held in the write mode.
• It does 'a' and locks it in the write mode.
• It does 'b' and locks it in the read mode.
45. Which of the following is true of the memory allocated by kmem_alloc?
Answers:
• It is double word aligned.
• It is pageable.
• It is zero initialized.
• Its availability is limited to the amount of physical memory.
46. Which of the following information must be tracked explicitly by a driver that allocates memory via kmem_alloc?
Answers:
• The address of the allocated memory.
• The size of the allocated memory.
• The alignment of the allocated memory.
• The thread that allocated the memory.
47. Which of the following interfaces does the OS call to translate path names to vnodes?
Answers:
• VOP_LOOKUP
• VOP_READDIR
• VOP_GETPAGE
• VOP_READ
48. What is the driver configuration file for a 64 bit target module 'mymod'?
Answers:
• /kernel/drv/mymod.conf
• /kernel/drv/sparcv9/mymod.conf
• /etc/system
• /usr/lib/mymod.conf
49. The condition variable synchronization primitives need which of the following primitives to be employed by the client code to function correctly?
Answers:
• Reader-writer locks.
• Mutex
• Semaphore
• Spin lock
50. Which of the following kadb/adb commands prints the contents of the register set at a particular stack depth?
Answers:
• $<msgbuf
• $C
• $r
• $b
51. If there is contention between readers and writers on an rw lock, which of them are given preference over the other?
Answers:
• Readers
• Writers
• Neither (there is FCFS granting of locks).
• Both (there is one grant from either group).
52. Which of the following mechanisms enables solaris to support real time applications?
Answers:
• Hidden scheduling.
• Priority inheritance.
• Priority inversion.
• Interrupts.
53. Is the glock necessary if a filesystem does not implement the mmap interface?
Answers:
• Yes
• No
54. Is the thread allowed to perform any kind of blocking operation while holding a mutex?
Answers:
• Yes
• No
55. Which of the following kernel subsystems employs a semaphore for synchronization?
Answers:
• Inode Cache
• Buffer Cache
• Page Cache
• DNLC
56. What does the OS do when it detects a page fault on a valid address?
Answers:
• It calls the VOP_READ interface of the vnode to fetch the data.
• It calls the VOP_MMAP interface of the vnode to fetch the data.
• It calls the buffer cache get block interface to fetch the data.
• It calls VOP_GETPAGE interface of the vnode to fetch the data.
57. Which of the following kadb/adb macros can be used to examine the stack traces of all the kernel threads?
Answers:
• $<stack
• $<traceall
• $<threadlist
• $<msgbuf
58. Is the solaris kernel fully preemtible?
Answers:
• Yes
• No
59. The OS can unload a module automatically if needed.
Answers:
• True
• False
60. Which of the following kernel defined data types is involved in the interface calls to manipulate CVs?
Answers:
• kmutex_t
• kcondvar_t
• vnode_t
• page_t
61. Which of the following debuggers allow extensive customization and supports user written pluggable debugging modules?
Answers:
• adb
• dbx
• crash
• mdb
62. What is the command to boot into the kernel debugger (kadb) from an 'ok' prompt?
Answers:
• boot kadb
• kadb
• unix kadb
• go kadb
63. What happens if a driver running on a sparc processor tries to access a 32 bit quantity which is aligned on a 16 bit boundary?
Answers:
• The processor automatically handles this situation.
• The system panics.
• Such a driver code will not be compiled.
• Such a driver code will not be loaded.
64. Which of the following operations results in the page cache being populated?
Answers:
• memory mapped IO
• read(2)/write(2) system calls
• opening a regular unix file.
• opening a socket.
65. What are the commands to load and unload the kernel module 'mymod'?
Answers:
• insmod mymod; rmmod mymod
• pkgadd mymod; pkgrm mymod
• modload mymod; modunload mymod
• modload mymod; modunload -i moduleid
66. What is the compiler option to generate a 64 bit binary loadable on a sparc machine?
Answers:
• -xarch=v5
• -xarch=v9
• -64
• -target=64
67. What is the kernel interface to initialize a reader writer lock?
Answers:
• readwrite_init(lock pointer)
• rw_initialize(lock pointer)
• rw_init(lock pointer)
• rw_enter(lock pointer)
68. Can the solaris semaphores be used in the interrupt context?
Answers:
• Yes
• No
69. What is the correct way of initializing a mutex on solaris?
Answers:
• mutex_init(lock pointer, lock name, type of mutex)
• mutex_init(lock pointer)
• mutex_enter(lock pointer)
• mutex_initialize(lock pointer)
70. On a sparc system, which of the register set of a calling function is passed on as input registers to the called function?
Answers:
• input
• output
• local
• global
71. Which of the following caches doesnot change its size dynamically on older solaris systems?
Answers:
• Page Cache
• Vnode Cache
• Inode Cache
• Buffer Cache
72. In which of the following contexts do callouts run?
Answers:
• User
• Kernel thread.
• LWP
• Interrupt.
73. What sequence of key strokes is required to trap into the kadb in a live session?
Answers:
• STOP-A on sun keyboards.
• send brk via a telnet session.
• CTRL-A on sun keyboards.
• tip b via a serial console session.
74. Which of the following abstractions enables a multi-threaded application to take advantage of the available parallelism?
Answers:
• User threads.
• LWP.
• Kernel threads.
• User processes.
75. Which of the following sequences involving a CV is correct if a thread wants to wait for an event?
Answers:
• cv_init; mutex_enter; cv_wait; mutex_exit; cv_destroy
• cv_init; cv_wait; cv_destroy
• cv_init; cv_signal; cv_destroy
• cv_init; cv_timedwait; cv_destroy
76. Which of the following is true if an interrupt thread needs to block on a resource?
Answers:
• Interrupt threads on solaris cannot block.
• They can be scheduled to run on a different processor once they are runnable.
• They are scheduled to run on the same processor.
• The system hangs.
77. Which of the following types of information is stored within the buffer cache?
Answers:
• Filesystem Metadata
• User Pages backed by files.
• Anonymous Pages.
• DNLC entries.
78. Which of the following interfaces to a block device driver does the filesystem use?
Answers:
• int strategy(struct vnode *);
• int strategy(struct buf *);
• void strategy(struct uio *);
• int strategy(struct file *);
79. Which of the following buffer structure fields specifies the direction of IO transfer, the transfer size and the virtual address of the data?
Answers:
• b_flags
• b_bcount
• b_un
• b_blkno
80. Is the memory allocated by kmem_alloc paged?
Answers:
• Yes
• No
81. What does the VFS_ROOT interface do?
Answers:
• It takes a vnode and a vfs and markes (marks or makes?) the vnode as the root vnode for the filesystem.
• It returns the root vnode of the specified vfs.
• It returns the parent vnode of the specified vnode.
• It returns the parent vfs of the specified vfs.
82. Which of the following kadb macros is useful in determining the panic address?
Answers:
• $<panic
• *panicstr
• $<msgbuf
• $r
83. Which of the following locks is used to serialize reads and writes on a vnode?
Answers:
• The global VFS lock.
• The locks on the page structures.
• The VOP_RWLOCK.
• The locks on the buffer structures.
84. Which of the following CV interfaces can be used to wakeup exactly one waiter?
Answers:
• cv_broadcast
• cv_wakeone
• cv_wakeall
• cv_signal
85. Which of the following does the OS use for caching user data?
Answers:
• Buffer Cache
• Inode Cache
• Page Cache
• DNLC
86. Where is the following memory allocation type typically
employed?

memp = kmem_alloc(size, KM_NOSLEEP);
Answers:
• In the user context code as a backend to malloc.
• In the kernel context where every place memory needs to be allocated.
• In the interrupt context.
• In the buffer cache.
87. Which of the following sparc instructions causes a register window context to be created?
Answers:
• ldstub
• save
• restore
• movrw
88. Following a panic and a core dump, what is done to recreate the core files for debugging?
Answers:
• Use dumpadm to create the core files.
• Use savecore to create the core files.
• Nothing needs to be done; the os guarantees that the core files are always saved.
• Use dd to move the core files from the dump device to the filesystem.
89. Which of the following interfaces is equivalent to acquiring a lock?
Answers:
• sema_v
• sema_p
• sema_init
• sema_lock
90. Which of the following interfaces must be implemented by every loadable driver?
Answers:
• _init; _fini
• _init; _fini; probe
• _init; _info; _fini
• _init; _fini; open; close
91. Is it possible to take a core dump of a live system?
Answers:
• Yes
• No
92. What does the cv_wait_sig interface do?
Answers:
• It waits on the CV until the thread receives a specified external signal (sent via kill(2)).
• It waits on the CV until the thread receives a wakeup. It returns 0 if the thread receives an external signal (sent via kill(2)).
• It waits on the CV and ignores the specified signal but returns 0 if some other signal is received.
• It registers a call back with the kernel for the specified signal.
93. Why should floating point operations be avoided in drivers?
Answers:
• Because solaris does not support floating point operations at all.
• Because the sparc hardware does not support floating point operations.
• Because the kernel does not support floating point operations.
• Because they are expensive to perform.

No comments:

Post a Comment

Cooking channel intro green screen

  Click here to download HD Videos