Project 2: User Programs Presented by Min Li 26 Feb 2009.

Slides:



Advertisements
Similar presentations
CS 140 Project 3 Virtual Memory
Advertisements

Christo Wilson Project 2: User Programs in Pintos
Module R2 CS450. Next Week R1 is due next Friday ▫Bring manuals in a binder - make sure to have a cover page with group number, module, and date. You.
CSCC69: Operating Systems
1 Pintos Project #3 Virtual Memory The following slides were created by Xiaomo Liu and others for CS 3204 Fall And Modified by Nick Ryan for Spring.
Chapter 7 Process Environment Chien-Chung Shen CIS, UD
The Environment of a UNIX Process. Introduction How is main() called? How are arguments passed? Memory layout? Memory allocation? Environment variables.
The Kernel Abstraction. Challenge: Protection How do we execute code with restricted privileges? – Either because the code is buggy or if it might be.
Jaishankar Sundararaman
CS 4284 Systems Capstone Project 2 Hints Slides created by Jaishankar Sundararaman.
UNIX Process Control Bach 7 Operating Systems Course Hebrew University Spring 2007.
1 Processes Professor Jennifer Rexford
CS 311 – Lecture 14 Outline Process management system calls Introduction System calls  fork()  getpid()  getppid()  wait()  exit() Orphan process.
Exec function Exec function: - replaces the current process (its code, data, stack & heap segments) with a new program - the new program starts executing.
Advanced OS Chapter 3p2 Sections 3.4 / 3.5. Interrupts These enable software to respond to signals from hardware. The set of instructions to be executed.
Process in Unix, Linux and Windows CS-3013 C-term Processes in Unix, Linux, and Windows CS-3013 Operating Systems (Slides include materials from.
CS-502 Fall 2006Processes in Unix, Linux, & Windows 1 Processes in Unix, Linux, and Windows CS502 Operating Systems.
Concurrency Sharing of resources in the same time frame Apparent concurrency is sharing the same CPU, memory, or I/O device Real concurrency is sharing.
CSE 451 Section 4 Project 2 Design Considerations.
Christo Wilson Project 3: Virtual Memory in Pintos
Processes in Unix, Linux, and Windows CS-502 Fall Processes in Unix, Linux, and Windows CS502 Operating Systems (Slides include materials from Operating.
Unix Processes Slides are based upon IBM technical library, Speaking Unix, Part 8: Unix processes Extended System Programming Laboratory (ESPL) CS Department.
1 CS503: Operating Systems Part 1: OS Interface Dongyan Xu Department of Computer Science Purdue University.
Welcome to the World of Nachos CPS 110 Spring 2004 Discussion Session 1.
Process in Unix, Linux, and Windows CS-3013 A-term Processes in Unix, Linux, and Windows CS-3013 Operating Systems (Slides include materials from.
Today’s Topics Introducing process: the basic mechanism for concurrent programming –Process management related system calls Process creation Process termination.
Processes and Threads CS550 Operating Systems. Processes and Threads These exist only at execution time They have fast state changes -> in memory and.
1 Week 2 The Crunchy Shell to the Soft and Chewy Kernel… Sarah Diesburg 8/3/2010 COP4610 / CGS5765.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Project 2: User Programs
Operating Systems Lecture 7 OS Potpourri Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard. Zhiqing Liu School of Software.
1 CSE 451 Section 2: Interrupts, Syscalls, Virtual Machines, and Project 1.
More on UART Interrupts; System Calls Reference on Interrupt Identification Register(IIR) slide 17 of
CPS4200 Unix Systems Programming Chapter 2. Programs, Processes and Threads A program is a prepared sequence of instructions to accomplish a defined task.
Processes CS 6560: Operating Systems Design. 2 Von Neuman Model Both text (program) and data reside in memory Execution cycle Fetch instruction Decode.
CS140 Project 1: Threads Slides by Kiyoshi Shikuma.
Operating Systems Process Creation
What is a Process? u A process is an executable “cradle” in which a program may run u This “cradle” provides an environment in which the program can run,
Fall 2002 CS 325 Class Notes Page 1 Lecture 25 Today –exec() in Unix –CreateProcess in Windows Announcements.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Unix System Calls and Posix Threads.
Processes, Threads, and Process States. Programs and Processes  Program: an executable file (before/after compilation)  Process: an instance of a program.
Processes and Virtual Memory
Nachos Lecture 2 Xiaorui Sun. Phase 2 You have got one machine (machine package) You have to implements the incomplete OS (userprog package) Run programs.
Process Management Azzam Mourad COEN 346.
Project 2: User Programs Abdelmounaam Rezgui Acknowledgment: The content of some slides is partly taken from Josh Wiseman’s presentation.
1 Pintos Virtual Memory Management Project (CS3204 Spring 2006 VT) Yi Ma.
Pintos project 3: Virtual Memory Management
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 Tarek Abdelzaher Vikram Adve CS241 Systems Programming System Calls and I/O.
CS140 Project 4 Due Thursday March 10th Slides adapted from Samir Selman’s Kiyoshi Shikuma.
The Process CIS 370, Fall 2009 CIS UMassD. The notion of a process In UNIX a process is an instance of a program in execution A job or a task Each process.
CS241 Systems Programming Discussion Section Week 2 Original slides by: Stephen Kloder.
Chapter 7 Process Environment Chien-Chung Shen CIS/UD
1 Intro to the Shell with Fork, Exec, Wait Sarah Diesburg Operating Systems CS 3430.
S ALVATORE DI G IROLAMO (TA) Networks and Operating Systems: Exercise Session 1.
CSE120 Discussion 5 Xinxin Jin. Where Are We?  Now we have finished some thread mechanisms to support Nachos kernel  Next, we want to enable user-level.
A process is a program in execution A running system consists of multiple processes – OS processes Processes started by the OS to do “system things” –
Introduction to Operating Systems
Auburn University COMP 3500 Introduction to Operating Systems Project 4 – Processes and System Calls Part 5: Managing.
Jaishankar Sundararaman
Protection of System Resources
Using Processes.
Unix Process Management
UNIX PROCESSES.
More on UART Interrupts; System Calls
Introduction to Operating Systems
Processes in Unix, Linux, and Windows
Operation System Program 1
The Environment of Unix Process
Lecture 6: Multiprogramming and Context Switching
Section 2 Processes January 27rd, 2017 Taught by Joshua Don.
Presentation transcript:

Project 2: User Programs Presented by Min Li 26 Feb 2009

2 Till now …  All code part of Pintos Kernel  Code compiled directly with the kernel This required that the tests call some functions whose interface should remain unmodified  From now on, run user programs on top of kernel Freedom to modify the kernel to make the user programs work

3 Why Project 2 is not Project 1? Timer Interrupts Other IRQs User Programs Kernel int 0x30 Exceptions Project 2 Tests Project 1 Tests lib/user/syscall.c filesystem syscall layerexc handling

4 Using the File system  May need to interact with file system  Do not modify the file system!  Certain limitations (till Project 4) No internal synchronization Fixed file size No subdirectories File names limited to 14 chars System crash might corrupt the file system  Files to take a look at: ‘filesys.h’ & ‘file.h’

5 Some commands  Creating a simulated disk pintos-mkdisk filesys.dsk --filesys-size=2  Formatting the disk pintos -f –q This will only work after your kernel is built !  Copying the program into the disk pintos -p../../examples/echo -a echo -- -q  Running the program pintos -q run ’echo x’ Single command:  pintos --fs-disk=2 -p../../examples/echo -a echo -- -f -q run ’echo x’  $ make check – Builds the disk automatically Copy&paste the commands make check does!

6 Various directories  Few user programs: src/examples  Relevant files: userprog/  Other files: threads/, filesys/

7 Requirements  Process Termination Messages  Argument Passing  System calls  Deny writes to executables

8 Process Termination  Process Terminates printf ("%s: exit(%d)\n",...); for eg: args-single: exit(0)  Do not print any other message! Program name Return Code

9 Argument Passing  Pintos currently lacks argument passing. You Implement it!  Change *esp = PHYS_BASE to *esp = PHYS_BASE – 12 in setup_stack() to get started  Change process_execute() in process.c to process multiple arguments  Could limit the arguments to fit in a page(4 kb)  String Parsing: strtok_r() in lib/string.h pgm.c main(int argc, char *argv[]) { … } $ pintos run ‘pgm alpha beta’ argc = 3 argv[0] = “pgm” argv[1] = “alpha” argv[2] = “beta” Example taken from Abdelmounaam Rezgui’s presentation

10 Memory layout PHYS_BASE = 3GB Figure taken from Abdelmounaam Rezgui’s presentation

11 Setting up the Stack How to setup the stack for the program - /bin/ls –l foo bar

12 Setting up the Stack… Contd bffffffc |....| bffffffd d8 ff ff bf-ed ff ff bf f5 ff ff bf | | bffffffe0 f8 ff ff bf fc ff ff bf f | /bi| bfffffff0 6e 2f 6c d 6c f 6f |n/ls.-l.foo.bar.|

13 Synchronization  Synchronization between parent and children processes Ensuring child process Loading new executables successfully

14 Requirements  Process Termination Messages  Argument Passing  System calls  Deny writes to executables

15 System Calls  Pintos lacks support for system calls currently!  Implement the system call handler in userprog/syscall.c  System call numbers defined in lib/syscall-nr.h  Process Control: exit, exec, wait  File system: create, remove, open, filesize, read, write, seek, tell, close  Others: halt static void syscall_handler (struct intr_frame *f UNUSED) { printf ("system call!\n"); thread_exit (); } Syscall handler currently …

16 Continued…  A system call has: System call number (possibly) arguments  When syscall_handler() gets control: System calls that return a value () must modify f->eax Figure taken from Abdelmounaam Rezgui’s presentation

17 System calls – File system  Decide on how to implement the file descriptors O(n) data structures… perfectly fine!  Access granularity is the entire file system Have 1 global lock!  write() – fd 1 writes to console use putbuf() to write entire buffer to console  read() – fd 0 reads from console use input_getc() to get input from keyboard  Implement the rest of the system calls

18 System calls – Process Control  wait(pid) – Waits for process pid to die and returns the status pid returned from exit  Returns -1 if pid was terminated by the kernel pid does not refer to child of the calling thread wait() has already been called for the given pid  exec(cmd) – runs the executable whose name is given in command line returns -1 if the program cannot be loaded  exit(status) – terminates the current program, returns status status of 0 indicates success, non zero otherwise Parent: exec() Parent: exec() Parent: wait() Parent process executes Parent process executes Child process executes Child process executes Child process exits Child process exits OS notifies Figure taken and modified from Dr. Back’s lecture – CS Fall 2006

19 Process Control: wait  Implement process_wait() in process.c  Then, implement wait() using process_wait()  Cond variables and/or semaphores will help Think about what semaphores may be used for and how they must be initialized  Some Conditions to take care! Parent may or may not wait for its child Parent may call wait() after child terminates! main() { int i; pid_t p; p = exec(“pgm a b”); // i = wait (p); } int process_wait (tid_t child_tid UNUSED) { return -1; }

20 Memory Access  Invalid pointers must be rejected. Why? Kernel has access to all of physical memory including that of other processes Kernel like user process would fault when it tries to access unmapped addresses  User process cannot access kernel virtual memory  User Process after it has entered the kernel can access kernel virtual memory and user virtual memory  How to handle invalid memory access?

21 Memory Access (contd’)  Two methods to handle invalid memory access Verify the validity of user provided pointer and then dereference it  Look at functions in userprog/pagedir.c, threads/vaddr.h  Strongly recommended! Check if user pointer is below PHYS_BASE and dereference it  Could cause page fault  Handle the page fault by modifying the page_fault() code in userprog/exception.c Make sure that resources are not leaked

22 Some Issues to look at…  Check the validity of the system call parameters  Every single location should be checked for validity before accessing it. For e.g. not only f->esp, but also f->esp +1, f->esp+2 and `f->esp+3 should be checked  Read system call parameters into kernel memory (except for long buffers) copy_in function recommended!

23 Denying writes to Executables  Use file_deny_write() to prevent writes to an open file  Use file_allow_write() to re enable write  Closing a file will automatically re enable writes

24 Suggested Order of Implementation  Change *esp = PHYS_BASE to *esp = PHYS_BASE – 12 to get started  Implement the system call infrastructure  Change process_wait() to a infinite loop to prevent pintos getting powered off before the process gets executed  Implement exit system call  Implement write system call  Start making other changes

25 Misc  Deadline: March 23 rd, 11:59 pm  Do not forget the design document Must be done individually  Good Luck!