분류 전체보기 73

[week09] PintOS - Project 2(User Programs) : System Calls 나머지

Project 2 : System call 나머지 나머지 system call들을 구현해보도록 하자! syscall.c 헤더파일 추가 및 함수의 원형 선언 // userprog/syscall.c #include "threads/init.h" #include "threads/synch.h" #include "threads/palloc.h" #include "filesys/filesys.h" #include "filesys/file.h" #include "userprog/process.h" static struct file *find_file_by_fd(int fd); void check_address(uaddr); void halt(void); void exit(int status); bool create..

[week09] PintOS - Project 2(User Programs) : System Calls 개요 및 File Descriptor 구현

Implement system call infrastructure userprog/syscall.c에 있는 system call handler를 구현하라. system call 번호를 검색한 다음 시스템 호출 인수를 검색하고 적절한 작업을 수행해야 한다. System Call Details 첫 번째 프로젝트는 운영 체제가 사용자 프로그램으로부터 제어권을 되찾을 수 있는 한 가지 방법을 이미 다루었다: 타이머와 입출력 장치로부터의 인터럽트. 이것들은 CPU 외부의 엔티티에 의해 발생하므로 "외부(external)" 인터럽트이다. 운영 체제는 프로그램 코드에서 발생하는 이벤트인 소프트웨어 예외도 처리한다. 그것들은 page fault 또는 division by zero와 같은 error일 수 있다. 예외(E..

[week09] PintOS - Project 2(User Programs) : Argument Passing

x86-64 calling convention calling convention의 규칙 중 하나는 함수 인수와 반환값이 전달되는 방법을 제어한다. x86-64 Linux에서 처음 6개의 함수 인수(function arguments)들은 각각 %rdi, %rsi, %rdx, %rcx, %r8, %r9 레지스터에 전달된다. 일곱 번째 인자와 그 이후의 인수는 stack에 전달된다. 그리고 반환값은 %rax 레지스터에 전달된다. 전체 규칙은 이것보다 더 복잡하다. 몇 가지 주요 사항들을 살펴보자. single machine word(64 bits/8 bytes)에 맞는 structure argument는 single register에 전달됨 Example: struct small { char a1, a2; }..

[week09] PintOS - Project 2(User Programs) : Introduction

Project 2 : User Programs The base code already supports loading and running user programs, but no I/O or interactivity is possible. 기본 코드는 이미 사용자 프로그램 로드 및 실행을 지원하지만 I/O 또는 상호 작용은 불가능하다. In this project, you will enable programs to interact with the OS via system calls. 이 프로젝트에서는 프로그램이 시스템 호출을 통해 OS와 상호 작용할 수 있도록 한다. Background 지금까지 핀토스에서 실행했던 모든 코드는 운영 체제 커널의 일부였다. 운영 체제 위에서 사용자 프로그램을 실행하기 시작하..

[week09] KOCW 운영체제(반효경교수님) - Virtual Memory 2

Virtual Memory 2 다양한 캐슁 환경 캐슁(caching) 기법 한정된 빠른 공간(=캐쉬)에 요청된 데이터를 저장해 두었다가 후속 요청시 캐쉬로부터 직접 서비스하는 방식 paging system 외에도 cache memory, buffer caching, web caching등 다양한 분야에서 사용 캐쉬 운영의 시간 제약 교체 알고리즘에서 삭제할 항목을 결정하는 일에 지나치게 많은 시간이 걸리는 경우 실제 시스템에서 사용할 수 없음 buffer caching이나 web caching의 경우 O(1) ~ O(log n) 정도까지 허용 paging system인 경우 page fault인 경우에만 OS가 관여함 O(1)인 LRU의 list 조작조차 불가능 → 왜?(뒷부분에 자세한 설명 나옴) 페이..

[week09] KOCW 운영체제(반효경교수님) - Virtual Memory 1

Virtual Memory 1 주소변환은 운영체제가 관여하지 않았는데, virtual memory 기법은 전적으로 운영체제가 관여한다. Demand paging 실제로 필요할 때 page를 메모리에 올린다. I/O 양의 감소 memory 사용량 감소 더 빠른 응답 시간 더 많은 사용자(프로그램) 수용 Vaild / Invalid bit의 사용 당장 필요한 A,C,F는 physical memory에 올라가 있고(valid), 그렇지 않은 부분은 backing store에 내려가 있다(invalid). invalid의 의미 사용되지 않는 주소 영역인 경우 페이지가 물리적 메모리에 없는 경우 처음에는 모든 page entry가 invalid로 초기화 address translation(주소변환)시에 inval..

[week09] KOCW 운영체제(반효경교수님) - Memory Management 4

Memory Management 4 Example of Segmentation page는 개수가 굉장히 많지만, segment는 개수가 별로 없다. 따라서 memory 공간의 overhead 측면에서 segment방식이 유리하다.(page table보다 segment table의 크기가 훨씬 작다) Sharing of Segments Segmentation with Paging paged segmentation 이라고도 한다. 주소변환을 두 단계를 거쳐서 해야한다. segmentation 주소변환을 해주면 page-table의 시작위치가 나온다. (segment 당 page table이 존재) page-table에서 physical address로 주소변환을 진행한다. segment 하나가 여러개의 pa..