Ex:
- Ubuntu 16.04, 20.04.
- Fedora
- Debian-
Fedora/Ubuntu/Red Hat Enterprise/CentOS- The CSIE server:
Ubuntu - My laptop:
Ubuntu 16.04
- The CSIE server:
-
With GNU tool-chain
gcc(the C compiler)gdb(the GNU debugger)
- Academic research
- Lots of open-source free software
- Innovative software appears on
UNIXfirst - Network computing research (cluster/grid)
- Embedded system and SoC (system-on-chip)
- Most of embedded software are Linux-based
- MOST IMPORTANT: - Make me more familiar on playing computer!
UNIXarchitecture- File System Operations
- Terminal I/O
- Concurrent Programming
- process/thread, signals, semaphores, IPC, etc.
- Network Computing
- Socket, RPC
-
Setup my Linux environment
- Use the embedded system LAB (dual-boot w/ Fedora)
- Use my own computer
- Most of Linux distribution (e.g.
Fedora 9+) supports dual-boot - I can still have my M$-Windows with Linux
- Most of Linux distribution (e.g.
-
Test the following software works
- Shells:
bash,tcsh, etc - Programming tools:
gcc,gdb,make - My favorite X-window:
KDE/Gnome - My favorite GUI debugger (
ddd,kdbg, etc.) - My favorite text editor (
kwrite,emacs,vi, etc.)
- Shells:
- man
man commandto look for how to use certain command- Example:
man gcc
- Example:
- info
- Example:
info gccfor detailed manual of gcc compiler
- Example:
-
Write the first program:
-
Write the Makefile to build the executable program in sub-folder
hw_01.- Three functions spread across multiple files: main, calculate, mult.
- There is no source code for function mult, only the compiled object code in
lib_mult.a. - The correct execution result is X=610.
-
The executable program I build should:
- Correctly execute, and
- Be able to run in a debugger
-
-
Define my own fstream class.
- Build a standard
C++class using system calls. - Write a class named
myfstream.- Similar functionality to the standard
C++class fstream. - Contains at least these methods:
- Open
- Close
- Read
- Write
- Operator <<
- Operator >>
- Similar functionality to the standard
- Requirements to my program(Learn how
C/C++standard libraries are built):- Build the library and deliver to other users.
- Separate
.hfile. - Build the library file
libmyfstream.a.
- Separate
- Test my program by other users.
- Deliver only
.hand.afiles. C++source code on methods implementation should not be delivered to the test users.
- Deliver only
- I am not allowed to use any
C/C++standard library functions/classes.- Only
UNIXsystem calls are allowed.
- Only
- Build the library and deliver to other users.
- Build a standard
-
Recursive into a directory tree and visit each file.
-
On-line messenger.
-
Database management program with auto recovery.
- A database management program with auto recovery.
- Back-end Process:
- Always alive even the front-end is closed.
- Store data in a linked list.
- Auto-Recovery:
- Automatic save data to disk:
Ctrl+c
- Automatic save data to disk:
-
Matrix mulplication in parallel.
- There are three projects that I could choose.
-
Parallel sorting over 1M floating-point numbers
- Sort 1M floating point numbers in non-descending order.
- Execute on a 4-core PC.
- Scored by the execution time, the smaller is better.
-
File syncing to the cloud
- Major Function: sync all files in a dedicated directory to a remote server.
- Like
dropbox
- Not contributing much system workload
- Like
- Expected Result:
- Automatic backup files (in a flat directory) to another directory.
- Extra Function:
- Automatic upload to a remote server.
- Automatic sync the whole directory tree.
- Major Function: sync all files in a dedicated directory to a remote server.
-
Login shell
- A shell program capable of execution a single command each time.
- Basic functionality:
cd,mkdir, set environment variables.- Automatic path search.
- Single machine.
- Login shell through network.
- Basic functionality:
- Bonus:
- Redirect outcome to files.
- Piped job execution.
- Execute background job.
- A shell program capable of execution a single command each time.
-
- I chose the first selection one as my final project: Matrix mulplication in parallel.