February 12, 2019
For today:
1) Read Think OS Chapter 3 (make sure you get version 0.8.1) and do the reading quiz
2) Start Homework 2.5
Today:
1) Think OS Chapter 3
2) Recursion
3) BigInt
For next time:
1) Finish Homework 2.5
2) Read Head First C Chapter 3
3) Prepare for a quiz (here is last year's quiz for practice)
4) Think about project ideas
Project ideas
0) Think about your learning goals
1) Take a look at my collection of links
And the projects from last time
2) Search for additional resources
3) Let me know if you want help finding something you want
4) Think about people you might want to work with
Next time I'll ask what you are thinking about and you will have a chance to talk to others.
Proposals due next Tuesday! Project runs until March 26, so it's a little more than one month.
Readings will continue. Homeworks will be a little smaller.
You should pick something with a modest MVP. Think "opportunity for self-directed learning" more than "obligation to attempt something massive".
Section 3.1, Information Theory, learn it, live it, love it. If you are interested, read about Information Content.
memory: solid state, volatile
storage: non-volatile, usually mechanical until recently, now increasingly solid state or hybrid
What's the difference between MB and MiB?
32-bit address space is big. 64-bit address space is ridonculous.
CPU generates virtual addresses, memory management unit (MMU) translates and sends the physical address to the memory control unit (MCU).
The MMU splits address into page and offset, looks up page in the translation lookaside buffer (TLB), passes offset through.
Each process has its own page table, which lives in kernel memory. The TLB contains cached copies of page table entries.
A dense representation of a page table would be too big, but most of the page table is unused, so the OS uses sparse table representations.
The details of page table representation are a staple of OS classes.
1) Isolation: there is no VA a process can generate to access another processes PM.
2) Sharing: virtual pages from several processes can map to the same physical page.
1) In ExercisesInC/exercises/ex02.5 you should find recurse.c. Read it to make sure you understand the code.
2) Run it and see if you can make sense of the output.
3) Draw a stack diagram showing the execution of factorial(4).
Hint: See Think Python Section 6.5
4) Draw a stack diagram showing the execution of fibonacci(4).
Hint: See Think Python Section 11.6
Let's work on Exercise 2.5: BigInt
Hint: for reverse_string, you probably need malloc. We'll talk about why in class.