![Page 1: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/1.jpg)
Process
CSE421/521:Opera4ngSystemsKarthikDantu
SlidesadoptedfromCS162classatBerkeley,CSE451atU-WashingtonandCSE421byProfKosaratUB
![Page 2: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/2.jpg)
Logis4cs–PriorAc4onItems
• JoinPiazza• Setupdevelopmentenvironment:VirtualBox+Ubuntu16.04
• Implementassignment#0andtestintheenvironment
• Formgroups
![Page 3: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/3.jpg)
Logis4cs-II
• Assignment1out• Recita4onsstartthisweek
– Wed10-10:50(NSC210)– Fri8-8:50(Park250)
• Recita4on:BasicPintosdiscussionaswellasC/git/Unixtools
• Scheduleuponwebsite–checkforconflicts!
![Page 4: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/4.jpg)
Logis4cs–Newac4onItems
• Assignment1out– Readthecode– Compile/test– Learnstructure–useprin%swhereyoucantounderstandflow
• Testsampleprogramsfromclass
![Page 5: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/5.jpg)
Recall:FourfundamentalOSconcepts• Thread
– Singleuniqueexecu4oncontext– ProgramCounter,Registers,Execu4onFlags,Stack
• AddressSpacewithTransla4on– Programsexecuteinanaddressspacethatisdis4nctfromthememoryspaceofthephysicalmachine
• Process– Aninstanceofanexecu4ngprogramisaprocessconsis-ngofanaddressspaceandoneormorethreadsofcontrol
• DualModeopera4on/Protec4on– Onlythe“system”hastheabilitytoaccesscertainresources– TheOSandthehardwareareprotectedfromuserprogramsanduserprogramsareisolatedfromoneanotherbycontrollingthetransla-onfromprogramvirtualaddressestomachinephysicaladdresses
![Page 6: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/6.jpg)
6
ProcessConcept• Processisaprograminexecu4on– Aprocessimageconsistsofthreecomponents
– anexecutableprogram– theassociateddataneededbytheprogram
• theexecu4oncontextoftheprocess,whichcontainsallinforma4ontheO/Sneedstomanagetheprocess(ID,state,CPUregisters,stack,etc.)
Typical process image implementation
Stallings, W. (2004) Operating Systems: Internals and Design Principles (5th Edition).
user address space
![Page 7: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/7.jpg)
ProcessControlBlock(Assumesinglethreadedprocessesfornow)
• Kernelrepresentseachprocessasaprocesscontrolblock
(PCB)– Status(running,ready,blocked,…)– Registers,SP,…(whennotrunning)– ProcessID(PID),User,Executable,Priority,…– Execu4on4me,…– Memoryspace,transla4ontables,…
• KernelSchedulermaintainsadatastructurecontainingthePCBs
• Schedulingalgorithmselectsthenextonetorun
![Page 8: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/8.jpg)
Recall:givetheillusionofmul4pleprocessors?
vCPU3vCPU2vCPU1
Shared Memory
• Assumeasingleprocessor.Howdoweprovidetheillusionofmul4pleprocessors?– Mul4plexin4me!– Mul4ple“virtualCPUs”
• Eachvirtual“CPU”needsastructuretohold,i.e.,PCB:– ProgramCounter(PC),StackPointer(SP)– Registers(Integer,Floa4ngpoint,others…?)
• HowswitchfromonevirtualCPUtothenext?– SavePC,SP,andregistersincurrentPCB– LoadPC,SP,andregistersfromnewPCB
• Whattriggersswitch?– Timer,voluntaryyield,I/O,otherthings
vCPU1 vCPU2 vCPU3 vCPU1 vCPU2
Time
![Page 9: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/9.jpg)
9
ProcessState
• Asaprocessexecutes,itchangesstate– new:Theprocessisbeingcreated– ready:Theprocessiswai4ngtobeassignedtoaprocessor– running:Instruc4onsarebeingexecuted– wai+ng:Theprocessiswai4ngforsomeeventtooccur– terminated:Theprocesshasfinishedexecu4on
![Page 10: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/10.jpg)
Scheduler
• Scheduling:Mechanismfordecidingwhichprocesses/threadsreceivetheCPU
• Lotsofdifferentschedulingpoliciesprovide…– Fairnessor– Real4meguaranteesor– Latencyop4miza4onor..
if ( readyProcesses(PCBs) ) { nextPCB = selectProcess(PCBs); run( nextPCB );
} else { run_idle_process();
}
![Page 11: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/11.jpg)
ProcessCrea4on
• Someeventsthatleadtoprocesscrea4on– thesystemboots
• whenasystemisini4alized,severalbackgroundprocessesor“daemons”arestarted(email,logon,etc.)
– auserrequeststorunanapplica4on• bytypingacommandintheCLIshellordouble-clickingintheGUIshell,theusercanlaunchanewprocess
– anexis4ngprocessspawnsachildprocess• forexample,aserverprocess(i.e.webserver,fileserver)maycreateanewprocessforeachrequestithandles
– theinitdaemonwaitsforuserloginandspawnsashell
![Page 12: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/12.jpg)
Pukngittogether:webserver
Request
Reply(retrieved by web server)
Client Web Server
![Page 13: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/13.jpg)
Pukngittogether:webserver
Server
Kernel
Hardware
requestbuffer
replybuffer
11. kernel copy from user buffer to network buffer
Network interface Disk interface
12. format outgoing packet and DMA
6. disk request
10. network socket write
1. network socket read
2. copy arriving packet (DMA)
syscall
wait
interrupt
3. kernel copy
RTU
5. file readsyscall
8. kernel copy
RTU
7. disk data (DMA)
interrupt
4. parse request 9. format reply
Request Reply
![Page 14: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/14.jpg)
ProcessTreeinLinux
![Page 15: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/15.jpg)
Recall:3typesofKernelModeTransfer• Syscall
– Processrequestsasystemservice,e.g.,exit– Likeafunc4oncall,but“outside”theprocess– Doesnothavetheaddressofthesystemfunc4ontocall– LikeaRemoteProcedureCall(RPC)–forlater– MarshallthesyscallIDandargumentsinregistersandexecutesyscall
• Interrupt– Externalasynchronouseventtriggerscontextswitch– e.g.,Timer,I/Odevice– Independentofuserprocess
• TraporExcep4on– Internalsynchronouseventinprocesstriggerscontextswitch– e.g.,Protec4onviola4on(segmenta4onfault),Dividebyzero,…
![Page 16: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/16.jpg)
User/Kernel(Privileged)ModeUser Mode
Kernel Mode
Full HW accessLimited HW access
exec
syscall
exitrtn
interrupt
rfi
exception
![Page 17: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/17.jpg)
Implemen4ngSafeKernelModeTransfers
• Importantaspects:– Separatekernelstack– Controlledtransferintokernel(e.g.,syscalltable)
• Carefullyconstructedkernelcodepacksuptheuserprocessstateandsetsitaside– Detailsdependonthemachinearchitecture
• Shouldbeimpossibleforbuggyormalicioususerprogramtocausethekerneltocorruptitself
![Page 18: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/18.jpg)
NeedforSeparateKernelStacks• Kernelneedsspacetowork• Cannotputanythingontheuserstack(Why?)• Two-stackmodel
– OSthreadhasinterruptstack(locatedinkernelmemory)plusUserstack(locatedinusermemory)
– Syscallhandlercopiesuserargstokernelspacebeforeinvokingspecificfunc4on(e.g.,open)
– Interrupts(???)
Kernel Stack
running
main
User Stack proc1proc2
...
ready to run
mainproc1proc2
...
user CPU state
waiting for I/O
mainproc1proc2syscall
user CPU state syscallhandler
I/O drivertop half
![Page 19: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/19.jpg)
Before
code:
foo () { while(...) { x = x+1; y = y-2; }}
SS: ESP
User-level Process
CS: EIPEFLAGS
otherregisters:EAX, EBX,...
Registers Kernel
code:
handler() { pusha ...}
stack:Exception Stack
![Page 20: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/20.jpg)
During
code:
foo () { while(...) { x = x+1; y = y-2; }}
SS: ESP
User-level Process
CS: EIPEFLAGS
otherregisters:EAX, EBX,...
Registers Kernel
code:
handler() { pusha ...}
stack:Exception Stack
SSESP
EFLAGSCSEIP
error
![Page 21: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/21.jpg)
KernelSystemCallHandler• Vectorthroughwell-definedsyscallentrypoints!
– Tablemappingsystemcallnumbertohandler• Locatearguments
– Inregistersoronuser(!)stack• Copyarguments
– Fromusermemoryintokernelmemory– Protectkernelfrommaliciouscodeevadingchecks
• Validatearguments– Protectkernelfromerrorsinusercode
• Copyresultsback– Intousermemory
![Page 22: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/22.jpg)
Hardwaresupport:InterruptControl• Interruptprocessingnotvisibletotheuserprocess:– Occursbetweeninstruc4ons,restartedtransparently– Nochangetoprocessstate– Whatcanbeobservedevenwithperfectinterruptprocessing?
• InterruptHandlerinvokedwithinterrupts‘disabled’– Re-enableduponcomple4on– Non-blocking(runtocomple4on,nowaits)– PackupinaqueueandpassofftoanOSthreadforhardwork
• wakeupanexis4ngOSthread
![Page 23: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/23.jpg)
Hardwaresupport:InterruptControl• OSkernelmayenable/disableinterrupts
– Onx86:CLI(disableinterrupts),STI(enable)– Atomicsec4onwhenselectnextprocess/threadtorun
– Atomicreturnfrominterruptorsyscall
• HWmayhavemul4plelevelsofinterrupt– Maskoff(disable)certaininterrupts,eg.,lowerpriority
– CertainNon-Maskable-Interrupts(NMI)• e.g.,kernelsegmenta4onfault
![Page 24: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/24.jpg)
InterruptController
• Interruptsinvokedwithinterruptlinesfromdevices• Interruptcontrollerchoosesinterruptrequesttohonor
– Maskenables/disablesinterrupts– Priorityencoderpickshighestenabledinterrupt– SopwareInterruptSet/ClearedbySopware– Interruptiden4tyspecifiedwithIDline
• CPUcandisableallinterruptswithinternalflag• Non-MaskableInterruptline(NMI)can’tbedisabled
Network
IntID
Interrupt
Interrupt Mask
ControlSoftwareInterrupt NMI
CPU
Priority Encoder
Tim
er
Int Disable
![Page 25: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/25.jpg)
Howdowetakeinterruptssafely?• Interruptvector
– Limitednumberofentrypointsintokernel• Kernelinterruptstack
– Handlerworksregardlessofstateofusercode• Interruptmasking
– Handlerisnon-blocking• Atomictransferofcontrol
– “Singleinstruc4on”-liketochange:• Programcounter• Stackpointer• Memoryprotec4on• Kernel/usermode
• Transparentrestartableexecu4on– Userprogramdoesnotknowinterruptoccurred
![Page 26: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/26.jpg)
Canaprocesscreateaprocess?• Yes!Uniqueiden4tyofprocessisthe“processID”(orPID)• fork()systemcallcreatesacopyofcurrentprocesswithanewPID
• Returnvaluefromfork():integer– When>0:
• Runningin(original)Parentprocess• returnvalueispidofnewchild
– When=0:• RunninginnewChildprocess
– When<0:• Error!Musthandlesomehow• Runninginoriginalprocess
• AllstateoforiginalprocessduplicatedinbothParentandChild!– Memory,FileDescriptors(nexttopic),etc…
![Page 27: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/27.jpg)
fork1.c#include <stdlib.h>#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>
#define BUFSIZE 1024int main(int argc, char *argv[]){ char buf[BUFSIZE]; size_t readlen, writelen, slen; pid_t cpid, mypid; pid_t pid = getpid(); /* get current processes PID */ printf("Parent pid: %d\n", pid); cpid = fork(); if (cpid > 0) { /* Parent Process */ mypid = getpid(); printf("[%d] parent of [%d]\n", mypid, cpid); } else if (cpid == 0) { /* Child Process */ mypid = getpid(); printf("[%d] child\n", mypid); } else { perror("Fork failed"); exit(1); } exit(0);}
![Page 28: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/28.jpg)
fork2.c int status; … cpid = fork(); if (cpid > 0) { /* Parent Process */ mypid = getpid(); printf("[%d] parent of [%d]\n", mypid, cpid); tcpid = wait(&status); printf("[%d] bye %d(%d)\n", mypid, tcpid, status); } else if (cpid == 0) { /* Child Process */ mypid = getpid(); printf("[%d] child\n", mypid); } …
![Page 29: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/29.jpg)
ProcessRaces:fork3.c
• Ques4on:Whatdoesthisprogramprint?• Doesitchangeifyouaddinoneofthesleep()statements?
int i;cpid = fork();if (cpid > 0) { mypid = getpid(); printf("[%d] parent of [%d]\n", mypid, cpid); for (i=0; i<10; i++) { printf("[%d] parent: %d\n", mypid, i); // sleep(1); } } else if (cpid == 0) { mypid = getpid(); printf("[%d] child\n", mypid); for (i=0; i>-10; i--) { printf("[%d] child: %d\n", mypid, i); // sleep(1); } }
![Page 30: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/30.jpg)
UNIXProcessManagement• UNIXfork–systemcalltocreateacopyofthecurrent
process,andstartitrunning– Noarguments!
• UNIXexec–systemcalltochangetheprogrambeingrunbythecurrentprocess
• UNIXwait–systemcalltowaitforaprocesstofinish
• UNIXsignal–systemcalltosendano4fica4ontoanotherprocess
• UNIXmanpages:fork(2),exec(3),wait(2),signal(3)
![Page 31: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/31.jpg)
UNIXProcessManagement
pid = fork();if (pid == 0) exec(...);else wait(pid);
pid = fork();if (pid == 0) exec(...);else wait(pid);
pid = fork();if (pid == 0) exec(...);else wait(pid);
main () { ...
}
exec
wait
fork
![Page 32: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/32.jpg)
Shell
• Ashellisajobcontrolsystem– Allowsprogrammertocreateandmanageasetofprogramstodosometask
– Windows,MacOS,Linuxallhaveshells
• Example:tocompileaCprogramcc–csourcefile1.ccc–csourcefile2.cln–oprogramsourcefile1.osourcefile2.o./program
![Page 33: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/33.jpg)
Signals–infloop.c#include <stdlib.h>#include <stdio.h>#include <sys/types.h>
#include <unistd.h>#include <signal.h>
void signal_callback_handler(int signum){ printf("Caught signal %d - phew!\n",signum); exit(1);}
int main() { signal(SIGINT, signal_callback_handler);
while (1) {}}
![Page 34: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/34.jpg)
Recall:UNIXSystemStructure
User Mode
Kernel Mode
Hardware
Applications
Standard Libs
![Page 35: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/35.jpg)
HowDoestheKernelProvideServices?
• Yousaidthatapplica4onsrequestservicesfromtheopera4ngsystemviasyscall,but…
• I’vebeenwri4ngallsortofusefulapplica4onsandInevereversawa“syscall”!!!
• That’sright.• Itwasburiedintheprogramminglanguagerun4melibrary(e.g.,libc.a)
• …Layering
![Page 36: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/36.jpg)
OSRun-TimeLibrary
OS
Proc 1
Proc 2
Proc n…
OS
Appln login Window Manager
…OS library OS library OS library
![Page 37: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/37.jpg)
AKindofNarrowWaistCompilers
Web Servers
Web Browsers
Databases
Word Processing
Portable OS Library
System Call Interface
Portable OS Kernel
Platform support, Device Drivers
x86 ARMPowerPC
Ethernet (1Gbs/10Gbs) 802.11 a/g/n/ac SCSI ThunderboltGraphics
PCIHardware
Software
System
UserOS
Application / Service
![Page 38: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/38.jpg)
KeyUnixI/ODesignConcepts• Uniformity
– fileopera4ons,deviceI/O,andinterprocesscommunica4onthroughopen,read/write,close
– Allowssimplecomposi4onofprograms• find|grep|wc…
• Openbeforeuse– Providesopportunityforaccesscontrolandarbitra4on– Setsuptheunderlyingmachinery,i.e.,datastructures
• Byte-oriented– Evenifblocksaretransferred,addressingisinbytes
• Kernelbufferedreads– Streamingandblockdeviceslooksthesame– readblocksprocess,yieldingprocessortoothertask
• Kernelbufferedwrites– Comple4onofout-goingtransferdecoupledfromtheapplica4on,
allowingittocon4nue• Explicitclose
![Page 39: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/39.jpg)
I/O&StorageLayersHigh Level I/O
Low Level I/O Syscall
File System
I/O Driver
Application / Servicestreams
handles
registers
descriptors
Commands and Data Transfers
Disks, Flash, Controllers, DMA
![Page 40: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/40.jpg)
Summary• Process:execu4onenvironmentwithRestrictedRights
– AddressSpacewithOneorMoreThreads– Ownsmemory(addressspace)– Ownsfiledescriptors,filesystemcontext,…– Encapsulateoneormorethreadssharingprocessresources
• Interrupts– Hardwaremechanismforregainingcontrolfromuser– No4fica4onthateventshaveoccurred– User-levelequivalent:Signals
• Na4vecontrolofProcess– Fork,Exec,Wait,Signal
• BasicSupportforI/O– Standardinterface:open,read,write,seek– Devicedrivers:customizedinterfacetohardware
![Page 41: Processkdantu/cse421/lectures/process.pdf · • OS kernel may enable/disable interrupts – On x86: CLI (disable interrupts), STI (enable) – Atomic sec4on when select next process/thread](https://reader033.vdocuments.net/reader033/viewer/2022060710/6076615e0d6ff12a5e2568ac/html5/thumbnails/41.jpg)
Logis4cs–Newac4onItems
• Assignment1out– Readthecode– Compile/test– Learnstructure–useprin%swhereyoucantounderstandflow
• Testsampleprogramsfromclass