sw사관학교정글 59

[week13] KOCW 운영체제(반효경교수님) - File System Implementation 2

File systems implementation 2 Page cache and buffer cache 운영체제가 file입출력을 할 때 사용자 프로그램의 요청을 받아서 disk에서 읽어온 내용을 그냥 전달하는 게 아니라 자신의 buffer cache 영역에 읽어놓고, 그 내용을 copy로 넘겨주기 때문에 다음번에 동일한 file data에 대한 read, write system call이 오면, disk까지 가지않고 buffer cache에서 처리한다. 예전에는 sector단위는 512byte였다. 최근에는 buffer cache가 page cache와 통합이 되면서 buffer cache에서 사용하는 단위도 4KB를 사용한다(unified buffer cache). unified buffer cach..

[week13] KOCW 운영체제(반효경교수님) - File System Implementation 1

File System Implementation 1 지난 시간 리뷰 storage에 있는 data에 접근하는 방법에는 순차접근(sequential access)과 직접접근(random access)이 있다. 그 매체에 따라 다른데 tape은 순차접근만 된다. hard disk, flash memory, CD들은 직접접근이 가능하다. 직접 접근이 가능한 매체라도 data를 어떻게 관리하느냐에 따라서 순차접근만 허용될 수도 있고 직접접근이 가능할 수도 있다(지금은 무슨말인지 몰라도 뒤에 읽다보면 이해가 된다). Allocation of File Data in Disk file은 크기가 일정하지 않다. 그러나 disk에 file을 저장할 때는 동일한 크기의 sector 단위로 나눠서 저장한다. file sys..

[week13] KOCW 운영체제(반효경교수님) - File Systems

File Systems File and File System file a named collection of related information 일반적으로 비휘발성의 보조기억장치에 저장 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해줌 operation(연산) create, read, write, reposition(lseek), delete, open, close 등 File attribute(혹은 file의 metadata) 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들 파일 이름, 유형, 저장된 위치, 파일 사이즈 접근 권한(읽기/쓰기/실행), 시간(생성/변경/사용), 소유자 등 File system 운영체제에서 파일을 관리하는 부분 파일 및 파일의 ..

[week12] PintOS - Project 3(Virtual Memory) : 핀토스는 확률게임인가

Project 3 : 핀토스는 확률게임인가 현재상황 FAIL tests/filesys/base/syn-read FAIL tests/userprog/create-null FAIL tests/userprog/open-null FAIL tests/vm/swap-file FAIL tests/vm/swap-anon FAIL tests/vm/swap-iter FAIL tests/vm/swap-fork FAIL tests/vm/cow/cow-simple //extra 수정 시작 swap tests를 고쳐보자. victim을 찾아야 되는데 return 을 NULL로 하고 있었다. static struct frame * vm_evict_frame (void) { // project 3 struct frame *victi..

[week11] PintOS - Project 3(Virtual Memory) : Swap In/Out

Project 3 : Swap In/Out 구현 무엇을 하는가? Memory swapping은 physical memory 사용을 극대화하기 위한 memory 회수 기법이다. main memory의 frame이 할당되면 system은 user program의 메모리 할당 요청을 더 이상 처리할 수 없다. 한 가지 해결책은 최근에 사용되지 않는 memory frame을 disk로 교체하는 것이다. 이렇게 하면 일부 memory resource가 확보되어 다른 응용프로그램에서 사용 가능해진다. 가상 주소 안의 VPN에 Present Bit을 두어 해당 페이지가 디스크로 스왑되었는지를 나타낸다. swapping은 OS 에 의해 실행된다. system에서 memory가 부족한데 메모리 할당 요청을 받으면 교환할..

[week11] PintOS - Project 3(Virtual Memory) : Memory mapped files

Project 3 : Memory mapped files 구현 무엇을 하는가? 이 섹션에서는 memory-mapped pages를 구현한다. anonymous pages와 달리 memory-mapped pages는 file-backed mapping이다. page의 내용들은 현재 file의 data들을 복사해 온 내용들이다. page fault가 발생하면 physical frame이 즉시 할당되고 파일로부터 메모리로 내용이 복사된다. memory-mapped pages가 unmapped되거나 swap out 되면, contents의 수정사항이 file에 반영된다. mmap의 장단점 장점 프로세스가 가지고 있는 읽기 혹은 쓰기 buffer에 복사해서 data를 가져오는 것이 아니라 바로 file에서 가져와..

[week11] PintOS - Project 3(Virtual Memory) : Stack growth

Project 3 : Stack growth 구현 무엇을 하는가? project 2에서 stack은 USER_STACK부터 시작하는 단일 page였으며 프로그램의 실행은 이 크기로 제한되었다. 이제 stack이 현재 크기를 초과하면 필요에 따라 추가 page를 할당한다. page fault가 발생했을 때, 이 page fault가 stack growth에 대한 page fault인 경우, stack을 키운다. stack growth 기능 구현 먼저 syscall handler를 수정한다. void syscall_handler (struct intr_frame *f UNUSED) { #ifdef VM thread_current()->rsp_stack = f->rsp; #endif ... } system c..