Achtung! Time! Hello! Hello! Thank you! I can't offer you a free pizza so definitely Angus has me beat a net particular realm but what we can go over is some juicy tidbits of operating systems and there's still some conversations going on. Thank you. Still some conversations going on. Thank you. Okay again what I'd like to do today is go over a little bit about review of what we talked about in the last session in terms of we've got the CPU thingamabob and threads and how we can kind of coordinate between the two and the balance of the class is going to kind of tip into a little bit about how we can actually handle schedules, I'm sorry, scheduling, threading and processes in the context of modern operating systems on this. So questions before we actually begin from either last class, Monday's class, what have you? Talked about multiplexing. We talked about threads. We talked about interrupts. We talked about syscalls. Going once, going twice. Everything clear as crystal. Ready. General questions again I can't get into details for obvious reasons right now but questions about what's coming up obviously checkpoint 2.1 is due at 5 p.m. If you're here today I assume that is probably a pretty good sign on that. So we do have office hours after class right through the deadline itself so if you're still kind of pounding away you can certainly make use of that too. But again just a reminder on that checkpoint 2.1 and then just to reiterate obviously the balance of assignment 2 is going to be due in three weeks. One small announcement about that I know we've been kind of hitting you with a couple deadlines unfortunately watch it with the balance of assignment number 2 it is a big one. This was honestly only a small part to kind of kick start everyone on this. I would definitely not wait until Monday or if you will next week before you start looking at the rest of the class. As a matter of fact I got asked the question what's kind of a good time checkpoint and we're in terms of where we should be. Ideally assuming that you're completing console test today if you could have if you will most of the file stuff wrapped up and pass the file only test which basically means read write open close and L seek maybe not all of the file functionality but at least the basic stuff if you can pass file only test by early to middle of next week. The reason I mention that is the balance of the project which is the process control assist calls like fork, weight, pit, exact those are big ones okay. They are much more difficult and they're going to take considerably more time than the file ones so you don't want to kind of divide it up two weeks and two weeks because you're going to be short changing yourself on the other end. Plus I'm sure I know you have these things called other classes how about that and most professors everyone has this bright idea about scheduling midterms either right before spring break or after spring break on this. I know Jeff has scheduled your midterm right after spring break but the thing is you probably do have most of you at least one test before spring break so that's also going to be interfering with your completion of if you will assignment too. So again another reason to the extent that you can kind of work ahead I'll try to post some suggested timelines on discourse on that but again an initial checkpoint to hit after this one would be kind of early to middle of next week if you can have file only test passing if you do not have it passing by that point in time speak to the staff about exactly where you are what we can do to kind of get you back on track. So just a short FYI about that. Questions about that stuff? Right. Transition between threads is coming out. There we are. There we go. Contact switch. Okay. Another what's a thread again and what's a process again and how does this kind of all wrap up. Well we've got this CPU thing above that is being chased by a lot of these if you will programs that we're trying to run and simply put again a thread think of it as an execution context. It's kind of where one particular processor is running one particular thing at a point in time and then at another point in time it runs another thing if you will to be really technical about that. So and how do we switch from one thing to another thing. All right. It that is what we call a contact switch to go from one thread to another and again the mechanism that we use to kind of enforce switching from one thread to the other is what we talked about that how to get into the kernel with a syscall. Well it could be a syscall okay but if the syscall fails we know there's going to be one type of interrupt and that's a what type of timer. Exactly right. So again clear on the distinction between a contact switch and an interrupt. Roughly put an interrupt is any sort of method to get into the kernel and then once we're in the kernel we're going to be running a scheduler more on schedules in subsequent weeks that's subject for PhD dissertations on this. Okay but then once we pick a thread to run we now want to do a contact switch in the kernel from one to another. That's where we go from one thing to the next thing. All right. CPU limitations. Remember it's kind of a little bit weird here because what is it here? There's only one and again as odd as it sounds being faster can be a bit of a limitation. It's good because we can run lots of stuff but again what's the problem with having a CPU that's much faster than the rest of the system races ahead and then what does it do? Exactly. It twiddles its silicon thumbs on this. Okay so remember we talked earlier about batch scheduling and this is kind of the old model of computing before we had modern operating systems we often had to wait. In other words let's say programmer A walked in with a stack of punch cards ran let's say some insurance processing job and let's say while the job is running the CPU is finished with calculations and is waiting for something from the disk drive and it waits. And waits. And waits. I quote Casablanca on that. So the upshot is at this point we only have one thing to run so it's going to if you will result in a lot of inefficiencies and that means money down the drain. All right so instead what we do. There we go. There we go. Okay so instead of having just one thing what we're going to do is run a bunch of things here and how we can actually do that again is with respect to an interrupt and if an interrupt is not forthcoming via vis-a-vis let's say a sys call one way we can always make sure that the kernel will eventually get control is with a periodic timer tick on this. Again I think I did mention in the last class there are roughly speaking kind of two types of clocks. There's a periodic timer that's always running in the background and you people as programmers are very often going to kind of set your own timers on that. We're not talking about that one. We're talking about the one that if you will the system is always running in the background to make sure we very often preempt into the kernel. All right there we are. Oh one other thing to illusion of concurrency remember Jeff talked a lot about that before strictly speaking if we only have one CPU things are we're not doing more than one thing at a time but it appears to be more than one thing at a time because why we're doing a lot of things really really quickly it's kind of like the movie illusion on this. So one problem with that is that since we do have a lot of things running and they're kind of being jiggled and jagged amongst themselves we have to deal with synchronization on this. So this is kind of one of the downsides to the whole threading model we'll be alluding to this at the end of the class here. Threading is great in the sense that we've got the illusion of concurrency and now with multiple CPUs we even have real symmetric multiprocessing on this but it makes it a pain to program. That's what you're dealing with right now in OS 161.  So we have to coordinate this mess here. Okay last bullet point here now we stop a thread and then we know we're going to start it later on and we want in other words we basically want to move from one thing to the next thing but then we want to move back to the first thing at a later point in time. So how do we want to make it appear that nothing has actually happened. Again this is back to the analogy of remember poor Han Solo was frozen in carbonite. Okay hopefully when Han Solo gets woken up again Han will kind of think that it's the same time and day if you will at the point that the actual freezing took place. That's what we want to happen there and how can we actually do that. We want to make sure that this thread if you will gets restored back to its original state. So thread state again registers and stack those are if you will the two main components to any thread or execution context. And again this is one of the things that runs on the CPU. Now I should say there is also some additional administrative goo that goes with a thread to maintain its state and you can actually yourself take a look at some of that goo pull up the definition of thread struct in OS 161 you can see there's a whole bunch of different fields in there things like the thread state is it currently sleeping is it currently zombie is it currently runable whatever it is on that. So you can okay we need a whole bunch of this administrative fields but for practical purposes again it's the registers and the stack. Think of registers again as being if you will honestly they are really a type of local variables on this. This is kind of how this all blends together here. Let's say that you're just writing a regular program in Java on that and you got a bunch of local variables remember local variables never have to be synced because they're eventually saved on the stack. Well again this is kind of the same if you will can of worms here because registers often are used to hold actually to the extent possible we'd like them to hold local variables on this so that's something that if you will we need to save on the stack that's why we were talking about a trap frame. Okay remember when we go from we have an interrupt we want to switch from one thread to another we've got to save if you will the registers the local variables on to the stack because again the stack is where we if you will put local variables when they're not in registers when we have too many of them yada yada on this. I should also say too digress for a wee bit here right. We're talking about operating systems and we're talking about if you will let's say trapping into a kernel like let's say your program calls sys read on that so I want to kind of poke the kernel I need to kind of ask for help from the kernel you can think of it as a type of subroutine call on that and in one sense it really is because I am calling what looks like a function it does stuff and then it returns to me with a return value on that right and I have parameters that I have to populate on that well it's very similar to if you will what goes on with respect to let's say if you're calling you're running if you will routine foo and you call bar what happens on this well inside this user context you push another if you will stack frame onto the stack go to the next subroutine and if you remember if you took 341 remember you have to save out some registers other registers you can use for parameters and whatnot so it's it's a it's a good analogy okay it's not exact in the sense that when we're trapping into the kernel we got to make sure that everything is restored okay because we don't know what the user is going to be doing in between this and vice versa in other words we have to have this huge firewall between a kernel and the user space here but again the rough analogy is you can think of it as a type of subroutine call in terms of you are still saving registers and returning values on that okay question comment so in other words where do we save the trap frame okay yeah good question that's what we talked about I think it was like on Monday or so in other words where do we actually save the trap frame again think of the trap frame as being well it's the actually it is the registers okay and especially let's say that we're doing a sys call those registers contain the parameters on that and like any if you will subroutine call that gets crammed onto the stack okay but we cram a lot more onto the stack okay now one other thing I should mention is why do we put it onto the stack I think someone asked me that like why couldn't we let's say simply save the trap frame onto the heap or whatever else well again think again of the subroutine model partly because we could have nested traps in the same way we can have nested subroutine calls in other words I could let's say call sys read that generates a trap and I have to cram a trap frame onto the stack while I'm in the middle of sys read let's say I do a page fault because I'm trying to access memory on this bingo that generates another page fault that gets crammed onto the stack because it's a type of subroutine call not really it's kind of going on behind the scenes but we go to our memory manager and while I'm in the middle of my memory manager if you will servicing my page fault a timer fires well now a third if you will trap frame gets crammed onto the stack and I had kind of have to return back up if you will peel off these various if you will trap frames till I eventually return to the caller on that so in other words one reason why we use the stack is that again you can think of it as analogous to a subroutine and we don't know how many levels we're going to have and where do we put levels that's one of the main purposes of the stack on that the other thing too is that remember the stack is kind of private to a particular thread on this if we cram the subroutine onto the heap well now we're going to have to coordinate well this is the trap frame for which particular thread and we're going to have to kind of keep it separate from if you will other threads on that and that just introducees coordination problems again let's just stick it onto the stack answer your question there was a hand thank you good catch okay basically when you have a interrupt and let's say you are in user space and you take a trap that trade frame is put onto the kernel stack all right there was a question about that last time quick version is because we want to make sure that our context switch stuff if you will is not polluted we have control over the kernel stack et cetera on this so actually if you want it's a bit of a digression from your projects but it really does help at a low level to understand what's going on with this look at kind of how the thread subsystem works and that explains a lot about that so nutshell version if you are in user space and a trap happens that trap frame gets crammed onto the kernel stack et cetera on this and then obviously while you're in kernel space if there's another trap yet another trap frame gets crammed onto the kernel stack on that too so other questions yes essentially no okay uh if we're talking about signal handling right yeah okay so and that actually by the way since we do save a trap frame on to the user space now we have some security and sanitization issues but essentially no that is correct yes all right there we go there we go okay now context switches are good and bad one of the nice things is when let's say we're going from user space to kernel space or from let's say one kernel thread into another kernel thread or what have you oh and by the way again i should be very clear i'm glossing over there are trap frames and there are also switch frames so if you see some code in os 161 about that i think i mentioned that the last time the switch frame is actually when the context switch happens itself so just make a mental note of that right now they're not quite the same thing but back to context switches on this here one of the upsides to context switches is the reason we save all this stuff is we have a pure unadultered version of if you want a thread state that's why we save all this stuff we save a lot more registers than we would if we're let's say doing a simple sub routine call from user space to user space on this because we need to make sure everything gets saved and restored kind of in total on that that that is great for security that's great for stability on this but again we're saving an awful lot of junk on this here so what jeff is trying to get at here is these context switches they ain't free simply put they take a lot of time and well wait a minute here i guess there's two ways of doing this here how would we possibly let's say let's say each thread context which takes a lot of time so i want to minimize that one thing i could do is let's say lengthen the time between context switches right so let's say instead of the timer tick firing 100 times a second i have the timer tick fire two times a second that is going to greatly decrease the overhead of a context switch at the downside of what now if i have a the timer tick every only twice a second it's going to be so it's definitely we're going to have some inefficiency right because you're going to have a lot of cases of okay i finished up a calculation i'm now waiting and i have to kind of well well wait a minute here that's a good question here let's say that i'm doing some calculations and i now need to wait on some data for a disk do i need to wait for that why am i hesitating because what am i going to do well i could do busy with but i want information from the disk how do i get information from the disk syscall so i'm going to if you will request syscall that's going to trap into the kernel right then so another i don't have to wait for the timer tick on that so in that particular case i get lucky the kernel will put me to sleep all right but there might still be another problem with that how about you people you are playing what is the the latest version that i'm duke nukem i'm really dating myself um but um or whatever it happens to be castle wulfenstein even worse all right let's say that you are playing a first person shooter and you have context which is twice a second problems why did i pick something like that like yeah okay in other words we've got probably a bunch of stuff going on and we need again remember the movie illusion here there's a reason why i think it was thomas edison picked 24 frames a second it was kind of the slowest speed at the time that they could manage with the really old mechanical devices that was at least fast enough to maintain the illusion of motion to the human brain so in other words if we have let's say only twice a second it's going to appear really choppy to you the user interface on this so we want it faster than that my point is there's a trade-off here we don't want to go too fast because now all we're going to be doing is doing what if i have a one gigahertz processor and i have the timer tick one billion times a second what am i doing every right that's all i'm doing is servicing timer ticks all right in fact i probably can't even keep up with that so i'm going to have to kind of adjust the rate at firing on this so far so good make sense okay this by the way is the sort of thing that jeff is going to be asking you to kind of digest when it comes time to the test here in other words the trade-offs the pros and cons of some of these policies all right wait a minute there we go oh just general questions how much complaints no hands okay threads okay we talked there we go okay thread if you will the thread context registers and stacks here now let's talk a little bit about what gets shared threads and processes all right and again what is a process roughly speaking it is a bunch of threads that share the same user thing of a jig context on this and one thing that you can ask yourself is remember fork and remember jeff's discussion about fork what does sys fork duplicate when i want to if you will duplicate a process does it duplicate the registers or the stack can you talk about that interesting maybe well well what is okay what are registers and stack okay they are if you are part of the thread state right so let's think about this for just a little bit well maybe go down to the bottom here does the memory get duplicated in fork okay the address space gets duplicated so in other words what is shared between threads memory so if we have one process that has two threads they get to share the same address space similarly remember fork duplicates the file descriptor table same thing in other words the threads in a particular process get to share if you will a file table on this so kind of bubble back up to the top here we duplicated these things here did we duplicate the registers and the stack if i what's a thread it's an execution context if i duplicate an execution context i now have two threads that are doing what the same thing right that defeats the purpose of having multiple threads on here so in other words we want to have multiple threads within a process but they're going to be doing different things so that's kind of the a thread stack does not get duplicated if you will and if you will let's say a call the sys fork as a matter of fact well it's kind of like this you call thread fork right but what does thread fork do it creates a new thread if you will okay and i actually lied okay because if we have one process and one thread we have to start the child process off that's a clone of if you will the original process makes sense on this but if i have one process and i have let's say multiple threads within that process it makes absolutely no sense for the threads to be doing the same thing because the whole point of multiple threads within a different i'm sorry the same process is they're doing different things but again just to clarify again when we do call sys fork at least initially we want the threads within the process to be doing at least apparently the same thing yes and no it's it's kind of like this since we're starting or if you will we're returning to user space if you will like if you take a look at an os 161 okay when what we really care about is returning to the point in user space that sys fork was called all right and what os 161 actually does is when you go back into user space it resets the stack pointer at the top so in essence like a thread can never really return to where it was before it trapped into user space that's why i was mentioning earlier you can think of user space calling i let's say a kernel sys call is a subroutine on that does that make sense so in other words we whatever our thread context was we really don't care because we're going into user space and when we come back from user space we're in essence going to have kind of a clean stack okay that is the specific os 161 implementation of that other questions yes you know what i do not know the exact numbers on this i know you can actually funk around with it with os 161 i think it was at like 25 megahertz but again that's an emulated system on that wait no that's actually the clock frequency on that so but you got me on that i really do not know it's going to be i know faster than the usual human perceptual limit and slower than whatever the clock frequency of the processor is i gave myself really wide bounds on that one other questions that i can try to answer and you know i should also say this that's something that you can dynamically change too depending upon what's going on already ah this is a nifty little oh there we go okay this is a nice little diagram here and what we're trying to do is initially we have a process actually two processes and what does that process consist of well we have this address space remember our different if you will address segments you'll be toying around with those in assignment three we've got our file table with our handles that are pointing to open files and as of right now we just have one thread we can add more more threads to this again for the purposes of os 161 you're not responsible for implementing multiple threads if you want to go right ahead that is part of assignment number seven all right that is due on august 15th so aside from that though right now this is kind of the model that you're dealing with in os 161 and it did certainly represent the model of if you will historic operating systems before they kind of decide to get funky with multiple threads okay why do we want to use these threads here now again part of it goes back to the historicity of remember batch processing was inefficient so we need to kind of use that cpu schedule other things plus we have this whole thing about illusion of concurrency here but there's another thing from kind of if you will a philosophical aspect here right especially take a look at number two here sometimes it's a good way about thinking about things or conceptualizing the problem at hand that you're trying to sell sometimes you have a problem that can kind of easily be divided up into two parts and so you know what we're going to stick different threads on that an example or two of that in just a little bit number three here we've already talked about that a lot here namely put if we've got if you will delays okay let's say the disc drive is holding back the cpu well let's not hold back the cpu we'll schedule the cpu to do something else on this ah okay there we go kitchen analogy on this okay the kitchen is the process and the cooks roughly speaking are the threads so they have their own address space in this case the room are here okay and within a particular process you know what they're doing related but somewhat different things here so they're all preparing food ideally let's say maybe you've got the pastry chef you've got the who knows the entree chef and they're all preparing let's say something for one particular meal here but again they are doing doing different things at different times here the last part here bears if you will mentioning here they have a private state but they can communicate easily here so what we're talking about is that because they share if you will the same address space even though they have individual stacks they can still pass data back and forth between each other very quickly in other words the pastry chef can yell at the entree chef to shake a leg if things are if you will going too slowly or what have you they're standing probably right across the room from each other on that right oh that's must coordinate oh coordinate what we're also talking about that is synchronization in other words ideally we want to make sure that the dessert comes out not before the entree okay but not too long after so again this is timing coordination communication on this that was correct oh this did not show up on my computer i was wondering what happened to that meme okay i just got a completely white screen when i was preparing for this lesson so okay that is the meme okay ah philosophical way of looking at things okay threads versus events on this now ultimately on most operating systems things are implemented with threads but that's not necessarily the best way of always thinking about things sometimes there are better ways of engineering things of designing things on that and events is a good example of that if you think about it let's let's talk about you've got a gooey and remember back to let's say 115 116 you got all these buttons on the screen for whatever game it was that carol alphonse had you doing that particular project and each button is going to be linked up to some sort of an event handler or an event servicer on this i really don't care about the threading abstractions that are going on in the background what i care about is if this button is clicked on how do i handle that event on that and just you know what as far as i'm concerned it's i write code that will service that event and then as far as i'm concerned it just runs to completion what's going on with the threading subsystem it's you know what it's something that i really just don't want to think about on this as opposed to if i take a threading model i'm probably going to be much more explicit about things like synchronization blocking sometimes that's good sometimes that's bad on that so again it depends what you're doing and kind of what your approach is on that okay naturally threaded multi applications here we go here things like web server in other words let's say that you go to who knows foo.com and foo.com let's say uh you're trying to request a whole bunch of who knows let's say javascript snippets and jpegs gifs gifs what have you on that and in effect what the web server is going to try to do is send you a whole bunch of snippets over the web so it's going to you know what have a whole bunch of worker threads to send you each one of these individual things so it's part of if you will the web servers process but you know what while one thread is grabbing one graphic another thread is grabbing another graphic it'll kind of speed things up from the web server's standpoint on this because i need i've got a request for 10 items so rather than servicing them odd seriatim i'm going to have 10 threads work on them simultaneously okay that's what we mean by something that lends itself easily to multi threading on this similarly on the browser end here you have different tabs within the same application well that application is a process so we want let's say firefox chrome what have you to communicate within itself about its state here but within that state here you know these particular threads here one is at foo.com another one is at bar.com and they're doing different things here so we want different threads running that scientific or like big data crunching on this here all right this is kind of what jeff's research lab does is like a lot of data processing for if you will data from smartphones and we have a test bed of 100 ish or so phones that are out there and we get these big blobs of data here and periodically we i and others have to go through and crunch lots of data well you know what what we need to do is we've got data that we've collected from 100 phones let's crunch the data from phone one from phone two phone phone three what have you that's something that is what we like to call embarrassingly parallelizable if we want simply to if you will see what happens on each of these phones we can handle them as individual threads make sense on this my point being is sometimes things like buttons on a GUI are easier to visualize and code for in terms of events other things like let's say servicing web requests or crunching data among mutually independent let's say sources of data those are better to think about in terms of threads with the caveat that under the hood i should say this event-driven programming still is implemented with threads hence if you look at remember in java there's this thing called quote event dispatch thread edt but that's another story all right why not processes we're talking about again on this last one here we can let's say use threads to let's say handle tabs or threads to paralyze stuff or what have you all right that's great so why don't we let's say use embarrassingly parallelizable processes just fork off a whole bunch of independent processes well in theory you could do this so in other words it's not so much that we can't do it in principle but we get into if you will some if you will uh what's the word i'm fishing for like time and performance issues on this because what's the whole point of a thread or i'm sorry thread versus a process a process is a bunch of threads that share the same among other things memory space it's easy remember the pastry chef can shout at the entree chef because they're right in the same room on that as opposed to a different process let's say the kitchen didn't receive its order you're going to have to pick up a phone and call a supplier that's going to be if you will more overhead it's going to be more costly more delays on that because remember one of the biggest things of modern operating systems multiplexing security process isolation right threads trust each other so maybe make a note of this medley on paper what have you but threads within a process trust each other processes even if they want to trust each other are not allowed to trust each other and the kernel enforces that with very good reason on this all right stability security what have you on this i mean think about timberlake on that that has processes running from multiple different users on that do you want so you don't say user x to have access to your address space no you do not hence the concept of process isolation on this so the thing is this is great for security and stability but ipc inter-process communication is more difficult because we have to have all these firewalls in place and the kernel has to enforce this so it adds overhead yes we can do inter-process communication again anything we can do with threads we can do with processes but it's going to be in general much slower much more inefficient on that if you've ever programmed in python and you've had to do deal with the gil the global interpreter lock you know what i'm talking about because there is a essentially a bug in python that you can't easily use threads at the same time so you have to use processes and it's one of these holy wars that it is what it is on that all right questions comments complaints so so far what we've talked about is threads versus processes why sometimes threads are better what the advantages of processes are different ways of thinking about things event driven versus it will a threading view of the model moving right along okay implementing threads okay ah here we are okay well we already have there's a couple ways of doing this down at the bottom here is essentially what we've already been talking about threads implemented through the kernel directly the one to one threading model in other words i am in a process and i call the p thread library to fork off another worker thread the kernel handles creating the thread scheduling a thread yada yada yada on that so again this is the same diagram that we had before we've got our process same address space same file table but again now we have three threads that are managed by the kernel that's one way of approaching things go back up to the top here the m to one threading model what that's talking about is rather than the process calling a p thread library well you know what let's just say the process has one and only one threat again this goes back to the historic model here we're just going to kind of do our own management of threads on this in other words you know what i know what i need to do and i know i need to do a bunch of mathematical calculations i also need to fetch stuff from the disk on that so you know what i'm going to kind of time things to make sure that i don't ever waste time okay if i'm waiting for information from the disk well maybe i'll kind of try to arrange that and then maybe do something else in the meantime or in other words basically i am going to somehow i'm one thread within one process and while i'm in the user context i'm going to kind of subdivide within myself if you will user level threads on this there's pros and cons to that as you can imagine on this too and let's look at them here okay here we go ah here we are first off take a look at this multiplexing and anything that involves multiplexing and security a lot more overhead on this so one thing i can do is since i'm in the kernel i'm trying since i'm in user land i can instead of dealing with things like multiplexing and multiplexing and kernel level context switching i can deal with stuff like take a look at this we have these routines like set jump and long jump all right in other words i can use user level routines to if you will switch from one thread to another so i don't have to save out all those registers because i trust myself on this all right um preempting other threads on this here well there's a couple things one way is i can be nice to myself this is the old like you know like goes back to old versions of windows if you will cooperative multitasking where threads are counting on each other to periodically yield or you can maybe ask for a little bit of help here and ask for let's say a signal or something else like that it's not quite as if you will overhead heavy as a periodic timer tech for multiple kernel managed threads here but the upshot is i can still kind of implement threads in user space and it's going to be a lot less overhead on that this is okay an example of how we can for example affect a type of context switch in user space and jeff has written up a little bit of a nugget here that illustrates let's say the set jump long jump routines here and tldr on this i'm going through a loop i'm iterating ten times well almost i get to point five here and that at point five here what do i do here is i break out of the loop and then i drop down here okay so you can see what's going to happen is i'm going to say value of you know zero through up until five and then i'm going to break and then take a look at what's happened i go down here and then let's say some something else happens and then later on i run this command down here long jump and basically what that does is it takes me back to kind of where i was and i can continue on this see what's going on so i'm in user space okay i went through half of my loop and then in effect i have kind of like a programmed or self implemented save of my context and then later on i want to kind of restore back to this and what are we actually going to print out on this let's take a look here up to five i hit my saved state i break out and then guess what i restore and then i print out the remainder of the loop nice so that's kind of user level implementation of how i can save and restore state no context switches needed on that much less overhead all right again this did not show up on my well actually i can't say an xp machine because i had any ubuntu mode but the upshot is okay we now we nailed a long jump so forgot this that jump ah here we are pros and cons again of user space here pros and pros is essentially the threads can be smaller and much faster we're already talking about that now essentially though we're losing something in terms of the kernel which means we lose the overhead on this and among other things here well this is kind of interesting we can't use multiple cores because why remember i've got one process and one thread and that thread here is operating within a user context here that thread is set to run on let's say core number zero by the kernel i as a user can't say you know what i want another thread to run on another core i need help from the kernel to do that as a matter of fact it's also going to be even i do get that amount of help from the kernel i'm going to still have to worry about coordinating among different threads at this point so essentially i'm kind of limited to the model of if you will one user thread is essentially running on apparently one core on that so i'm kind of giving up a little bit of resources on this another thing too here is operating system can't schedule the application essentially second port here the operating system if you will knows more about the system as a whole all right but if you will the operating system knows less about what's going on within a particular process or a thread so this can be kind of viewed as two sides of the ball bearing here so sorry about that essentially put if you will if i have user i'm sorry let's say user space managed threads that if you will process hopefully is going to be able to do a better job of scheduling the thread within itself but it's going to have a much poorer view of the system overall on that another thing too is since again i don't have these multiple cores and i have much less control over if you'll scheduling on this if i block let's say i'm my one kernel level thread that appears to be multiple user level threads and i'll say i call sys read well guess what i'm suspended as are all the other user created threads on this too so again i'm not getting any work done so it's more efficient but it's also less efficient make sense on this this the sort of thing that makes another good exam question oh ready now we go oh again this is kind of the mirror opposite of that if you will okay the kernel has a better if you will view of the entire system on this and it can schedule among different cores here but again we have if you will the cons of if you will the if you will the context switch overhead all right oh thread scheduling here yes policies this is going to be where we're getting into like how fast should we run the timer check okay in what order should we if you will run which if you all threads or processes on this that's actually critically important to user experience it's critically important to system efficiency on that too and if you look at things like the os 161 really does not have much in the way of policies it's a didactic operating system and the purpose is to implement base functionality on this all right in a real operating system you are going to see lots and lots of code devoted to things like optimization detecting current user state like it has the current let the user been blocking on a certain type of i o or is there a particular tweak we can kind of effectuate to let's say giving more memory to one process or let's say adjusting more clock cycles to a particular process that might optimize things on that and again here's where you can get into a lot of ai and different algorithms but again that's something that we do for the most part gloss over in os 161 so if you're looking for a lot of that optimization code you're not going to see much of it if any of it questions on this yes good point here in other words how do we even have a scheduler in the first place so this is one of the the question is how do we implement a scheduler if we do have user level threads i guess there's two parts to that is how do we actually get to the scheduler so we have to deal with we don't have a kernel enforced timer tick we either have to have let's say a thread yield or we have to let's say ask the kernel for help with maybe some like signal or something like that that we talked about but the other thing is yes we now have to have our own internal scheduling algorithm because let's say i am one process with one kernel level thread and i have subdivided that kernel level thread up into 10 user managed threads in what order and how much time they get yes that is exactly code that i'm going to have to have in my own user space so again in here you can argue well that user skate pace can probably tweak itself better but it's still going to be blind visa be the rest of the system answer your question other questions okay that's just about it i will stick along is thank you very much for coming i'm glad to see that you have held it right through to the end see you next week well actually Jeff we'll see you next week 5 p.m check point 2.1 take care people


