Important
Subscribe to the class mailing list.
You should have received credentials to uniform.ms.mff.cuni.cz
(machine with development environment for the labs).
About
In the winter semester of 2018/2019, lectures take place weekly on Wednesdays, 12:20-13:50, in lecture room S5. Labs take place approximately biweekly (consult the schedule below) on Wednesdays, 15:40-17:10, in lab room SW2.
The mailing list is the primary means of communication, both between the lecturers and the students, and among the students themselves. Please use the list if at all possible. For subject matter where the mailing list is not suitable, please use these e-mails:
- Petr Tůma, tuma<at-sign>d3s.mff.cuni.cz
- Vojtěch Horký, horky<at-sign>d3s.mff.cuni.cz
Support
- Lecture slides
- Lecture notes
- Additional slides
Labs Schedule
Content | Download | Odd weeks (18aNSWI004x01) |
Even weeks (18aNSWI004x02) |
---|---|---|---|
Labs outline, requirements, development environment | Agenda, Development environment, Self assessment quiz | October 3, 2018 | October 10, 2018 |
Task #1: memory management | Extended assignment | October 17, 2018 | October 24, 2018 |
Task #2: virtual memory | Extended assignment | October 31, 2018 | November 7, 2018 |
Task #3: synchronization | Extended assignment | November 14, 2018 | November 21, 2018 |
Task #4: system calls | Extended assignment | November 28, 2018 | December 5, 2018 |
Task #5: device drivers | Extended assignment | December 12, 2018 | December 19, 2018 |
Credit test | — | TBA |
Labs Outline
The students will receive a single assignment on each lab session. The assignments are all about extending Kalisto, an educational operating system kernel provided as a part of the course, and running in a simulated MIPS R4000 environment. The assignments are connected to five distinct topics, which are published and discussed during the associated lectures.
Ideally, the assignment should be solved and the solution submitted during the corresponding lab session. These assignments are considered accepted.
If the assignment is not solved during the lab session, the student can submit a solution to an extended version of the assignment within a given deadline, typically within one week after the lab session. These assignments are then considered conditionally accepted.
The course credit is given for solving at least 4 assignments during the corresponding lab session. If at least 4 assignments were either accepted or conditionally accepted, passing an extra credit test (in the form of a similar assignment) is required for the credit.
The assignments should be solved individually. The assignment can be consulted with the lecturers during the lab session, however, any other form of teamwork (consulting with other students, source code reuse and so on) are strictly prohibited. The submitted solution must be authored exclusively by the submitting student.
The lecturers take the final decision on whether a solution meets the assignment requirements. As a part of each assignment, automated tests are provided to help the student perform self assessment during implementation.
Assignment Topics
- One: Memory management
- Two: Virtual memory
- Three: Synchronization
- Four: System calls
- Five: Device drivers
Credit Test
A student can take the credit test after submitting at least 4 accepted and conditionally accepted assignments. The test is similar to standard lab assignments, and scheduled typically for the first week of the exam period. A student can make no more than two attempts at passing the credit test.
Special Assignments
Students can negotiate special alternative assignments with the lecturers. A special assignment must be related to the course subject matter, and be at least as demanding as the standard assignments combined. Course credit is then given for the special assignment.
Download
We strongly recommend using the uniform.ms.mff.cuni.cz machine for assignment work. Getting the toolchain to work in a different environment may prove difficult for novice students.
- Manuals
- MIPS R4000 Processor Manuals
- MIPS R4000 Microprocessor User's Manual, 2nd edition, 1994
- Additional MIPS Processor Manuals (not necessarily limited to MIPS R4000)
- MIPS R4000 Processor Manuals
- MIPS C Cross Compiler Toolchain
- toolchain.mips.sh, a script for downloading and building the toolchain consisting of binutils 2.27, GCC 6.2.0, GDB 7.12
- GNU/Linux
- gcc-6.2.0.bin.linux.x86.tar.bz2, x86 binaries in
/usr/local/cross/mips32
- gcc-6.2.0.bin.linux.x86_64.tar.bz2, x86-64 binaries in
/usr/local/cross/mips32
- gcc-6.2.0.bin.linux.x86.tar.bz2, x86 binaries in
- macOS
- gcc-6.2.0.bin.macos.x86_64.tar.bz2, x86-64 binaries in
/usr/local/cross/mips32
- gcc-6.2.0.bin.macos.x86_64.tar.bz2, x86-64 binaries in
- Windows
- gcc-4.9.1.bin.cygwin.x86.zip, x86-64 binaries in
/usr/local/cross/mips32
for Cygwin (x) (*) - gcc-4.9.1.bin.win32.zip, x86-64 native binaries (%) (*)
- gcc-4.9.1.bin.cygwin.x86.zip, x86-64 binaries in
- MSIM — MIPS R4000 Simulator
- msim-1.3.8.5.tar.bz2, simulator sources
- Reference Manual
- Tutorial (incomplete)
- GNU/Linux
- msim-1.3.8.5-1.fc25.src.rpm, source RPM
- msim-1.3.8.5-1.fc25.i686.rpm, RPM for Fedora 25 x86
- msim-1.3.8.5-1.fc25.x86_64.rpm, RPM for Fedora 25 x86-64
- msim-1.3.8.5.bin.linux.x86.tar.bz2, x86 binary in
/usr/local
- msim-1.3.8.5.bin.linux.x86_64.tar.bz2, x86-64 binary in
/usr/local
- msim-1.3.8.5-1.aur, PKGBUILD for Arch Linux
- macOS
- msim-1.3.8.5.bin.macos.x86_64.tar.bz2, x86-64 binary in
/usr/local
- msim-1.3.8.5.bin.macos.x86_64.tar.bz2, x86-64 binary in
- Windows
- msim-1.3.8.5.bin.cygwin.x86.zip, x86 binaries in
/usr/local
for Cygwin (x) - msim-1.3.8.5.bin.win32.zip, x86 native binaries (%)
- msim-1.3.8.5.bin.cygwin.x86.zip, x86 binaries in
- A Linux virtual machine with the toolchain for VirtualBox
- fedora-26.ova, virtual appliance Fedora 26
- Kalisto Educational Operating System
- kalisto-0.9.14.tar.bz2, common source code base for all assignments
(*) not actively supported
(x) Recommended packages for Cygwin: make
, makedepend
, readline
, libmpc3
(%) Extra utilities for Windows: MinGW/MSYS, makedepend-1.0.4.bin.win32.zip, shared_libs.bin.win32.zip
Grading
The overall grade is computed from two factors. The first factor is the number of accepted assignment solutions, denoted as U, scaled to [0, 1]. The second factor is the result of a written test, denoted as P, again scaled to [0, 1]. The overall grade is then determined as follows:
- U × P >= 0.7 → 1
- U × P >= 0.55 → 2
- U × P >= 0.4 → 3
- otherwise 4