Geek-OS Project 정영진 cyj4369@gmail.com.

Slides:



Advertisements
Similar presentations
Geek-OS 단국대학교 정영진 Geek-OS 설치 및 개발환경구축 정영진
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
OS 소개 Introduction 설계목표 기본 용어 Resource Management History.
화일구조.
Basic of Buffer Over Flow
Project #2-2. Pintos User Program
Introduction to Django
박주현 Exploit Helpers 안녕하세요 포너블을 도와주는 exploit helpers에 대해 발표하게된 박주현이라고 합니다.
시작부터 끝까지 진지한 궁서체로 진행하는 완벽한 주입식의 하드코어한 리눅스/장난감 세미나
제 4 장 프로세스 Section 1 프로세스의 개념 Section 2 프로세스 스케줄링
정보통신실습 및 특강(5)
리눅스 실습 정성훈.
컴퓨터 네트워크 실습.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
제6장 FUSING.
PXA270 개발환경 설정 Ubuntu 실습용.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
Makefile의 이해 ㈜FALinux 박진호.
System Call Linux Kernel 수업 3번째.
제4장 Cross Compiler 설치.
Geek OS Setup 정범종
Uniprocessor Scheduling
Minicom,tftp,nfs설정,vnc설정
FUSING.
운영체제 (Operating Systems)
프로세스 관리.
6장 단일 프로세서 스케줄링.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
1. 스케줄링 개요 [그림 6-16] 프로세스의 반환, 대기, 반응 시간
Tftp, nfs, samba 실습 임베디드 시스템 I.
임베디드 운영체제 (리눅스 중심) Lecture #2.
[beginning] Linux & vi editor
운영체제와 Windows XP 초등 ICT 교육 방법론 2013년 1학기.
Linux/UNIX Programming
UNIX Unbounded A Beginning Approach
+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation
컴퓨터 네트워크 실습.
Embedded System Porting (2)
Geek OS.
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
Lecture #3 프로세스(Process).
커널 모듈 프로그래밍 (Kernel Module Programming)
제3,4,5장 프로세스, 스레드 관리 CPU 스케줄링.
Chapter 10. 파일 시스템 인터페이스(File System Interface)
실시간 자원 량 정보 제공을 결합한 Heartbeat
Linux/UNIX Programming
제 11 장 전처리기.
제5장 CPU스케줄링(CPU Scheduling)
제4장 유닉스 쉘 숙명여대 창병모 2011 가을.
Memory & Data Management.
CGI (Common Gateway Interface)
기억장치 관리(Memory Management)
Kernel Programming Environment
운영체제 (Operating Systems) (Memory Management Strategies)
VI Editor 부서 : 연구소 이름 : 노재용.
WinCE Device Driver 실습 #2
운영체제 RaspberryPi Sejin Oh.
Operating System Multiple Access Chatting Program using Multithread
23. Unix 시스템 커널. 개요 커널의 기본 서비스 커널의 특징 참고서적 프로세스 관리 장치 관리 파일 관리 가상 메모리
화일구조.
제4장 유닉스 쉘 숙명여대 창병모
Windows System Programming
WinCE Device Driver 실습 #2
Makefile
Virtual Machine Management
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
한국 휴렛팩커드/고객지원사업본부/IT 기술사업부 박기영
가상 기억장치 (Virtual Memory)
Presentation transcript:

Geek-OS Project 정영진 cyj4369@gmail.com

Geek-OS Geek-OS project # 0~5 Project # 0 : 프로젝트 작업환경 구축 Project # 1 : Loading Executable Files Project # 2 : Process Project # 3 : Scheduling & Semaphore Project # 4 : Virtual Memory Project # 5 : File System

Geek-OS project User process Text Stack User process 생성 과정 구현 Load_User_Process() 구현 읽은 ELF 정보를 통해 process segment를 구성 Create_User_Context() 구현 User context 구조체 초기화 및 LDT 할당 ELF Header Program Header Table Segment 1 ... Section Header Table (optional) Segment n <ELF> <GDT> <User Context> ... Kernel Code Segment Kernel Data Segment LDT Descriptor struct Segment_Descriptor ldt[0] struct Segment_Descriptor ldt[1] struct Segment_Descriptor *ldtDescriptor ... unsigned short ldtSelector unsigned short csSelector unsigned short dsSelector ulong_t argBlockAddr ulong_t stackPointerAddr LDT Text Data Argu- ment Stack User Context memory space

Geek-OS project Scheduler Multi Level Feedback 스케줄러 구현 Get_Next_Runnable() 구현 Round-Robin 스케줄러에 Multi Level Feedback 스케줄러를 추가 Time quantum이 서로 다른 4개의 우선순위 큐 사용 Multi Level Feedback에서 발생하는 starvation 방지 Ready Queue 0 process A process B Ready Queue 1 Ready Queue 2 Ready Queue 3

Geek-OS project Semaphore 동시성 제어를 위한 세마포어 구현 Sys_CreateSemaphore() 구현 Sys_DestroySemaphore() 구현 사용이 끝난 semaphore 삭제 Sys_P() 구현 Critical section에 다른 process가 있을 때 semaphore의 count 감소 Sys_V() 구현 Critical section에서 process가 빠져나올 때 semaphore의 count 증가 process Critical Section process Semaphore waitQueue process

