Mercurial > hg > Members > shivanidubey > Internship_presentation
diff slide.md~ @ 3:623da64aac7a default tip
Internship_presentation
author | shivanidubey |
---|---|
date | Mon, 24 Jun 2019 13:05:55 +0900 |
parents | 54dd75a92d04 |
children |
line wrap: on
line diff
--- a/slide.md~ Sat Jun 22 12:32:52 2019 +0900 +++ b/slide.md~ Mon Jun 24 13:05:55 2019 +0900 @@ -1,89 +1,117 @@ title: Studying Operating System Using Docker Platform author: Shivani Dubey -profile: Intern, University of the Ryukyus +profile: Madan Mohan Malaviya University of Technology, Gorakhpur -# Why Operating System? +## Why do we study Operating System? -- Backbone of computer system +- Every computer system has an operating system, which manages the resources of the computer. -- Manages the computer's memory and processes, as well as all of its software and hardware. +- IoT or IT Services can't work well without resource managements. +- To handle it, we have to understand the API of OS. -# Introduction +- To understand the API, it is better to see the implementations. - -- Docker +- For example, API for tuning priorities of the processes. -- xv6 +## Xv6 Operating System as an educational tool -What is Docker? +- A Unix-like operating system developed in MIT, based on V6 kernel +- xv6 is written in ANSI C ( not in C++ ) -- The modern platform for high velocity innovation. -- Docker has products that use operating system level virtualization to develop and deliver software in packages called containers. -- Docker can run on any computer, on any infrastructure and in any cloud. +- xv6 is small and simple (9628 lines of codes) + +- It can run on Raspberry Pi ( Small PC board ) +- Or on ARM emulator such as QEMU -What is xv6? +## Xv6 development environment with QEMU +- QEMU emulates ARM CPU with virtual memory -- A Unix-like operating system developed in MIT. +- Xv6 operating sytem itself is running on QEMU -- xv6 is modern reimplementation of Sixth Edition Unix in ANSI C. +- gdb debugger can be attached to the emulated program (both in user space and system space) +- We can step and trace inside xv6 kernel -# What helped us - + ... but it requires complex development environments setup + ... very time consuming +## Our development environments -- emacs editor (amidst the editor war between vi and emacs!) - homebrew (it simplifies installation of software in macOS) - Mercurial repository of the lab where we saved everything using ssh +- Cross Compilers -## Why Docker? +- ARM libraries for C language - +- QEMU (ARM Emulator) -Features of Docker: +## Introducing Docker + +- What is Docker? It is a container. +- What is Container? An isolated envirornment such as file system. -- Easy and Faster Configuration +- It has DockerFile, which describes how to setup the envrionment in the container. -- Increases productivity +- Docker can run on any computer using an emulator such as QEMU. -- Application Isolation +- Complex development environment can be build using DockerFile and docker built command. + +# The DockerFile -- Services - -- Security Management +``` +FROM phitek/qemu-arm +RUN apt-get update -y +RUN apt-get remove gdb -y +RUN apt-get install gcc-arm-none-eabi gdb-arm-none-eabi qemu-system-arm -y +WORKDIR /code +COPY ["src", "."] +RUN make +CMD /bin/bash +``` +- FROM line specifies the shared image in Docker repository. -## Why xv6? - +- apt-get installs Linux cross compiling tools. +- Then it creates working directory, copies our sources to it, and executes make. -- It gives a good insight into Command Line Interface of Unix OS. +## Docker commands + +- Create docker image and environment, and build xv6 kernel + + docker build --tag xv6-docker -- xv6 is modern reimplementation of Sixth Edition Unix in ANSI C. +- Run xv6 kernel on QEMU in the container + + docker run --rm --privileged -it xv6-docker ./run-debug.sh +- Run gdb to connect the xv6 kernel running in the QEMU -# Scheduling processes by their priorities + docker exec -it xv6-docker ./debug.sh -- Added getpriority() and setpriority() and get_highest_priority() functions in proc.c file of xv6 + +# Exercise : Adding priorities to the xv6 scheduler - +- Added getpriority() and setpriority() + +- get_highest_priority() functions in proc.c file of xv6 + +- Implemented it in schelduler() - Added a test function testpriority() in usertests.c file of xv6 to implement our algorithm - -## The function - +## Function used in our exercise to find highest priority process ```c int get_highest_priority_proc(void) { @@ -101,34 +129,41 @@ rpid = pid; if (highest_priority > p->priority) { highest_priority=p->priority; - hpid = pid; - } + hpid = pid; } } return hpid > 0?hpid:rpid; } ``` +- It assumes at least one process to be RUNNABLE. +- It may allow no highest priority process. + +- The correctness of the function is *important*. ## Docker Limitation - -Mutliple images present in repository due to form command. + +- If repository breaks, Docker poses a problem (a cloud problem). -If repository breaks, Docker poses problem +- Cloud may be used conveniently but we must not rely on it. +- We can use a direct environment without Docker, since we have a Linux server. + +- Docker images can easily eat up our disk spaces. -What can be done? - +in ~/.zsh_history -We can keep track of images of Docker. +```c +: 1561014922:0;docker system prune +: 1561014973:0;docker container prune +: 1561015350:0;docker image prune +: 1561015362:0;docker volume prune +``` +# Conclusion -# Conclusion - - Docker environment poses some problems, some of which are difficult to comprehend. -- Storage is difficult - -- Yet, it gives a good insight of the underlying important concepts of operating system beacuse it is well documented, fast and uses less resources. \ No newline at end of file +- Yet, it gives a good insight of the underlying important concepts of operating system because it is well documented, fast and uses less resources.