You are clear for launch. And with that, shut down your visors, O2 on, and prepare for ignition to O2. You can copy that and um... Hi, Mr. Ruchoff here. Now what some of you may not know is that before I was a teacher, I was an officer in the United States Army. And during that time, I had the opportunity to deploy twice to Afghanistan and see the country up close. So what we're going to do in this lesson is together we're going to look at the country and learn about its land, its people, and what went wrong. Now first of all, we find that Afghanistan is a landlocked country in Central Asia surrounded by six countries. The Central Asian countries of Turkmenistan, Uzbekistan, and Tajikistan run along its northern border. To the west is Iran, to the south and east lies Pakistan. And at the very itsy tip of the arm of Afghanistan that stretches to the east, we find it borders China. Now within Afghanistan, we find that its climate is dominated by the highland climate of its mountains and dry arid and semi-arid climates. With no oceans nearby to moderate Afghanistan's temperature, Afghanistan has hot summers and really cold winters. Now the dominant land feature of Afghanistan are the Hindukush mountains that reach in from the Pakistan to the east. The Baba mountain range is actually an extension of Hindukush that runs into the interior of the country. Now these mountains create a major obstacle to transportation and trade in Afghanistan. This is why the only major highway system that connects the major cities of the countries, which is Highway 1, also known as the Ring Road, literally goes all the way around these mountains. While this route has been in various stages of construction for decades, it's interesting to realize that in 2002, Afghanistan only had 32 miles of paved roads. Now today, although the United States has spent over $200 million in order to fix up the Ring Road, the Ring Road still isn't anything close to the internet system that we have today. It is often blocked by mudslides and insurgent groups. In the southwest, we find two deserts, the Dagestan and the Margo deserts. And I love the names of these deserts. The Rigastan desert actually means the country of sound, which is fitting, and then the Dasti Margo means the desert of death. Now despite their names, irrigation has made this area an important agricultural area for Afghanistan. Now that irrigation comes from the Helmand River that flows out of the Hindokush and between these two deserts. Despite the agricultural area of the Helmand River basin and the other farmland that we find to the north and to the east of the countries, only about 6% of the country is actually cultivated or has crops growing on it. Despite this, Afghanistan can grow most of its own food. In fact, two-thirds of its exports are agricultural products, as farming represents a quarter of the country's economy and over 60% of its people rely upon agriculture for income or subsistence. Now there are challenges to farming in the country though. Either there are times when there is too much rain or when there is not enough rain. Both of these cause crop failures. This is particularly tough on the people of Afghanistan as over half the people in Afghanistan get their food from subsistence agriculture. And the transportation network of Afghanistan is so poor that an eighth of the population literally cannot reach markets to buy food if they cannot grow the food themselves. And then there is the issue that the biggest crop in Afghanistan has absolutely nothing to do with food. That crop is opium. See Afghanistan is the source of 90% of the world's opium which is used for drugs and 85% of the world's heroin. In fact, it is estimated that the opium trade in 2007 alone represented a third of the entire economy of Afghanistan. In places like Helmand Province, two-thirds of all the households are involved in the production of opium. As 11% of the people in Afghanistan are useless of drugs, it is a problem that the United States has been working with the Afghanistan government in order to fix, however the problem seems to just be getting worse. And it's largely the people who are stuck in the middle and who are the people in Afghanistan. Well, Afghanistan has a population of 38 million people but only 25% of them actually lives in the cities. This means that 75% of the people live in areas where it's more difficult for the government to be able to provide services such as healthcare, education, and security. Afghanistan is also a diverse country with 14 ethnic groups that are actually identified in this constitution. Now the two largest of these is the Tajiks who are shown in the light blue on this map and the Pashtun in the turquoise color down here in the south. But to understand Afghanistan you have to understand the Pashtun people who are split by the eastern boundary between Afghanistan and Pakistan. And to understand the Pashtun you need to understand that they are largely divided into more than 60 different tribes who have historically provided governance for their people. Now these tribes are collected into two large confederations known as the Durrani and the Gilzai. Historically the Durrani tribes have been those of the rulers. The king of Afghanistan was from a Durrani tribe as was the first elected president, Hamid Karzai. But the Gilzais have always been Afghanistan's fighters fighting for the land of Afghanistan and until recently they've usually been left out of power. The Taliban leader Mughal Omar was actually from a Gilzai tribe.  This demands a life of honor which includes your honor to your Pashtun nation as well as to your women. Now different cultures show honor differently. For the Pashtun honoring women is done by protecting them even if it means that they women have less freedoms.  Now across Afghanistan Daria and Pashtu are the two official languages that also serve as the two lingua fronkas across the country. Daria is actually the Afghan dialect of Iran's language Farsi and Pashtu as you probably guess is the language of the Pashtuns. Now despite the differences in ethnicity tribes and languages the one thing that almost every Afghan has in common is they are Muslim. When last surveyed 99.7 percent of all Afghans identified as being a follower of the Islam faith. In Western Afghanistan you are more likely to run into the 10 percent of Afghans who are Shia Muslim influenced by their proximity to Iran. Now one of the impacts that culture has had as well as the fact that only a quarter of the people live in cities is that of education. See only 43 percent of all adults over 15 can read and write but only 29 percent the women can and when you go into the rural areas the literacy rate for women goes down to just seven percent and while the future looks better it certainly isn't good. Only 67 percent of boys and 48 percent of girls are today enrolled in school and in the rural areas this drops to just 39 percent of all children in school and almost all of them are boys. Now the reasons for Afghanistan's educational problems are cultural as well as quite frankly just not having enough schools or enough trained teachers. There also isn't enough hospitals and doctors large portions of the population have never seen a doctor before much less a hospital and the result is a life expectancy in Afghanistan is just 64 years and the infant mortality rate is 46. Of course this is better than it had been previously. So we've talked about the land of the people but to really understand Afghanistan today we need to look at its conflicts and over the last nearly 2,000 years Afghanistan has had its share of conflicts as a literal of who's who's of empires have marched or at least attempted to watch across its nation. Now we've already discussed a great game that played out between Russia and Britain in the 19th century in which Britain was worried that Russia's expansion into Central Asia was going to bring it into British India. Now the result of the great game would be that Britain would redraw Afghanistan's borders. Now one of the important changes that was made was that Sir Durand a British Duke diplomat drew the border that bears his name between Afghanistan and Pakistan dividing the Pashtun people. Now this border change also left a narrow strip of land that stretches out to the east and serves as a buffer between British India and Russian Central Asia. This strip of land is known as the walk on corridor. Now many times you will hear that Afghanistan has never had a government until the United States came and this simply isn't true. Afghanistan had a series of monarchies before during and after the great game. The last monarchy ruled between 1923 and 1973 in a period of relative peace and the last king of the kingdom of Afghanistan was Seher Shah. However, he was overthrown by his cousin Daoud Khan in 1973 in a bloodless coup. When Khan took over Khan actually attempted to modernize the country by instituting policies to protect women's rights and to create economic wealth. He was also playing the United States and the Soviet Union off each other. First he courted the Soviets to see what assistance they would be able to provide and then he courted the United States essentially shopping for the superpower that would provide Afghanistan with the most support. Now if we look at Afghanistan during this time between the 1950s and 1970s it seems to be a country with lots of progress. These are some of the pictures from that time. We see the women in Afghanistan was pretty much stressed exactly how women in the United States would be dressed at the time. Women were going to school, studying science at the university. In fact during this time 50 percent of the university students in Afghanistan were women. But something happened. Take a look at these two pictures. They are exactly of the same site separated by 40 years. The top one was taken in 1967 and the bottom one was taken in 2007. And what happened between these two pictures? Well it was the 1978 Great Sauer Revolution that put into motion over 50 years of conflict in fighting in Afghanistan. See what happened was Daoud Khan decided to side with the United States and cut off ties with the Soviets. The communist in Afghanistan didn't like this and led a revolution to remove Daoud from power and installed a Marxist regime in Afghanistan. The policies that this new government put into place angered the Afghans. The government started taking land, they started establishing atheist policies in a country that is 99 percent Muslim and they started to interfere with tribal laws. Now when the backlash against the communists threatened to topple the government the Soviet Union sent troops into Afghanistan to prop up its communist government. The Soviet interaction would last until 1989 at a cost of more than 15,000 soldiers. Now remember that this was all going on during the Cold War. So in response to the American President President Carter boycotted the summer Olympics which were supposed to be held in Moscow that year and bigger yet when President Reagan was elected he began to support the Mujahideen with financing to fight. The Mujahideen were faithful Muslims who came around the world to engage in a holy struggle against the Soviets. Now one of the Mujahideen who would join the Mujahideen his pictured here was his family and their vacation to Switzerland. Who is he? Well that's actually the former leader of al-Qaeda whose organization did the 9-11 attacks that is Osama bin Laden. Yes he joined the Mujahideen who the United States was actually supporting. Now after losing over 15,000 troops the Soviets decided to withdraw his forces from Afghanistan and left Nagyabaya, Amadzai in charge. Now many experts thought that Afghanistan would fold without the Soviet troops supporting him. However Amadzai was able to defeat the Mujahideen at Jalalabad and started to actually regain more and more power. That was until 1991 when the Soviet Union collapsed. While Amadzai did not need Soviet troops he did need the money the Soviets had been providing them. So when the money from the Soviet Union dried up after the collapse of the Soviet Union Amadzai was unable to pay troops and maintain control. The result was civil war broke out. Now the civil war that began in 1992 was the time of the warlords. A warlord as a military commander used his private armies to establish and hold the autonomy of a region. And soon these different warlords would be fighting each other in order to gain additional land. It was a dangerous confusing time in Afghanistan when there was no government and no rule of law. Then came Mullah Omar and the Taliban. Now the Taliban actually comes from the word that means students. In this case it was students from madrasas were found along the border between Afghanistan and Pakistan. Now a madrasa is a school that is usually attached to a Muslim mosque that is ran by a religious leader. But the only thing that was being taught in these madrasas was the Quran and a specific type of Islam known as Dilbande. Now there are two radical schools of thought in Islam. There is Wahhabism which comes from Saudi Arabia and Dilbande that comes from India. Now Wahhabism calls for a strict adherence to the Quran or the holy texts. In the 1960s in Egyptian by the name of Sayyid Qatub wrote an influential book that argued for an armed force to be able to spread Islam around the world. It is the writings of Sayyid Qatub that Al-Qaeda was formed upon. Now the Taliban followed Dilbande which is very similar to Wahhabism. And Mullah Omar's rise to power began in southwestern Afghanistan where he and some students came to a city of Kandahar. And when they met two warlords that were arguing over a boy that quite frankly the warlords wanted to sodomize, Mullah Omar and his men stepped in and they hung both the warlords in the street. Now reacting to someone finally taking a stand for law and order many Pashtuns in Afghanistan began to support Mullah Omar and by 1996 the Taliban were able to take over most of Afghanistan and establish the Islamic Emirates of Afghanistan. And listen things were not fun in the Islamic Emirates. The Taliban demanded that all men had to grow beards. They forbid the playing of cards and playing in music. They demanded that women must wear a burqa and women could not go to work or even go to school. Now about the same time that Mullah Omar and the Taliban were terrorizing the Afghan people, another terrorist, remember this young man that we saw visiting Switzerland, Osama bin Laden? Bin Laden decided to move his al-Qaeda fighters to Afghanistan. Now following their cultural code of Pashtun Wali, Mullah Omar provided al-Qaeda with refuge and hospitality until 2001. And during that time al-Qaeda used Afghanistan as their base of terror operations. And then on the September 11th 2001 al-Qaeda conducted the 9-11 tax which flew airplanes into the trade towers in New York City and into the Pentagon in Washington DC. This brought swift military action by the United States who invaded Afghanistan in late 2001 and toppled the Taliban and forced it in al-Qaeda to flee to Pakistan. Now since 2001 the United States, NATO and other countries have been working hard to rebuild the country. Now in 2004 the Afghan's first president was elected and served until 2008 this was Hamid Karzai who despite being supported by the United States and NATO was difficult to be able to work with. Oswa's government was plagued by increased amounts of corruption. Now in 2014 Ashraf Ghan who was a former U.S. citizen was elected president of Afghanistan and there was hope that he would finally be able to rid the country of all the corruption that we see. In 2020 Ghani was re-elected but was forced to enter into a power sharing agreement with the Pashtun Tajik politician named Abdullah. And only the future knows if together they could be able to bring the normalcy back to Afghanistan. Alright so that's Afghanistan. So you should now know more about his people, land and why the 50 years of constant fighting has brought this once promising country to the brink of destruction. Alright until next time keep on learning.


