annotate slide.md~ @ 3:623da64aac7a default tip

Internship_presentation
author shivanidubey
date Mon, 24 Jun 2019 13:05:55 +0900
parents 54dd75a92d04
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
1 title: Studying Operating System Using Docker Platform
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
2 author: Shivani Dubey
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
3 profile: Madan Mohan Malaviya University of Technology, Gorakhpur
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
4
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
5 ## Why do we study Operating System?
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
6
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
7 - Every computer system has an operating system, which manages the resources of the computer.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
8
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
9 - IoT or IT Services can't work well without resource managements.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
10
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
11 - To handle it, we have to understand the API of OS.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
12
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
13 - To understand the API, it is better to see the implementations.
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
14
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
15 - For example, API for tuning priorities of the processes.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
16
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
17 ## Xv6 Operating System as an educational tool
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
18
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
19 - A Unix-like operating system developed in MIT, based on V6 kernel
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
20
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
21 - xv6 is written in ANSI C ( not in C++ )
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
22
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
23 - xv6 is small and simple (9628 lines of codes)
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
24
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
25 - It can run on Raspberry Pi ( Small PC board )
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
26
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
27 - Or on ARM emulator such as QEMU
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
28
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
29 ## Xv6 development environment with QEMU
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
30
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
31 - QEMU emulates ARM CPU with virtual memory
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
32
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
33 - Xv6 operating sytem itself is running on QEMU
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
34
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
35 - gdb debugger can be attached to the emulated program (both in user space and system space)
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
36
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
37 - We can step and trace inside xv6 kernel
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
38
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
39 ... but it requires complex development environments setup
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
40 ... very time consuming
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
41
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
42 ## Our development environments
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
43
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
44
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
45 - homebrew (it simplifies installation of software in macOS)
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
46
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
47 - Mercurial repository of the lab where we saved everything using ssh
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
48
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
49 - Cross Compilers
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
50
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
51 - ARM libraries for C language
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
52
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
53 - QEMU (ARM Emulator)
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
54
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
55 ## Introducing Docker
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
56
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
57 - What is Docker? It is a container.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
58
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
59 - What is Container? An isolated envirornment such as file system.
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
60
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
61 - It has DockerFile, which describes how to setup the envrionment in the container.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
62
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
63 - Docker can run on any computer using an emulator such as QEMU.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
64
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
65 - Complex development environment can be build using DockerFile and docker built command.
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
66
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
67 # The DockerFile
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
68
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
69 ```
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
70 FROM phitek/qemu-arm
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
71 RUN apt-get update -y
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
72 RUN apt-get remove gdb -y
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
73 RUN apt-get install gcc-arm-none-eabi gdb-arm-none-eabi qemu-system-arm -y
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
74 WORKDIR /code
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
75 COPY ["src", "."]
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
76 RUN make
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
77 CMD /bin/bash
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
78 ```
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
79
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
80 - FROM line specifies the shared image in Docker repository.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
81
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
82 - apt-get installs Linux cross compiling tools.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
83
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
84 - Then it creates working directory, copies our sources to it, and executes make.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
85
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
86 ## Docker commands
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
87
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
88 - Create docker image and environment, and build xv6 kernel
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
89
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
90 docker build --tag xv6-docker
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
91
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
92 - Run xv6 kernel on QEMU in the container
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
93
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
94 docker run --rm --privileged -it xv6-docker ./run-debug.sh
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
95
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
96 - Run gdb to connect the xv6 kernel running in the QEMU
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
97
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
98 docker exec -it xv6-docker ./debug.sh
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
99
0
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
100
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
101
845dadcd3a85 slide.html
shivanidubey
parents:
diff changeset
102
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
103
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
104 # Exercise : Adding priorities to the xv6 scheduler
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
105
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
106 - Added getpriority() and setpriority()
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
107
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
108 - get_highest_priority() functions in proc.c file of xv6
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
109
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
110 - Implemented it in schelduler()
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
111
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
112 - Added a test function testpriority() in usertests.c file of xv6 to implement our algorithm
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
113
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
114 ## Function used in our exercise to find highest priority process
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
115 ```c
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
116 int get_highest_priority_proc(void)
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
117 {
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
118 int highest_priority;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
119 int pid = 0;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
120 int hpid = -1;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
121 int rpid = 0;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
122
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
123 highest_priority=100;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
124 struct proc *p;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
125 for(p = ptable.proc; p < &ptable.proc[NPROC]; p++, pid++){
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
126 if(p->state != RUNNABLE) {
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
127 continue;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
128 }
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
129 rpid = pid;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
130 if (highest_priority > p->priority) {
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
131 highest_priority=p->priority;
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
132 hpid = pid; }
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
133 }
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
134 return hpid > 0?hpid:rpid;
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
135 }
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
136 ```
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
137 - It assumes at least one process to be RUNNABLE.
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
138
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
139 - It may allow no highest priority process.
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
140
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
141 - The correctness of the function is *important*.
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
142
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
143 ## Docker Limitation
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
144
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
145
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
146 - If repository breaks, Docker poses a problem (a cloud problem).
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
147
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
148 - Cloud may be used conveniently but we must not rely on it.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
149
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
150 - We can use a direct environment without Docker, since we have a Linux server.
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
151
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
152 - Docker images can easily eat up our disk spaces.
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
153
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
154 in ~/.zsh_history
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
155
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
156 ```c
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
157 : 1561014922:0;docker system prune
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
158 : 1561014973:0;docker container prune
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
159 : 1561015350:0;docker image prune
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
160 : 1561015362:0;docker volume prune
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
161 ```
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
162 # Conclusion
1
be770be61183 Updated
shivanidubey
parents: 0
diff changeset
163
2
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
164
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
165 - Docker environment poses some problems, some of which are difficult to comprehend.
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
166
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
167
54dd75a92d04 fix slies
shivanidubey
parents: 1
diff changeset
168
3
623da64aac7a Internship_presentation
shivanidubey
parents: 2
diff changeset
169 - Yet, it gives a good insight of the underlying important concepts of operating system because it is well documented, fast and uses less resources.