NASM for Linux

Total Page:16

File Type:pdf, Size:1020Kb

NASM for Linux 1 NASM for Linux Microprocessors II 2 NASM for Linux Microprocessors II NASM Package nasm package available as source or as executables Typically /usr/bin/nasm and /usr/bin/ndisasm Assembly NASM Linux requires elf format for object files ELF = Executable and Linking Format Typical header size = 330h bytes for nasm −f elf [−o <output>] <filename> Linking Linux Object files can be linked with gcc gcc [−options] <filename.o> [other_files.o] Disassembly View executable as 32-bit assembly code ndisasm −e 330h –b 32 a.out | less objdump –d a.out | less Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 3 NASM for Linux Microprocessors II 4 NASM for Linux Microprocessors II gcc Stages Example — 1 Stages of Gnu C compilation factorial2.c #include <math.h> main #include <stdio.h> sets j = 12 main() Source Translation Assembly Object Executable calls factorial 10,000,000 times Code Unit Code Code File { int times; prog.c prog.i prog.s prog.o a.out int i , j = 12; preprocess compile assemble link for (times = 0 ; times < 10000000 ; ++times){ i = factorial(j); gcc -E } gcc -S printf("%d\n",i); gcc -c } gcc int factorial(n) int n; factorial calculates n! by recursion { if (n == 0) return 1; else return n * factorial(n-1); } Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 5 NASM for Linux Microprocessors II 6 NASM for Linux Microprocessors II Example — 2 Example — 3 ~/gcc$ gcc factorial2.c Compile program as separate files produces executable a.out factorial2a.c ~/gcc$ time a.out main() { 479001600 int times; int i,j=12; for (times = 0 ; times < 10000000 ; ++times){ real 0m9.281s i = factorial(j); factorial2b.c } #include <math.h> printf("%d\n",i); user 0m8.339s #include <stdio.h> } sys 0m0.008s int factorial(n) int n; { Program a.out runs in 8.339 seconds on 300 MHz if (n == 0) Pentium II return 1; else return n * factorial(n-1); } Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 7 NASM for Linux Microprocessors II 8 NASM for Linux Microprocessors II Example — 4 Example — 5 Assembly output (AT&T gas assembly) from gcc –S factorial2a.c ~/gcc$ gcc -c factorial2a.c .file "factorial2a.c" .L3: .section .rodata subl $12, %esp produces linkable object file factorial2a.o .LC0: pushl -4(%ebp) .string "%d\n" call factorial ~/gcc$ gcc -c factorial2b.c .text addl $16, %esp .globl main movl %eax, -8(%ebp) produces linkable object file .type main, @function leal -12(%ebp), %eax factorial2b.o main: incl (%eax) pushl %ebp .L2: movl %esp, %ebp cmpl $9999999, -12(%ebp) subl $24, %esp jle .L3 ~/gcc$ gcc factorial2a.o factorial2b.o andl $-16, %esp subl $8, %esp movl $0, %eax pushl -8(%ebp) addl $15, %eax pushl $.LC0 produces executable a.out addl $15, %eax call printf shrl $4, %eax addl $16, %esp Identical to previous version sall $4, %eax leave subl %eax, %esp ret movl $12, -4(%ebp) movl $0, -12(%ebp) jmp .L2 Utility program intel2gas can convert: gas to nasm (Intel) nasm to gas nasm to gas inline assembler for C programs Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 9 NASM for Linux Microprocessors II 10 NASM for Linux Microprocessors II Output from intel2gas Example — 6 ;FILE "factorial2a.c" L3: Assembly version of factorial function written for nasm SECTION .rodata sub esp,12 .LC0: push dword [ebp-4] Uses “register variables” (no memory accesses) db '%d',10,'' call factorial Exploits advantages of Intel imul and loop instructions SECTION .text add esp,16 GLOBAL main mov [ebp-8],eax section .text2 GLOBAL main:function lea eax, [ebp-12] global factorial main: inc dword [eax] push ebp L2: factorial: mov ebp,esp cmp dword [ebp-12],9999999 push ebp sub esp,24 jle L3 and esp,-16 sub esp,8 mov ebp,esp mov eax,0 push dword [ebp-8] mov ecx,[ebp+8] add eax,15 push dword .LC0 add eax,15 call printf mov eax,1 shr eax,4 add esp,16 L1: imul ecx sal eax,4 leave loop L1 sub esp,eax ret mov dword [ebp-4],12 mov esp,ebp mov dword [ebp-12],0 pop ebp jmp L2 ret Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 11 NASM for Linux Microprocessors II 12 NASM for Linux Microprocessors II Example — 7 General NASM Template for Linux nasm -f elf -o factorial2c.o factorial2c.asm ; extern standard_library_function produces linkable object file factorial2c.o section .data ; define initialized data structures here gcc factorial2a.o factorial2c.o section .bss produces executable file a.out ; define uninitialized data structures here ~/gcc$ time a.out ; minimum allocation size is 1 dword = 32 bits 479001600 ; cannot pass BSS pointers to all system calls real 0m4.964s section .text user 0m4.287s global main ; or other line label sys 0m0.009s main: ; matching line label ; place code here ; C only version of a.out runs in 8.339 seconds on 300 MHz Pentium II mov eax, 0 ; or other exit code C + assembly version runs in 4.287 seconds on 300 MHz Pentium II ret ; return to program wrapper Speed-up of 8.339 / 4.287 ~ 2 Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 13 NASM for Linux Microprocessors II 14 NASM for Linux Microprocessors II Linux System Calls Exit NASM programs can invoke exit (terminate process) Any standard C library call EAX ← 1 Declare external library functions before data segment EBX ← exit code Push parameters onto stack in proper order INT 0x80 Call function by name Clean up stack after return Works like DOS version Any standard Linux system call MOV AH,4C Similar to DOS system calls Load parameters into EAX, EBX, ECX, EDX MOV AL,exit code INT 0x21 Call Linux kernel with INT 0x80 References: http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html http://www.lxhp.in-berlin.de/ Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 15 NASM for Linux Microprocessors II 16 NASM for Linux Microprocessors II Create File Open File creat open EAX ← 8 EAX ← 5 EBX ← pointer to ASCIIZ pathname EBX ← pointer to ASCIIZ pathname ECX ← file permissions ECX ← file access mode INT 0x80 0x00 = read only 0x01 = write only return 0x02 = read/write EAX ← integer file descriptor EDX ← file permissions INT 0x80 return EAX ← integer file descriptor Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 17 NASM for Linux Microprocessors II 18 NASM for Linux Microprocessors II Write to File Read from File write read EAX ← 4 EAX ← 3 EBX ← file descriptor EBX ← file descriptor ECX ← pointer to output buffer ECX ← pointer to input buffer EDX ← number of bytes to write EDX ← number of bytes to read INT 0x80 INT 0x80 return return EAX ← number of bytes actually written EAX ← number of bytes actually read Note Note Write to screen using stdout descriptor = 1 Read from keyboard using stdin descriptor = 0 Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 19 NASM for Linux Microprocessors II 20 NASM for Linux Microprocessors II Close File Program Example — 1 close section .data path: db "filename.txt",0 EAX ← 6 ; ASCIIZ pathname EBX ← file descriptor str1: db 'abcdefghijklmnopqrstuvwzyz',10,10 INT 0x80 ; 10 = "\n" len1 equ $-str1 ; len1 ← length of str1 str2: db 'ABCDEFGHIJKLMNOPQRSTUVWZYZ',10,10 len2 equ $-str2 ; len2 ← length of str2 buff: times 256 db 0 ; 256 zeros as buffer section .bss desc: resd 1 ; d = dword = 32-bit integer buff2: resd 1 ; minimum BSS allocation is dword ;buff: resb 256 ; cannot pass BSS pointer to ; read system call Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 21 NASM for Linux Microprocessors II 22 NASM for Linux Microprocessors II Program Example — 2 Program Example — 3 section .text get: mov eax,3 ; read from file system call global main mov ebx,0 ; file descriptor for stdin main: mov ecx,buff ; pointer to input buffer (in data segment) create: mov eax,8 ; create file system call mov edx,256 ; accept up to 265 bytes from stdin mov ebx,path ; pointer to pathname int 0x80 ; invoke Linux kernel mov ecx,0 ; no access restrictions ; int 0x80 ; invoke Linux kernel write2: mov esi,buff ; point ESI at input buffer from stdin mov [desc],eax ; save file descriptor ; w2: lodsb ; AL ← [ESI] , ESI ← ESI + 1 write: mov eax,4 ; write to file system call and eax,0x000000ff ; zero EAX except AL mov ebx,[desc] ; file descriptor cmp al,0 ; if AL = 0 then stop writing mov ecx,str1 ; pointer to string 1 je close mov edx,len1 ; number of bytes to write mov [buff2],eax ; move EAX to memory at buff2 (BSS) int 0x80 ; invoke Linux kernel mov eax,4 ; write to file system call ; mov ebx,[desc] ; file descriptor mov eax,4 ; write to file system call mov ecx,buff2 ; pointer to buffer mov ebx,[desc] ; file descriptor mov edx,1 ; number of bytes to write mov ecx,str2 ; pointer to string 2 int 0x80 ; invoke Linux kernel mov edx,len2 ; number of bytes to write jmp w2 ; continue int 0x80 ; invoke Linux kernel Fall 2007 Hadassah College Dr. Martin Land Fall 2007 Hadassah College Dr. Martin Land 23 NASM for Linux Microprocessors II 24 NASM for Linux Microprocessors II Program Example — 4 Program Example — 5 close: mov eax,6 ~/nasm/programs_linux$ nasm −f elf create.asm mov ebx,[desc] ~/nasm/programs_linux$ gcc create.o int 0x80 ~/nasm/programs_linux$ a.out ; I am writing this sentence.
Recommended publications
  • University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science
    University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science EECS 61C, Fall 2003 Lab 2: Strings and pointers; the GDB debugger PRELIMINARY VERSION Goals To learn to use the gdb debugger to debug string and pointer programs in C. Reading Sections 5.1-5.5, in K&R GDB Reference Card (linked to class page under “resources.”) Optional: Complete GDB documentation (http://www.gnu.org/manual/gdb-5.1.1/gdb.html) Note: GDB currently only works on the following machines: • torus.cs.berkeley.edu • rhombus.cs.berkeley.edu • pentagon.cs.berkeley.edu Please ssh into one of these machines before starting the lab. Basic tasks in GDB There are two ways to start the debugger: 1. In EMACS, type M-x gdb, then type gdb <filename> 2. Run gdb <filename> from the command line The following are fundamental operations in gdb. Please make sure you know the gdb commands for the following operations before you proceed. 1. How do you run a program in gdb? 2. How do you pass arguments to a program when using gdb? 3. How do you set a breakpoint in a program? 4. How do you set a breakpoint which which only occurs when a set of conditions is true (eg when certain variables are a certain value)? 5. How do you execute the next line of C code in the program after a break? 1 6. If the next line is a function call, you'll execute the call in one step. How do you execute the C code, line by line, inside the function call? 7.
    [Show full text]
  • Compiling and Debugging Basics
    Compiling and Debugging Basics Service CoSiNus IMFT P. Elyakime H. Neau A. Pedrono A. Stoukov Avril 2015 Outline ● Compilers available at IMFT? (Fortran, C and C++) ● Good practices ● Debugging Why? Compilation errors and warning Run time errors and wrong results Fortran specificities C/C++ specificities ● Basic introduction to gdb, valgrind and TotalView IMFT - CoSiNus 2 Compilers on linux platforms ● Gnu compilers: gcc, g++, gfortran ● Intel compilers ( 2 licenses INPT): icc, icpc, ifort ● PGI compiler fortran only (2 licenses INPT): pgf77, pgf90 ● Wrappers mpich2 for MPI codes: mpicc, mpicxx, mpif90 IMFT - CoSiNus 3 Installation ● Gnu compilers: included in linux package (Ubuntu 12.04 LTS, gcc/gfortran version 4.6.3) ● Intel and PGI compilers installed on a centralized server (/PRODCOM), to use it: source /PRODCOM/bin/config.sh # in bash source /PRODCOM/bin/config.csh # in csh/tcsh ● Wrappers mpich2 installed on PRODCOM: FORTRAN : mympi intel # (or pgi or gnu) C/C++ : mympi intel # (or gnu) IMFT - CoSiNus 4 Good practices • Avoid too long source files! • Use a makefile if you have more than one file to compile • In Fortran : ” implicit none” mandatory at the beginning of each program, module and subroutine! • Use compiler’s check options IMFT - CoSiNus 5 Why talk about debugging ? Yesterday, my program was running well: % gfortran myprog.f90 % ./a.out % vmax= 3.3e-2 And today: % gfortran myprog.f90 % ./a.out % Segmentation fault Yet I have not changed anything… Because black magic is not the reason most often, debugging could be helpful! (If you really think that the cause of your problem is evil, no need to apply to CoSiNus, we are not God!) IMFT - CoSiNus 6 Debugging Methodical process to find and fix flows in a code.
    [Show full text]
  • Lecture 15 15.1 Paging
    CMPSCI 377 Operating Systems Fall 2009 Lecture 15 Lecturer: Emery Berger Scribe: Bruno Silva,Jim Partan 15.1 Paging In recent lectures, we have been discussing virtual memory. The valid addresses in a process' virtual address space correspond to actual data or code somewhere in the system, either in physical memory or on the disk. Since physical memory is fast and is a limited resource, we use the physical memory as a cache for the disk (another way of saying this is that the physical memory is \backed by" the disk, just as the L1 cache is \backed by" the L2 cache). Just as with any cache, we need to specify our policies for when to read a page into physical memory, when to evict a page from physical memory, and when to write a page from physical memory back to the disk. 15.1.1 Reading Pages into Physical Memory For reading, most operating systems use demand paging. This means that pages are only read from the disk into physical memory when they are needed. In the page table, there is a resident status bit, which says whether or not a valid page resides in physical memory. If the MMU tries to get a physical page number for a valid page which is not resident in physical memory, it issues a pagefault to the operating system. The OS then loads that page from disk, and then returns to the MMU to finish the translation.1 In addition, many operating systems make some use of pre-fetching, which is called pre-paging when used for pages.
    [Show full text]
  • Memory Management
    Memory management Virtual address space ● Each process in a multi-tasking OS runs in its own memory sandbox called the virtual address space. ● In 32-bit mode this is a 4GB block of memory addresses. ● These virtual addresses are mapped to physical memory by page tables, which are maintained by the operating system kernel and consulted by the processor. ● Each process has its own set of page tables. ● Once virtual addresses are enabled, they apply to all software running in the machine, including the kernel itself. ● Thus a portion of the virtual address space must be reserved to the kernel Kernel and user space ● Kernel might not use 1 GB much physical memory. ● It has that portion of address space available to map whatever physical memory it wishes. ● Kernel space is flagged in the page tables as exclusive to privileged code (ring 2 or lower), hence a page fault is triggered if user-mode programs try to touch it. ● In Linux, kernel space is constantly present and maps the same physical memory in all processes. ● Kernel code and data are always addressable, ready to handle interrupts or system calls at any time. ● By contrast, the mapping for the user-mode portion of the address space changes whenever a process switch happens Kernel virtual address space ● Kernel address space is the area above CONFIG_PAGE_OFFSET. ● For 32-bit, this is configurable at kernel build time. The kernel can be given a different amount of address space as desired. ● Two kinds of addresses in kernel virtual address space – Kernel logical address – Kernel virtual address Kernel logical address ● Allocated with kmalloc() ● Holds all the kernel data structures ● Can never be swapped out ● Virtual addresses are a fixed offset from their physical addresses.
    [Show full text]
  • ENCM 335 Fall 2018 Lab 3 for the Week of October 1
    page 1 of 11 ENCM 335 Fall 2018 Lab 3 for the Week of October 1 Steve Norman Department of Electrical & Computer Engineering University of Calgary September 2018 Lab instructions and other documents for ENCM 335 can be found at https://people.ucalgary.ca/~norman/encm335fall2018/ Administrative details Each student must hand in their own assignment Later in the course, you may be allowed to work in pairs on some assignments. Due Dates The Due Date for this assignment is 3:30pm Friday, October 5. The Late Due Date is 3:30pm Tuesday, October 9 (not Monday the 8th, because that is a holiday). The penalty for handing in an assignment after the Due Date but before the Late Due Date is 3 marks. In other words, X/Y becomes (X{3)/Y if the assignment is late. There will be no credit for assignments turned in after the Late Due Date; they will be returned unmarked. Marking scheme A 4 marks B 8 marks C unmarked D 2 marks E 8 marks F 2 marks G 4 marks total 28 marks How to package and hand in your assignments Please see the information in the Lab 1 instructions. Function interface comments, continued For Lab 2, you were asked to read a document called \Function Interface Com- ments". ENCM 335 Fall 2018 Lab 3 page 2 of 11 Figure 1: Sketch of a program with a function to find the average element value of an array of ints. The function can be given only one argument, and the function is supposed to work correctly for whatever number of elements the array has.
    [Show full text]
  • Theory of Operating Systems
    Exam Review ● booting ● I/O hardware, DMA, I/O software ● device drivers ● virtual memory 1 booting ● hardware is configured to execute a program in Read-Only Memory (ROM) or flash memory: – the BIOS, basic I/O system – UEFI is the current equivalent ● BIOS knows how to access all the disk drives, chooses one to boot (perhaps with user assistance), loads the first sector (512 bytes) into memory, and starts to execute it (jmp) – first sector often includes a partition table 2 I/O hardware and DMA ● electronics, and sometimes moving parts, e.g. for disks or printers ● status registers and control registers read and set by CPU software – registers can directly control hardware, or be read and set by the device controller ● device controller can be instructed to do Direct Memory Access to transfer data to and from the CPU's memory – DMA typically uses physical addresses 3 Structure of I/O software ● user programs request I/O: read/write, send/recv, etc – daemons and servers work autonomously ● device-independent software converts the request to a device-dependent operation, and also handles requests from device drivers – e.g file systems and protocol stacks – e.g. servers in Minix ● one device driver may manage multiple devices – and handles interrupts ● buffer management required! 4 Device Drivers ● configure the device or device controller – i.e. must know specifics about the hardware ● respond to I/O requests from higher-level software: read, write, ioctl ● respond to interrupts, usually by reading status registers, writing to control registers, and transferring data (either via DMA, or by reading and writing data registers) 5 Memory Management ● linear array of memory locations ● memory is either divided into fixed-sized units (e.g.
    [Show full text]
  • Theory of Operating Systems
    Exam Review ● booting ● I/O hardware, DMA, I/O software ● device drivers ● memory (i.e. address space) management ● virtual memory 1 booting ● hardware is configured to execute a program in Read-Only Memory (ROM) or flash memory: – the BIOS, basic I/O system – UEFI is the current equivalent ● BIOS knows how to access all the disk drives, chooses one to boot (perhaps with user assistance), loads the first sector (512 bytes) into memory, and starts to execute it (jmp) – first sector often includes a partition table 2 I/O hardware and DMA ● electronics, and sometimes (disks, printers) moving parts ● status registers and control registers read and set by CPU software – registers can directly control hardware, or be read and set by the device controller ● device controller can be instructed to do Direct Memory Access to transfer data to and from the CPU's memory – DMA typically uses physical addresses 3 Structure of I/O software ● user programs request I/O: read/write, send/recv, etc – daemons and servers work autonomously ● device-independent software converts the request to a device-dependent operation, and also handles requests from device drivers – e.g file systems and protocol stacks – e.g. servers in Minix ● one device driver may manage multiple devices – and handles interrupts ● buffer management required! 4 Device Drivers ● configure the device or device controller – i.e. must know specifics about the hardware ● respond to I/O requests from higher-level software: read, write, ioctl ● respond to interrupts, usually by reading status registers, writing to control registers, and transferring data (either via DMA, or by reading and writing data registers) 5 Memory Management ● linear array of memory locations ● memory is either divided into fixed-sized units (e.g.
    [Show full text]
  • A Study on Faults and Error Propagation in the Linux Operating System
    A Thesis for the Degree of Ph.D. in Engineering A Study on Faults and Error Propagation in the Linux Operating System March 2016 Graduate School of Science and Technology Keio University Takeshi Yoshimura Acknowledgement I would like to thank my adviser, Prof. Kenji Kono. His guidance helped me in all the time of research. I would like to express my sincere gratitude to Prof. Hiroshi Yamada. This dissertation would not have been possible without their advice and encouragement. I am also grateful to the members of my thesis committee: Prof. Shingo Takada, Prof. Hiroaki Saito, and Prof. Kenichi Kourai. This dissertation was greatly improved by their invaluable feedback. During my Ph.D., I did an internship at NEC. I enjoyed working with Dr. Masato Asahara and the opportunity had a significant impact on my research skills. He also taught me LDA, which is the core of the fault study in this dis- sertation. I am also thankful to my colleagues in the sslab. Their surprising enthusiasm and skills have always inspired me. I appreciate the financial supports from the Research Fellowships of the Japan Society for the Promotion of Science for Young Scientists and the Core Re- search for Evolutional Science and Technology of Japan Science and Technology Agency. Finally, I would like to thank my family, my parents, sister for their support all these years. Without their support and encouragement, many accomplishments in my life including this dissertation would not have been possible. 2 Abstract A Study on Faults and Error Propagation in the Linux Operating System Takeshi Yoshimura Operating systems are crucial for application reliability.
    [Show full text]
  • GDB Debugger CS 211 – Programming Practicum GDB Debugger
    GDB Debugger CS 211 – Programming Practicum GDB Debugger • Part of the GNU Software Tools • Many Debuggers in IDEs are just Wrappers for GDB • Huge amount of commands in GBD, many options available to help debug your program • Even to most basic knowledge can save you lots of time GDB Debugger • Step 1 – Compile your program using the –g flag • gcc –g mazeflawed.c • The –g flag creates additional information for the executable that gdb used to convert machine code lines back to the source code line of the original program GDB Debugger • Step 2 - Open the GDB debugger • gdb a.out • Give the name of the executable created by the compiler GDB Debugger • Step 3 – Run your program with any command line arguments • run <command-line-arguments> • If no command line arguments are needed, just type in run. • For the mazeflawed.c program, you need the datafile name, so: • run mazedata1.txt GDB Debugger • Step 4 – Let GDB tell you on which line the Segmentation Fault occurs Program received signal SIGSEGV, Segmentation fault. 0x00000000004007a9 in main (argc=2, argv=0x7fffffffca78) at mazeflawed.c:52 52 m1.arr[i][j] = '.’; • The above states the Segmentation fault occurred at line 52. • It also shows the code at line 52 GDB Debugger • Step 5 – The list command will display more lines of code • Use the help command to find out about more commands. • GDB has so many commands that no one knows them all. • Most people learn a few key commands. GDB Debugger • Step 6 – The print command will display values stored in variables 52 m1.arr[i][j] = ‘.’; print i $1 = 14 • The print i command shows that the variable i contains the value of 14 at the time of the segmentation fault.
    [Show full text]
  • Release Notes for Iplanet Unified Development Server (UDS) Version 5.0, SP1 Updated December 7, 2001
    Release Notes for iPlanet Unified Development Server (UDS) Version 5.0, SP1 Updated December 7, 2001 These release notes contain important information available at the time of the release of iPlanet Unified Development Server, Version 5.0, SP1 (UDS). Information on significant updates, known problems, fixed bugs, and other issues are addressed here. Read this document before you begin using this release of UDS. These release notes contain the following sections: • “General Information” • “Supported Systems and Software” • “Updates in UDS, Version 5.0, SP1” • “Bugs Fixed in UDS, Version 5.0, SP1” • “Known Problems” • “UDS Distribution Files” • “How to Report Problems” • “For More Information” 1 General Information General Information UDS Version 5.0, SP1 contains fixes for problems that were found with iPlanet Unified Development Server, Version 5.0. This release is available to all currently supported customers through iPlanet’s SubscribeNet service and will be shipped to new customers. New customers who want access to this release, please contact iPlanet sales. The distribution for this release includes the following: • UDS Ve rsion 5.0 , SP 1 • UDS Express Version 5.0, SP1 • UDS Web Enterprise Version 5.0, SP1 • UDS Runtime Version 5.0, SP1 • UDS Version 5.0 documentation Changes in Distribution Format The format for the distribution files has changed for this release. The section in this document, “UDS Distribution Files,” provides information on how to prepare the downloaded distribution files for installation. Note: UDS for the OS/390 platform is only available on IBM 3490 tape media. The SubscribeNet web site contains information about obtaining the UDS for the OS/390 distribution.
    [Show full text]
  • Memory Protection: Kernel and User Address Spaces Andy Wang Operating Systems COP 4610 / CGS 5765 up to This Point
    Memory Protection: Kernel and User Address Spaces Andy Wang Operating Systems COP 4610 / CGS 5765 Up to This Point . Threads provide the illusion of an infinite number of CPUs . On a single processor machine . Memory management provides a different set of illusions . Protected memory . Infinite amount of memory . Transparent sharing Physical vs. Virtual Memory Physical memory Virtual memory No protection Each process isolated from others and from OS Limited size Illusion of infinite memory Sharing visible to Each process cannot tell processes if memory is shared Memory Organizations . Simplest: uniprogramming without memory protection . Each application runs within a hardwired range of physical memory addresses . One application runs at a time . Application can use the same physical addresses every time, across reboots Uniprogramming Without Memory Protection . Applications typically use the lower memory addresses . An OS uses the higher memory addresses . An application can address any physical memory location Application Operating system 000000 ffffff Physical memory Multiprogramming Without Memory Protection . When a program is copied into memory, a linker-loader alters the code of the program (e.g., loads, stores, and jumps) . To use the address of where the program lands in memory . This is kind of what happens when you run the command gcc –o [filename]. It links object code into an executable. Multiprogramming Without Memory Protection . Bugs in any program can cause other programs to crash, even the OS Application 1 Application 2 Operating system 000000 ffffff Physical memory Multiprogrammed OS With Memory Protection . Memory protection keeps user programs from crashing one another and the OS . Two hardware-supported mechanisms .
    [Show full text]
  • Operating Systems
    Operating Systems Minati De Department of Mathematics, Indian Institute of Technology Delhi, India. Lecture 10: Segmentation M. De Operating Systems Disadvantage of Base and Bound Method M. De Operating Systems Disadvantage of Base and Bound Method Internal Fragmentation: the process stack and heap are not too big, all of the space between the two is simply wasted Can't share code/data with other processes Can't keep program from accidentally overwriting its own code Can't grow stack/heap as needed M. De Operating Systems Inefficiency of the Base and Bound Approach M. De Operating Systems How do we support a large address space with (potentially) a lot of free space between the stack and the heap? M. De Operating Systems Logically-different segment: code, stack, heap Each segment can be placed in different part of physical memory Segmentation Segment is just a contiguous portion of the address space of a particular length. M. De Operating Systems Each segment can be placed in different part of physical memory Segmentation Segment is just a contiguous portion of the address space of a particular length. Logically-different segment: code, stack, heap M. De Operating Systems Segmentation Segment is just a contiguous portion of the address space of a particular length. Logically-different segment: code, stack, heap Each segment can be placed in different part of physical memory M. De Operating Systems Placing Segment In Physical Memory M. De Operating Systems Placing Segment In Physical Memory M. De Operating Systems Address Translation on Segmentation M. De Operating Systems Address Translation on Segmentation M.
    [Show full text]