Hello everyone. Let's continue our sessions in Dantine. So, this third part will be covering more about physical and chemical properties and organic and inorganic content of Dantine and the innovation, various theories of innovation and the functional changes that is age and functional changes which are detracts, sclerotic or transparent Dantine and affected and infected Dantine. So, let's see the details of these theories, innovation and functional changes. Dantine is light yellowish color and it becomes darker with age which is harder than born but considerably softer than enamel which has lower content of mineral salts which renders it more radio-lucent than enamel. Radio-lucent, it appears more blacker. Radio opaque means more whiter in radiography. So, it appears more radio-lucent than enamel because of the lower content of mineral salt. Now, it is chemical composition which has 70% of inorganic content whereas in enamel it was 96% and the 20% is organic matter and the remaining 10% is water. In organic substance it has basically type 1 collagenous fibers and minor amount of type 5 collagenous fibers. Non-collagenous proteins includes Dantine, phosphor proteins, Dantine, matrix protein, Dantine, silo protein, bone silo protein, osteopantine, osteocalcin etc. and other proteoglycans, phospholipids and some of the growth factors. Inorganic substance basically calcium hydroxyapatite crystals. So, type 1 collagen is a principal type of collagen found in Dantine and inorganic crystals are plate shaped and are much similar than hydroxyapatite crystals in enamel and Dantine also contains small amounts of phosphates, carbonates and sulfonates. Now, we are moving on to the innovation part. So, this is the part of Dantine which has no endings. So, nerve fibers were shown to accompany 30 to 70% of the odendoblastic processes and these are referred to as intratubular nerves. So, it has intratubular nerves which carries the sensation. So, intratubular nerves. So, these nerves and the terminals are found in close association with odendoblast process within the tubule. So, we have various theories of pain transmission through Dantine. So, this is the theories of pain transmission. The first one is direct neural stimulation, transduction theory, modulation theory, gate control or vibration theory and hydrodynamic theory. So, let's see one by one. The first one is direct neural stimulation. This is according to which nerves in the Dantine get stimulated. But the main drawbacks is the nerves in Dantine tubules are not commonly seen and even if they are present they do not extend beyond the inner Dantine. So, topical application of local anesthetic agents do not abolish sensitivity. Hence, this theory is not accepted. So, the direct neural stimulation is not a well accepted theory. As per this theory, they say the nerves are present on the Dantine. So, if it is present on the Dantine, that topical application of local anesthetic agents should abolish sensitivity but it is not happening. So, it is not well accepted. Next one is transduction theory which is the odendoblast process is the primary structure excited by the stimulus. This is the odendoblast process and that the impulses transmitted to the nerve endings in inner Dantine. Okay. So, drawbacks is the non neurotransmitter vesicles in the odendoblast process to facilitate the synapse or synaptic specialization. So, according to transduction theory there is no presence of any type of neurotransmitter vesicles in the odendoblast. So, that theory also not well accepted. Now, we have the third theory that is modulation theory. So, according to which nerve impulses in the pulp are modulated through the liberation of polypeptides from the odendoblast when injury or something happens. So, these substances may selectively alter the permeability of odendoblast cell membrane through hyperpolarization. So, that the pulp neurons are more prone to discharge upon receipt of subsequent stimuli. That is a modulation theory when it gets modulated. Okay. That is also not well accepted. The next one is gate control or vibration theory. This theory states that the pain is a function of balance between information traveling into the spinal cord through large nerve fiber and information traveling through small nerve fiber. So, large nerve fiber carry non-nososceptic information and small fibers carry nososceptic information. Okay. That is a gate control or vibration theory. It is between the large and small nerve fibers. So, according to this theory, A beta fibers which transmit information from vibration receptors, which stimulate inhibitory neurons in the spinal cord, which in turn act to reduce the amount of pain signal transmitted from A delta and C fibers across the midline of spinal cord and from there to brain. That is a gate control vibration. It is basically the types of fibers. It is highlighting A beta, A delta and C fibers. So, whereas a modulation is different one, modulation is the permeability change in odendoblastic cell membrane by hyperpolarization. Transduction is different one. It is odendoblast process, which is excited by the stimulus. And the last one, which is the most accepted theory, which is the hydrodynamic theory. So, various stimuli such as heat, cold, air blast or mechanical or osmotic pressure, which affects the fluid moments and the dental tubules. Okay. So, hydrodynamics. So, hydromains, water dynamics is change. So, the fluid moments is the most accepted concept of pain transmission. So, this is a fluid moment either inward or outward stimulate the pain mechanism in the tubules by mechanical disturbance of the nerve closely associated with odendoblast and its process. So, it is all about moment of the fluid inward and outward the odendoblastic process. So, these endings may act as a mechanoreceptors as they are affected by mechanical displacement of tubular fluid. So, this is all highlighting about the moment of fluid and it is the most accepted one. Okay. So, age and functional changes we are moving to the last part, which is age and functional changes. So, the vitality of dentine due to physiological and pathological stimuli, there will be always change in vitality of dentine and secondary dentine will be continuously deposited and the pulpal layer as a dentine is removed. So, removed by the changes and such as dental caries, abrasion, attrition and such process there will be formation of structures like dead tracks, sclerosis and in addition to the secondary dentine or reparative dentine. Okay. So, reparative dentine we already seen in our session two. Now, let's see what is dead tracks.  So, it disintegrates and it fills with air. Okay. So, it looks like black or dead tracks which is very black in color when transmitted light and white in reflected like. Okay. So, dead tracks appear as black in transmitted light and white in reflected light. So, this degeneration is often observed in areas of narrow pulp on because of crowding of odendoblast and these empty areas demonstrate decreased sensitivity and dead tracks are probably the initial step in the formation of sclerotic dentine. Okay. So, this is the track which is giving sclerotic or transparent dentine. This sclerotic or transparent dentine when caries, attrition, abrasion, erosion or cavity preparation causes collagen fibers and appetite crystals to begin appear in the dental tubules. So, this blocking of tubules may be considered as a defensive reaction of dentine. So, these appetite crystals are initially only sporadic in dental tubules but gradually fill it with a fine mesh work of crystals. So, that is transparent dentine. So, as this continues the tubule human is obliterated with minerals which appears very much like peritubular dentine. It looks like peritubular dentine. So, the refractive indices of dentine in such areas become transparent and transparent and transmitted and dark in reflected light. So, there is decreased permeability of dentine. Okay. So, that is why these caries, attrition, abrasion in such cases the collagen fibers and appetite crystals to begin appear in the dental tubules. So, the dental tubules will be blocked and the refractive index of this dentine will be similar as the adjacent peritubular dentine and it will look like transparent and transmitted and dark in reflected light. So, the last one is affected and infected dentine. So, the infected dentine is that part of dentine which is contaminated and contains microorganisms and the toxins and demineralized dentine. Whereas, the affected dentine is not occupied by microorganism. It just contains the toxins produced by microorganism of infected dentine and also there is demineralization. Okay. So, the collagen fibers are D natural D natural in infected dentine while in affected dentine the collagen fibers demonstrated cross banding and is physiologically remineralizable. So, that is all about dentine. We have finished dentine. So, we have finished in three sessions. The first part was a basic dentine formation and the second part was various structures and the third part we mainly focused on the theories of innovation. Okay. So, the lots of questions will be asked lots of short notes. We have seen primary dentine, secondary dentine, tertiary dentine, then the one-ibness lines then we have detracts, sclerotic or transparent dentine lines of oven and the mandrel dentine, circumpal dentine, peritubular, intertubular, interglobular dentine, predentine. So, everything might be asked as a short note. So, I will come up with a pulp in my next session. Thank you.


