Questions about anything?
I've posted an explanation of the attack lab phases. Should we go over any of that?
Next : chapter 8 - processes ("ECF" lectures) .
(We may also touch a bit on chap 10 (I/O), following the lecture notes, but won't do much with that stuff.)
We've been doing a lot of C coding and will continue for the rest of the semester ... I'll remind you that K&R is the book to use if you're grasp of the language and its concepts is not what it needs to be. That's why there's a recommended next to it on my resources page.
The next chapter will make make more sense if you've already seen how processes can be controlled from the shell : foreground, background, control-C, control-Z, and all that.
further reading :
There are some tricks to know about C coding for the material we're doing next, and some things to know about the code for the course, which I describe in these
There are two extremes when it comes to having two things running in your program (i.e. concurrency) while possible sharing some resources.
On the one extreme, a "fork" duplicates the whole process, but after shares very little. This approach is built into the unix OS, and uses the virtual memory idea to make it pretty fast and efficient. (The memory isn't actually duplicated until it needs to be.)
On the other extreme, a "thread" typically shares memory with another thread, often within the same process (for example within a single running Java executable, at a much higher level than the operating system).
Microsoft Windows (which I don't know much about) emphasizes threads, while unix emphasises towards forks.