Project #2-2. Pintos User Program

Slides:



Advertisements
Similar presentations
Term Project Hints Topics Keep-alive CGI Multi-thread Multi-process Event-based.
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++ 통합 환경 들어가기.
© DBLAB, SNU 화일구조. 강의 소개 - 화일구조  Instructor : Prof. Sukho Lee (301 동 404 호 )  홈페이지 :  교과목 개요 – 이 과목은 데이타 관리와 응용을 위한 화일 구조의 설계와.
화일구조.
Vision System Lab, Sang-Hun Han
Operating Systems : Project #2-1. Pintos User Program.
6주차:『GPU(CUDA) Programming』
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Linux/UNIX Programming
SYSTEM CALL (Syscall) CSLAB SEWON PARK.
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
제 2장 컴퓨터 구조.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
디렉토리 다루기 ㅎㅎ 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd
Department of Computer Engineering
System Call Linux Kernel 수업 3번째.
Internet Computing KUT Youn-Hee Han
FUSING.
디바이스 드라이버 기초 디바이스 드라이버의 개요 파일 연산 디바이스 드라이버 등록 디바이스 드라이버 구성
이식성과 데이터형 서로 다른 프로세서 상에서의 이식성을 위해 가급적 리눅스 커널이 제공하는 데이터형을 사용하는 것이 좋다.
디바이스 드라이버 개요 가상 디바이스드라이버 실습
Multi-thread Programming
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Unix Project-Final <test character device 생성>
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
Embedded System Porting (2)
Department of Computer Engineering
Step Motor Device Driver
Internet Computing KUT Youn-Hee Han
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
Linux/UNIX Programming APUE (Files & Directories)
Operating System 5주차 - System Call Analysis -
Geek-OS Project 정영진
파일 기술자 복사 파일 기술자 복사 : dup(2) 파일 기술자 복사 : dup2(3)
운영체제 (Operating Systems)
Xen and the Art of Virtualization
Department of Computer Engineering
Chapter 10. 파일 시스템 인터페이스(File System Interface)
파일 시스템 인터페이스(File System Interface)
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Lecture 1. Overview of the Course
adopted from KNK C Programming : A Modern Approach
문자 디바이스 드라이버 임베디드 시스템.
제4장 유닉스 쉘 숙명여대 창병모 2011 가을.
성균관대학교 전자전기컴퓨터공학과 오영환, 박효진
Memory & Data Management.
Linux/UNIX Programming
Modeling one measurement variable against another Regression analysis (회귀분석) Chapter 12.
Introduction to Programming Language
네트워크 프로그래밍의 이해 School of Electronics and Information.
Transmission Control Protocol (TCP)
Operating System 10주차 - IPC(InterProcess Communication) -
JFS operation HP Korea / Operations JFS operation.
Stepper Motor 디바이스 드라이버
Linux/UNIX Programming
Operating System Multiple Access Chatting Program using Multithread
nauten Compiler – Report Ver.3 Mini-C (주간)
화일구조.
Homework #7 (1/4) 다음 프로그램을 작성하고, 프로그램과 실행 결과를 함께 제출한다.
8. 리눅스의 내부 군자삼락 [君子三樂] 청출어람이청어람 [ 靑出於藍而靑於藍 ] Why Linux ?
Internet Computing KUT Youn-Hee Han
Modeling one measurement variable against another Regression analysis (회귀분석) Chapter 12.
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
화 일 구 조 Chapter 3 화일의 입출력 제어.
제4장 유닉스 쉘 숙명여대 창병모
Peer-to-Peer SIP Network Using Distributed Hash Table
[CPA340] Algorithms and Practice Youn-Hee Han
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
Presentation transcript:

Project #2-2. Pintos User Program Operating Systems : Project #2-2. Pintos User Program

Project2 Pintos Project 2. User Program § 파일 시스템 관련 시스템 콜을 구현 § 파일 시스템 관련 시스템 콜을 구현 § 시스템 콜: create, remove, open, close, filesize, read, write, seek, tell Distributed and Cloud Computing Lab.

File System Call Implementation Distributed and Cloud Computing Lab.

Base File System (1) • 파일 시스템 관련 시스템 콜을 구현하기 위해, Pintos의 기본적인 파일 시스템 구조(Base File System)를 이해할 필요가 있다 § 파일 시스템의 내부 구조를 이해하라는 뜻 아님 § 개론적인 내용 내지는 API 사용법 숙지 필요 Base File System (from pintos document) No internal synchronization File size is fixed at creation time File data is allocated as a single extent No subdirectories Filename’s length limitation Distributed and Cloud Computing Lab.

Base File System (2) • Project 2의 파일시스템 사용은 한 개의 파일시스템의 root directory(/) 에서의 연산만을 가정한다 (No subdirectories) • Kernel에서 의 파일 접근 § filesys/file.c에 존재하는 struct file을 통해 가능하다. § (본 프로젝트에서는 inode level에서의 접근은 필요하지 않다) /* An open file */ struct file { struct off_t bool inode *inode; pos; deny_write; /* File’s inode */ /* Current position */ /* Has file_deny_write() been called? */ } Distributed and Cloud Computing Lab.

