Unix 教學. Unix-like System Linux FreeBSD Solaris Mac OS X …

Slides:



Advertisements
Similar presentations
CS Lecture 4 Programming with Posix Threads and Java Threads George Mason University Fall 2009.
Advertisements

Copyright ©: Nahrstedt, Angrave, Abdelzaher1 pThreads.
PTHREADS These notes are from LLNL Pthreads Tutorial
1 Introduction to UNIX Ke Liu
Dayu Zhang 9/8/2014 Lab02. Example of Commands pwd --- show your current directory This is home of venus, not your home directory Tilde: means you are.
1 Introduction to UNIX 2 Ke Liu
Threads Lab اللهم علمنا ما ينفعنا،،، وانفعنا بما علمتنا،،، وزدنا علماً
Threads By Dr. Yingwu Zhu. Review Multithreading Models Many-to-one One-to-one Many-to-many.
Computer Architecture II 1 Computer architecture II Programming: POSIX Threads OpenMP.
Working Environment - - Linux - -.
Fork Fork is used to create a child process. Most network servers under Unix are written this way Concurrent server: parent accepts the connection, forks.
8-1 JMH Associates © 2004, All rights reserved Windows Application Development Chapter 10 - Supplement Introduction to Pthreads for Application Portability.
Fork and Exec Unix Model Tutorial 3. Process Management Model The Unix process management model is split into two distinct operations : 1. The creation.
Outline Unix Architecture Vi Fork Pthread. UNIX Architecture.
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 Processes Tarek Abdelzaher Vikram Adve.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts Essentials – 9 th Edition Chapter 4: Threads.
Essential Unix at ACEnet Joey Bernard, Computational Research Consultant.
Introduction to Pthreads. Pthreads Pthreads is a POSIX standard for describing a thread model, it specifies the API and the semantics of the calls. Model.
Unix Basics Chapter 4.
EE 積體電路設計導論 Introduction to work station Tutor : Yuah-Shen Lee 2014/10/7.
Thread Synchronization with Semaphores
Shell (Part 2). Example r What if we want to support something like this: m ps –le | sort r One process should execute ps –le and another should execute.
Multi-threaded Programming with POSIX Threads CSE331 Operating Systems Design.
Threads and Thread Control Thread Concepts Pthread Creation and Termination Pthread synchronization Threads and Signals.
ICS 145B -- L. Bic1 Project: Process/Thread Synchronization Textbook: pages ICS 145B L. Bic.
CS345 Operating Systems Threads Assignment 3. Process vs. Thread process: an address space with 1 or more threads executing within that address space,
Introduction to UNIX Road Map: 1. UNIX Structure 2. Components of UNIX 3. Process Structure 4. Shell & Utility Programs 5. Using Files & Directories 6.
CS333 Intro to Operating Systems Jonathan Walpole.
Unix 教學. Unix-like System Linux FreeBSD Solaris Mac OS X …
Pthreads: A shared memory programming model
Threads CSCE Thread Motivation Processes are expensive to create. Context switch between processes is expensive Communication between processes.
S -1 Posix Threads. S -2 Thread Concepts Threads are "lightweight processes" –10 to 100 times faster than fork() Threads share: –process instructions,
Threads and Locking Ioctl operations. Threads Lightweight processes What’s wrong with processes? –fork() is expensive – 10 to 100 times slower –Inter.
Threads Chapter 26. Threads Light-weight processes Each process can have multiple threads of concurrent control. What’s wrong with processes? fork() is.
1 Pthread Programming CIS450 Winter 2003 Professor Jinhua Guo.
Lecture 7: POSIX Threads - Pthreads. Parallel Programming Models Parallel Programming Models: Data parallelism / Task parallelism Explicit parallelism.
Pthreads.
Operating Systems Process Creation
CS4315A. Berrached:CMS:UHD1 Process Management Chapter 6.
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,
Getting Started UNIX InKwan Yu Topics Unix Commands Unix System calls C function calls.
Process Management Azzam Mourad COEN 346.
Chapter 6 P-Threads. Names The naming convention for a method/function/operation is: – pthread_thing_operation(..) – Where thing is the object used (such.
Threads Dr. Yingwu Zhu. Threaded Applications Web browsers: display and data retrieval Web servers Many others.
Now that you know the pthread API…  How do you create threads?  How do you pass different values to them?  How do you return values from threads? 
Unix 教學 1. Unix-like System  Linux  FreeBSD  Solaris  Mac OS X  … 2.
Copyright ©: Nahrstedt, Angrave, Abdelzaher
Threads A thread is an alternative model of program execution
CS431-cotter1 Linux Programming, Processes, and Threads Man pages (fork, clone, execve, pthread_create) The Linux Programming Interface – Kerrisk, No Starch,
POSIX Threads Loren Stroup EEL 6897 Software Development for R-T Engineering Systems.
Tutorial 3. In this tutorial we’ll see Fork() and Exec() system calls.
Dr. Sajib Datta Jan 16,  The website is up.  Course lectures will be uploaded there ◦ Check regularly for assignments and update.
1 Unix system calls fork( ) wait( ) exit( ). 2 How To Create New Processes? n Underlying mechanism -A process runs fork to create a child process -Parent.
4.1 Operating Systems Lecture 9 Fork and Exec Read Ch
A thread is a basic unit of CPU utilization within a process Each thread has its own – thread ID – program counter – register set – stack It shares the.
Unix 教學.
UNIX To do work for the class, you will be using the Unix operating system. Once connected to the system, you will be presented with a login screen. Once.
CS1010: Intro Workshop.
CS399 New Beginnings Jonathan Walpole.
PTHREADS These notes are from LLNL Pthreads Tutorial
Tarek Abdelzaher Vikram Adve Marco Caccamo
Operating Systems Lecture 13.
Fork and Exec Unix Model
Thread Programming.
CS510 Operating System Foundations
Operating System Concepts
Programming with Shared Memory
Jonathan Walpole Computer Science Portland State University
Programming with Shared Memory
Outline Chapter 3: Processes Chapter 4: Threads So far - Next -
Presentation transcript:

Unix 教學

Unix-like System Linux FreeBSD Solaris Mac OS X …

Tools Login in tools – Putty / pietty Editor – ee(Easy Editor) – vi FTP tools – WinSCP – FileZilla Client

How to use putty/pietty? Putty – Pietty –

Login in the default for SSH service is port 22 – bsd1.cs.nctu.edu.tw – bsd5.cs.nctu.edu.tw – linux1.cs.nctu.edu.tw – linux6.cs.nctu.edu.tw – …

Unix-like command - Shell Command – ls - list directory contents – mv - move files or directories – mkdir - make directories – rm - remove files or directories – cd - change directory – man - format and display the on-line manual pages – chmod - change file system modes of files and directories. – … Reference: chdoc/shell/book1.html

Unix-like command - Shell Command – ls -a Include directory entries whose names begin with a dot (`.'). – ls -l (The lowercase letter ``ell''.) List files in the long format, as described in the The Long Format subsection below. – man ls

Unix-like command - Shell Command – mkdir [folder_name] (create folder) – rmdir [folder_name] (delete folder) – rm [file_name] (delete file) – mv [source] [target] (move files or folder)

Unix-like command - Shell Command – cd [directory] (change the working directory) – pwd (return working directory name) – chmod [mode] [file] (change file modes) Mode : [user][group][guest] -rwxrwxrwx 1 user group 1 Sep test.txt Ex. chmod 644 test.txt -rw-r--r-- 1 user group 1 Sep test.txt

Unix-like command - Shell Command – man man (format and display the on-line manual pages) Other: – Reference: story/linux/linux.tnc.edu.tw/techdoc/shell/book1.html story/linux/linux.tnc.edu.tw/techdoc/shell/book1.html mmand.php mmand.php

ee/edit BSD only Start ee : % ee Usage – edit mode like notepad – ESC-ENTER : save/exit

vi Vi editor have two modes – Command mode – Edit mode start vi : %vi Reference: chdoc/vi.htm Command mode Edit mode Exit Edit mode Insert Delete Replace Copy..... [Esc]

FTP - WinSCP Add new account – 使用工作站帳號密碼 – Port 22 – SFTP

FTP - FileZilla 開啓站台管理員 新增站台 選 SFTP 登入型式 ( 一般 )

Fork & thread 教學

fork fork - create a new process – The new process (child process) shall be an exact copy of the calling process (parent process) – The child process shall have a unique process ID(different parent process ID). – The return value in the child is 0,whereas the return value in the parent is the process ID of the new child. – It return only -1 when fork failed.

#include int main(void) { pid_t pid; pid = fork(); switch (pid) { case -1: printf("failure!\n"); break; case 0: printf("I am child!\n"); break; default: printf("my child is %d\n",pid); break; } for (;;) { /* do something here */ } } % gcc fork1.c -o fork1 %./fork1 & [1] % my child is I am child! % ps PID TTY TIME CMD pts/18 00:00:00 tcsh pts/18 00:00:05 fork pts/18 00:00:05 fork pts/18 00:00:00 ps % killall -v fork1 Killed fork1(16444) with signal 15 Killed fork1(16445) with signal 15 [1] + Terminated./fork1 fork() - example1

fork() – example2 #include int main(void) { pid_t pid; pid = fork(); if (pid>0) { printf("my child is %d\n",pid); printf("daemon on duty!\n"); /* do something here */ exit(0); } else if (pid<0) { printf("Can't fork!\n"); exit(-1); } for (;;) { printf("I am the daemon!\n"); usleep(300000); //sleep 0.3 seconds /* do something here */ } % gcc fork2.c -o fork2 %./fork2 & [1] % my child is daemon on duty! I am the daemon! … (loop) … Open a new window to kill it % killall -v fork2 Or Direct input in the window to kill it Hint : we can use copy-paste to do it % killall -v fork2

Thread Light weight process Share resources Own private data Synchronization

Pthread API int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); – create a new thread with given attributes int pthread_join(pthread_t thread, void **status); – suspend caller until thread argument ends void pthread_exit(void *status); – terminate calling thread int pthread_equal(pthread_t t1, pthread_t t2) – test if two thread IDs are to same thread int pthread_cancel(pthread_t thread) – start cleanup and termination of given thread int pthread_kill(pthread_t thread, int sig) – send given signal to specified thread pthread_t pthread_self(void) – return ID of calling thread

Pthread API cont. pthread_mutex_destroy() – destroy a mutex pthread_mutex_init() – initialise a mutex pthread_mutex_lock() – get mutex lock blocking while already locked pthread_mutex_trylock() – try to get mutex lock, fail if already locked pthread_mutex_unlock() – release lock on a mutex

How to create Pthread in unix-like OS? Linux, BSD, Saloris…etc – Include: #include – Command line: % g++ threads.cpp -lpthread -o threads

pthread() – example1 #include #define NUM_THREADS 5 void *PrintHello(void *); int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc, t; for(t=0;t<NUM_THREADS;t++) { printf("In main: creating thread %d\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *)&t); usleep(1000); if(rc) { printf("ERROR; return code from pthread_create() is %d\n", rc); exit(-1); } void *PrintHello(void *threadid) { int tid = *((int *)threadid); printf("Hello World! thread #%d\n", tid); pthread_exit(NULL); }

pthread() – example1 cont. % g++ threads1.cpp -o threads1 -lpthread %./thread1 In main: creating thread 0 Hello World! thread #0 In main: creating thread 1 Hello World! thread #1 In main: creating thread 2 Hello World! thread #2 In main: creating thread 3 Hello World! thread #3 In main: creating thread 4 Hello World! thread #4

#include using namespace std; void *doSomething(void * arg); int main() { int tmp1=1, tmp2=2; pthread_t t1; if ( pthread_create(&t1, NULL, doSomething, (int *)&tmp1) != 0 ) { cout << "pthread_create() error" << endl; exit(-1); } doSomething((int *)&tmp2); } pthread() – example2 void *doSomething(void *arg) { for (;;) { int tmp = *((int *)arg); cout << tmp; cout.flush(); sleep(tmp); } return NULL; }

pthread() – example2 cont. % g++ threads2.cpp -o threads2 -lpthread %./thread …(loop)…

Assignment

1-1: try to use fork() and Pthread Just “rand()” two global integer between 1~10, then add them up VER. Fork: create a child process, then child rand() int1, parent rand() int2, child add up int1 and int2(YES! communication between process!) VER. Thread: create two threads, thread1 rand() int1,then sleep(int1), thread2 rand() int2, then sleep(int2); then main process add up int1 and int2.

1-2: producer and consumer First,build a GLOBAL BUFFER,it’s a queue(only need FIFO array,don’t need to creat a queue) Build a producer thread and consumer thread Producer: put numbers by rand() into buffer,you can’t put more number when the buffer is full. Consumer: Take out the numbers in the buffer, you can’t take more number out when the buffer is empty. Print out the number and its location in buffer from Producer,and Print out the number and its location in buffer from Consumer (see textbook 7 th. Edition Ch3-4)

1-2: producer and consumer 先建立一個 GLOBAL 的 BUFFER, 它是一個 queue( 只需有 FIFO 效果的 array, 不用真的實作 queue) 建立 producer thread 與 consumer thread Producer 的工作是把 rand() 出來的數字放入 buffer 中, 如果 buffer 已經滿了就不能再放 Consumer 的工作是把 buffer 中的數字取出, 如果 buffer 是空的就不能取 印出 Producer 放入幾號 buffer 跟放入的數字, 同 理 consumer 印出取出的數字跟 buffer 的號碼 ( 詳見恐龍本第 7 版 3-4)

1-2 cont. Buffer size=5 Number of consumer and producer =12 Simple Output: – producer(1)-producer put [208] in buffer[0] – producer(2)-producer put [142] in buffer[1] – consumer(1)-consumer get [208] in buffer[0] is – producer(3)-producer put [66] in buffer[2] – producer(4)-producer put [241] in buffer[3] – producer(5)-producer put [164] in buffer[4] – consumer(2)-consumer get [142] in buffer[1] – producer(6)-producer put [7] in buffer[0] ……………..

1-2 cont. #include #define BUFFER_SIZE 5 int buffer[BUFFER_SIZE]; void * consumer(void *argv){ for (int num=0;num<12;num++){ sleep(rand()%10); //write here } void * producer(void *argv){ for (int num=0;num<12;num++){ sleep(rand()%5); //write here } int main(){ int errno; srand((int)time(0)); pthread_t p_tid, c_tid; pthread_create(&c_tid, NULL, consumer, NULL); pthread_create(&p_tid, NULL, producer, NULL); pthread_join(c_tid,NULL); pthread_join(p_tid,NULL); }

Q & A