Pintos week02 System calls and handlers

System calls and Handlers 개요 주 목표 기존 : system call handler table 비어있음. 수정 후 Pintos의 system call handler 완성 유저에게 서비스를 제공하기 위한 시스템 콜 추가 프로세스 관련 : halt, exit, exec, wait 파일 관련 : create, remove, open, filesize, read, write, seek, tell, close 수정할 파일 threads/thread userprog/syscall userprog/process System call 운영체제가 제공하는 서비스를 위한 programming interface 유저 모드 프로그램이 커널 기능을 사용하게 해준다. 시스템 콜은 커널 모드에서 실행되고 유저 모드에게 반환한다. ...

2023년 5월 2일 · 4 분 · 배준수

Virtual Address

Virtual Address 64-비트 가상 주소는 다음과 같은 구조이다 1 2 3 4 5 6 7 8 63 48 47 39 38 30 29 21 20 12 11 0 +-------------+----------------+----------------+----------------+-------------+------------+ | Sign Extend | Page-Map | Page-Directory | Page-directory | Page-Table | Physical | | | Level-4 Offset | Pointer | Offset | Offset | Offset | +-------------+----------------+----------------+----------------+-------------+------------+ | | | | | | +------- 9 ------+------- 9 ------+------- 9 ------+----- 9 -----+---- 12 ----+ Virtual Address 헤더 include/threads/vaddr.h, 그리고 include/threads/mmu.h는 가상 주소들에서 작동하는 이러한 함수들과 매크로들을 정의한다. (offset : 상대주소(relative address), 동일 오브젝트 안에서 오브젝트 처음부터 주어진 요소나 지점까지 변위차를 나타내는 정수형) ...

2023년 4월 30일 · 3 분 · 배준수

Pintos 2주차 도입

Project2 : User Program 유저 프로그램을 실행하게 하는 시스템에 대해 배운다. 유저프로그램 로딩, 실행은 이미 있으나, I/O,나 상호작용은 불가능한 상태 이 프로젝트에서 시스템 콜을 통해 운영체제와 프로그램이 상호작용 하도록 해야 한다. userprog 디렉토리에서 하면 된다. project1 위에서 진행된다. project1의 코드가 project2 코드에 영향을 끼치진 않지만 이후에도 project1 테스트는 통과해야 한다. 추가 도전과제 옵션도 있음. 옵션에서는 기초 코드 틀이 없이 완전히 작성해야함. userprog/Make.vars 를 수정해야함 Background 지금까지 Pintos에서 실행해온 코드는 운영체제 커널의 부분이였다. 즉, 시스템의 privileged parts까지 완전히 접근이 가능하였다. 운영체제 꼭대기에서 유저프로그램을 시작하면, 더이상은 힘들다. 이 프로젝트가 다룰 부분이다. ...

2023년 4월 28일 · 8 분 · 배준수