1 / 18

Advanced Operating Systems

Advanced Operating Systems. Lecture 3: Shell. University of Tehran Dept. of EE and Computer Engineering By: Dr. Nasser Yazdani. This Lecture: Shell. An interface to the Kernel Resources The UNIX Time Sharing System by D. M. Ritchie and K. Thompson.

heman
Download Presentation

Advanced Operating Systems

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

E N D

Presentation Transcript


  1. Advanced Operating Systems Lecture 3: Shell University of Tehran Dept. of EE and Computer Engineering By: Dr. Nasser Yazdani Distributed Operating Systems

  2. This Lecture: Shell • An interface to the Kernel • Resources • The UNIX Time Sharing System by D. M. Ritchie and K. Thompson. • An Introduction to the Unix Shell, By Steve Bourne's • Rc The Plan 9 Shell, ByTom Duff • Es: A shell with higher-order functions, by Paul Haahr & Byron Rakitzis Distributed Operating Systems

  3. Outline • Introduction • Why shell? • Bourne Shell • RC Shell • ES shell • Cons and pros Distributed Operating Systems

  4. Shell • shell is a command programming language that provides an interface to the system. • It includes control-flow primitives, parameter passing, variables and string substitution. Distributed Operating Systems

  5. Why Shell? • More abstract - higher level • Concise syntax • Simpler • Easier for file manipulation, process manipulation Distributed Operating Systems

  6. Shell vs. Scripting languages • scripting languages fix data structures, functionality. • lost default behaviors that are convenient - manipulation of files, programs, pipes, etc. Distributed Operating Systems

  7. Shell vs. Scripting languages • Shell scripting skills have many applications, including: • Ability to automate tasks, such as • Backups • Administration tasks • Periodic operations on a database via cron • Any repetetive operations on files • Increase your general knowledge of UNIX • Use of environment • Use of UNIX utilities • Use of features such as pipes and I/O redirection Distributed Operating Systems

  8. Bourne Shell • Simplest shell: just run cmd arg arg... - fork, exec in child, wait in parent. • More functionality: file redirection cmd >file - open file as fd 1 in child before exec • Still more functionality: pipes cmd | cmd - create a pipe, run first cmd with pipe on fd 1, run second cmd with other end of pipe on fd 0. • More Bourne arcana: $*, $@, environment variables, macro substitution, if, while, for, ||, &&, "foo $x", 'foo $x', `foo`. Distributed Operating Systems

  9. RC Shell • Rc is a command interpreter for Plan 9 that provides similar facilities to UNIXs Bourne shell. • Principal difference between RC and Bourne (others?): Bourne shell offers string-valued variables. Rc provides variables whose values are lists of arguments that is, arrays of strings. • Examples • path=(. /bin) • echo $path(2) which gives /bin • echo $path(2 1 2) => /bin . /bin • The number of strings in a variable can be determined by the $# operator. Distributed Operating Systems

  10. RC Shell • build an argument list from the output of a command. • cat `{ls -tr|sed 10q} will concatenate the ten oldest files in the current directory. • Command grouping • {sleep 3600;echo 'Time''s up!'}& • sleep 3600;echo 'Time''s up!'& • Conditional execution if • for(i in *.c) if(cpp $i >/tmp/$i) vc /tmp/$i • while(newer subr.v subr.c) sleep 5, This waits until subr.v is newer than subr.c, presumably because the C compiler finished with it. Distributed Operating Systems

  11. RC Shell • Built-in commands • [-i] file Read input from file file. • builtin command , ex. fn cd {builtin cd $* && pwd } • Advanced I/O Redirection • vc junk.c >[2]junk.diag, saves the compilers diagnostics from standard error in junk.diag. • vc junk.c >[2=1] >junk.out. redirects file descriptor 2 to a copy of file descriptor 1 (presumably the terminal). • Here documents for(i) grep $i <<! ... tor 2T-402 2912 kevin 2C-514 2842 bill 2C-562 7214 ... ! • The most important principle in rcs design is that its not a macro processor. Distributed Operating Systems

  12. Es- Shell • applied concepts from modern functional programming languages, such as Scheme and ML, to shells. • Everything is in a uniform representation, function call. • Ability to replace primitive functions such as pipe, to run remotely. • Syntax and most functionality are the same. Distributed Operating Systems

  13. Es- Shell • Functions: commands taking arguments and applying command to each of them. fn apply cmd args { for (i = $args) $cmd $i } For example es> apply echo testing 1.. 2.. 3.. testing 1.. 2.. 3.. • Take program fragments (enclosed in braces) as arguments. apply @ i {cd $i; rm -f *} \ inlining in the code /tmp /usr/tmp @ parameters { commands }: waiting to happen es> @ i {cd $i; rm -f *} /tmp : runs the inlined function directly on the argument /tmp. Distributed Operating Systems

  14. Es- Shell • Settor Variables: gets evaluated every time the variable changes value like watch function. • Return Values: can return any object: string, program fragment, list, etc. • Exception: throw raises an exception es> fn in dir cmd { if {~ $#dir 0} { throw error ’usage: in dir cmd’ } fork # run in a subshell cd $dir $cmd } es> in usage: in dir cmd Distributed Operating Systems

  15. Es- Shell • Spoofing: Overriden the create or pipe functions by user. • Implemented on 8000 lines of C code. • Not interact well with UNIX. • Garbage Collection: True recursive structures, that is, objects which include pointers to themselves, either directly or indirectly. It needs a full garbage collection system. Distributed Operating Systems

  16. Good things about Shell • batch programming • portability • interactive development environment • connecting programs together Distributed Operating Systems

  17. Bad things about Shell • string and character manipulation (sometimes) • speed • large programs • data structures • some functionality is hidden (e.g., networks, but can use nc instead; guis harder). Distributed Operating Systems

  18. Next Lecture • OS Kernel • References Distributed Operating Systems

More Related