Inter-Process Communication Mechanisms (IPC)

Total Page:16

File Type:pdf, Size:1020Kb

Inter-Process Communication Mechanisms (IPC) Inter-Process Communication Mechanisms (IPC) Signals Pipes Message Queues Semaphores Shared Memory Signals v Signal: a mechanism to notify process of system events ™ Asynchronous notification ™ Synchronous errors or exceptions v Invoke signals ™ Processes may send each other signals by kill system call, ™ Kernel may send signals to a process. v A process may react to a signal by ™ Ignore the signal ™ handle signals itself v Asynchronously execute a specified procedure (the signal handler) Signals (Cont.) v A set of defined signals ™ 1)SIGHUP 2) SIGINT 3) SIGQUIT ™ 4) SIGILL 5) SIGTRAP 6) SIGIOT ™ 7) SIGBUS 8) SIGFPE 9) SIGKILL ™ 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 ™ 13) SIGPIPE 14) SIGALR 15)SIGTERM ™ 17) SIGCHLD 18) SIGCONT 19) SIGSTOP ™ 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU ™ 23) SIGURG 24) SIGXCPU 25) SIGXFSZ ™ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH ™ 29) SIGIO 30) SIGPWR Signals (Cont.) v Kernel handles signals using default actions. ™ Terminate the process ™ Core dump and terminate the process v E.g., SIGFPE(floatingpoint exception) : core dump and exit ™ Ignore the signal ™ Suspend the process ™ Resume the process’s execution, if it was stopped v Signal related fields in task_struct data structure ™ signal (32 bits):pending signals ™ blocked: a mask of blocked signal ™ sigaction array: address of handling routine or a flag to let kernel handle the signal Linux Signals v Normal process can only send signals to processes with the same uid and gid or to the processes in the same process group Note: Process Group v Unix introduces the notion of process groups to represent a job ™ $ ls| sort | more ™ A progress group consists of three processes: ls, sort, more v Login session ™ All processes that are descendants of the login shell process Signal Handling v Signal Delivery ™Deliver until the receiver process is scheduled vSignals are not presented to the process immediately they are generated ™Every time a process exits from a system call its signal and blocked fields are checked vIf there are any unblocked signals, they can now be delivered Signal Handling (Cont.) v The Linux signal processing code looks at the sigaction structure for each of the current unblocked signal Pipes v Half-duplex ™Data flows only in one direction v The writer and the reader communicate using standard read/write library function Communication pipe Task A Task B Pipe v $ls| pr |lpr v Linux using two file data structure ™Point at the same temporary VFS inode(points to a physical page within memory) v Use standard read/write library function Pipe Restriction of Pipes and Signals v Signal ™ The only information transported is a simple number v Renders signals unsuitable for transferring data. v Pipe ™ Impossible for any arbitrary process to read or write in a pipe unless it is the child of the process which created it. ™ Named Pipes (also known as FIFO) v also one-way flow of data v allowing unrelated processes to access a single FIFO. System V IPC Mechanisms v System V IPC Mechanisms ™Message queues vSend a message to other processes or receive messages from them ™Semaphores vSynchronize itself with other processes by means of semaphores ™Shared memory vShare a memory area with other processes System V IPC Mechanisms v First appeared in UNIX System V in 1983 v They allow unrelated processes to communicate with each other ™Including those that do not share the same ancestor Key Management v Each IPC resource is identified by ™ 32-bit key: similar to the file pathname v Freely chosen by the programmer ™ 32-bit identifier: similar to the file descriptor v Assigned by the kernel System V IPC v Create IPC resources: semget(), msgget(), shmget() ™ Derive the IPC identifier from the IPC key ™Process then use identifier to access the resource v If two independent processes want to share a common IPC resource ™The processes agree on some fixed, predefined IPC keys v Access to these System V IPC objects is checked using access permissions ™ Similar to access the file Message Queues v Message queue ™ A linked list of messages stored within the kernel ™Identified by a message queue identifier ™For processes to send messages asynchronously to each other. S queue R Message Queues (Cont.) v New messages are always added to the end of a queue v But can be removed anywhere in the queue intmsgrcv(intmsgid, void *ptr, size_tnbytes, long type, intflag) ™The type argument lets us specify which message we want v Type == 0, the first message is returned v Type > 0, the first message whose type equals type is returned Message Queue Data Structures m_listm_list ipc_idsstructure v Where the kernel keeps its message queues structipc_ids{ intsize;/* number of ipc_idelements */ intin_use;/* number of in-use ipc_idelements */ intmax_id; unsigned short seq; unsigned short seq_max; structsemaphore sem;/* semaphore protecting the ipc_idsDS spinlock_tary; structipc_id*entries;/* list of message queues */ }; msg_queuestructure v A single message queue structmsg_queue{ structkern_ipc_permq_perm;/* access permission */ time_tq_stime; /* last msgsndtime */ time_tq_rtime; /* last msgrcvtime */ time_tq_ctime; /* last change time */ unsigned long q_cbytes; /* current number of bytes on queue */ unsigned long q_qnum; /* number of messages in queue */ unsigned long q_qbytes; /* max number of bytes on queue */ pid_tq_lspid; /* pidof last msgsnd*/ pid_tq_lrpid; /* last receive pid*/ structlist_headq_messages; /* List of message in queue */ structlist_headq_receivers; structlist_headq_senders; }; Message Structures v Each message is broken in one or more pages ™ Dynamically allocated v The first page stores ™ The message header with type msg_msg ™The message text v Start right after the next field v If the message text is longer than 4072 bytes ™ The second or third page (and so on) is used with type meg_megseg Message Structures v Message Header structmsg_msg{ structlist_headm_list;/* pointers for message lists */ long m_type;/* message types */ intm_ts; /* message text size */ structmsg_msgseg*next; /* next portion of the message */ /* the actual message follows immediately */ }; Maintains a list of the linked messages in a single queue v Message Segment structmsg_msgseg{ structmsg_msgseg*next; /* the next part of the message follows immediately */ }; Structure of large messages structmsg_msg structmsg_msgseg next structmsg_msgseg next next First Chunk Second Third Chunk Chunk Message queue related system calls v msgget() ™ Return an id either for the existing queue with the key, or for a new message queue with the key v msgsnd() ™ Sends a message to a message queue v msgrcv() ™ Receives a message from a message queue v msgctl() ™ Perform a set of administrative operations on a message queue Semaphores v Semaphores ™A semaphore is a location in memory whose value can be test_and_set (atomic) by more than one processes ™Can be used to implement critical regions Semaphore Data Structure structsem_array The semaphore array Pending semaphore operations Semaphore Data Structure sem& sem_arraystructure structsem_array{ structkern_ipc_permsem_perm;/* permissions*/ time_tsem_otime; /* last semoptime */ time_tsem_ctime; /* last change time */ structsem*sem_base; /* ptrto first semaphore in array */ structsem_queue*sem_pending; /* pending operations */ … unsigned short sem_nsems;/* number of semaphores in array */ }; structsem{ intsemval; /* current value */ intsempid; /* pidof last operation*/ }; sem_queuestructure structsem_queue{ structsem_queue*next; /* next entry in the queue */ structsem_queue**prev; /* previous entry in the queue */ structtask_struct*sleeper; /* pointer to the sleeping process */ intpid;/* process id of requesting process */ intstatus; /* completion status of operation */ structsem_array*sma; /* semaphore array for operations */ ……. structsembuf*sops; /* array of pending operations */ intnsops; /* number of pending operations*/ intalter;/* 1èoperation will alter semaphore */ }; Semaphore related system calls v semget() ™ The counterpart of msgget, semgetcreates a semaphore set. v semop() ™ Performs an operation on semaphores v semctl() ™ Like msgctl, semctlperforms administrative operations on a semaphore set Shared Memory v Shared memory ™Allow processes to communicate via memory that appears in all of their virtual address space ™Controlled via keys and access rights checking ™Rely on other mechanisms (e.g. semaphores) to synchronize access to the memory Shared Memory (Cont.) v Fastest, easiest of the IPC services ™Because data does not need to be copied between the client and server v Mutual exclusion problem ™Should synchronize access to a given region among multiple processes ™Often semaphores are used to synchronize shared memory access Shared Memory (Cont.) share Process 2 Process 1 physical page Share memory system calls v shmget() ™ Returns a unique id for a shared memory region v shmat() ™ Attaches the calling process to a shared memory region v shmdt() ™ Detaches the calling process from the shared memory region v shmctl() ™ Performs administrative operations on a shared memory region File System Linux File System v Linux supports different file system structures at the same time ™ Ext2, ISO 9660, ufs, FAT-16,VFAT,… v Hierarchical File System Structure ™ Linux adds each new file system into this single file system tree as it is mounted v The real file systems are separated from the OS by an interface layer: Virtual File System: VFS v VFS allows Linux to support many different file systems, each presenting a common software interface to the VFS. Hierarchical File System
Recommended publications
  • Distributed Programming I (Socket - Nov'09)
    Distributed programming I (socket - nov'09) Warning for programmers network programming is dangerously close to O.S. Network programming: sockets kernel, and therefore: It can easily hang the O.S. verify the results of every operation, without assuming anything as granted Antonio Lioy < [email protected] > APIs can vary in details that are minimal but important consider every possible situation to create english version created and modified by “portable” programs Marco D. Aime < [email protected] > we will try to use Posix 1.g Politecnico di Torino Dip. Automatica e Informatica ISO/OSI, TCP/IP, network programming Exercise – copying data copy the content of file F1 (first parameter on the application command line) into file F2 (second parameter on the 7. application details application command line) user 6. presentation (l6: XDR/XML/... process l5: RPC/SOAP/...) 5. session network programming 4. transport TCP UDP SCTP interface 3. network IPv4, IPv6 kernel communication 2. data link device driver details 1. physical and hardware OSI model IP suite ref. UNP Intro copyfile.c Error messages Error functions must contain at least: best to define standard error reporting functions [ PROG ] program name which accept: [ LEVEL ] error level (info, warning, error, bug) a format string for the error [ TEXT ] error signalling, the most specific as possible a list of parameters to be printed (e.g. input file name and line where the problem has UNP, appendix D.4 (D.3 in 3rd edition) occurred) errno? termination? log level [ ERRNO ] system error number and/or name (if applicable) err_msg no no LOG_INFO err_quit no exit(1) LOG_ERR suggested format: err_ret yes no LOG_INFO err_sys yes exit(1) LOG_ERR ( PROG ) LEVEL - TEXT : ERRNO err_dump yes abort( ) LOG_ERR errlib.h errlib.c © A.Lioy - Politecnico di Torino (2009) B-1 Distributed programming I (socket - nov'09) stdarg.h stdarg.h usage example variable list of arguments (ANSI C) create a function named my_printf declared with an ellipsis (.
    [Show full text]
  • IEEE Std 1003.1-2008
    This preview is downloaded from www.sis.se. Buy the entire standard via https://www.sis.se/std-911530 INTERNATIONAL ISO/IEC/ STANDARD IEEE 9945 First edition 2009-09-15 Information technology — Portable Operating System Interface (POSIX®) Base Specifications, Issue 7 Technologies de l'information — Spécifications de base de l'interface pour la portabilité des systèmes (POSIX ®), Issue 7 Reference number ISO/IEC/IEEE 9945:2009(E) Copyright © 2001-2008, IEEE and The Open Group. All rights reserved This preview is downloaded from www.sis.se. Buy the entire standard via https://www.sis.se/std-911530 ISO/IEC/IEEE 9945:2009(E) PDF disclaimer This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this file, parties accept therein the responsibility of not infringing Adobe's licensing policy. Neither the ISO Central Secretariat nor IEEE accepts any liability in this area. Adobe is a trademark of Adobe Systems Incorporated. Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation parameters were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies and IEEE members. In the unlikely event that a problem relating to it is found, please inform the ISO Central Secretariat or IEEE at the address given below.
    [Show full text]
  • Beej's Guide to Unix IPC
    Beej's Guide to Unix IPC Brian “Beej Jorgensen” Hall [email protected] Version 1.1.3 December 1, 2015 Copyright © 2015 Brian “Beej Jorgensen” Hall This guide is written in XML using the vim editor on a Slackware Linux box loaded with GNU tools. The cover “art” and diagrams are produced with Inkscape. The XML is converted into HTML and XSL-FO by custom Python scripts. The XSL-FO output is then munged by Apache FOP to produce PDF documents, using Liberation fonts. The toolchain is composed of 100% Free and Open Source Software. Unless otherwise mutually agreed by the parties in writing, the author offers the work as-is and makes no representations or warranties of any kind concerning the work, express, implied, statutory or otherwise, including, without limitation, warranties of title, merchantibility, fitness for a particular purpose, noninfringement, or the absence of latent or other defects, accuracy, or the presence of absence of errors, whether or not discoverable. Except to the extent required by applicable law, in no event will the author be liable to you on any legal theory for any special, incidental, consequential, punitive or exemplary damages arising out of the use of the work, even if the author has been advised of the possibility of such damages. This document is freely distributable under the terms of the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. See the Copyright and Distribution section for details. Copyright © 2015 Brian “Beej Jorgensen” Hall Contents 1. Intro................................................................................................................................................................1 1.1. Audience 1 1.2. Platform and Compiler 1 1.3.
    [Show full text]
  • Mmap and Dma
    CHAPTER THIRTEEN MMAP AND DMA This chapter delves into the area of Linux memory management, with an emphasis on techniques that are useful to the device driver writer. The material in this chap- ter is somewhat advanced, and not everybody will need a grasp of it. Nonetheless, many tasks can only be done through digging more deeply into the memory man- agement subsystem; it also provides an interesting look into how an important part of the kernel works. The material in this chapter is divided into three sections. The first covers the implementation of the mmap system call, which allows the mapping of device memory directly into a user process’s address space. We then cover the kernel kiobuf mechanism, which provides direct access to user memory from kernel space. The kiobuf system may be used to implement ‘‘raw I/O’’ for certain kinds of devices. The final section covers direct memory access (DMA) I/O operations, which essentially provide peripherals with direct access to system memory. Of course, all of these techniques requir e an understanding of how Linux memory management works, so we start with an overview of that subsystem. Memor y Management in Linux Rather than describing the theory of memory management in operating systems, this section tries to pinpoint the main features of the Linux implementation of the theory. Although you do not need to be a Linux virtual memory guru to imple- ment mmap, a basic overview of how things work is useful. What follows is a fairly lengthy description of the data structures used by the kernel to manage memory.
    [Show full text]
  • Ext4 File System and Crash Consistency
    1 Ext4 file system and crash consistency Changwoo Min 2 Summary of last lectures • Tools: building, exploring, and debugging Linux kernel • Core kernel infrastructure • Process management & scheduling • Interrupt & interrupt handler • Kernel synchronization • Memory management • Virtual file system • Page cache and page fault 3 Today: ext4 file system and crash consistency • File system in Linux kernel • Design considerations of a file system • History of file system • On-disk structure of Ext4 • File operations • Crash consistency 4 File system in Linux kernel User space application (ex: cp) User-space Syscalls: open, read, write, etc. Kernel-space VFS: Virtual File System Filesystems ext4 FAT32 JFFS2 Block layer Hardware Embedded Hard disk USB drive flash 5 What is a file system fundamentally? int main(int argc, char *argv[]) { int fd; char buffer[4096]; struct stat_buf; DIR *dir; struct dirent *entry; /* 1. Path name -> inode mapping */ fd = open("/home/lkp/hello.c" , O_RDONLY); /* 2. File offset -> disk block address mapping */ pread(fd, buffer, sizeof(buffer), 0); /* 3. File meta data operation */ fstat(fd, &stat_buf); printf("file size = %d\n", stat_buf.st_size); /* 4. Directory operation */ dir = opendir("/home"); entry = readdir(dir); printf("dir = %s\n", entry->d_name); return 0; } 6 Why do we care EXT4 file system? • Most widely-deployed file system • Default file system of major Linux distributions • File system used in Google data center • Default file system of Android kernel • Follows the traditional file system design 7 History of file system design 8 UFS (Unix File System) • The original UNIX file system • Design by Dennis Ritche and Ken Thompson (1974) • The first Linux file system (ext) and Minix FS has a similar layout 9 UFS (Unix File System) • Performance problem of UFS (and the first Linux file system) • Especially, long seek time between an inode and data block 10 FFS (Fast File System) • The file system of BSD UNIX • Designed by Marshall Kirk McKusick, et al.
    [Show full text]
  • An Introduction to Linux IPC
    An introduction to Linux IPC Michael Kerrisk © 2013 linux.conf.au 2013 http://man7.org/ Canberra, Australia [email protected] 2013-01-30 http://lwn.net/ [email protected] man7 .org 1 Goal ● Limited time! ● Get a flavor of main IPC methods man7 .org 2 Me ● Programming on UNIX & Linux since 1987 ● Linux man-pages maintainer ● http://www.kernel.org/doc/man-pages/ ● Kernel + glibc API ● Author of: Further info: http://man7.org/tlpi/ man7 .org 3 You ● Can read a bit of C ● Have a passing familiarity with common syscalls ● fork(), open(), read(), write() man7 .org 4 There’s a lot of IPC ● Pipes ● Shared memory mappings ● FIFOs ● File vs Anonymous ● Cross-memory attach ● Pseudoterminals ● proc_vm_readv() / proc_vm_writev() ● Sockets ● Signals ● Stream vs Datagram (vs Seq. packet) ● Standard, Realtime ● UNIX vs Internet domain ● Eventfd ● POSIX message queues ● Futexes ● POSIX shared memory ● Record locks ● ● POSIX semaphores File locks ● ● Named, Unnamed Mutexes ● System V message queues ● Condition variables ● System V shared memory ● Barriers ● ● System V semaphores Read-write locks man7 .org 5 It helps to classify ● Pipes ● Shared memory mappings ● FIFOs ● File vs Anonymous ● Cross-memory attach ● Pseudoterminals ● proc_vm_readv() / proc_vm_writev() ● Sockets ● Signals ● Stream vs Datagram (vs Seq. packet) ● Standard, Realtime ● UNIX vs Internet domain ● Eventfd ● POSIX message queues ● Futexes ● POSIX shared memory ● Record locks ● ● POSIX semaphores File locks ● ● Named, Unnamed Mutexes ● System V message queues ● Condition variables ● System V shared memory ● Barriers ● ● System V semaphores Read-write locks man7 .org 6 It helps to classify ● Pipes ● Shared memory mappings ● FIFOs ● File vs Anonymous ● Cross-memoryn attach ● Pseudoterminals tio a ● proc_vm_readv() / proc_vm_writev() ● Sockets ic n ● Signals ● Stream vs Datagram (vs uSeq.
    [Show full text]
  • POSIX Signals
    CSE 410: Systems Programming POSIX Signals Ethan Blanton Department of Computer Science and Engineering University at Buffalo Introduction Signals Blocking Concurrency Sending Signals Summary References POSIX Signals POSIX signals are another form of interprocess communication. They are also a way to create concurrency in programs. For these two reasons, they are rather complicated and subtle! Signals provide a simple message passing mechanism. © 2018 Ethan Blanton / CSE 410: Systems Programming Introduction Signals Blocking Concurrency Sending Signals Summary References Signals as Messages POSIX signals are asynchronous messages. Asynchronous means that their reception can occur at any time.1 The message is the reception of the signal itself. Each signal has a number, which is a small integer. POSIX signals carry no other data. 1Almost. We’ll see how to control it later. © 2018 Ethan Blanton / CSE 410: Systems Programming Introduction Signals Blocking Concurrency Sending Signals Summary References Signal Types There are two basic types of POSIX signals: Reliable signals Real-time signals Real-time signals are much more complicated. In particular, they can carry data. We will discuss only reliable signals in this lecture. © 2018 Ethan Blanton / CSE 410: Systems Programming Introduction Signals Blocking Concurrency Sending Signals Summary References Asynchronous Reception From the point of view of the application: Signals can be blocked or ignored Enabled signals may be received between any two processor instructions A received signal can run a user-defined function called a signal handler This means that enabled signals and program code must very carefully manipulate shared or global data! © 2018 Ethan Blanton / CSE 410: Systems Programming Introduction Signals Blocking Concurrency Sending Signals Summary References Signals POSIX defines a number of signals by name and number.
    [Show full text]
  • Operating Systems Processes
    Operating Systems Processes Eno Thereska [email protected] http://www.imperial.ac.uk/computing/current-students/courses/211/ Partly based on slides from Julie McCann and Cristian Cadar Administrativia • Lecturer: Dr Eno Thereska § Email: [email protected] § Office: Huxley 450 • Class website http://www.imperial.ac.uk/computing/current- students/courses/211/ 2 Tutorials • No separate tutorial slots § Tutorials embedded in lectures • Tutorial exercises, with solutions, distributed on the course website § You are responsible for studying on your own the ones that we don’t cover during the lectures § Let me know if you have any questions or would like to discuss any others in class 3 Tutorial question & warmup • List the most important resources that must be managed by an operating system in the following settings: § Supercomputer § Smartphone § ”Her” A lonely writer develops an unlikely relationship with an operating system designed to meet his every need. Copyright IMDB.com 4 Introduction to Processes •One of the oldest abstractions in computing § An instance of a program being executed, a running program •Allows a single processor to run multiple programs “simultaneously” § Processes turn a single CPU into multiple virtual CPUs § Each process runs on a virtual CPU 5 Why Have Processes? •Provide (the illusion of) concurrency § Real vs. apparent concurrency •Provide isolation § Each process has its own address space •Simplicity of programming § Firefox doesn’t need to worry about gcc •Allow better utilisation of machine resources § Different processes require different resources at a certain time 6 Concurrency Apparent Concurrency (pseudo-concurrency): A single hardware processor which is switched between processes by interleaving.
    [Show full text]
  • Table of Contents
    TABLE OF CONTENTS Chapter 1 Introduction ............................................................................................. 3 Chapter 2 Examples for FPGA ................................................................................. 4 2.1 Factory Default Code ................................................................................................................................. 4 2.2 Nios II Control for Programmable PLL/ Temperature/ Power/ 9-axis ....................................................... 6 2.3 Nios DDR4 SDRAM Test ........................................................................................................................ 12 2.4 RTL DDR4 SDRAM Test ......................................................................................................................... 14 2.5 USB Type-C DisplayPort Alternate Mode ............................................................................................... 15 2.6 USB Type-C FX3 Loopback .................................................................................................................... 17 2.7 HDMI TX and RX in 4K Resolution ........................................................................................................ 21 2.8 HDMI TX in 4K Resolution ..................................................................................................................... 26 2.9 Low Latency Ethernet 10G MAC Demo .................................................................................................. 29 2.10 Socket
    [Show full text]
  • How UNIX Organizes and Accesses Files on Disk Why File Systems
    UNIX File Systems How UNIX Organizes and Accesses Files on Disk Why File Systems • File system is a service which supports an abstract representation of the secondary storage to the OS • A file system organizes data logically for random access by the OS. • A virtual file system provides the interface between the data representation by the kernel to the user process and the data presentation to the kernel in memory. The file and directory system cache. • Because of the performance disparity between disk and CPU/memory, file system performance is the paramount issue for any OS Main memory vs. Secondary storage • Small (MB/GB) Large (GB/TB) • Expensive Cheap -2 -3 • Fast (10-6/10-7 sec) Slow (10 /10 sec) • Volatile Persistent Cannot be directly accessed • Directly accessible by CPU by CPU – Interface: (virtual) memory – Data should be first address brought into the main memory Secondary storage (disk) • A number of disks directly attached to the computer • Network attached disks accessible through a fast network - Storage Area Network (SAN) • Simple disks (IDE, SATA) have a described disk geometry. Sector size is the minimum read/write unit of data (usually 512Bytes) – Access: (#surface, #track, #sector) • Smart disks (SCSI, SAN, NAS) hide the internal disk layout using a controller type function – Access: (#sector) • Moving arm assembly (Seek) is expensive – Sequential access is x100 times faster than the random access Internal disk structure • Disk structure User Process Accessing Data • Given the file name. Get to the file’s FCB using the file system catalog (Open, Close, Set_Attribute) • The catalog maps a file name to the FCB – Checks permissions • file_handle=open(file_name): – search the catalog and bring FCB into the memory – UNIX: in-memory FCB: in-core i-node • Use the FCB to get to the desired offset within the file data: (CREATE, DELETE, SEEK, TRUNCATE) • close(file_handle): release FCB from memory Catalog Organization (Directories) • In UNIX, special files (not special device files) called directories contain information about other files.
    [Show full text]
  • Programming with POSIX Threads II
    Programming with POSIX Threads II CS 167 IV–1 Copyright © 2008 Thomas W. Doeppner. All rights reserved. Global Variables int IOfunc( ) { extern int errno; ... if (write(fd, buffer, size) == –1) { if (errno == EIO) fprintf(stderr, "IO problems ...\n"); ... return(0); } ... } CS 167 IV–2 Copyright © 2008 Thomas W. Doeppner. All rights reserved. Unix was not designed with multithreaded programming in mind. A good example of the implications of this is the manner in which error codes for failed system calls are made available to a program: if a system call fails, it returns –1 and the error code is stored in the global variable errno. Though this is not all that bad for single-threaded programs, it is plain wrong for multithreaded programs. Coping • Fix Unix’s C/system-call interface • Make errno refer to a different location in each thread – e.g. #define errno __errno(thread_ID) CS 167 IV–3 Copyright © 2008 Thomas W. Doeppner. All rights reserved. The ideal way to solve the “errno problem” would be to redesign the C/system-call interface: system calls should return only an error code. Anything else to be returned should be returned via result parameters. (This is how things are done in Windows NT.) Unfortunately, this is not possible (it would break pretty much every Unix program in existence). So we are stuck with errno. What can we do to make errno coexist with multithreaded programming? What would help would be to arrange, somehow, that each thread has its own private copy of errno. I.e., whenever a thread refers to errno, it refers to a different location from any other thread when it refers to errno.
    [Show full text]
  • File Systems
    File Systems Profs. Bracy and Van Renesse based on slides by Prof. Sirer Storing Information • Applications could store information in the process address space • Why is this a bad idea? – Size is limited to size of virtual address space – The data is lost when the application terminates • Even when computer doesn’t crash! – Multiple process might want to access the same data File Systems • 3 criteria for long-term information storage: 1. Able to store very large amount of information 2. Information must survive the processes using it 3. Provide concurrent access to multiple processes • Solution: – Store information on disks in units called files – Files are persistent, only owner can delete it – Files are managed by the OS File Systems: How the OS manages files! File Naming • Motivation: Files abstract information stored on disk – You do not need to remember block, sector, … – We have human readable names • How does it work? – Process creates a file, and gives it a name • Other processes can access the file by that name – Naming conventions are OS dependent • Usually names as long as 255 characters is allowed • Windows names not case sensitive, UNIX family is File Extensions • Name divided into 2 parts: Name+Extension • On UNIX, extensions are not enforced by OS – Some applications might insist upon them • Think: .c, .h, .o, .s, etc. for C compiler • Windows attaches meaning to extensions – Tries to associate applications to file extensions File Access • Sequential access – read all bytes/records from the beginning – particularly convenient for magnetic tape • Random access – bytes/records read in any order – essential for database systems File Attributes • File-specific info maintained by the OS – File size, modification date, creation time, etc.
    [Show full text]