# HG changeset patch # User shivanidubey # Date 1561349155 -32400 # Node ID 623da64aac7a1217d3e3e3fd4637109d27eb3176 # Parent 54dd75a92d0447fc286ba63cfdee0fd9e67037c7 Internship_presentation diff -r 54dd75a92d04 -r 623da64aac7a slide.html --- a/slide.html Sat Jun 22 12:32:52 2019 +0900 +++ b/slide.html Mon Jun 24 13:05:55 2019 +0900 @@ -78,7 +78,7 @@
Shivani Dubey - Intern, University of the Ryukyus + Madan Mohan Malaviya University of Technology, Gorakhpur
@@ -91,14 +91,23 @@
-

Why Operating System?

+

Why do we study Operating System?

@@ -108,33 +117,50 @@
-

Introduction

+

Xv6 Operating System as an educational tool

-

What is Docker?

+ + +
- - -

What is xv6?

+
+ +

Xv6 development environment with QEMU

@@ -144,18 +170,50 @@
-

What helped us

+

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

    +
  • +
  • +

    ARM libraries for C language

    +
  • +
  • +

    QEMU (ARM Emulator)

    +
  • +
+ + + +
+ +
+ +

Introducing Docker

+ +
    +
  • +

    What is Docker? It is a container.

    +
  • +
  • +

    What is Container? An isolated envirornment such as file system.

    +
  • +
  • +

    It has DockerFile, which describes how to setup the envrionment in the container.

    +
  • +
  • +

    Docker can run on any computer using an emulator such as QEMU.

    +
  • +
  • +

    Complex development environment can be build using DockerFile and docker built command.

    +
@@ -164,25 +222,27 @@
-

Why Docker?

+

The DockerFile

-

Features of Docker:

+
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
+
  • -

    Easy and Faster Configuration

    -
  • -
  • -

    Increases productivity

    +

    FROM line specifies the shared image in Docker repository.

  • -

    Application Isolation

    +

    apt-get installs Linux cross compiling tools.

  • -

    Services

    -
  • -
  • -

    Security Management

    +

    Then it creates working directory, copies our sources to it, and executes make.

@@ -192,14 +252,23 @@
-

Why xv6?

+

Docker commands

  • -

    It gives a good insight into Command Line Interface of Unix OS

    +

    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

    + +

    docker exec -it xv6-docker ./debug.sh

@@ -209,11 +278,17 @@
-

Scheduling processes by their priorities

+

