Download presentation
Presentation is loading. Please wait.
Published byOlivia Slee Modified over 9 years ago
1
http://codeschool.org/ This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. Unix system calls (part 2)
2
http://codeschool.org/ This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. This is one part of a larger series. You may need to view previous parts to understand this material.
3
open (open/create a file and return a file descriptor) close (release file descriptor) read (copy bytes from a file to memory)* write (copy bytes of memory to a file)* *blocks
4
Process OS syscall write write buffer HD
5
f = open(‘/alice/tim’) write(f, ‘bla bla’) write(f, ‘bla bla bla’) close(f)
6
Process OS data and code syscall read read buffer HD
7
f = open(‘/alice/tim’) data = read(f) close(f)
8
f = open(‘/alice/tim’) data = read(f) while len(data) != 0: print(data) data = read(f) close(f)
9
byte 0last byte marker
10
byte 0last byte marker
11
byte 0last byte move with truncate
12
byte 0last byte move with truncate move with lseek marker
13
descriptor description
14
f = open(‘/alice/tim’) f2 = open(‘/alice/tim’) write(f, ‘bla bla’) data = read(f2)
15
descriptor description buffer file on disk
16
pid 75 write byte 0last byte pid 580 write pid 442 read pid 46 write
17
pid 75 write byte 0last byte pid 580 write ‘bla bla’ ‘herp derp’
18
pid 75 write byte 0last byte pid 580 write ‘her blap’ ‘blrp derp’ ‘hlapbder p’ ‘herp derp’ ‘bla bla’
19
umask (get/set default permissions for new files/directories) oldmask = umask(newmask) f = open(‘/alice/tim’) write(f, ‘bla bla’)
20
chmod (‘change mode’: set permissions of an existing file/directory) chmod(‘/alice/tim’, mask)
21
chmod (‘change mode’: set permissions of an existing file/directory) chown (‘change owner’: set owner of an existing file/directory) chmod(‘/alice/tim’, mask) chown(‘/alice/tim’, user, group)
22
HD partition 1 partition 2 partition 3 HD partition 4 flash drive partition 5 CD-ROM partition 6 partition 7
23
file 35 file 7 file 61 file 4 directory 21 directory 86 root directory 2 root directory always has inode 2 each file and directory in a partition is known by a unique inode number
24
mkdir (‘make directory’) rmdir (‘remove a file or directory’) mkdir(‘/alice/tim’) rmdir(‘/alice/tim’)
25
link (add directory entry) link(‘/alice/ian’, ‘/ben/jill’)
26
link (add directory entry) unlink (remove directory entry) link(‘/alice/ian’, ‘/ben/jill’) unlink(‘/alice/ian’)
27
getdents (‘get directory entries’) f = open(‘/alice’) entries = getdents(f) while len(entries) != 0: print(entries) entries = getdents(f) close(f)
28
HD partition 1 partition 2 partition 3 flash drive partition 4 / /alice/tim /jessica/vincent /jessica
29
mount (attach partition to the unified file system) umount (‘unmount’: detach partition from the unified file system) mount(partition1, ‘/alice/tim’) umount(‘/alice/tim’)
30
absolute path: /alice/tim relative path: alice/tim
31
chdir (change cwd, the ‘current working directory’) chdir(‘/ben/ian’) f = open(‘/alice/tim’) f2 = open(‘alice/tim’) becomes: ‘/ben/ian/alice/tim’
32
‘regular’ file directory symbolic link character device file block device file pipe socket
33
symlink (create a symbolic link) symlink(‘/alice/tim’, ‘/jill/ken’) f = open(‘/jill/ken’) follows link to: ‘/alice/tim’
34
CPU registers device read/write
35
a block may only be read/written as a whole partition composed of blocks block 0 block 1 block 2 block 3 block 4 block 5 block 6 block 7 block 8 block 9
36
partition composed of blocks block 0 block 1 inode 86 block 2 block 3 block 4 inode 86 block 5 block 6 inode 86 block 7 block 8 block 9
37
read/write block 0 block 1 inode 86 block 2 block 3 block 4 inode 86 block 5 block 6 inode 86 block 7 block 8 block 9 block 4 buffer
38
block 0 block 1 block 2 block 3 block 4 block 5 block 6 block device file byte 0 last byte
39
device output buffer input buffer process character device file read write input output
40
data taken starting here data appended here input/output buffers are FIFO (first in, first out)
41
read takes data starting here device appends data here input buffer
42
input/output buffers are FIFO (first in, first out) device takes data starting here write appends data here output buffer
43
block device buffers backed by storage character device buffers not backed by storage
44
/dev bf = open(‘/dev/sda1’) cf = open(‘/dev/lp0’) directory of device files
45
/dev bf = open(‘/dev/sda1’) cf = open(‘/dev/lp0’) lseek(bf, 100) bdata = read(bf) cdata = read(cf) directory of device files
46
pseudo-device files /dev/zero returns zeroed bytes /dev/random returns random data /dev/null discards data; returns no bytes at all
47
pipe (a FIFO as a file) read takes data starting here write appends data here
48
FIFO process A pipe readwrite process B
49
FIFO process A pipe readwrite process B FIFO readwrite pipe
50
mknod (‘make node’: create a regular file, device file, or named pipe) mknod(‘/ryan/kim’, BLOCK, deviceNum) mknod(‘/ryan/erin’, CHR, deviceNum) mknod(‘/ryan/tina’, FIFO)
51
pipe (creates a new, anonymous pipe and returns two file descriptors) fs = pipe() f1 = fs[0] f2 = fs[1]
52
memory-mapped files file stack code mmap’d file heap kernel code byte 0 byte n
53
f = open(‘/brad/mike’) address = mmap(500, f, 200) … # reading/writing the allocated memory reads/writes the file munmap(address) close(f) memory-mapped files
54
signals signals are sent by… the kernel the receiving process… performs a default action or invokes a handler function or blocks it or ignores it
55
signals signals are sent by… the kernel SIGSEGV SIGFPE SIGSTOP SIGCONT the receiving process… performs a default action or invokes a handler function or blocks it or ignores it
56
signals signals are sent by… the kernel or the kill system call SIGSEGV SIGFPE SIGSTOP SIGCONT the receiving process… performs a default action or invokes a handler function or blocks it or ignores it
57
kill (send a signal to a process) signal (set a signal to be handled, ignored, or trigger its default action) kill(35, SIGSTOP) signal(func, SIGFPE)
58
http://codeschool.org/ This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
59
lockf (obtains/releases an “advisory” lock on a file) f = open(‘/alice/tim’) lockf(f, F_LOCK) … # do stuff to file lockf(f, F_ULOCK) close(f)
60
stat (get file/directory information: size, last modification date/time, owner, etc.) status = stat(‘/alice/tim’)
61
HD partition 1 partition 2 partition 3 flash drive partition 4 / /alice/tim /jessica/vincent /jessica 1 2 2 3
62
chroot (change root directory) chroot(‘/ben/ian’) open(‘/alice/tim’) absolute path: ‘/ben/ian/alice/tim’
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.