DOC PREVIEW
Princeton COS 318 - Lecturel

This preview shows page 1-2-23-24 out of 24 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 24 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 24 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 24 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 24 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 24 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Forking & Process SchedulingMechanicsA Quick ReviewHow To Launch a New Process?Can We Generalize?But We Want a Parent and a ChildWhat Gets CopiedShared MemoryCopy-On-WriteIssues of Copy-On-WriteProcess Creation & TerminationSignalsA Signaling SidebarScheduling PrimitivesOur Friend, The Transition DiagramProcess State Transition of Non-Preemptive SchedulingWho’s Happy Right NowSchedulerMore on SchedulerWhere Should PCB Be Saved?Physical Memory & MultiprogrammingJob SwappingAdd Job Swapping to State Transition DiagramThink About SwappingForking & Process SchedulingVivek Pai / Kai LiPrinceton University2MechanicsExams not graded–Hopefully, this weekFilesystem project–Extension + bonus?–This wasn’t supposed to happenToday: forking + scheduling3A Quick ReviewWhat have we covered–How to store data via files–How to virtualize memory•Every process gets uniform address space•Lots of tricks can be played to share memoryWhat’s left–How to share/virtualize the processor–Having processes communicate/cooperate4How To Launch a New Process?Obvious choice: “start process” system callBut not all processes start the same–“testprogram” versus “testprogram >& outfile” versus “testprogram arg1 arg2 >& outfile”The “parent” process wants to specify various aspects of the child’s “environment”–Next step: add more parameters to specify environment5Can We Generalize?What happens as more information gets added to the process’s “environment” – more parameters? New system calls? This gets uglyWhat’s the most general way of setting up all of the environment?So, why not allow process setup at any point?–This is the exec( ) system call (and its variants)6But We Want a Parent and a ChildThe exec call “destroys” the current processSo, instead, destroy a copy of the process–The fork( ) call duplicates the current process–Better yet, don’t tightly couple fork and exec•This way, you can customize the child’s environmentSo what does fork( ) entail?–Making a copy of everything about the process–Ouch!7What Gets CopiedSo far, we’ve covered the following:–VM system–File system–SignalsHow do we go about copying this information?What parts are easy to copy, and what’s hard?What’s the common case with fork/exec?–What needs to get preserved in this scenario?8Shared MemoryHow to destroy a virtual address space?–Link all PTEs–Reference countHow to swap out/in?–Link all PTEs–Operation on all entriesHow to pin/unpin?–Link all PTEs–Reference count............Process 1Process 2w...wPage tablePage tablePhysicalpages9............Copy-On-WriteChild’s virtual address space uses the same page mapping as parent’sMake all pages read-onlyMake child process readyOn a read, nothing happensOn a write, generates an access fault–map to a new page frame–copy the page over–restart the instructionParent processChild processrr...rrPage tablePage tablePhysicalpages10Issues of Copy-On-WriteHow to destroy an address space–Same as shared memory case?How to swap in/out?–Same as shared memoryHow to pin/unpin–Same as shared memory11Process Creation & TerminationFour primitives:Fork – create a copy of this processExec – replace this process with this programWait – wait for child process to finishKill – (potentially) end a running processProcesses form a tree – what happens when parent disappears?12SignalsAsynchronous event delivery mechanismExamples – FPE, segv, ctrl-c, hang up, resumeDefault actions – ignore, abort, core dumpHandler – program-specified routine for signal13A Signaling SidebarWhat’s wrong with this program:int randVal;void SigHand(void){printf(“your rand val is %d\n”, randVal);}int main(int argc, char *argv[]){set up ctrl-c handler;while (1) {randVal = 0;randVal = 1;…randVal = 9;}}14Scheduling PrimitivesBlock – wait on some event/resource–Network packet arrival–Keyboard, mouse input–Disk activity completionYield – give up running for now–Directed (let my friend run)–Undirected (let any process run)Synchronization–We will talk about this later15Our Friend, The Transition DiagramRunningBlockedReadyScheduler dispatchWait forresourceResource becomesavailableCreatea processterminate16Process State Transition ofNon-Preemptive SchedulingRunningBlockedReadyResource becomes available(move to ready queue)Createa processTerminate(call scheduler)Yield(call scheduler)Block for resource(call scheduler)Schedulerdispatch17Who’s Happy Right NowSchedulerA non-preemptive scheduler invoked by explicit block or yield callsThe simplest formScheduler:save current process state (into PCB)choose next process to rundispatch (load PCB and run)Does this work?More on SchedulerShould the scheduler use a special stack?–Yes, because a user process can overflow and it would require another stack to deal with stack overflowShould the scheduler simply be a kernel process?–You can view it that way because it has a stack, code and its data structure–This process always runs when there is no user process20Where Should PCB Be Saved?Save the PCB on its user stack–Many processors have a special instruction to do it “efficiently”–But, need to deal with the overflow problem–When the process terminates, the PCB vanishesSave the PCB on the kernel heap data structure–May not be as efficient as saving it on stack–But, it is very flexible and no other problems21Physical Memory & MultiprogrammingMemory is a scarce resourceWant to run many programsPrograms need memory to runWhat happens whenM(a) + M(b) + M(c) > physical mem?Answer: paging. But what if no paging?22Job SwappingPartially executedswapped-out processesReady QueueCPUI/O WaitingqueuesI/OTerminateSwap outSwap in23Add Job Swapping toState Transition DiagramRunningBlockedReadyResource becomes available(move to ready queue)Createa processTerminate(call scheduler)Yield(call scheduler)Block for resource(call scheduler)SchedulerdispatchSwap outSwap inSwap24Think About SwappingIs swappingNecessaryDesirableGoodIdealThings to considerPerformanceComplexityEfficiencyMoreover, what decides swapping versus paging?Is each appropriate


View Full Document

Princeton COS 318 - Lecturel

Documents in this Course
Overview

Overview

25 pages

Deadlocks

Deadlocks

25 pages

lectute 2

lectute 2

28 pages

Real mode

Real mode

49 pages

Lecture 2

Lecture 2

54 pages

lecture 5

lecture 5

27 pages

Load more
Download Lecturel
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecturel and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecturel 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?