1 / 7

System Interface

System Interface. Interface that provides services from the OS (Higher than BIOS) Memory Scheduler File/Storage System Inter-process Communication and Network, etc. program. libc. Operating System. BIOS. File System. A popular but also complex subsystem

Télécharger la présentation

System Interface

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. System Interface • Interface that provides services from the OS (Higher than BIOS) • Memory • Scheduler • File/Storage System • Inter-process Communication and Network, etc program libc Operating System BIOS

  2. File System • A popular but also complex subsystem • File descriptors (pseudo files, like stdin and stdout) • Low level IO • File Management • Examples file pointer / usr bin home file EOF

  3. A little about File Attributes • File attributes (srwxrwxrwx) • read, write and execute • an octal digit, rwx, desribes the permission to a set of users • Three sets of differents users, owner, group and others • Some unix commands: umask, chmod, etc to change the attributes

  4. File Accesses • Read and Write • getc() and putc(); getchar() and putchar() • int read(int fd, char *buf, int n); • int write(int fd, char *buf, int n) #include “syscalls.h” /* Should be stdio.h */ int getchar () { char c; return (read(0, &c, 1) == 1 ) ? c : EOF; } #include “syscalls.h” /* Should be stdio.h */ int main () { char buf[1024]; int n; while ((n = read(0, buf, 1024)) > 0) write ( 1, buf, n); return 0; }

  5. File Accesses -- continued • Open, creat, close and unlink • int open(char *name, int flags, int perms); • Persm can be O_RONLY, O_RDWR, O_WRONLY and others • int creat(char *name, int perms); /* within open, O_CREAT */ • int close(int fd); • int unlink(char *path); #include “stdio.h” /* A copy program*/ int main () { char *f1 =“file1”, *f2=“file2”; int fd1, fd2, n; if (fd1 = open(f1, O_RDONLY, 0) == -1) usage(“uanble to opening source file %s\n”, f1); if (fd2 = creat(f2, 0666) == -1) usage(“unable to creating new file %s \n”, f2); while ((n = read(fd1, buf, 1024) > 0) write ( fd2, buf, n); return 0; } #include <stdio.h> void usage(char *fmt, …) { va_list args; va_start(args, fmt); fprintf(stderr, “error: “); vfprintf(stderr, fmt, args); va_end(args); fprint(“usage: srcfile destfile\n”); }

  6. File seek -- access with fix location • lseek • long lseek(int fd, long offset, itn origin); • Origin: 0, 1, 2, determines where to start offset. • 0: beginning; 1: current location; 2: the end. #include “stdio.h” /* A copy program*/ int main () { char *f1 =“file1”, *f2=“file2”; int fd1, fd2, n; if (fd1 = open(f1, O_RDONLY, 0) == -1) usage(“uanble to opening source file %s\n”, f1); if (fd2 = creat(f2, 0666) == -1) usage(“unable to creating new file %s \n”, f2); else lseek(fd2, 0L, 2); while ((n = read(fd1, buf, 1024) > 0) write ( fd2, buf, n); return 0; }

  7. Recap on lab 4 • File access alternatives • File * fp = fopen(); • fgets() • Int fd = open(name, flags, perms); • read(fd, buff, n); #include <stdio.h> /* lab 4 */ int main () { char *maibox = argv[1]; int fd; File *fp; #if 1 fp = fopen(mailbox, “r”); #else fd = open (mailbox, O_RDONLY, 0); #endif for ( ) { /* keep reading every line and process the HEADER and BODIES */ } return 0; }

More Related