OS

OS

크래프톤 정글 2기 2 PintOS Memory Mapped Files 헷갈리는거

1) code code 영역은 read-only로 page table에 mapping된다. 또한, sharable 하다는 특징이 있다. 디스크로부터 file의 내용이 변화없이 읽어져 와서 따로 변화를 백업해 둘 swap file을 만들지 않아도 되는 놈을 file-backed pages라고 하는데, code 영역이 실행파일 형태로 backed 되는 file-backed pages이다. 예를 들어 a.out이라는 executable file이 디스크로부터 메인메모리에 읽어져 오면, 이를 file-backed pages 라고 할 수 있는 것이다. 반대로 디스크의 어디에서 읽어져 온 지 불명확한 놈을 anonymous pages라고 한다. 즉 file-backed page -> 디스크로부터 메인메모리에 읽어져..

OS

크래프톤 정글 2기 2 PintOS Virtual Memory 중간진행

💡 추가 vm_type(가상 메모리 타입) VM_ANON ->(파일과 relate 되지 않은 페이지, aka anonymous page) VM_PAGE_CACHE -> (페이지 캐시를 가진 페이지) (project 4에서 사용) VM_FILE -> (파일과 relate 된 페이지) VM_UNINIT -> (초기화 되지 않은 페이지) 스레드 구조체는 하나의 프로세스의 페이지 테이블을 가리키는 포인터를 가지고 있다. ⇒ 그게 *pml4 page fault가 일어나는 경우 유저 프로그램이 커널 가상 메모리에 접근하려고 할 때 커널에서 매핑되지 않은 유저 가상 주소로 접근하려고 할 때 기존 load_segment() kpage 즉 커널 주소에 파일을 모두 load함 유저 page와 kpage를 install_p..

OS

크래프톤 정글 2기 2 PintOS Virtual Memory 메모리 용어정리

메모리 용어 정리 페이지 - 4,096 바이트의 길이(페이지 크기)를 가지는 가상 메모리의 연속된 영역 - 정렬되어 있어야 함 -> 4KB로 균등하게 나누어지는 가상 주소에서 시작 -> 64비트 가상주소의 마지막 12비트는 페이지 오프셋임 -> 각 프로세스는 독립적인 가상 페이지 집합을 가짐 프레임 - 물리메모리 상의 연속적인 영역임 - 페이지와 동일한 특성(정렬, 64비트 가상구소의 마지막 12비트는 오프셋) 페이지 테이블 - CPU가 가상주소를 물리주소로, 즉 페이지를 프레임으로 변환하기 위해 사용하는 자료구조(우리는 hash table씀) - 페이지 테이블은 페이지 넘버를 프레임 넘버로 변환, 프레임 넘버는 물리주소를 흭득하기 위한 미수정 오프셋과 결합되어있음 스왑슬롯 - 스왑 파티션내의 디스크 공..

OS

크래프톤 정글 2기 2 PintOS SystemCall

구현 중 힘들었던 점 1. OS개념부족(프로젝트 1에서 C에 나름 익숙해지고 sudo코드만 보고 짠게 돌아가니깐 신남 -> 내가 뭘 구현하는지조차 모르고 딥다이브 반복 -> 에러 발생시 머리 깨짐) 2. Lock을 마구 걸어주다가 다른곳에서 터짐 3. fork()를 왜하는지 모름 근데 만들어야되는 코드도 제일 까다로움 구현 후 추가 궁금증 Q. 프로세스를 생성할때, fork() 시스템콜로 현재 프로세스를 복사한 후, exec()시스템 콜로 자식프로세스의 내용을 변경하는 식으로 프로세스를 생성하는데 자식 프로세스와 부모프로세스의 차이점은 머임? A. 자식 프로세스는 자신의 주소공간, 자신의 레지스터, 자신의 PC(Program Counter(PC, 프로그램 카운터) : 다음에 수행될 명령어의 주소를 가지고..

OS

크래프톤 정글 2기 1-2 PintOS Command Line Parsing

과제 목표 - 커맨드 라인 파싱 기능 구현 과제 설명 - 핀토스는 프로그램과 인자를 구분하지 못함 따라서 프로그램 이름과 인자를 구분하여 스택에 저장, 인자를 응용 프로그램에 전달하는 기능 구현 과제를 해결하려면? 응용 프로그램 실행 흐름을 추적하여 프로그램 파싱 시점 파악 문자열 파싱을 담당하는 함수 이해 함수 호출 규약에 따른 인자 전달 메커니즘 이해하고 이를 저장하는 인터페이스 제작 우리가 수정할꺼! -> process_create_initd, process_exec 만들꺼! -> argument_stack

OS

크래프톤 정글 2기 1-2 PintOS Priority Scheduling(우선순위 스케줄링)

구현전에 알고 넘어가야되는 운영체제 개념 스케줄링? - 프로세스가 작업을 수행하려면 스케줄러로부터 cpu를 할당 받아야 함 할당을 받는 건 순서에 의해 받을 수 있고, 처리하게 되는 시간을 배정을 받음 *선점과 *비선점 방식 존재 즉 단위시간당 할 수 있는 처리량을 최대화 하려는거(성능 향상 목적) 선점 스케줄링? - 한 프로세스가 cpu를 할당받아서 실행하고 있을 때 다른 프로세스가 cpu를 사용하고 있는 프로세스를 중지시키고 cpu를 차지함 즉 우선순위가 높은 프로세스를 먼저 수행함 장점 - 응답이 빠름(실시간 응답환경) 문제점 - 우선순위 높은 프로세스가 계속 들어오면 *오버헤드 초래 오버헤드? - 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 ex) Round-Robin Scheduling ..

OS

크래프톤 정글 PintOS Project 1 프로세스/스레드

PintOS Project 1을 진행하며 가져갈거 프로세스와 스레드의 개념, 차이를 설명할 수 있어야함 멀티 프로세스 대신 멀티 스레드를 사용하는 이유를 설명할 수 있어야함 프로세스? 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 *프로그램(어떤 작업을 위해 실행할 수 있는 파일) 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 동적인 개념으론 실행되는 프로그램 의미함 프로세스 특징 프로세스는 각각의 독립된 영역(Code, Data, Stack, Heap)을 할당받음 프로세스는 최소 1개의 스레드(메인스레드)를 가지고있음 각 프로세스는 별도의 공간에서 실행되며 서로 변수나 자료구조에 접근 X 서로의 자원에 프로세스간의 통신(IPC, inter-p..

김상주
'OS' 카테고리의 글 목록