본문 바로가기
728x90

운영체제22

pintOS | Project 4 회고 1. Project4 목표 pintos-project4 git book Introduction · GitBook Project 4: File Systems In the previous two assignments, you made extensive use of a file system without actually worrying about how it was implemented underneath. For this last assignment, you will improve the implementation of the file system. You will b casys-kaist.github.io 핀토스 프로젝트4의 주제는 File System이다. 이전까지 핀토스는 단일 디렉터리만 존재하는 단일.. 2021. 11. 2.
pintOS | Project 4 | Subdirectories and Soft Links 기본적인 파일 시스템에서 모든 파일들은 하나의 디렉토리에 있다. 디렉토리 엔트리가 파일이나 다른 디렉토리를 가르키도록 수정해야 한다. 즉 root 디렉토리 내 파일과 디렉토리를 생성할 수 있도록 계층구조를 구현해야 한다. 전 포스팅에서 현대 파일 시스템은 초기 사이즈가 0으로 생성되고 파일 끝 부분에 write될 때 확장된다고 했다. 디렉토리 역시 원래 크기 이상으로 확장될 수 있도록 하자. 기본 파일 시스템은 파일 이름이 14 character 제한이 있다. 개별적으로 파일 이름 구성요소에 대한 제한을 유지하거나 확정하거나 등 원하는대로 확장할 수 있다. 각 프로세스에 대해 별도의 현재 디렉토리를 유지하라. 시작 시 루트(root)를 초기화한 프로세스의 현재 디렉토리로 설정해라. 하나의 프로세스가 fo.. 2021. 10. 30.
pintOS | Project 4 | Indexed and Extensible Files 기본 파일 시스템은 외부 단편화에 취약한 single extent로 파일을 할당한다. 즉 n-block 파일은 n개의 블록이 할당 가능 상태일지라도 할당되지 않는다(외부 단편화 얘기). on-disk inode 구조체를 수정하여 이 문제를 제거해라. on-disk inode 구조체가 뭘까. 확인해봐야겠지? 이 구조체는 filesys/inode.c 에 있다. /* On-disk inode. * Must be exactly DISK_SECTOR_SIZE bytes long. */ struct inode_disk { disk_sector_t start; /* First data sector. */ off_t length; /* File size in bytes. */ unsigned magic; /* Magi.. 2021. 10. 29.
pintOS | Project 4 | Introduction pintos-kaist project 4 gitbook ↓ Introduction · GitBook Project 4: File Systems In the previous two assignments, you made extensive use of a file system without actually worrying about how it was implemented underneath. For this last assignment, you will improve the implementation of the file system. You will b casys-kaist.github.io ※ 해석 내 멋대로임. 수정 및 보완 부분 있으면 알려주세여 Project 4: File Systems 이전 프로.. 2021. 10. 28.
pintOS | Project 3 회고 1. Project3 목표 pintos-project3 git book Introduction · GitBook Locate the page that faulted in the supplemental page table. If the memory reference is valid, use the supplemental page table entry to locate the data that goes in the page, which might be in the file system, or in a swap slot, or it might simply be an al casys-kaist.github.io 핀토스 프로젝트 3의 주제는 Virtual Memory이다. 프로젝트 3 이전까지 핀토스는 세그먼트를.. 2021. 10. 28.
운영체제(Operating System) | 메모리(Memory) 스레드까지 하다 갑자기 메모리까지 점프... 어쩔 수 없다. 지금 핀토스 virtual memory를 진행하고 있어서 일단 메모리 관련 OS부터 정리하려고 한다. 메모리 시스템은 여러 가지 용량, 비용, 접근 시간을 가지는 저장 장치들의 계층구조이다. 메모리 계층구조는 아래 사진 참조! CPU 레지스터: 가장 자주 이용하는 데이터 보관(locality) 캐시: SRAM. CPU부근에서 비교적 느린 메인메모리에 저장된 데이터와 인스트럭션들의 부분집합에 대한 준비장소 메인메모리: DRAM. 크고 느린 디스크들에 저장된 데이터를 준비하는 데 사용, 이 디스크들은 네트워크로 연결된 다른 머신들의 디스크에 저장된 데이터를 위한 준비장소 1. RAM(랜덤-접근 메모리) | SRAM (정적 RAM) SRAM, 즉 정.. 2021. 10. 26.
pintOS | Project 3 | 버그잡자 현재 깃북을 따라 project 3을 구현하고 있고, Memory Mapped file까지 완료한 상태다. 여기에 Anonymous page 때 적지 않았던 부분들을 일단 구현했다. (현재는 swap in/out까지 구현 완료) copy와 clean up 작업을 하기 위해서 spt를 재방문한다. spt를 재방문 하는 이유는 아까 구현했던 초기화와 관련된 함수들을 사용하기 때문이다. 먼저 copy하는 함수부터 보자. bool supplemental_page_table_copy (struct supplemental_page_table *dst, struct supplemental_page_table *src); 함수 인자를 보면 dst와 src가 있는데, spt의 src에서 dst로 복사한다는 뜻이다. 이 .. 2021. 10. 22.
pintOS | Project 3 | Swap In/Out Memory swaping은 물리 메모리의 사용을 극대화하기 위한 메모리 회수 기술이다. 메인 메모리의 프레임들이 할당될 때, 시스템은 유저 프로그램으로부터 메모리 할당 요청을 처리할 수 없다. 이를 위한 해결 방법 중 하나는 현재 디스크에 사용되지 않는 메모리 프레임을 swap out하는 것이다. 이것은 몇몇 메모리 자원들을 가용가능하게 하고 다른 어플리케이션을 사용가능하게 한다. 스와핑은 OS에 의해 실행된다. 시스템은 메모리 할당 요청을 받았는데 메모리가 부족하다면, 디스크를 스왑할 페이지를 선택한다. 그 후 메모리 프레임의 상태는 디스크에 복사된다. 하나의 프로세스가 스왑 아웃 되었던 페이지에 대한 접근을 시도할 때, OS는 정확한 내용을 메모리로 다시 가져와 페이지를 복구한다. 이 때 선택되는 .. 2021. 10. 21.
pintOS | Project 3 | Memory Mapped Files 이전 파트에서는 anonymous page에 대해서 공부하고 구현했다. Memory maaped file 파트에서는 메모리가 매핑된 페이지에 대해 구현한다. memory mappped page들은 file-backed 매핑이다. 이 페이지 안의 내용들은 이미 존재하는 파일의 데이터를 복제하기 때문에 페이지 폴트가 발생했을 때 즉시 프레임에 할당된다. 메모리가 해제되거나 스왑 아웃될 때 내용의 변경 사항들은 파일 안에 다 반영된다. 자 그럼 뭘 해야 하나. 메모리가 매핑된 파일을 호출하는 시스템 콜인 mmap() 과 munmap()을 구현하라고 한다. VM시스템은 mmap 영역에서 lazy load가 되도록 해야 하며, mmap 파일 자체를 매핑을 위한 백업 저장소로 사용해야 한다. void *mmap (.. 2021. 10. 20.
728x90
LIST