Exercise : Adding priorities to the xv6 scheduler

  • -

    Added getpriority() and setpriority() and get_highest_priority() functions in proc.c file of xv6

    +

    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

    @@ -226,30 +301,37 @@
    -

    The function

    - +

    Function used in our exercise to find highest priority process

    int get_highest_priority_proc(void)
     {
       int highest_priority;
       int pid = 0;
       int hpid = -1;
       int rpid = 0;
    -
       highest_priority=100;
    -  struct proc *p;
    + 
    + struct proc *p;
       for(p = ptable.proc; p < &ptable.proc[NPROC]; p++, pid++){
         if(p->state != RUNNABLE) {
    -      continue;
    -    }
    +      continue;    }
         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.

      +
    • +
    @@ -259,14 +341,28 @@

    Docker Limitation

    -

    Mutliple images present in repository due to form command.

    - -

    If repository breaks, Docker poses problem

    +
      +
    • +

      If repository breaks, Docker poses a problem (a cloud 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

    - +
    : 1561014922:0;docker system prune
    +: 1561014973:0;docker container prune
    +: 1561015350:0;docker image prune
    +: 1561015362:0;docker volume prune
    +
    @@ -277,13 +373,10 @@
    • -

      Docker environment poses some problems, some of which are difficult to comprehend

      +

      Docker environment poses some problems, some of which are difficult to comprehend.

    • -

      Storage is difficult too

      -
    • -
    • -

      Yet, it gives a good insight of the underlying important concepts of operating system beacuse it is well documented, fast and uses less resources

      +

      Yet, it gives a good insight of the underlying important concepts of operating system because it is well documented, fast and uses less resources.

    diff -r 54dd75a92d04 -r 623da64aac7a slide.md --- a/slide.md Sat Jun 22 12:32:52 2019 +0900 +++ b/slide.md Mon Jun 24 13:05:55 2019 +0900 @@ -1,32 +1,32 @@ title: Studying Operating System Using Docker Platform author: Shivani Dubey -profile: Madan Mohan Malaviiya, University of Technology +profile: Madan Mohan Malaviya University of Technology, Gorakhpur -## Why we study Operating System? +## Why do we study Operating System? -- Every computer system has an operating system, which manages the resource of the computer. +- Every computer system has an operating system, which manages the resources of the computer. -- IoT or IT Services can't work well without resource manageents. +- IoT or IT Services can't work well without resource managements. -- To handle it, we have to understand the API of OS +- To handle it, we have to understand the API of OS. -- To understand the API, it it better to see the implentations. +- To understand the API, it is better to see the implementations. -- For an example, API for tuning priorities of the processess +- For example, API for tuning priorities of the processes. ## Xv6 Operating System as an educational tool -- A Unix-like operating system developed in MIT, based on V6 kernel. +- A Unix-like operating system developed in MIT, based on V6 kernel -- xv6 is written in ANSI C ( not in C++ ). +- xv6 is written in ANSI C ( not in C++ ) - xv6 is small and simple (9628 lines of codes) -- It can run on Respberry Pi ( Small PC board ) +- It can run on Raspberry Pi ( Small PC board ) - Or on ARM emulator such as QEMU -## Xv6 development envrionment with QEMU +## Xv6 development environment with QEMU - QEMU emulates ARM CPU with virtual memory @@ -34,14 +34,13 @@ - gdb debugger can be attached to the emulated program (both in user space and system space) -- We can step and trace the internal of xv6 kernel +- We can step and trace inside xv6 kernel - ... but it requires complex development envrionments setup + ... but it requires complex development environments setup ... very time consuming -## Our development envrionments +## Our development environments -- emacs editor (amidst the editor war between vi and emacs!) - homebrew (it simplifies installation of software in macOS) @@ -57,13 +56,13 @@ - What is Docker? It is a container. -- What is Container? An isolateed envriornment such as file system. +- What is Container? An isolated envirornment such as file system. -- It has DockerFile, which describes how to setup the envrionment in the container +- It has DockerFile, which describes how to setup the envrionment in the container. -- Docker can run on any computer using an emulator such as QEMU +- Docker can run on any computer using an emulator such as QEMU. -- Complex develement environment can be build using DockerFile and docker built command. +- Complex development environment can be build using DockerFile and docker built command. # The DockerFile @@ -78,51 +77,41 @@ CMD /bin/bash ``` -- FROM lines specifies the shared image in Docker repository. +- FROM line specifies the shared image in Docker repository. -- apt-get install Linux cross compiling tools +- apt-get installs Linux cross compiling tools. -- then it create workig directory, and copy our sources to it, and execute make +- Then it creates working directory, copies our sources to it, and executes make. -## Docker command +## Docker commands -- create docker imagae and environment, and built xv6 kernel +- Create docker image and environment, and build xv6 kernel - docker build --tag xv6-docker . + docker build --tag xv6-docker -- run xv6 kernel on QEMU in the container +- 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 +- Run gdb to connect the xv6 kernel running in the QEMU docker exec -it xv6-docker ./debug.sh -## Features of Docker: -- Easy and Faster Configuration - -- Increases productivity - -- Application Isolation - -- Provies Services - -- Security Management -# Exercise : adding priorities to the xv6 scheduler + +# Exercise : Adding priorities to the xv6 scheduler - Added getpriority() and setpriority() - get_highest_priority() functions in proc.c file of xv6 -- implement it in schelduler() +- 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) { @@ -130,24 +119,20 @@ int pid = 0; int hpid = -1; int rpid = 0; - highest_priority=100; - struct proc *p; + + struct proc *p; for(p = ptable.proc; p < &ptable.proc[NPROC]; p++, pid++){ if(p->state != RUNNABLE) { - continue; - } + continue; } 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 is RUNNABLE +- It assumes at least one process to be RUNNABLE. - It may allow no highest priority process. @@ -155,13 +140,14 @@ ## Docker Limitation -- If repository breaks, Docker poses a problem (a cloud probelm) -- Clound should be used conviniently but don't rely on it. +- If repository breaks, Docker poses a problem (a cloud 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 eats up our disk spaces. +- Docker images can easily eat up our disk spaces. in ~/.zsh_history @@ -173,8 +159,9 @@ ``` # Conclusion -- Docker environment poses some problems, some of which are difficult to comprehend + +- Docker environment poses some problems, some of which are difficult to comprehend. -- Storage is difficult too + -- Yet, it gives a good insight of the underlying important concepts of operating system beacuse it is well documented, fast and uses less resources +- Yet, it gives a good insight of the underlying important concepts of operating system because it is well documented, fast and uses less resources. diff -r 54dd75a92d04 -r 623da64aac7a slide.md~ --- 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. diff -r 54dd75a92d04 -r 623da64aac7a slide.pdf.html --- a/slide.pdf.html Sat Jun 22 12:32:52 2019 +0900 +++ b/slide.pdf.html Mon Jun 24 13:05:55 2019 +0900 @@ -63,7 +63,7 @@
    Shivani Dubey - Intern, University of the Ryukyus + Madan Mohan Malaviya University of Technology, Gorakhpur
    @@ -75,14 +75,23 @@
    -

    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.

      +
    • +
    • +

      IoT or IT Services can’t work well without resource managements.

    • -

      Manages the computer’s memory and processes, as well as all of its software and hardware.

      +

      To handle it, we have to understand the API of OS.

      +
    • +
    • +

      To understand the API, it is better to see the implementations.

      +
    • +
    • +

      For example, API for tuning priorities of the processes.

    @@ -92,33 +101,50 @@
    -

    Introduction

    +

    Xv6 Operating System as an educational tool

    • -

      Docker

      +

      A Unix-like operating system developed in MIT, based on V6 kernel

      +
    • +
    • +

      xv6 is written in ANSI C ( not in C++ )

    • -

      xv6

      +

      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 Docker?

    + + +
    -
      -
    • 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
    • -
    - -

    What is xv6?

    +
    + +

    Xv6 development environment with QEMU

    • -

      A Unix-like operating system developed in MIT.

      +

      QEMU emulates ARM CPU with virtual memory

      +
    • +
    • +

      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

      + +
      ... but it requires complex development environments setup
      +... very time consuming
      +
    @@ -128,18 +154,50 @@
    -

    What helped us

    +

    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

      +
    • +
    • +

      ARM libraries for C language

      +
    • +
    • +

      QEMU (ARM Emulator)

      +
    • +
    + + + +
    + +
    + +

    Introducing Docker

    + +
      +
    • +

      What is Docker? It is a container.

      +
    • +
    • +

      What is Container? An isolated envirornment such as file system.

      +
    • +
    • +

      It has DockerFile, which describes how to setup the envrionment in the container.

      +
    • +
    • +

      Docker can run on any computer using an emulator such as QEMU.

      +
    • +
    • +

      Complex development environment can be build using DockerFile and docker built command.

      +
    @@ -148,25 +206,27 @@
    -

    Why Docker?

    +

    The DockerFile

    -

    Features of Docker:

    +
    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
    +
    • -

      Easy and Faster Configuration

      -
    • -
    • -

      Increases productivity

      +

      FROM line specifies the shared image in Docker repository.

    • -

      Application Isolation

      +

      apt-get installs Linux cross compiling tools.

    • -

      Services

      -
    • -
    • -

      Security Management

      +

      Then it creates working directory, copies our sources to it, and executes make.

    @@ -176,14 +236,23 @@
    -

    Why xv6?

    +

    Docker commands

    • -

      It gives a good insight into Command Line Interface of Unix OS

      +

      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

      + +

      docker exec -it xv6-docker ./debug.sh

    @@ -193,11 +262,17 @@
    -

    Scheduling processes by their priorities

    +

    Exercise : Adding priorities to the xv6 scheduler

    • -

      Added getpriority() and setpriority() and get_highest_priority() functions in proc.c file of xv6

      +

      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

      @@ -210,30 +285,37 @@
      -

      The function

      - +

      Function used in our exercise to find highest priority process

      int get_highest_priority_proc(void)
       {
         int highest_priority;
         int pid = 0;
         int hpid = -1;
         int rpid = 0;
      -
         highest_priority=100;
      -  struct proc *p;
      + 
      + struct proc *p;
         for(p = ptable.proc; p < &ptable.proc[NPROC]; p++, pid++){
           if(p->state != RUNNABLE) {
      -      continue;
      -    }
      +      continue;    }
           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.

        +
      • +
      @@ -243,14 +325,28 @@

      Docker Limitation

      -

      Mutliple images present in repository due to form command.

      - -

      If repository breaks, Docker poses problem

      +
        +
      • +

        If repository breaks, Docker poses a problem (a cloud 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

      - +
      : 1561014922:0;docker system prune
      +: 1561014973:0;docker container prune
      +: 1561015350:0;docker image prune
      +: 1561015362:0;docker volume prune
      +
      @@ -261,13 +357,10 @@
      • -

        Docker environment poses some problems, some of which are difficult to comprehend

        +

        Docker environment poses some problems, some of which are difficult to comprehend.

      • -

        Storage is difficult too

        -
      • -
      • -

        Yet, it gives a good insight of the underlying important concepts of operating system beacuse it is well documented, fast and uses less resources

        +

        Yet, it gives a good insight of the underlying important concepts of operating system because it is well documented, fast and uses less resources.