Transcript 슬라이드 1
Pintos overview Operating System Project kit 금오공과대학교 Introduce Pintos An instructional operating system Developed by Stanford university A few of the source files are derived from code used in the MIT OS course A real OS for 80x86 architecture (c.f. nachos) Run on a regular IBM-compatible PC or an x86 simulator The original structure and form was inspired by the nachos Written in C language Operating System Project - pintos overview Environments Bochs IA-32 emulator We will run Pintos on this emulator Bochs makes it easy to develop and debug Pintos projects Linux + Bochs We will use Linux(Debian) machine Operating System Project - pintos overview Environments - Client SSH client Official client : Putty Other clients : SecureCRT, Xshell, etc ... X-window server (Local – Client) Official server : Xming Other servers : Xmanager, Cygwin-X, etc ... Connect to experiment server Host : 'linda.kumoh.ac.kr' SSH with X11 forwarding Operating System Project - pintos overview Environments - Server Implemented in server – Recommend using this x86 emulator Bochs : Ready on experiment server You can get customized auto installation source from experiment server Pintos utilities QEMU (Faster than Bochs) Build from pintos source code Other basic utilities GCC compiler set, GDB, Perl Operating System Project - pintos overview Pintos set up linda.kumoh.ac.kr 접속 Pintos 압축 풀기 BOCHS 이미 설치되어 있음. (서버에 BOCHS 재설치 하지 말 것) $tar zxvf pintos.tar.gz Pintos 압축 푼 다음 $pintos/src/thread 로 이동 $make : 결과로 현재 디렉토리에 (src/thread) build라는 디 렉토리 생성됨 pintos 실행 $pintos/src/threads$ pintos –v -- run alarm-multiple Operating System Project - pintos overview Pintos set up Operating System Project - pintos overview Debug methods printf() – Traditional log based debug Assertion – Using ASSERT macro Backtraces – Find location in source GDB – Step-by-Step debugging Remote debugging to localhost (need 2 console) Modifying Bochs – Debug Triple Faults Operating System Project - pintos overview Tags - 1 함수나 전역변수에 쉽게 이동할 수 있는 인덱스 파일 Vi와 연동해서 사용할 수 있다. Make `tags` file & set for VI Operating System Project - pintos overview Tags - 2 이동하고자 하는 함수나 전역변수에 캐롯을 두고 Ctrl+] 바로 전 단계로 이동하고자 할 때는 Ctrl+T Operating System Project - pintos overview gdb - 1 Pintos는 기존의 GDB에 기능을 추가하여 편리한 스크 립트를 함께 제공한다. --gdb 옵션과 함께 pintos 를 실행하며, 또 다른 터미 널의 build 디렉토리에서 pintos-gdb를 실행한다. $pintos --gdb --gdb-port=1234 –v -- run alarmmultiple Gdb의 사용법 참조 사이트 http://www.gnu.org/software/gdb/documentation/ Operating System Project - pintos overview gdb - 2 Execute pintos with '--gdb' option user@linda:~/pintos/src/threads/build$ pintos --gdb -v --gdb-port=1234 -- run alarm-multiple --gdb-Port=1234 포트 번호를 지정하여 디버깅 출력 화면 Operating System Project - pintos overview gdb - 3 Execute gdb by pintos (In another terminal) user@linda:~/pintos/src/threads/build$ pintos-gdb kernel.o gdb 화면 Operating System Project - pintos overview gdb - 4 Connect to gdb session (gdb) target remote localhost:1234 지정한 포트 번호 Setup break point (gdb) break run_test Continue execution of code (It will pause at breakpoint) (gdb) continue 포트 번호 충돌 가능성이 존재 하므로 netstat 명령으로 해당 포트의 오픈 여부를 확인 Operating System Project - pintos overview gdb - 5 gdb 화면 출력 화면 Operating System Project - pintos overview Version Control Goal CVS and Subversion Keywords Cooperation development, Avoid version mixing, Improve code shareablity, Solving conflicts, Management of change histories, Blame, Automatic daily build, etc ... Repository, Module, Import, Checkout, Revision, Commit, Update, Lock, Tag, Branch, Release See more information on “Revision_control” in Wikipedia Operating System Project - pintos overview svn Compelling replacement for CVS in the open source community Change set revision, Fast execution, Atomic commit, Reduce network traffic, Configurable each Project, Easy to extends, Support many protocol, Clean source code, Similar usage with CVS Ready on experiment server Support 'file' and 'svn+ssh' protocol Each team have to elect source manager Recommend Microsoft Windows User to use 'tortoisesvn' (http://tortoisesvn.tigris.org/) Operating System Project - pintos overview svn Create svn directory Create svn repository user@linda:~$ mkdir svn user@linda:~$ svnadmin create svn/pintos Import module baseline user@linda:~$ ls pintos svn user@linda:~$ svn import pintos file:///home/jkang/svn/pintos/ (user@linda:~$ svn import pintos file://`pwd`/svn/pintos/) ... Adding pintos/src/examples/Makefile Adding pintos/src/examples/.cvsignore Committed revision 1. jkang@linda:~$ Operating System Project - pintos overview svn Delete original source user@linda:~$ ls pintos svn user@linda:~$ rm -rf pintos user@linda:~$ ls svn Checkout from repository user@linda:~$ svn checkout file://`pwd`/svn/pintos pintos ... A pintos/src/examples/Makefile A pintos/src/examples/.cvsignore Checked out revision 1. user@linda:~$ ls pintos svn Operating System Project - pintos overview svn Edit source code (Edit 'pintos/src/LICENSE' file) Commit If change set has new files, must execute 'svn add' before commit user@linda:~$ svn commit pintos Sending pintos/src/LICENSE Transmitting file data . Committed revision 2. user@linda:~$ Update (Different location and revision) user@linda:~$ svn update pintos U pintos/src/LICENSE Updated to revision 2. user@linda:~$ Operating System Project - pintos overview Thank you Operating System Project - pintos overview