1 / 38

Chapter 1 LINUX Environment

Chapter 1 LINUX Environment. Topics: Linux History Linux User Environment Linux Development Environment. Heejune AHN. What is Operating Systems ?. Application Program vs System Program Provides uniform resource (hardware) access mechanism to Application Program/programmer

axel
Download Presentation

Chapter 1 LINUX Environment

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. Chapter 1LINUX Environment • Topics: • Linux History • Linux User Environment • Linux Development Environment Heejune AHN

  2. What is Operating Systems ? • Application Program vs System Program • Provides uniform resource (hardware) access mechanism to Application Program/programmer • same access mechanism to different hardware: Resources include CPU, memory, disk, tape, printers, terminals, modems, etc. • Resource Efficiency and Protection: multi-tasking, multi-processing, multiuser • Provide HW resources to multiple task, and protect mis- or over-use of one task. • BASIC-OS, MSDOS, Unix OS, Linux OS, Windows OS, Apple OS

  3. History of Linux • Unix • developed at Bell Labs (AT&T, Kerningham ) in 1969 for minicomputer • coded over 90% in C, not assembler: easy port to different machines • Xnix family • UC Berkely BSD, At&T SVR4 version • SUN Solaris, IBM AIX, HP UNIX, SCO-Xenix etc • GNU(Gnu's not Unix) project • Richard Stallman • started in early 80's to create and promote free software

  4. Linux’ Birth • Linus Torvalds in the 1990's, released to the Internet in 1994 • about 1/3 of Linux is GNU code from the Free Software Foundation - a Linux distribution consists of Linux kernel + GNU compilers/tools/utilities + other free software • Popularity • Linux uses the Open Source model for development - code is placed on the Internet, users download and test it, programmers improve it and place it back on the web there is competition among programmers to fix bugs and improve Linux • Packages : Redhat (now Fedora), Suse Linux, IBM etc • Latest version : Release 2.6.x

  5. Linux Internal • Linux (wide-sense) = Linux Kernel + Utilities + alpha Utilities + Applications Shell Linux Kernel + Drivers HW (CPU + MEM + Peripherals)

  6. Linux Internal • Hardware : CPU, Memory, Disk, Peripherals, surrounded by Kernel • UNIX Kernel (basic OS) • Process Management : CPU scheduling • Memory Management : Memory allocation, protection, Paging etc. • File system : secondary/permanent data management • Device Drivers : peripherals control • IPC (inter-process communication) : signal, pipe, fifo, semaphore, message queue, share memory etc • Network : TCP/IP, IPX, UNIX protocols etc • Utilities/applications (or commands) • mozila, telnet, apache, mincom, gcc, make etc. • Shell (user interface, command interpreter, and some built-in commands) • Bourne shell (sh), C shell (csh), Korn shell (ksh), Bourne again shell (bash), TC shell (tcsh), Z shell (zsh)

  7. Yes, I am a Linuxer! • Entering Commands, Logging In & Out • To login, use a telnet program, and provide userid and password    DOS>telnet 10.2.32.210    login:yourId    Password: • To logout, use logout, exit, or control-d • Use passwd to change password

  8. Unix File system • Linux File Structure • Everything in Linux is file : file, directory, devices … • hierarchical (tree, directory within directory) • root directory is / - ancestor of all files and directories on system • directories contain files and/or other directories to be safe, for file and directory names use alphabetics, numerics, underscore, period, or comma some UNIX systems allow up to 255 characters in a filename, others only allow up to 14 • Filename • absolute pathname : starting with ‘/’, I.e. root ) • relative pathname : not starting with /, relative to your current directory • . (current), .. (parent directory)

  9. Access Permission • Linux is multi-user minded OS • User (me), Group (my team), and Others • Permission • Read • Write • Execute • chmod (explain later) • used to alter access permissions to a file or directory • read/write/execute for user(owner)/group/other • chmod xxx filename (xxx is 3 octal digits representing the binary string rwxrwxrwx where the first three characters are read/write/execute permission for the user, the next three for the user's group, and the last three for all others) • chmod 640 file1 • chmod u+r filename • chmod u+x file1

  10. Unix Journey • standard directories & files • /home typically contains the home directories of all users • /usr/bin or /bin contains standard utility programs • /sbin and /usr/sbin contain utilities for system administration • /etc contains admin & configuration files, such as /etc/passwd • /var contains files that vary as the system is running, such as temp, log, spool, and mailbox files • /dev contains files representing peripheral devices (device drivers) • /tmp is used by some programs for temporary files

  11. Basic Linux commands: 1 • cd [dirPath] • change current directory , cd (to hone directory) • ls - lists information about files and directories • Ls –al - "a"ll files (including hidden), "l"ong form • ls -F - indicates file type, / for directory, * for executable • pwd : show your current directory • mkdir - to create directories • mkdir -p - to create any parent directories not already existing • mv - move (rename) filet/directory • rmdir - to delete empty directories, eg. rmdir directory-list • rm - to delete files, eg. rm file-list • rm -r - to delete directories including files and subdirectories • rm -ir - to delete directories including files and subdirectories, with prompt to confirm removal

  12. Basic Linux commands: 2 • head -n filename - displays first n lines, 10 is default • tail -n filename - displays last n lines, 10 is default • sort filename - displays in sorted order • more or less - displays file contents one page at a time • <space bar> - will go to next page • b - will go to previous page • <enter> - will go down one line • /string - will search for string within document being viewed • q - will quit • touch - creates a new file, or updates stats on an existing file • diff file1 file2 - compares 2 files • indicates lines to add, delete, or change to convert file1 to file2 • wc - displays various counts of the contents of a file • wc –l | c | w filename - number of lines / character/ words

  13. Basic Linux commands: 3 • cp source-file destination-file • to copy files (careful, overwrites destination with no warning) • mv existing-file new-file - to rename files & directories • file filename • gives info about the contents of the file • whereis utility • lists all libraries in your path containing a utility of this name • which utility • lists specific library in your path that would be used to access this utility • ln (link) command gives a file an additional name, or pointer, from the same or a different directory • ln file1 file2 - gives file1 the additional name file2 (hard link) • ln -s file1 file2 - gives file1 the additional name file2, as an indirect pointer (symbolic link) • grep 'string' file - print lines in file that contain the string

  14. Basic Linux command : 4 • Chmod • Permission • x permission : execution for normal file, pass-through for a directory • r permission for a directory allows viewing of file names in the directory, but no access to the files themselves (regardless of the files' permission settings) • x and r permissions for a directory allow viewing of file names, and access to any files which have appropriate permissions set • permissions can only be changed by file owner or superuser (system administrator) • Usage • eg. chmod g-w file1 - would take away write permission from the user's group if they had it before • eg. chmod o=r file1 - would set all others' permission to read only regardless of what they had before • chmod -r ( Recursive)

  15. umask • defines default permissions for newly created files, doesn't change permissions on existing files • default permissions will be 777 minus umask arg for directories, 666 minus umask arg for files • eg. umask - by itself, shows current umask setting • eg. umask 077 - new files will be 600, new directories will be 700 • eg. umask 023 - new files will be 644, new directories will be 754

  16. Basic Linux commands: 5 • echo • text or $variable (eg. $USER) • printf • similar to echo but can use C-style formatting • allows escapes: eg. \n (newline) \t (tab) • eg. printf "This is a menu\n\t1. Item 1\n\t2. Item2\n\t3. Item3\nEnter choice: " • date - gives date and time • allows extensive formatting • eg.: date +"Today is %A %B %d, %Y" • Print command • lpr filenames - to print files, lp on some systems • lpq - to list print queues, lpstat on some systems • lprm - to remove files from print queue

  17. Basic Linux commands: 6 • Script • different from each shells • variables • String : e.g. var1=“hello heejune!” • environment variable : $HOME, $PATH, $n (argument) • flow control • if, elif, for, while, until, case • comparison • string =, !=, -n, –z • numeric -eq, -ne, -gt, -ge, -lt, -le, !, -d, -d/e/f/g/r/s/u/w/x • list • process successive command, &&, || • function • user defined function e.g. Fun1(){ echo “this is function1”} • Shell-Internal function e.g. Echo, eval, exec, exit, export ….etc

  18. Configure your environment • configuration file • Make your life easy / customization • Configuration file is often start with “.” • Look after ls –a in your HOME • .bash_profile, .bashrc, .bash_login, .bash_logout, .exrc etc • .bash_profile • Started when you log-in/new terminal • Put your preference there if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH

  19. Communication with Others : Optional • Who • w - information about users logged on to system • who am i, whoami - information about your session • who -T - displays additional info, such as message acceptance • finger - info about users on system • finger username [@remotemachine] • info about a specific user on system - looked up in /etc/passwd file, can also use first or last name instead of userid • talk user : character by character conversation with another user, end with delete • write user : line by line conversation with another user, end with control-d • mesg n, mesg y - deny or accept messages (or mesg -n, mesg -y) • mail users - mails a message to users, end with control-d on line by itself • mail user@snut.ac.kr < filename - mails a file to a user • pine - another mail program

  20. Help me !! • Online Documentation • man command • online help for command, if online documentation installed by Unix administrator • man -k keyword - eg. man -k sort - searches through all man sections • man uses more to display information: • <space bar> - will go to next page • b - will go to previous page • <enter> - will go down one line • /string - will search for string within document being viewed • q - will quit • info - is replacing man on Linux

  21. Software development tool flow Editor (vi, emacs) • Gnu tool-chain Source (*.c, *.cc, *.h) preprocessor compiler (front/backend) Object files (*.o, *.obj) Library *.a *.so archiver linker Executable (a.out, *) loader

  22. vi editor 사용법 • Vi Editor • Most popular, simple, but sill powerful editor in Linux • Provides visual env. Without window system • No menu scheme • 사용법 • vi 파일명 • view 파일명 : vi in read-only mode • PC 버전 (freeware) 도 있음 • Mode • 3 modes • input (editing) mode : 내용 입력, 타이핑한 내용이 화면에 나옴 • command mode : 간단한 editor 명령지원, 화면에 타이핑이 나오지 않음. • last line mode : 복합 명령 지원

  23. Mode change • to input mode: • insert - i, I (before cursor, beginning of line) • append - a, A (after cursor, end of line) • open - o, O (below, above) • to command mode • <escape> • to last-line mode • (from command mode) • “:”

  24. Symbols in VI • w (word) , c (character) • $ (endof line, end of file), 0 (begin of line, file), • (, ) ( beginning or end of sentence • {, } - beginning or end of paragraph • Cursor 이동 • return, space, arrow keys, or h, j, k, l (left, down, up, right) • repetition factor, eg. 12j will move down 12 lines • H, M, L - move cursor to top, middle, bottom of screen • ^d, ^u, ^f, ^b (^는 CTRL key) • scroll forward 1/2 screen, backward 1/2 screen, forward full screen, backward full screen • nG - move to line n, or last line if n not specified

  25. Delete • x - delete character under cursor ( repetition factor, eg. 3x ) • dw, dd - delete text (word to the right, line) and copy to buffer • can use repetition factor, eg. 5x, 7dw or d7w, 12dd or d12d • D - delete to end of line • Copy & Past • yw, yy - yank - copy text (word, line) to buffer • can use repetition factor eg. 5yw or y5w, 12yy or y12y • Y - copy to end of line • p, P - paste buffer after or before cursor if buffer contains words, and below or above current line if buffer contains lines

  26. Linux Internal • Replace • r - replace character under cursor • ns - substitute number of characters specified by n • cw, cc - change - delete text (word, line), copy text to buffer, and leave in input mode (repetition factor, eg. 5cw or c5w, 12cc or c12c) • Undo & repeat • u - multiple levels on some systems, one level on others • . - repeat most recent command that made a change • C - change to end of line • J - join current and following line

  27. last-line mode • /pattern - searches for the next occurrence of pattern after the current cursor position • ?pattern - searches backwards through the file • n - repeat last search, N will repeat in opposite direction • / - repeat last search forward, ? to repeat backward • Finish vi • “ZZ” or “:wq” (write and quit) • “:q!” (quit without writing), “:q” (quit, only allowed if not changed since last save)

  28. GNU C Compiler • GCC ( Gnu C Compiler /Gnu compiler collection) • Global command, ie. it deos not do work itself • gcc call C preprocessor, compiler, assembler and linker • Cf ) g++ for compiling cpp code • {cpu}-{loader}-gcc e.g.) arm-linux-gcc • 사용 법: gcc [options] file • E.g. gcc -o test test.c • For full description, read Manual • --help Display this information • Output Options • -c Compile and assemble, but do not link • -o Place the output into • -E Preprocess only; do not compile, assemble or link • -S Compile only; do not assemble or link

  29. Code generation • -g Include Debugging Information • -On Optimization (n = 1,2,3), speed, memory, but longer compile time • -Wn Warning (e.g. -Wall, ...) • -m Machine dependent handling (e.g. -msoft-float -m) • -fxxx code generation (e.g. PIC: relocatable code) • Directory options • -llibraryname -static, -shared library to link • -Llibpath non standard library Location • -Iheaerpath non standard header path • ETC • -D Preprocessor Macro-definition • -x Specify the language of the following input files • -Wa, Pass comma-separated on to the assembler • -Wp, Pass comma-separated on to the preprocessor • -Wl, Pass comma-separated on to the linker

  30. GNU Make utility • Project and Make Utility • Compile process automation required • most modern project has more than 100 source files • Batch file (script) is ok for it. • Intelligent compilation • Many c files -> long Compile time • Make utility checks the dependency and compile only the required to compile. • .

  31. How to make "Makefile" • write definition section : define Macros, eg. CC, CFLAGS etc • write dependency • target and its sources • write commands • Notes • # is for comment • Variable: $variable, $@ is target, $< is source • commands must start with "tab" not space or something • How to Run it • make <-f file> target . . . (eg. make -f mymakefile target1 target2) • make (for gnuMakefile, makefile, Makefile and "all" target)

  32. Sample (most primitive) #definition section CC=gcc CFLAGS=-O3 –g # command section OBJS = main.o first_func.o second_func.o all : main main : $(OBJS) $(CC) -o $@ $(OBJS) main.o : main.c func.h first_func.o : first_func.c second_func.o : second_func.c .c.o : $(CC) -c $< clean : rm -f main *.o

  33. How it works • read the makefile, parse it (rule check), build the dependence info • check the dates of each files • run the commands (explicit or implicit) • Details • Real world is more dirty, see Manual

  34. Preprocessor • Preprocessor • Before compiler process the source file, the preprocessor expands or substitutes MACROs. • For Conditional compile, in-line function (faster than real function), include files • Rules • #include <file> | "file" • include file from IMPLICIT ( or EXPLICT ) • #define MARCO [DEFINITION] , #undef • #define DEBUG #define ADD(a,b) ((a) +(b)) #define EOF (-1)   #undef DEBUG • #error, #warning • #warning "this is warning" (error stops the compile process, while warning does not stops on "most good" tool-chains)

  35. Conditional Processing • #if #ifdef #ifndef #else #elif #endif defined() • #ifdef DEBUG   printf(" data : %0x\n", data); #endif • #if CPU == MIPS     .... #elif CPU == x86      .... #endif • Predefined MACROs • __DATE__ (%s): Sep 5 2004 • __FILE__ (%s): main.c • __LINE__ (%d): 23 • __STDC__ (%d): 1 • __TIME__ (%s): 02:11:54

  36. # : variable name not the variable itself • #define INTVAR(var) printf("%s:%d \t %s = %d\n", __FILE__, __LINE__, #var, var); • ## : Concatenate (연결) the variable names • #define x(i) x##i int x(i), x(2), x(3); x(1) = 100; x(2) = 200; x(3) = 300; 은 int x1,x2, x3 ; x1 = 100; x2 =200; x3 = 300; 과 같음.

  37. 주의 사항 • use the "(" parenthesis not to be mis-expanded • #define ADD(a +b) (a) + (b) • ADD(1 + 2) * 3 =====> not 9 but 7 !! • MARCO does not check the Syntax • #define MOD(a,b) ((a) % (b)) • MOD(7.0, 5.0) -> ok for preprocessor, but error in compiler!! • MARCO is always good for performance (speed). • Abusing Macros make the code lengthy and need more code memory than Instruction Cache can do. • Trouble shooting • “gcc -E src.c” and investigate the bug!

More Related