I go to a small community college in Arizona. I've been working on my digital imagery and video production certificate for about two semesters now. The college allows me to go in and put in some extra hours of work on my videos before releasing them and displaying them at the small art gallery across from the art department, not to mention that I also work there after classes as well. Our campus is out on the highway about 10 miles from my town, very isolated and gloomy on most bays. The college is surrounded by desert and tall mountains. The college decided to move the art building closer to the other classrooms, since we are in a solitary building that takes a while to walk to. They got in the small building and left the digital photography and video production classrooms for last. One night, after I find my shift at work, I decided to work on one of my videos since it was due the following week. We use some expensive new generation Mac computers, but I had always noticed a small beat-up Mac that kept in the back of one of the closets. Since my supervisor had gone home, I decided to hook the little sucker up and see if there was anything interesting on it. I plugged it in, and it took a while to boot up. Finally, the welcome screen showed up. There were two accounts. One that read Instructor and the other that read Student. I logged into the student account and I schemed through various student pictures as I noticed they all had the same man in the background. A balding middle-aged male, his eyes were as blue as a picture of a nebula. His grin in every single picture was wide and his eyes seemed to gaze straight through my soul. At the end of the long list of pictures I found a mob file. It was titled Crawl.Mov. Since it was around 8 at night, I started getting uncomfortable. The name of the file made my heart beat fast, I wanted to watch, but I knew I was going to regret it. I called my friend to pick me up. Since I was 10 miles away from town and the buses never run so late, I had about 15 minutes before my friend actually arrived to take me home. I clicked on the file and it popped up on quick time. My hands were clammy, and my eyes darted across the small window. It faded in slowly, with a sort of sad, sorrowful song. Then appeared the title, Crawl, in bold red text. It faded out and it quickly cut to a shot in the desert at night. All I could hear were footsteps on gravel, and bushes and weeds being swatted out of someone's way. I began to feel relieved, and assured myself that it was only a student edit. I laughed as I remembered myself being scared to even open the file. I looked down at my phone and checked for any new notifications as the video played. I looked up, and stocked as my jaw dropped open. What I saw was gruesome and horrifying. A man was covered in blood, and he was exactly the same man in the pictures I had seen just a couple of minutes ago. The shot was of only his face in the beginning, but soon panned down and revealed him sawing through what looked to be a bone. His smile, his smile was still painted across his face. The camera zoomed out and there he was. A petite brunette, her eyes wide with fear as the man was sawing through her leg. I cupped my hand over my mouth. I tried to convince myself that the video was edited, just special effects, but it all looked so real. The footage was so raw, and it showed no signs of being played with whatsoever. All there was through the whole video was silence. The look on the girl's face. That face I still to this day can't forget. About five minutes passed by and it finally cut to black. I leaned back into my chair, thinking to myself, what the fudge did I just see? All of a sudden I started hearing noises, and the screen was still black, but I remembered I hadn't lowered the volume. Slowly but surely, I started making out little whippers, it was the girl. I hovered over the time bar and the video was still going. It had about five more minutes left. The whippers grew louder and louder. The black seemed to be growing lighter and lighter, until finally, a dirt road came into focus. The girl was thrown in the middle of the road, shivering and twitching, still alive. Both of her legs, missing. There was chanting in the background behind the camera. It got louder and louder.  Over and over again. It was a man's voice. I gritted my teeth as I was growing more nervous by the second. The chanting stopped. Then he began to whistle, like he was trying to get the girl's attention, like a person would to a dog. Then he said, Come here girl, crawl, you can do it, crawl. The girl looked straight into the camera. Her eyes were bloodshot. Distorted, they sure as hell didn't look human to me. She turned herself onto her stomach and lifted her hands above her head and started to pull her body towards the camera. This sinister grin started to grow on her lips.  All you could hear was her body and the dirt below her, slowly making her way closer and closer.  She had left behind a trail of blood. She looked up and shrieked. I've never in my life have heard such a terrible blood purdling sound.  I quickly unplugged the computer and put it back in its place. I closed up the room and almost sprinted outside. As I pushed the door to the building open, my friend rolled up the parking lot and I got in as fast as I could. I hardly spoke on my way home and thanked him for the ride. The next morning, I told my supervisor about the video and what I had seen. He laughed and these were his exact words.  I told him I could show him where it was. I pulled the computer out of the closet and plugged it in. I tried the power button but nothing happened. He proceeded to tell me that the computer had been broken, just sitting there for a couple of years now. He said that the ghost story around the college was about a girl from the dorms that had been kidnapped and dragged out into the desert. Her legs cut off and she was offered as a sacrifice to Satan by one of the staff members from the ceramics department. He assured me it was just a tale to keep students from the dorms from going out into the desert at night. My supervisor added. Some people say they can hear someone whistling in the desert at night, calling for someone to crawl.


