CS 5600 Computer Systems

Total Page:16

File Type:pdf, Size:1020Kb

CS 5600 Computer Systems CS 5600 Computer Systems Lecture 4: Programs, Processes, and Threads • Programs • Processes • Context Switching • Protected Mode Execution • Inter-process Communication • Threads 2 Running Dynamic Code • One basic function of an OS is to execute and manage code dynamically, e.g.: – A command issued at a command line terminal – An icon double clicked from the desktop – Jobs/tasks run as part of a batch system (MapReduce) • A process is the basic unit of a program in execution 3 Programs and Processes Process The running instantiation of a program, stored in RAM Program An executable file in long-term One-to-many storage relationship between program and processes 4 How to Run a Program? • When you double-click on an .exe, how does the OS turn the file on disk into a process? • What information must the .exe file contain in order to run as a program? 5 Program Formats • Programs obey specific file formats – CP/M and DOS: COM executables (*.com) – DOS: MZ executables (*.exe) • Named after Mark Zbikowski, a DOS developer – Windows Portable Executable (PE, PE32+) (*.exe) • Modified version of Unix COFF executable format • PE files start with an MZ header. – Mac OSX: Mach object file format (Mach-O) – Unix/Linux: Executable and Linkable Format (ELF) • designed to be flexible and extensible • all you need to know to load and start execution regardless of architecture 6 ABI - Application Binary Interface • interface between 2 programs at the binary (machine code) level – informally, similar to API but on bits and bytes • Calling conventions – where are args and results stored • Binary format info to be passed from one program to another • Compiler and OS take care of this – binaries created from different compiler-OS pair will not always run on your machine! 7 test.c #include <stdio.h> int big_big_array[10 * 1024 * 1024]; char *a_string = "Hello, World!"; int a_var_with_value = 100; int main(void) { big_big_array[0] = 100; printf("%s\n", a_string); a_var_with_value += 20; printf("main is : %p\n", &main); return 0; } 8 ELF File Format • ELF Header – Contains compatibility info – Entry point of the executable code • Program header table – Lists all the segments in the file – Used to load and execute the program • Section header table – Used by the linker 9 ELF Header Format typedef struct { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; ISA of executable code Elf32_Word e_version; Elf32_Addr e_entry; • OffsetEntry of point program of Elf32_Off e_phoff; executableheaders code Elf32_Off e_shoff; Offset• What of section should headersEIP be Elf32_Word e_flags; set to initially? Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; # of program headers Elf32_Half e_shentsize; Elf32_Half e_shnum; # of section headers Elf32_Half e_shstrndx; } Elf32_Ehdr; 10 ELF Header Example $ gcc –g –o test test.c $ readelf --header test ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x400460 Start of program headers: 64 (bytes into file) Start of section headers: 5216 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 9 Size of section headers: 64 (bytes) Number of section headers: 36 Section header string table index: 33 11 Investigating the Entry Point int main(void) { … printf("main is : %p\n", &main); return 0; } $ gcc -g -o test test.c $ readelf --headers ./test | grep Entry point' Entry point address: 0x400460 $ ./test Hello World! main is : 0x400544 12 Entry point != &main $ ./test • Most compilers insert extra Hello World! code into compiled main is : 0x400544 programs $ readelf --headers ./test | grep Entry point' Entry point address: 0x400460 • This code typically runs $ objdump --disassemble –M intel ./test before and after main() … 0000000000400460 <_start>: 400460: 31 ed xor ebp,ebp 400462: 49 89 d1 mov r9,rdx 400465: 5e pop rsi 400466: 48 89 e2 mov rdx,rsp 400469: 48 83 e4 f0 and rsp,0xfffffffffffffff0 40046d: 50 push rax 40046e: 54 push rsp 40046f: 49 c7 c0 20 06 40 00 mov r8,0x400620 400476: 48 c7 c1 90 05 40 00 mov rcx,0x400590 40047d: 48 c7 c7 44 05 40 00 mov rdi,0x400544 400484: e8 c7 ff ff ff call 400450 <__libc_start_main@plt> … 13 Sections and Segments Multiple sections • Sections are the various in one segments pieces of code and data Segments that get linked together by the compiler • Each segment contains one or more sections – Each segment contains sections that are related • E.g. all code sections – Segments are the basic units for the loader 14 Common Sections • Sections are the various pieces of code and data that compose a program • Key sections: – .text – Executable code – .bss – Global variables initialized to zero – .data, .rodata – Initialized data and strings – .strtab – Names of functions and variables – .symtab – Debug symbols 15 Section! Example String variable .data Empty 10 MB array ! .bss int big_big_array[10*1024*1024]; char *a_string = "Hello, World!"; int a_var_with_value = 0x100; int main(void) { Initialized global variable ! .data big_big_array[0] = 100; printf("%s\n", a_string); a_var_with_value += 20; … } String constant ! .rodata Code ! .text 16 $ readelf --headers ./test … Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .note.ABI-tag .note.gnu.build- id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 03 .ctors .dtors .jcr .dynamic .got .got.plt .data .bss 04 .dynamic 05 .note.ABI-tag .note.gnu.build-id 06 .eh_frame_hdr 07 08 .ctors .dtors .jcr .dynamic .got … There are 36 section headers, starting at offset 0x1460: Section Headers: [Nr] Name Type Address Offset Size ES Flags Link Info Align [ 0] NULL 00000000 00000000 00000000 00 0 0 0 [ 1] .interp PROGBITS 00400238 00000238 0000001c 00 A 0 0 1 [ 2] .note.ABI-tag NOTE 00400254 00000254 00000020 00 A 0 0 4 [ 3] .note.gnu.build-I NOTE 00400274 00000274 00000024 00 A 0 0 4 [ 4] .gnu.hash GNU_HASH 00400298 00000298 0000001c 00 A 5 0 8 [ 5] .dynsym DYNSYM 004002b8 000002b8 00000078 18 A 6 1 8 [ 6] .dynstr STRTAB 00400330 00000330 00000044 00 A 0 0 1 [ 7] .gnu.version VERSYM 00400374 00000374 0000000a 02 A 5 0 2 … .text Example Header typedef struct { Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Address to load Elf32_Addr p_paddr; section in Elf32_Word p_filesz; memory Elf32_Word p_memsz; Elf32_Word p_flags; Offset of data in the Elf32_Word p_align; file Data } for the program How many bytes (in $ readelf --sections ./test hex) are in the section ... Section Headers: … Executable [Nr] Name Type Address Offset Size ES Flags Link Info Align [13] .text PROGBITS 00400460 00000460 00000218 00 AX 0 0 16 … .bss Example Header int big_big_array[10*1024*1024]; typedef struct { Offset of data in the Elf32_Word p_type; file Elf32_Off p_offset; Elf32_Addr p_vaddr; Address to load Elf32_Addr p_paddr; section in Elf32_Word p_filesz; memory Elf32_Word p_memsz; Elf32_Word p_flags; Contains Elf32_Word p_align; no data } hex(4*10*1024*1024) = $ readelf --sections ./test 0x2800020 ... Section Headers: Writable … [Nr] Name Type Address Offset Size ES Flags Link Info Align [25] .bss NOBITS 00601040 00001034 02800020 00 WA 0 0 32 [26] .comment PROGBITS 00000000 00001034 000002a 01 MS 0 0 1 … Segments • Each segment contains one or more sections – All of the sections in a segment are related, e.g.: • All sections contain compiled code • Or, all sections contain initialized data • Or, all sections contain debug information • … etc… • Segments are used by the loader to: – Place data and code in memory – Determine memory permissions (read/write/ execute) 20 Segment Header typedef struct { Type of segment Elf32_Word p_type Offset within the ELF Elf32_Off p_offset; file Locationfor the segment to load thedata Elf32_Addr p_vaddr; segment into memory Elf32_Addr p_paddr; Size of the segment Size of the segment in Elf32_Word p_filesz; data on disk Elf32_Word p_memsz; memory Elf32_Word p_flags; Elf32_Word p_align;• Flags describing the } section data • Examples: executable, read-only 21 $ readelf --segments ./test Elf file type is EXEC (Executable file) Entry point 0x400460 There are 9 program headers, starting at offset 64 Executable Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align PHDR 0x00000040 0x00400040 0x00400040 0x000001f8 0x000001f8 R E 8 INTERP 0x00000238 0x00400238 0x00400238 0x0000001c 0x0000001c R 1 LOAD 0x00000000 0x00400000 0x00400000 0x0000077c 0x0000077c R E 200000 LOAD 0x00000e28 0x00600e28 0x00600e28 0x0000020c 0x02800238 RW 200000 DYNAMIC 0x00000e50 0x00600e50 0x00600e50 0x00000190 0x00000190 RW 8 NOTE 0x00000254 0x00400254 0x00400254 0x00000044 0x00000044 R 4 GNU_EH_FRAME 0x000006a8 0x004006a8 0x004006a8 0x0000002c 0x0000002c R 4 GNU_STACK 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 RW 8 GNU_RELRO 0x00000e28 0x00600e28 0x00600e28 0x000001d8 0x000001d8 R 1 Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .note.ABI-tag .note.gnu.build- id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .e h_frame 03 .ctors .dtors .jcr .dynamic .got .got.plt .data .bss 04 .dynamic … What About Static Data? #include <stdio.h> $ strings –t d ./test 568 /lib64/ld-linux- int big_big_array[10 * 1024 * 1024];
Recommended publications
  • Inter-Process Communication, Analysis, Guidelines and Its Impact on Computer Security
    The 7th International Conference for Informatics and Information Technology (CIIT 2010) INTER-PROCESS COMMUNICATION, ANALYSIS, GUIDELINES AND ITS IMPACT ON COMPUTER SECURITY Zoran Spasov Ph.D. Ana Madevska Bogdanova T-Mobile Macedonia Institute of Informatics, FNSM Skopje, Macedonia Skopje, Macedonia ABSTRACT Finally the conclusion will offer a summary of the available programming techniques and implementations for the In this paper we look at the inter-process communication Windows platforms. We will note the security risks and the (IPC) also known as inter-thread or inter-application best practices to avoid them. communication from other knowledge sources. We will look and analyze the different types of IPC in the Microsoft II. INTER -PROCESS COMMUNICATION (IPC) Windows operating system, their implementation and the usefulness of this kind of approach in the terms of Inter-Process Communication (IPC) stands for many communication between processes. Only local techniques for the exchange of data among threads in one or implementation of the IPC will be addressed in this paper. more processes - one-directional or two-directional. Processes Special emphasis will be given to the system mechanisms that may be running locally or on many different computers are involved with the creation, management, and use of connected by a network. We can divide the IPC techniques named pipes and sockets. into groups of methods, grouped by their way of This paper will discuss some of the IPC options and communication: message passing, synchronization, shared techniques that are available to Microsoft Windows memory and remote procedure calls (RPC). We should programmers. We will make a comparison between Microsoft carefully choose the IPC method depending on data load that remoting and Microsoft message queues (pros and cons).
    [Show full text]
  • Half-Process: a Process Partially Sharing Its Address Space with Other Processes
    Electronic Preprint for Journal of Information Processing Vol.20 No.1 Regular Paper Half-process: A Process Partially Sharing Its Address Space with Other Processes Kentaro Hara1,a) Kenjiro Taura1 Received: March 31, 2011, Accepted: September 12, 2011 Abstract: Threads share a single address space with each other. On the other hand, a process has its own address space. Since whether to share or not to share the address space depends on each data structure in the whole program, the choice of “a thread or a process” for the whole program is too much “all-or-nothing.” With this motivation, this paper proposes a half-process, a process partially sharing its address space with other processes. This paper describes the design and the kernel-level implementation of the half-process and discusses the potential applicability of the half-process for multi-thread programming with thread-unsafe libraries, intra-node communications in parallel pro- gramming frameworks and transparent kernel-level thread migration. In particular, the thread migration based on the half-process is the first work that achieves transparent kernel-level thread migration by solving the problem of sharing global variables between threads. Keywords: partitioned global address space, Linux kernel, thread migration, finite element method, reconfiguration, productivity 1. Introduction Threads share a single address space with each other. When one thread issues memory operations such as mmap()/munmap()/mprotect(), all threads can see the ef- fects immediately. When one thread updates a memory address, Fig. 1 The design of a half-process. all threads can see the update immediately. In addition, all programmer can enjoy both advantages of process and thread, threads can access the same data with the same address.
    [Show full text]
  • Linux/Unix Inter-Process Communication
    Mohammad S. Hasan Faculty of Computing, Engineering & Technology Linux/Unix inter-process communication Mohammad S. Hasan Staffordshire University, UK Linux/Unix inter-process communication Slide 1 Mohammad S. Hasan Faculty of Computing, Engineering & Technology Lecture Outline Inter-process communication methods in Linux/Unix Files Pipes FIFOs Signals Sockets System V IPC - semaphores, messages, shared memory Linux/Unix inter-process communication Slide 2 Mohammad S. Hasan Faculty of Computing, Engineering & Technology Interprocess communication (IPC) There are many interprocess communication mechanisms in UNIX and Linux Each mechanism has its own system calls, advantages and disadvantages Files, pipes, FIFOs, signals, semaphores, messages, shared memory, sockets, streams We will look a number of them Linux/Unix inter-process communication Slide 3 Mohammad S. Hasan Faculty of Computing, Engineering & Technology Interprocess communication (IPC) (Cont.) Linux/Unix inter-process communication Slide 4 Mohammad S. Hasan Faculty of Computing, Engineering & Technology Files These can handle simple IPC but have 2 P1 main problems for serious IPC work: Writer if reader faster than writer, then reader reads EOF, but cannot tell whether it has simply caught up with writer or writer has File …. completed (synchronisation problem) …. …. writer only writes to end of file, thus files EOF can grow very large for long lived processes (disk/memory space problem) P2 Reader Linux/Unix inter-process communication Slide 5 Mohammad S. Hasan Faculty of Computing, Engineering & Technology Pipes You should already be familiar with pipe from practical exercises e.g. who | sort This sets up a one directional pipeline that takes the output from ‘who’ and gives it as input to ‘sort’ Linux/Unix inter-process communication Slide 6 Mohammad S.
    [Show full text]
  • System Calls & Signals
    CS345 OPERATING SYSTEMS System calls & Signals Panagiotis Papadopoulos [email protected] 1 SYSTEM CALL When a program invokes a system call, it is interrupted and the system switches to Kernel space. The Kernel then saves the process execution context (so that it can resume the program later) and determines what is being requested. The Kernel carefully checks that the request is valid and that the process invoking the system call has enough privilege. For instance some system calls can only be called by a user with superuser privilege (often referred to as root). If everything is good, the Kernel processes the request in Kernel Mode and can access the device drivers in charge of controlling the hardware (e.g. reading a character inputted from the keyboard). The Kernel can read and modify the data of the calling process as it has access to memory in User Space (e.g. it can copy the keyboard character into a buffer that the calling process has access to) When the Kernel is done processing the request, it restores the process execution context that was saved when the system call was invoked, and control returns to the calling program which continues executing. 2 SYSTEM CALLS FORK() 3 THE FORK() SYSTEM CALL (1/2) • A process calling fork()spawns a child process. • The child is almost an identical clone of the parent: • Program Text (segment .text) • Stack (ss) • PCB (eg. registers) • Data (segment .data) #include <sys/types.h> #include <unistd.h> pid_t fork(void); 4 THE FORK() SYSTEM CALL (2/2) • The fork()is one of the those system calls, which is called once, but returns twice! Consider a piece of program • After fork()both the parent and the child are ..
    [Show full text]
  • The Operating System Zoo 1.4 Computer Hardware Review 1.5 Operating System Concepts 1.6 System Calls 1.7 Operating System Structure 10.2 UNIX
    CS450/550 Operating Systems Lecture 1 Introductions to OS and Unix Palden Lama Department of Computer Science CS450/550 P&T.1 UC. Colorado Springs Adapted from MOS2E Chapter 1: Introduction 1.1 What is an operating system 1.2 History of operating systems 1.3 The operating system zoo 1.4 Computer hardware review 1.5 Operating system concepts 1.6 System calls 1.7 Operating system structure 10.2 UNIX CS450/550 P&T.2 UC. Colorado Springs Adapted from MOS2E Introduction Operating Systems Instruction Set Architecture ° A computer system consists of • hardware • system programs • application programs CS450/550 P&T.3 UC. Colorado Springs Adapted from MOS2E What is an Operating System ° It is an extended machine • Hides the messy details which must be performed • Presents user with a virtual machine, easier to use • Protection domain ° It is a resource manager • Each program gets time with the resource, e.g., CPU • Each program gets space on the resource, e.g., MEM CS450/550 P&T.4 UC. Colorado Springs Adapted from MOS2E Layers of a Computer System CS450/550 P&T.5 UC. Colorado Springs Adapted from MOS2E Services Provided by the OS ° Program development - editors and debuggers ° Program execution ° Access to I/O devices ° Controlled access to files ° System access ° Error detection and response ° Accounting CS450/550 P&T.6 UC. Colorado Springs Adapted from MOS2E OS as a Resource Manager CS450/550 P&T.7 UC. Colorado Springs Adapted from MOS2E Kernel ° Portion of operating system that is in main memory ° Contains most-frequently used functions ° Protected from user tampering by the hardware Are compilers and editors part of an OS? Why? user Trap (system calls) kernel CS450/550 P&T.8 UC.
    [Show full text]
  • Posix Table of Contents
    POSIX #posix Table of Contents About 1 Chapter 1: Getting started with POSIX 2 Versions 2 Examples 2 What is POSIX? 2 Hello World 3 Compiling and running 3 Chapter 2: File locks 5 Syntax 5 Examples 5 POSIX record locks (fcntl) 5 lockf function 6 Chapter 3: Filesystem 8 Examples 8 Count number of text files in the directory 8 Remove files recursively (nftw, not thread-safe) 8 Remove files recursively (openat and unlinkat, thread-safe) 9 Chapter 4: Input/Output multiplexing 12 Introduction 12 Examples 12 Poll 12 Select 13 Chapter 5: Pipes 15 Introduction 15 Examples 15 Basic creation and usage 15 Establishing a pipe to a child process 16 Connecting two child processes via a pipe 17 Creating a shell-style pipeline 18 Chapter 6: Processes 20 Syntax 20 Parameters 20 Examples 20 Create child process and wait until it exits 20 Chapter 7: Signals 23 Syntax 23 Parameters 23 Examples 23 Raising SIGALARM with the default action 23 Setting signal handler using sigaction and raising signals using raise 24 A process committing suicide using kill() 26 Handle SIGPIPE generated by write() in a thread-safe manner 27 Chapter 8: Sockets 30 Examples 30 TCP Concurrent Echo Server 30 Enabling TCP keepalive at server side 32 TCP Daytime Iterative Server 34 TCP Daytime Client 35 Socket basics 35 Entire program 36 Creating IPv4 endpoint 37 TCP server snippet 37 TCP client snippet 38 UDP server snippet 38 Accepting connections on a blocking socket 39 Connecting to a remote host 40 Reading and writing on a blocking socket 40 Chapter 9: Threads 42 Examples 42 Simple Thread without Arguments 42 Simple Mutex Usage 43 Chapter 10: Timers 48 Examples 48 POSIX Timer with SIGEV_THREAD notification 48 Credits 50 About You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: posix It is an unofficial and free POSIX ebook created for educational purposes.
    [Show full text]
  • Interprocess Communication with Java in a Microsoft Windows Environment
    SACJ 29(3) December 2017 Research Article Interprocess communication with Java in a Microsoft Windows Environment Dylan Smith, George Wells Department of Computer Science, Rhodes University, Grahamstown, 6140, South Africa ABSTRACT The Java programming language provides a comprehensive set of multithreading programming techniques but currently lacks interprocess communication (IPC) facilities, other than slow socket-based communication mechanisms (which are intended primarily for distributed systems, not interprocess communication on a multicore or multiprocessor system). This is problematic due to the ubiquity of modern multicore processors, and the widespread use of Java as a programming language throughout the software development industry. This work aimed to address this problem by utilising Microsoft Windows’ native IPC mechanisms through a framework known as the Java Native Interface. This enabled the use of native C code that invoked the IPC mechanisms provided by Windows, which allowed successful synchronous communication between separate Java processes. The results obtained illustrate the performance dichotomy between socket-based communication and native IPC facilities, with Windows’ facilities providing significantly faster communication. Ultimately, these results show that there are far more effective communication structures available. In addition, this work presents generic considerations that may aid in the eventual design of a generic, platform-independent IPC system for the Java programming language. The fundamental considerations
    [Show full text]
  • Filesystem on Unix / POSIX
    Filesystem on Unix / POSIX [email protected] CRIStAL, Université Lille Year 2020-2021 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. http://creativecommons.org/licenses/by-nc-sa/3.0/ Process [email protected] Filesystem 1 / 55 Normalisation of the interface Unix: Operating system, Ken Thompson and Denis Ritchie, Bell Labs, 1969, Source code distributed, Several versions. POSIX: Portable Open System Interface eXchange, Portable Open System Interface X for Unix, Standard IEEE, 1985, Standardized interface of what the system has to offer. One POSIX function = one Unix system call. [email protected] Filesystem 2 / 55 System programmation: the C language is natural A good programming language: good semantic, efficient, access to all the computer structures (registers, bits. ), explicit allocation memory. Natural interface with the system: Libraries are written in C, One can use them from C Other approaches are possible ! [email protected] Filesystem 3 / 55 Libraries and system call System call similar at using a library’s function. Standard C library: section 3 of man POSIX functions: section 2 of man Other differences: No link edition, System code execution, Standard libraries are a higher level abstraction. Important: one system call ≈ 1000 op. ! minimize them ! [email protected] Filesystem 4 / 55 Files: persistent memory used to store data (“for good”), managed by the system: structure, naming, access, protection. filesystem is part of the OS. dissociation OS / Filesystem (e.g., Linux can mount NTFS) Unix approach: “everything” is a file [email protected] Filesystem 5 / 55 Filesystem: a graph organisation with nodes root home bin directory tmp .
    [Show full text]
  • Digital Notes on Linux Programming (R17a0525)
    DIGITAL NOTES ON LINUX PROGRAMMING (R17A0525) B.TECH III YEAR - I SEM (2019-20) DEPARTMENT OF INFORMATION TECHNOLOGY MALLA REDDY COLLEGE OF ENGINEERING & TECHNOLOGY (Autonomous Institution – UGC, Govt. of India) (Affiliated to JNTUH, Hyderabad, Approved by AICTE - Accredited by NBA & NAAC – ‘A’ Grade - ISO 9001:2015 Certified) Maisammaguda, Dhulapally (Post Via. Hakimpet), Secunderabad – 500100, Telangana State, INDIA. Linux Programming Page 1 MALLA REDDY COLLEGE OF ENGINEERING & TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY III Year B.Tech IT – I Sem L T /P/D C 4 - / - / - 4 (R17A0525)LINUX PROGRAMMING Objectives: To develop the skills necessary for Unix systems programming including file system programming, process and signal management, and interprocess communication. To make effective use of Unix utilities and Shell scripting language such as bash. To develop the basic skills required to write network programs using Sockets. UNIT I Linux Utilities-File handling utilities, Security by file permissions, Process utilities, Disk utilities, Networking commands, Filters, Text processing utilities and Backup utilities. Sed-Scripts, Operation, Addresses. Awk- Execution, Fields and Records, Scripts, Operation, Patterns, Actions. Shell programming with Bourne again shell(bash)- Introduction, shell responsibilities, pipes and Redirection, here documents, running a shell script, the shell as a programming language, shell meta characters, file name substitution, shell variables, shell commands, the environment, quoting, test command, control structures, arithmetic in shell, shell script examples. UNIT II Files and Directories- File Concept, File types, File System Structure, file metadata- Inodes, kernel support for files, system calls for file I/O operations- open, create, read, write, close, lseek, dup2,file status information-stat family, file and record locking-lockf and fcntl functions, file permissions - chmod, fchmod, file ownership- chown, lchown, fchown, links-soft links and hard links – symlink, link, unlink.
    [Show full text]
  • 10 Message Passing
    System Architecture 10 Message Passing IPC Design & Implementation, IPC Application, IPC Examples December 01 2008 Winter Term 2008/09 Gerd Liefländer 2008 Universität Karlsruhe (TH), System Architecture Group 1 Introduction Agenda Motivation/Introduction Message Passing Model Elementary IPC Design Parameters for IPC Synchronization Addressing Modes Lifetime Data Transfer Types of Activations (your work) High Level IPC IPC Applications IPC Examples 2008 Universität Karlsruhe (TH), System Architecture Group 2 Motivation 2008 Universität Karlsruhe (TH), System Architecture Group 3 Motivation Yet another Concept? 1. Previous mechanisms relied on shared memory all these solutions do not work in distributed systems 2. Threads of different applications need protection even in systems with a common RAM, because you do not want to open your protected AS for another cooperating non trusted piece of software 3. To minimize kernels some architects only offer IPC to solve communication problems as well as all synchronization problems 4. However, the opposite way also works, i.e. you can use semaphores to implement a message passing system 2008 Universität Karlsruhe (TH), System Architecture Group 4 Motivation Message Passing Used for Inter-“Process” Communication (IPC) Interacting threads within a distributed system Interacting threads within the same computer Interacting threads within the same address space WtdilitdiWe expect a decreasing complexity and vice versa an increasing speedup when implementing IPC Application: Exchange
    [Show full text]
  • Hardware for Embedded Linux
    Mastering Embedded Linux Programming Harness the power of Linux to create versatile and robust embedded solutions Chris Simmonds BIRMINGHAM - MUMBAI Mastering Embedded Linux Programming Copyright © 2015 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: December 2015 Production reference: 1181215 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78439-253-6 www.packtpub.com Credits Author Copy Editor Chris Simmonds Kevin McGowan Reviewers Project Coordinator Robert Berger Sanchita Mandal Tim Bird Mathieu Deschamps Proofreader Safis Editing Mark Furman Klaas van Gend Indexer Behan Webster Priya Sane Commissioning Editor Production Coordinator Kartikey Pandey Manu Joseph Acquisition Editor Cover Work Sonali Vernekar Manu Joseph Content Development Editor Samantha Gonsalves Technical Editor Dhiraj Chandanshive Foreword Linux is an extremely flexible and powerful operating system and I suspect we've yet to truly see it used to full advantage in the embedded world.
    [Show full text]
  • Win32 Programming for Microsoft Windows NT
    Win32 Programming for Microsoft Windows NT In this chapter, we look at how to use anonymous pipes, named pipes and mailslots to pass data between processes. The client/server model is used to build distributed applications. A client application request service is provided by a server application. The client and server require a protocol which must be implemented by both before a service may be rendered or accepted. A symmetric protocol is where either side may play the master or slave roles. An asymmetric protocol is where one side is immutably recognized as the master, with the other as the slave. No matter whether the specific protocol used in obtaining a service is symmetric or asymmetric, when accessing a service there is a “client process” and a “server process’. Named pipes and mailslots are designed around the client/server model of IPC. They both represent a named endpoint of a communications link between processes. Named pipes provide bi-directional virtual circuit connections, and mailslots provide uni-directional datagram-style communication. Both can be used across the network. When using named pipes and mailslots, there is an asymmetry in establishing communication between the client and server so that each has a different role. A server application normally listens, using a wellknown name, for service requests, remaining dormant until a connection is requested by a client’s connection using the server name. At such a time the server process wakes up and services the client, performing whatever appropriate actions the client requests of it. Objectives By the time you have completed this chapter, you should be able to: · Create and use an anonymous pipe to pass data in one direction between related processes on the same machine.
    [Show full text]