Till KTH:s startsida Till KTH:s startsida

Ändringar mellan två versioner

Här visas ändringar i "Assignments" mellan 2019-11-05 10:27 av Sebastian Porling och 2019-11-05 11:02 av Aron Hansen Berggren.

Visa < föregående | nästa > ändring.

Assignments

Here are a set of experiments that you should complete during the course. They will help you to understand the concepts that we discuss during the lectures. You do not need to hand in a report but you're encouraged to write a small four page summary of your findings. The exam will have questions related to these assignments; questions that will be quite easy to understand if you have done the experiments but rather hard to solve if you have not done them.

All experiments are done programming in C, using gcc, on a 64 bit Linux system. You can more or less easily adapt them to OSX, Windows or some other operating system or compiler but it is encouraged to instead install a virtual machine and boot it up with a Linux system. You should after the course be able to use a regular shell and some of the most basic operations. The best way to learn this is to actually use them so open up a shell and start practicing.

There will be one TA led session for each of the exercises. Before going to these sessions it is strongly advised to have read through the assignment and started programming. The time during these sessions is more valuable if you know what you're doing and where you're stuck.

Geting started To be able to complete the assignments you need to be up and running working with the shell. The first thing you should do is to create an environment where you can edit, compile and run small C programs in a Linux environment (if you choose to run under MacOS you will have some issues).


* Tips och tricks i-bash av Martin Pola
Processes Experiment related to processes, what they look like and how they are created. These are best done in conjunction with lectures 3 and 4. The assignments, or tutorials, will give you a much better understanding of the process and how it is related to the kernel.


* The structure of a process: A heap, a stack, a bottle and a rack
* How to create a process: Hello Dolly
* How signals can be trapped: Don't do this at home
* How to write a kernel module in 20 min: Want to play a game?
* The Linux Kernel Module Programming Guide - if you want to go further.

Virtual memory Memory visualization is covered in lectures 5 through 8. These experiments with the algorithms used for memory management and see how important it is with some hardware support.


* User space memory management: My malloc: mylloc and mhysa
* Using mmap() instead of sbrk(): My malloc using mmap()

* The importance of the TLB: How large is the TLB?
* The kernels page management: Page frame reclaiming algorithms
Concurrency Concurrency is covered in lecture 9 and 10.


* Build you own threads library: Threads - roll your own
* Why and how to implement locking: Take me for a spin
* Process communication: Ping-pong and Echoes
File systems Files systems and persistent storage is covered in lectures 11 through 13. You will here explore both the performance of secondary storage and how the file system is constructed.


* Secondary storage: Storage - take your time
* File operations. Exploring the file system
Presentations 2019
* The structure of a process
* How to create a process
* Don't try this at home

* How to write a kernel module in 20 min
* User space memory management
* The importance of the TLB
* The kernels page management
* Build you own threads library

* Why and how to implement locking
* Process communication

* Secondary storage
* File operations
Presentations given by TA:s in previous years
* The structure of a process:
* Presentation 2017
* Presentation 2018

* How to create a process:
* Presentation 2017
* Presentation 2018

* How to write a kernel module in 20 min:
* Presentation 2017
* Presentation 2018
* Gotchas 2018

* How signals can be trapped:
* Presentation 2017
* Presentation 2018

* User space memory management:
* Presentation 2017
* Presentation 2018

* The importance of the TLB:
* Presentation 2017
* Presentation 2018

* The kernels page management:
* Presentation 2018

* Build you own threads library:
* Presentation 2018


* Why and how to implement locking:
* Presentation 2018

* Process communication:
* Presentation 2018


* Secondary storage:
* Presentation 2017
* Presentation 2018

* File operations.
* Presentation 2018