Alright honey, are you ready to do a gender reveal for the fish and freaks? Oh I've been waiting for it for a while now. I am so ready to do this video. We catch ourselves all the time trying to film videos for this channel and we're constantly saying the name of baby or saying he or she and it's like oh my gosh I'm ready to just tell everybody so we can just just say our baby's name and gender while we're just talking in a video to each other and we've known for a while what the baby is going to be so it is time for you. So are you ready for today? I'm ready for today we have a challenge for you guys she's wearing pink she's teen girl I'm wearing blue I'm teen boy and we are going to be doing a fishing competition today to see who can pop a balloon I don't know if you've ever seen those gender popping balloons probably seen a ton of gender reveal videos big old balloons and you fill them with this colored confetti and you pop them and then you find out if you have a boy or a girl and I thought it would be awesome to cast a lure to it and pop it today we're gonna be battling out to see who gets to pop it I have no idea how hard it's gonna be to pop either so it could take like a lot of tries it could take some effort but we got a nice calm day we got a little storm system rolling in but we got a nice calm day and we're gonna be going after white bass and the key thing is you got to catch one that's an exact 10 incher it's got to be the closest to an exact 10 so let's get out there and let's see who's gonna get to reveal it let's go okay John all right honey you back me in all right I will back you in appreciate it straight shot straight shot down there please big day important day trailers go under the side you got to make those adjustments turn the wheels straightening out of the way turn the wheel to the left now start straightening the truck out think I'm gonna have to take over OSG still working on those backup skills we're gonna get it one of these days though why does it always look so easy I feel like he's just master at this even though like in some of the comments there was an easy way to do it is to put your hand like on the bottom of the wheel and it was easier to turn doing that I still have I'm still confused I'll let you take it from here it's trial and error though trial and error stretch what are you doing this morning huh you gonna tell us where the fish are at aren't you the one that delivers this baby what is the gender going to be sir I don't know where that old stork story came from but I just had a realization that I probably be telling that story one day because the actual talk is kind of difficult there he goes he's going to deliver your baby one day nicely done nicely done preggers still got it even with a 10 pound belly step one we have to find some fish and we're going after white bass today and the whole goal is to be able to catch one that is an exact 10 so even if you catch one that's like 28 even though that would be a gigantic world record white bass you still don't get ready got a few fishies down there get jiggy with it show you the technique a couple cranks off the bottom jerk it sometimes I got I like to double pump I like to go to pumps all right oh I got one I do first one of the day first one of the bezel oh there's another one with it there's three drop your thing down yep yep there was three more big ins with it this is gonna be way too big oh I found them found a small group of them yeah that one's I can already tell you that one's gonna be huge the catch has been caught though just got to get the ruler out 14 Mondo way too big need that perfect 10 go about four cranks off the bottom give it a dangle oh Stephanie's hooked Stephanie's hooked you might have one here yeah yeah yeah oh my gosh that might be a tin that might be a tin let's get it on the board this one's gonna be close so this it might be 11 I don't know this is definitely getting in there in the better category oh that's at 11 that is 11 certified this is our best chance right here oh I just had one just had one give it a dangle it's like they're not feeding right now they're just oh she's hooked she's well you want it to be smaller oh really it's a little bigger oh I got one too oh oh my I have a big one yeah we've got doubled up on to toads you got yours to bite though and then it triggered the other one to bite mine those those are like 14 15 there's a 10 entry in there though he's down there it's like a little Nemo we need Nemo we need Nemo okay get back in there so what do you think the fishing freaks want to see most a girl or boy they just kind of assume because I'm a boy I'm a boy I must be having a boy gonna throw a swim bait are you getting a nibble you have one oh dang that doesn't look like a 10 though oh yeah drag puller got me son of a gun that is gonna be a 12 yep you definitely have a belly without sure you got one when you're reeling it up what's it gonna be oh it's a giant he's a bondo for sure okay we got to find some smaller ones Stephanie's hooked oh my gosh it's a bass it's a bass get him in here oh my gosh the skinniest bass of the year what happened to this guy he's been in a spawn or three or four I'll tell you what I'll give you a half a point for catching the bass barely does it's working better than mine oh I got a bass oh came off oh that was a big and here's the update Stephanie is in the lead with a half a point because she got a large now if I could manage to get too large now we're calling that audible out here when you just need one more however the 10 inch or still it needs to be caught there's tons of them in here can happen at any second right now you're definitely winning 45 more minutes give it till nine there's a couple on the graph better get them get them other hot put it in your mouth you hooked up oh my gosh this could this could be an under this little tight here oh my gosh look how far that one is off okay you need to release that fish I don't even want to release it that was tiny baby gosh this is the right size oh it's a drum okay I'll give you a quarter point for a drum oh my gosh I remember that on our first date you want to give it a kiss yeah babe that's a drum now we get too excited we got seven minutes close this out we got a few fish down here I can see still in the lead but I could still pull this off team girls winning right now but you just hang on get this dime piece hooked up you have one came off good looked like the right one too I need a Maverick fish right now oh I got one I got him the last minutes yes oh it looks right oh it looks right two minutes remaining oh it's an 11 dang it dang it thought I was about to pull off the Maverick show right now that is gonna do it reel him in you can play it about you won you put in the perfect 10 like me that means I gotta blow it up and you gotta pop it so you gotta figure out how to cast really good we are going to now reveal to you what the gender of the baby is going to be are you ready let's go find out tastes great look all that running exercise probably should mention there is a certain color of confetti in here that will reveal what the baby is just so you know it's not just going to be air and you have to guess all those heels you've been running up should be helping with this watch it pop like right here no don't say that definitely smells like plastic Chinese factory and there's like a hint of like a sweetness what like a faint cinnabon like a stale cinnabon it's like six or seven days old oh I hear the chimpetti it's popping it just looks like a giant boob it's like a 36 inch blue I'm getting dizzy I just realized we have a pump in the garage how do you feel about I think we're losing my dizzy I'm losing you're losing your dizzy I wanted to explode with back smoke bastard I think that's good what do you think I think we're good I'm gonna twist it it's meant to be done like this as hard as catching a fish oh my gosh exactly what we meant didn't mean to I could not believe that balloon popped so we've actually known for a really long time that we were gonna have a girl I could tell pretty quick nowadays but we've decided to name our daughter Emery a little Amy for short we are so excited to raise her here at the tree house in the outdoors go exploring go on the trails go fossil hunting take her fishing and all that good stuff unless she interrupts and she's going to ballet class so now that y'all know the gender if you want to send Emery anything in the P.O. box she's due in September September 14th is the due date I'll leave the P.O. box in the description we've already gotten some stuff that's like gender neutral already actually some people sent some boy stuff to us thank y'all for tuning in for today's big surprise also a surprise that the balloon popped right away made it very authentic you would have popped it probably the first cast with that spoon for sure you're on fire today team girl hey and also if you want to check out the family channel we just put up our first video and stay tuned right here guys y'all know what to do go ahead and hit the subscription button and hit the ding dong for more notifications we love you guys thanks for all the support you've given us we're having a girl and we'll see y'all next one


Did you feel anything at all tonight? No No, it's actually felt really good. I think adrenaline and everything covers everything. So I think uh, you know, it's uh Really fun time just to be out there for the team Erin spoke about trying to kind of ease you back into things since you miss 15 games You didn't have a rehab assignment. How do you envision being used over the next couple of days?  I'm ready to go. I'm ready to go. Yeah Has it been brutal for you just the last two weeks not being able to be out there? Yes, to be honest. Yes, you know try to help the team but you know, I can't can't do much on the bench And you know try to cheer the guys up, you know, that's as much as I can do in that moment