Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Question: /bin/mv The mv system program is used to move files between directorie

ID: 3558500 • Letter: Q

Question

Question: /bin/mv

The mv system program is used to move files between directories, for instance between your working directory and the .. directory. Using strace, count how many system calls are placed by mv when moving a reasonably large file (i.e., more than 1MiB) to another directory? Are there more or fewer system calls than when you use cp to copy that same file? Does the number of system calls depends on the file size for mv? How about for cp? Why is mv's system call behavior different than that of cp?

Explanation / Answer

strace system call is used to find the system calls which a process execute.

MV system call is used to move a file from one directory to another. Whereas the CP system call is used to copy file to a new location. The number of system call used by MV should be lesser because there is no need to copy all the bytes in the file to a new location. Only the descriptor is changed in folder. The file is not moved physically in disk, because of this it takes lesser time and also lesser number of system calls. Here is an example of MV command executed with strace command. Output shows that there are no read or write commands.

strace mv bsA.tar.gz a/
execve("/bin/mv", ["mv", "bsA.tar.gz", "a/"], [/* 44 vars */]) = 0
brk(0)                                  = 0x8bf5000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb787f000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=62931, ...}) = 0
mmap2(NULL, 62931, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libselinux.so.1", O_RDONLY) = 3
read(3, "ELF@?4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=116568, ...}) = 0
mmap2(NULL, 121724, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xd57000
mmap2(0xd73000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b) = 0xd73000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/librt.so.1", O_RDONLY) = 3
read(3, "ELF°4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=30684, ...}) = 0
mmap2(NULL, 33364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x293000
mmap2(0x29a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0x29a000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libacl.so.1", O_RDONLY) = 3
read(3, "ELF€4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=30300, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb786e000
mmap2(NULL, 33088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x38d000
mmap2(0x394000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0x394000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libattr.so.1", O_RDONLY) = 3
read(3, "ELF@ 4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=17816, ...}) = 0
mmap2(NULL, 20584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x522000
mmap2(0x526000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0x526000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY) = 3
read(3, "ELFp’4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1544392, ...}) = 0
mmap2(NULL, 1554968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x854000
mmap2(0x9ca000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x176) = 0x9ca000
mmap2(0x9cd000, 10776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x9cd000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libdl.so.2", O_RDONLY) = 3
read(3, "ELF` 4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=13940, ...}) = 0
mmap2(NULL, 16504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x1dc000
mmap2(0x1df000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x1df000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libpthread.so.0", O_RDONLY) = 3
read(3, "ELF€[4"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=124745, ...}) = 0
mmap2(NULL, 107016, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4be000
mmap2(0x4d5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0x4d5000
mmap2(0x4d7000, 4616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4d7000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb786d000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb786c000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb786c720, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x4d5000, 4096, PROT_READ)     = 0
mprotect(0x1df000, 4096, PROT_READ)     = 0
mprotect(0x9ca000, 8192, PROT_READ)     = 0
mprotect(0x526000, 4096, PROT_READ)     = 0
mprotect(0x394000, 4096, PROT_READ)     = 0
mprotect(0x29a000, 4096, PROT_READ)     = 0
mprotect(0xd73000, 4096, PROT_READ)     = 0
mprotect(0x805e000, 4096, PROT_READ)    = 0
mprotect(0xdac000, 4096, PROT_READ)     = 0
munmap(0xb786f000, 62931)               = 0
set_tid_address(0xb786c788)             = 10489
set_robust_list(0xb786c790, 0xc)        = 0
futex(0xbf917dac, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0xbf917dac, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, b786c720) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x4c3530, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x4c35b0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="saasbook", ...}) = 0
statfs64("/selinux", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=2322014, f_bfree=1112129, f_bavail=994177, f_files=589824, f_ffree=349607, f_fsid={-284063871, -1871417342}, f_namelen=255, f_frsize=4096}) = 0
brk(0)                                  = 0x8bf5000
brk(0x8c16000)                          = 0x8c16000
open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb787e000
read(3, "nodev sysfs nodev rootfs nodev b"..., 1024) = 356
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0xb787e000, 4096)                = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=8752608, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb766c000
mmap2(NULL, 262144, PROT_READ, MAP_PRIVATE, 3, 0x2bd) = 0xb762c000
mmap2(NULL, 4096, PROT_READ, MAP_PRIVATE, 3, 0x43a) = 0xb762b000
close(3)                                = 0
open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb762a000
read(3, "nodev sysfs nodev rootfs nodev b"..., 1024) = 356
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0xb762a000, 4096)                = 0
geteuid32()                             = 1000
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
stat64("a/", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat64("bsA.tar.gz", {st_mode=S_IFREG|0664, st_size=10878976, ...}) = 0
lstat64("a/bsA.tar.gz", 0xbf917a80)     = -1 ENOENT (No such file or directory)
rename("bsA.tar.gz", "a/bsA.tar.gz")    = 0
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote