Interview Questions and Answers for UNIX File Management (11)

Questions and answers taken from real job interviews.

Find real interview questions and answers on this website:

See right interview answers on 30 common job interview questions

1. Brief about the directory representation in UNIX.

A Unix directory  is a  file containing a correspondence between  filenames and  inodes. A directory  is  a  special  file  that  the  kernel  maintains.  Only  kernel  modifies  directories,  but processes  can  read  directories.  The  contents  of  a  directory  are  a  list  of  filename  and  inode number pairs. When new directories are created, kernel makes two entries named '.' (refers to the directory itself) and '..' (refers to parent directory). System call for creating directory is mkdir (pathname, mode).

2. Discuss the mount and unmount system calls.

The privileged mount system call  is used to attach a file system to a directory of another file system; the unmount system call detaches a file system. When you mount another file system on  to  your  directory,  you  are  essentially  splicing  one  directory  tree  onto  a  branch  in  another directory  tree. The  first  argument  to mount  call  is  the mount  point,  that  is  ,  a  directory  in  the current file naming system. The second argument is the file system to mount to that point. When you  insert  a  cdrom  to  your  unix  system's  drive,  the  file  system  in  the  cdrom  automatically mounts to "/dev/cdrom" in your system.

3. How are devices represented in UNIX?

All devices are represented by files called special files that are located in /dev directory. Thus, device files and other files are named and accessed  in the same way. A 'regular file' is just an ordinary data file in the disk. A 'block special file'  represents  a  device  with characteristics similar to a disk (data  transfer  in  terms  of  blocks). A 'character special file' represents a device with characteristics similar to a keyboard (data transfer is by stream of bits in sequential order).

4. How do you change File Access Permissions?

Every file has following attributes:

• owner's user ID ( 16 bit integer )
• owner's group ID ( 16 bit integer )
• File access mode word

(r w x) - (r w x) - (r w x)
(user permission) - (group permission) - (others permission)

To change the access mode, we use chmod(filename,mode).

Example 1:

To change mode of myfile  to  'rw-rw-r--' (ie. read, write permission  for user - read,write permission for group - only read permission for others)  we give the args as: 

chmod(myfile,0664) . 

Each operation is represented by discrete values

'r' is 4  

'w' is 2  

'x' is 1 

Therefore, for 'rw' the value is 6(4+2). 

Example 2:  

To change mode of myfile to 'rwxr--r--' we give the args as: 


5. How do you create special files like named pipes and device files?

The system call mknod creates special files in the following sequence.

• kernel assigns new inode,
• sets the file type to indicate that the file is a pipe, directory or special file,
• If it is a device file, it makes the other entries like major, minor device numbers.

For example: 

If the device is a disk, major device number refers to the disk controller and minor device number is the disk.

6. How does the inode map to data block of a file?

Inode has 13 block addresses. The  first 10 are direct block addresses of  the  first 10 data blocks in the file. The 11th address points to a one-level index block. The 12th address points to a  two-level (double  in-direction)  index block. The 13th address points  to a three-level(triple  in-direction)index block. This provides a very large maximum file size with efficient access to large files, but also small files are accessed directly in one disk read.

7. What are links and symbolic links in UNIX file system?

A  link  is a second name (not a file) for a file. Links can be used to assign more than one name to a file, but cannot be used to assign a directory more than one name or link filenames on different computers. 

Symbolic  link  'is'  a  file  that  only  contains  the  name  of  another  file.Operation  on  the symbolic  link  is directed to the file pointed by the  it.Both the  limitations of  links are eliminated in symbolic links.

Commands for linking files are: 

Link    "ln filename1 filename2"  

Symbolic link  "ln -s filename1 filename2"

8. What are the Unix system calls for I/O?

• open(pathname,flag,mode) - open file
• creat(pathname,mode) - create file 
• close(filedes) - close an open file
• read(filedes,buffer,bytes) - read data from an open file
• write(filedes,buffer,bytes) - write data to an open file
• lseek(filedes,offset,from) - position an open file
• dup(filedes) - duplicate an existing file descriptor
• dup2(oldfd,newfd) - duplicate to a desired file descriptor
• fcntl(filedes,cmd,arg) - change properties of an open file
• ioctl(filedes,request,arg) - change the behaviour of an open file
• The difference between fcntl anf ioctl is that the former is intended for any open file, while the latter is for device-specific operations.

9. What is a FIFO?

FIFO are otherwise called as 'named pipes'. FIFO (first-in-first-out) is a special file which is said to be data transient. Once data is read from named pipe, it cannot be read again. Also, data can be read only  in  the order written. It  is used  in  interprocess communication where a process writes to one end of the pipe (producer) and the other reads from the other end (consumer).

10. What is a shell?

A shell is an interactive user interface to an operating system services that allows an user to enter commands as character strings or through a graphical user  interface. The shell converts  them  to system calls  to  the OS or  forks off a process  to execute  the command. System call  results and other  information  from  the  OS  are  presented  to  the  user  through  an  interactive  interface. Commonly used shells are sh,csh,ks etc.

11. What is 'inode'?

All UNIX files have its description stored in a structure called 'inode'. The inode contains info about the file-size, its location, time of last access, time of last modification, permission and so  on.  Directories  are  also  represented  as  files  and  have  an  associated  inode.  In  addition  to descriptions about the file, the  inode contains pointers to the data blocks of the file. If the file  is large,  inode  has  indirect  pointer  to  a  block  of  pointers  to  additional  data  blocks  (this  further aggregates for larger files). A block is typically 8k.

Inode consists of the following fields: 

• File owner identifier
• File type
• File access permissions
• File access times
• Number of links
• File size
• Location of the file data