Geek-OS project Paging 2단계 paging을 구성 Init_VM() 구현 Page directory 및 page table 초기화 Find_Space_On_Paging_File() 구현 Paging file로부터 비어있는 page를 탐색 Read_From_Paging_File() 구현 디스크에 page read request를 발생 Write_To_Paging_File() 구현 디스크에 page write request를 발생 Page Directory Table in Virtual Memory

Running snapshot Running snapshot

Geek-OS directory tree project0 build src scripts include geekos user libc … geekos libc geekos user libc …

Geek-OS source Geek-OS kernel source src/geekos/ include/geekos/ main.c userseg.c kthread.c syscall.c paging.c include/geekos/ user.h kthread.h syscall.h paging.h

ctags ctrl + ] ctrl + t ctags What is ctags? Install How to use? 큰 규모의 소스 분석을 위한 유틸리티 소스 파일에서 선언부로 쉽게 이동 Install $sudo apt-get install ctags How to use? 프로젝트 상위 디렉토리에 데이터베이스 생성 $ctags -R 선언된 부분으로 이동 ctrl + ] 원위치로 복귀 ctrl + t ctrl + ] ctrl + t

cscope cscope What is cscope? Install 큰 규모의 소스 분석을 위한 유틸리티 ctags의 부족한 기능을 보완 변수, 함수가 사용된 곳을 찾을 수 있다 Install $sudo apt-get install cscope mkcscope.sh 스크립트 생성 $vi mkcscope.sh $chmod 755 mkcscope.sh $mv mkcscope.sh /usr/local/bin #!/bin/sh rm -rf cscope.files cscope.files find . \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name    '*.S' \) -print > cscope.files cscope -i cscope.files

cscope vim install vim 설정파일에 내용 추가 vi보다 풍부한 기능을 제공하는 편집기 $sudo apt-get install vim vim 설정파일에 내용 추가 $~/.vimrc set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb if filereadable("./cscope.out") cs add cscope.out else cs add /usr/src/geek-os/project0/cscope.out endif set csverb

cscope ctrl + d tap How to use? 프로젝트 상위 디렉토리에 데이터베이스 생성 $cd /usr/src/geek-os/project0 $mkcscope.sh How to use? mkcscope.sh 명령으로 나타난 화면에서 질의 vim 편집기상에서 직접 사용 명령행 모드에서 질의 :cs find {질의 종류} {심볼} ex) :cs find s main ctrl + d tap cscope 의 질의 종류 0 or s - > Find this C symbol 1 or g - > Find this definition 2 or d - > Find functions called by this function 3 or c - > Find functions calling this function 7 or f - > Find this File 8 or i - > Find files #including this file

grep grep What is grep? How to use? 원하는 텍스트를 검색하기 위한 shell 명령 별도의 설치 없이 사용 가능 How to use? 찾으려는 텍스트를 명령과 함께 입력 grep [option] <string> <target file name> $grep hello * 옵션 사용 -r : 하위 디렉토리까지 검색 -i : 대소문자를 구별하지 않음 -n : 파일 내 행 번호를 함께 출력 -v : 텍스트를 제외하고 검색 ex) $grep -inr hello *

make make What is make? What is Makefile? How to use? 일반적으로 큰 규모의 소스코드를 컴파일 하는데 사용 별도의 설치 없이 사용 가능 What is Makefile? 컴파일 과정의 반복적 명령을 자동화하여 기술한 파일 make 명령을 위해 반드시 필요 How to use? 컴파일하려는 프로젝트 디렉토리 내 Makefile이 존재하는 경로에서 실행 $make Makefile에 기술된 대로 컴파일 과정을 수행

Project User Process Scheduler Semaphore Paging Screen을 공유자원으로 활용하여 서로 다른 텍스트를 출력하는 두 개의 process의 동시성 제어 Paging 많은 페이지를 요구하는 프로세스를 수행하여 paging을 통해 정상적으로 실행되는 것을 보인다

Project 프로젝트 그룹 프로젝트 수행관련 그 외 기타 질문사항 : e-mail 또는 미디어센터 509호 각 팀은 5명으로 구성 4가지 프로젝트 주제 중 1개 선택 주제 선정 : 중간고사 이후 팀 구성 완료 기간 : 1주(팀을 정하여 e-mail로 제출) (e-mail : cyj4369@gmail.com) 프로젝트 수행관련 원본 Geek-OS에서 구현해야 하는 부분이지만 현재 수업 프로젝트에서 구현에 포함되지 않는 함수 -> 구현된 소스코드 사용 다른 팀에서 구현해야 하는 소스에 대한 종속문제 -> 오브젝트파일 사용 그 외 기타 질문사항 : e-mail 또는 미디어센터 509호

Homework Homework Ubuntu 10.04 설치(가상머신 or 직접설치 둘 다 가능) Geek-OS 0.3.0 설치 Geek-OS를 실행하여 “hello Geek-OS! 팀원의 학번” 메시지 출력 제출기간 : 2주 제출방법 : 팀별로 e-mail을 통해 제출(수업시간에 제출 인정x) (e-mail : cyj4369@gmail.com)