




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1Processes and ThreadsCreation and TerminationStatesUsageImplementationsWhat is a process? A task created by the OS, running in a restricted virtual machine environment a virtual CPU, virtual memory environment, interface to the OS via system calls The unit of execution The unit of scheduling Thread
2、 of execution + address space Is a program in execution Sequential, instruction-at-a-time execution of a program.The same as “job” or “task” or “sequential process”What is a program?A program consists of: Code: machine instructions Data: variables stored and manipulated in memory initialized variabl
3、es (globals) dynamically allocated variables (malloc, new) stack variables (C automatic variables, function arguments) DLLs: libraries that were not compiled or linked with the program containing code & data, possibly shared with other programs mapped files: memory segments containing variables
4、(mmap() used frequently in database programs A process is a executing programPreparing a Programsourcefilecompiler/assembler.o filesLinkerExecutable file(must follow standard format,such as ELF on Linux, Microsoft PE on Windows)HeaderCodeInitialized dataBSSSymbol tableLine numbersExt. refsstatic lib
5、raries(libc, streams)Running a program OS creates a “process” and allocates memory for it The loader: reads and interprets the executable file sets processs memory to contain code & data from executable pushes “argc”, “argv”, “envp” on the stack sets the CPU registers properly & calls “_star
6、t()” Part of CRT0 Program start running at _start(), which calls main() we say “process” is running, and no longer think of “program” When main() returns, CRT0 calls “exit()” destroys the process and returns all resourcesProcess != ProgramHeaderCodeInitialized dataBSSSymbol tableLine numbersExt. ref
7、sCodeInitialized dataBSSHeapStackDLLsmapped segmentsExecutableProcess address spaceProgram is passive Code + dataProcess is running program stack, regs, program counterExample:We both run IE:- Same program - Separate processesC Language in Address SpaceCodeInitialized dataBSSHeapStackDLLsmapped segm
8、entsProcess address space#include int a=10;int c;main(int argc, char* argv) int *b; b=(int *)malloc (sizeof(int); *b=a; 8Processes Program in execution (cf. recipe vs. cooking) Multiprogramming - pseudo-parallelism(vs. true hardware parallelism of multiprocessor systems)9The Process Model Multiprogr
9、amming of four programs Conceptual model of 4 independent, sequential processes Only one program active at any instant10Process CreationPrincipal events that cause process creation1. System initialization (background a daemon processes)2. Execution of a process creation system call (data from networ
10、k)3. User request to create a new process4. Initiation of a batch jobUNIX: fork system call (+ execve)Windows: CreateProcess function callCreating a Process - Fork Creating a process and executing a program are two different things in UNIX Fork duplicates a process so that instead on one process you
11、 get two- But the code being executed doesnt change! Fork returns 0 if child -1 if fork fails Childs PID if parent process Child gets new program counter, stack, file descriptors, heap, globals, pid!Examplemain(int argc, char *argv) char *myName = argv1; int cpid = fork(); if (cpid = 0) printf(“The
12、child of %s is %dn”, myName, getpid(); exit(0); else printf(“My child is %dn”, cpid); exit(0); What does this program print?Bizarre But Reallace:tmp cc a.clace:tmp ./a.out foobarThe child of foobar is 23874My child is 23874ParentChildOperating Systemfork()retsysv0=0v0=23874UNIX Example (Example 3.6,
13、 p.65)#include #include #include int main(void) pid_t parentpid; pid_t childpid; Reference: Kay Robbins, Steven Robbins, UNIX Systems Programming, Communication, Concurrency, and Threads,人民郵電出版社, ISBN 7-115-14984-4if (childpid = fork() = -1) perror(cant create a new process);exit(1); else if (childp
14、id = 0) /* child process executes */printf(“child: childpid = %d, parentpid = %d n”, getpid(), getppid();exit(0); else /*parent process executes */printf(“parent: childpid = %d, parentpid = %d n”, childpid, getpid();exit(0);What Happens? (Ex. 3.17, p66)#include #include #include int main(void) pid_t
15、 childpid; pid_t mypid; mypid=getpid(); childpid=fork(); if(childpid=-1) perror(Failed to fork); return 1; if(childpid=0) printf(I am child %ld, ID=%ldn, (long)getpid(),(long)mypid); else printf(I am parent %ld, ID=%ldn,(long)getpid(),(long)mypid); return 0;Chain and FanChildChildParentParentChildCh
16、ildpid_t childpid = 0;for (i=1;in;i+) if (childpid = fork() break;pid_t childpid = 0;for (i=1;in;i+) if (childpid = fork() =0) break;ChainFan19Process TerminationConditions which terminate processes1. Normal exit (voluntary) - (exit, ExitProcess)2. Error exit (voluntary)3. Fatal error (involuntary),
17、 e.g. program bug4. Killed by another process (involuntary) - kill, TerminateProcess20Process Hierarchies Parent creates a child process, child processes can create its own process Forms a hierarchy UNIX calls this a process group”init Windows has no concept of process hierarchy all processes are cr
18、eated equal21Process States (1) Possible process states running blocked ready Transitions between states shown22Process States (2) Lowest layer of process-structured OS handles interrupts, scheduling Above that layer are sequential processes23Implementation of Processes (1)Fields of a process table
19、entry24Implementation of Processes (2)Skeleton of what lowest level of OS does when an interrupt occursMultithreaded ProcessesThreads vs. Processes A thread has no data segment or heap A thread cannot live on its own, it must live within a process Inexpensive creation Inexpensive context switching I
20、f a thread dies, its stack is reclaimedA process has code/data/heap & other segmentsThere must be at least one thread in a processExpensive creationExpensive context switchingIf a process dies, its resources are reclaimed & all threads die27ThreadsProcess = resource grouping (code, data, ope
21、n files, etc.)+execution (program counter, registers, stack)Multithreading: multiple execution takes place in the same process environment co-operation by sharing resources (address space, open files, etc.)28The Thread Model (1)(a) Three processes each with one thread(b) One process with three threa
22、ds29The Thread Model (2) Items shared by all threads in a process Items private to each thread30The Thread Model (3)Each thread has its own stack to keep track execution history (called procedures)31Advantages Pseudo-parallelism with shared address space and data Easier to create and destroy than pr
23、ocesses Better performance for I/O bound applications32Thread Usage (1)A word processor with three threadsWriting a book: interactive and background threads sharing the same file33Thread Usage (2)A multithreaded Web server34Thread Usage (3) Rough outline of code for previous slide(a) Dispatcher thre
24、ad(b) Worker thread35Thread Usage (4)Three ways to construct a server36Implementing Threads in User SpaceA user-level threads package37(Dis)advantages+:no specific OS support neededfaster than kernel instructionsprocess-specific scheduling algorithms-:blocking system calls (select)page faults38Imple
25、menting Threads in the KernelA threads package managed by the kernel39(Dis)advantages+:handling blocking and page faults-:more costly (but recycling threads)40Hybrid Implementations Multiplexing user-level threads onto kernel- level threads41Scheduler Activations Goal: mimic functionality of kernel
26、threads gain performance of user space threads Avoids unnecessary user/kernel transitions Kernel assigns virtual processors to each process lets runtime system allocate threads to processors, upcall Problem: Fundamental reliance on kernel (lower layer) calling procedures in user space (higher layer)
27、42Pop-Up Threads Creation of a new thread when message arrives(a) before message arrives(b) after message arrives (quick)43Making Single-Threaded Code Multithreaded (1)Conflicts between threads over the use of a global variable44Making Single-Threaded Code Multithreaded (2)Threads can have private global variables.But non-reentrant library procedures.POSIX Threads Pthread_create Pthread_exit Pthread_joinCode Example in P.10645Program 12.2, P.414#include #include #include #includ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 葡萄酒代理合同集錦(19篇)
- 電子商務(wù)法律法規(guī)復(fù)習(xí)試題有答案
- 行政組織理論在變革管理中的應(yīng)用試題及答案
- 實(shí)驗(yàn)幼兒園工作計(jì)劃(5篇)
- 嵌入式系統(tǒng)的易用性研究試題及答案
- 網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換思路試題及答案
- 2025年班主任個(gè)人學(xué)期總結(jié)范文(14篇)
- 行政組織理論的社會(huì)影響評(píng)估試題及答案
- 分期付款轉(zhuǎn)讓合同
- 行政管理中的思想多樣性與創(chuàng)新能力試題及答案
- 2023北京海淀初一(下)期末英語(yǔ)試卷含答案
- 膝痹病(膝關(guān)節(jié)骨性關(guān)節(jié)炎)中醫(yī)護(hù)理效果評(píng)價(jià)表
- 總包(外墻)向涂料單位移交單
- 注塑部安全生產(chǎn)責(zé)任書
- 車輛交接證明書
- 2023年中考英語(yǔ)語(yǔ)篇填空做題技巧課件
- 臨床合理用藥培訓(xùn)
- 內(nèi)科病臨床思維智慧樹知到答案章節(jié)測(cè)試2023年浙江大學(xué)
- a320mel放行偏差指南項(xiàng)ata21維護(hù)程序
- TY/T 4001.2-2018汽車自駕運(yùn)動(dòng)營(yíng)地服務(wù)管理要求
- (整理)不同溫度下空氣中飽和水分含量及飽和蒸汽壓
評(píng)論
0/150
提交評(píng)論