Course title
L09329003
System Programming

sugaya midori Click to show questionnaire result at 2018
Course description
The purpose of this class is to learn experientially. Programming using the system call that is the entrance to the OS, using a Linux OS as an example, to investigate the contents learned in the lecture on the operating system (hereinafter abbreviated as OS), and to use the described functions and investigate the performance.

In particular, experience in the development of multi-process and multi-thread, and experience in developing specific programs such as network socket programming using C language can acquire the skills necessary for system development. By experiencing development experience with the efficient use of computer resources in mind, you will obtain the specialized skills and a deep understanding of how to use computers and bring out their performance. In addition, understand the necessity of realizing what is learned through application development using network programming and the essence of platform technology.

In this class, first, set up the development environment on Linux, and then perform programming using Linux system calls. In a Unix-like OS such as Linux, the hardware is managed entirely by the kernel, and the user program interacts with the hardware by calling the code in the kernel through a function called a system call provided by the OS. Deepen understanding of the system through actual program development. This understanding is the basis for understanding IoT (Internet of Things), middleware, cloud systems, etc.
Purpose of class
Deepen understanding of OS and UNIX platforms and middleware development through practical system call programming
Goals and objectives
  1. Understand the concept of system calls and write programs that use them.
  2. You will be able to write programs that perform process creation and inter-process communication.
  3. You can write network programs using socket communication.
  4. By applying knowledge of system programming, you will be able to create server client programs and applications.
Language
Japanese(English accepted)
Class schedule

Class schedule HW assignments (Including preparation and review of the class.) Amount of Time Required
1. Introduction Overview, history 30minutes
2. Setup the basic environment, Standard C library, development environment, Shell Programming Set up Ubuntu, start terminal software, use ssh, scp 60minutes
Exercise 30minutes
3. String manipulation, file input / output
File (high-level file)
Performance evaluation (development of analysis software)
Practical training and programming using the distributed PDF 30minutes
Exercise 60minutes
4. Process (1)
-What is multitasking
-Process control
Practical training and programming using the distributed PDF 30minutes
Exercise 60minutes
5. Thread programming (1)
・ What is multithreading?
・ Multi-thread programming
Practical training and programming using the distributed PDF 30minutes
Exercise 60minutes
6. Thread programming (2)
-Avoid deadlock by locking and exclusive processing
Practical training and programming using the distributed PDF 630minutes
Exercise 60minutes
7. Time, interrupt, signal Practical training and programming using the distributed PDF 30minutes
Exercise 60minutes
8. Research Practical training and programming using the distributed PDF 30minutes
Exercise
9. Socket programming (1)
・ Client server type communication
・ Development of client program
Practical training and programming using the distributed PDF 30minutes
Exercise 60minutes
10. Socket programming (2)
・ Development of server program
・ Development of client-server programs
Practical training and programming using the distributed PDF 30minutes
Exercise 60minutes
11. Socket programming (3)
・ Advanced socket programming
・ Network programming (multitask server)
Practical training and programming using the distributed PDF 30minutes
Exercise 30minutes
12. Applications (introduction) and design using sockets Practice of server program development
Creation of multiple processes
30minutes
Exercise 60minutes
13. Application (intermediate) using socket, implementation Discuss and design the development service, development 30minutes
Exercise 60minutes
14. Network programming final presentation Presentation and demonstration 30minutes
Exercise 60minutes
Total. - - 1710minutes
Relationship between 'Goals and Objectives' and 'Course Outcomes'

Exercise / Report Development Total.
1. 70% 30% 100%
2. 0%
Total. 70% 30% -
Evaluation method and criteria
Reports, homework assignment (70%)
Server client application development (30%)
Textbooks and reference materials
1. Introduction to UNIX System Programming in C Language, Kiyotaka Kono, Ohmsha, 2003
2. Unix / Linux Programming Theory and Practice, Bruce Molay Translated by Takahiro Nagao, ASCII, 2008
Reference book: "Magic C Programming Exercise Book" Kimihiro Kuramitsu Corona Shoten
Prerequisites
Introduction to Programming 1 and 2, Operating System
Office hours and How to contact professors for questions
  • 講義前後、あるいは電子メールで随時
Regionally-oriented
Non-regionally-oriented course
Development of social and professional independence
  • Course that cultivates an ability for utilizing knowledge
  • Course that cultivates a basic interpersonal skills
  • Course that cultivates a basic problem-solving skills
Active-learning course
More than one class is interactive
Course by professor with work experience
Work experience Work experience and relevance to the course content if applicatable
Applicatable OS resource management system (OSS), development of Linux hierarchical scheduler, etc.
Education related SDGs:the Sustainable Development Goals
  • 9.INDUSTRY, INNOVATION AND INFRASTRUCTURE
Last modified : Sat Mar 21 12:30:42 JST 2020