Base File System (3) • 기본적인 파일 시스템 사용 인터페이스는 다음과 같다 fopen(…) open(…) • 기본적인 파일 시스템 사용 인터페이스는 다음과 같다 n User Level 에서 fopen() 함수 호출 fopen(…) n 0x30 인터럽트 발생->system call handler 호출->open() 호출 open(…) n Open() 내부에서는 filesys_open() 함수를 호출하여 실제 파일을 open (이것이 구현할 부분) filesys_open(…) Distributed and Cloud Computing Lab.

Base File System (4) Example in Pintos Pintos test program에서 open() 호출 Distributed and Cloud Computing Lab.

System Calls about File System write() and read() File Descriptor(표준 C의 FILE*와 비슷하다) open(), create() 등의 return value. • Pintos에서는 각 thread가 독립적인 FD를 가지며, 관리한다. File Descriptors of STDIN, STDOUT STDIN = 0 STDOUT = 1 § read(0)의 구현은 다음 함수를 이용하면 된다. pintos/ src/devices/input.c:uint8_t input_getc(void) § write(1)의 구현은 다음 함수를 이용하면 된다. pintos/src/lib/kernel/console.c:void putbuf(…) Distributed and Cloud Computing Lab.

Useful API (1) • 파일 시스템 관련 시스템 콜 구현 시 사용되는 API. § filesys/filesys.h bool filesys_create (const char *name, off_t initial_size); struct file *filesys_open (const char *name); bool filesys_remove (const char *name); filesys/file.h void file_close (struct file *); off_t file_read (struct file *, void *, off_t); off_t file_write (struct file *, const void *, off_t); void file_deny_write (struct file *); void file_allow_write (struct file *); void file_seek (struct file *, off_t); off_t file_tell (struct file *); off_t file_length (struct file *); • 6, 7페이지 설명 + 이 페이지를 참고하여 구현하도록 한다 (구현할 시스템콜은 file_xxx를 호출해주는 인터페이스 역할) Distributed and Cloud Computing Lab.

Useful API (2) - Example fopen(…) open(…) filesys_open(…) Distributed and Cloud Computing Lab.

Denying Writes to Executables 1. 프로세스는 메모리에 로드된 후 실행되기 때문에 실제 executable file은 지워져도 문제가 없을 수도 있다. 2. 하지만 pintos는 실행중인 프로그램의 executable file이 지 워지지 않기를 원하며, 이것을 구현한다. 3. 다음의 File System 함수가 유용하게 사용될 수 있다. pintos/src/filesys/file.c:void file_deny_write(…) pintos/src/filesys/file.c:void file_allow_write(…) Distributed and Cloud Computing Lab.

Synchronization APIs In ‘pintos/src/threads/synch.c’ void lock_init(struct lock *); void lock_acquire(struct lock *); bool lock_try_acquire(struct lock *); void lock_release(struct lock *); bool lock_held_by_current_thread(const struct lock *); void sema_init(struct semaphore *, unsigned value); void sema_down(struct semaphore *); void sema_try_down(struct semaphore *); void sema_up(struct semaphore *); void sema_self_test(void); Distributed and Cloud Computing Lab.

Protect Critical Section n processes all competing to use some shared data. Each process has a code segment, called critical section, in which the shared data is accessed. Problem – ensure that when one process is executing in its critical section, no other process is allowed to execute in its critical section Test Case에서 Critical Section에 들어가는 영역을 잘 파악 하여 Synchronization API를 활용, 이를 보호해야 한다. ex) syn-read, syn-write Distributed and Cloud Computing Lab.

Test Set l l l l l l l l l l l l l l l l l l l create-normal create-empty create-null create-bad-ptr create-long create-exists create-bound open-normal open-missing open-boundary open-empty open-null open-bad-ptr open-twice close-normal close-twice close-stdin close-stdout close-bad-fd l read-normal bad-read2 read-bad-ptr bad-write2 read-boundary bad-jump read-zero bad-jump2 read-stdout multi-oom read-bad-fd lg-create write-normal lg-full write-bad-ptr g-random write-boundary lg-seq-block write-zero lg-seq-random write-stdin sm-create write-bad-fd sm-full multi-child-fd sm-random rox-simple sm-seq-block rox-child sm-seq-random rox-multichild syn-read bad-read syn-remove syn-write bad-write Total : 56 tests n123

Submission 1. Team project 2. Deadline: 11월 13일(금) 오후 5시 E-mail 제출 pintos/src 에서 make clean 수행한 후, § 조 번호로 디렉토리를 만들고 그 안에 pintos 디렉토리와 document 복사 § 조 번호 디렉토리 전체를 os_prj2_2_조번호.tar.gz 으로 압축 (조번호는 두자리 숫자로) Ex. tar -czvf os_prj2_2_02.tar.gz ./02 § 메일 제목 : [OS_PRJ_#2] 00조 oshw2015@gmail.com 로 제출 • 메일제목, 압축파일명 등이 양식에 어긋날 경우, 제대로 제출처리가 되지 않을 수 있으니 반드시 신경 써서 양식에 맞게 제출해 주시기 바랍니다 Document AS815에 hardcopy 제출 Document deadline도 source code deadline과 같습니다. Distributed and Cloud Computing Lab.