PintOS Project2-4 WIL

Pintos week02 User Programs 과제 4 : Process Termination Messages 목표 ’exit’ 함수 호출이나 다른 이유로 프로세스가 종료될 때 마다 프로세스의 이름과 exit 코드 출력 과정 exit 함수 수정 수정 파일 : userprog/syscall.c 개선 방향 출력하는 코드 추가 정답 코드 1 2 3 4 5 6 void exit(int status){ struct thread *curr = thread_current(); curr->exit_status = status; printf ("%s: exit(%d)\n", thread_name(), status); thread_exit(); } 과제 5 : Denying Writes on Excutables 목표 실행중인 파일에 쓰기를 거부하는 코드 작성 ...

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

Importunate 블로그 공지사항

Importunate 게시판 설명 ABOUT : 자기 소개 ALGORITHM : Introduction to Algorithm 3rd 공부 ARCHIVE : 태그별 게시글 찾기 BOOK : 읽은 책 관련 CSAPP : Computer System A Programmer’s Perspective 공부 Jungle : SW사관학교 정글 6기 내용 Life : 일상 관련 LOG : Today I Learned 현재 상황 게시글 입장하여 왼쪽 아래 푸른창의 REFRESH 누르면 보입니다. 2023-05-28 구성을 개편했습니다. 2023-05-11 댓글 기능 추가하였습니다. 2023-05-04 게시판을 드디어 분리하였습니다. 이후 첫 화면에는 공지사항만 올라갈 예정입니다. 23.02.27부터 SW사관학교 정글에서 약 5개월 과정 공부 중입니다. 바쁨을 핑계로 퀄리티가 많이 떨어집니다. 차후 개선 의지는 있습니다.

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

마지막 몰입 - 나를 넘어서는 힘

마지막 몰입 - 나를 넘어서는 힘 지은이: 짐 퀵 옮긴이 : 김미정 출판사: 비즈니스북스 3줄 요약 배울 것이 아니라 배우는 방법(학습)을 배운다. 내가 가져야 하는 태도, 자세, 습관 무작정 열심히만 해서 되진 않는다. 기억에 남는 구절 문제를 발생시킨 사고 수준으로는 문제의 해결책을 찾을 수 없다. 아인슈타인 지식이 힘이라면 학습은 우리의 초능력이다. p.46 호적수는 우리가 해결해야 하는 개인적 약점에 주목하게 해주는 존재이며 기회는 거기서 생긴다. p.68 ...

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

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주차 컴퓨터 시스템 용어 정리

Pintos 2주차 keyword 정리 1. Process Controll Block ID : 고유 이름 State : Ready, wating, terminated 등 Program Counter : 특정 프로세스가 실행해야 하는 다음 instruction의 주소를 나타낸다. CPU Registers : 특정 프로세스가 사용하고 있는 레지스터(index register, stack pointer, general purpose register, …) Memory limits List of open files CPU scheduling information : 프로세스의 우선순위. 스케쥴링 큐를 가리키는 포인터나 다른 스케쥴링 parameter. memory management information : 특정 프로세스에 의해 사용되는 메모리에 관한 정보 ...

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

Pintos 2주차 도입

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

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

PintOS Project1-1 WIL

PintOS Project1-1 Alarm Clock 구현 개요 기간 : 2023년 4월 20일 ~ 27일 주제 : Threads 과제 Alarm Clock Priority Scheduling Advanced Scheduler 배경지식 1. interrupt 기본 개념 CPU의 명령 수행속도에 비해 I.O(입출력) 연산의 속도는 훨씬 느리다. I.O 연산을 위해 CPU가 쉬면서 기다리는 것은 낭비다. I.O 연산 중에 CPU는 다른 일을 하고 있는다. I.O 연산 결과가 나오면 CPU에게 알린다. => “Interrupt” 정의 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요한 경우에 마이크로프로세서에서 알려 처리할 수 있도록 하는 것. 하드웨어 interrupt와 소프트웨어 interrutp로 나뉜다. trap이라고도 일컬어지며 프로세서에게 최근에 실행된 코드의 중단을 요청해서 event가 때맞은 방식으로 처리될 수 있도록 하는 것. 요청이 받아들여지면, 프로세서는 최근 활동을 중단시키고 state를 저장한 후 event를 처리하기 위해 interrupt handler(ISR, interrupt service routin)라고 불리는 함수를 실행한다. 종류 ...

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

PintOS Project1-2 WIL

Pintos Project 1-2 Priority Scheduling 구현 배경지식 1. Round Robin(RR) Scheduling 프로세스와 네트워크 스케쥴러에서 이뤄지는 알고리즘 중 하나이다. 일반적으로 time slice가 각 프로세스에서 동일한 부분만큼 순환하는 순서로 배당되어 모 프로세스들을 우선순위 없이 다룬다는 의미이다. 수행하기 간단하고 쉬우며 starvation-free(공평하게 모두 나눠가짐)가 특징이다. 2. Priority Donation(Priority Inheritance) unbounded inversion(끝없는 우선순위 도치)을 제거하기 위한 방법이다. 이 알고리즘은 우선순위가 가장 높은 프로세스 A가 있다고 가정한다면, A가 필요한 lock의 holder인 다른 프로세스의 우선순위를 A만큼 증가시키는 것이다. 그 결과 우선순위가 증가한 프로세스가 우선적으로 실행되고 hold한 lock을 release하면 프로세스 A가 실행될 수 있게 된다. 즉, A가 우선순위에 따라 가장 먼저 실행되기 위해서 필요한 것들(lock과 같은)을 확보하기 위해 다른 누군가에게 A 자신의 우선순위를 부여해 주는 것이다. ...

2023년 4월 27일 · 7 분 · 배준수

Pintos 1주차 컴퓨터 시스템 용어 정리2

컴퓨터 시스템 관련 용어 정리 Priority Donation(Priority inheritance) priority inheritance는 무한한(unbounded) 우선순위 도치(inversion)을 제거하기 위한 방법이다. 이 프로그래밍 방식을 쓰는 프로세스 스케쥴링 알고리즘은 A가 resourece lock이 되어있는 어떤 자원을 기다리는 다른 프로세스들의 우선순위 중 최댓값으로 A의 우선순위를 증가시킨다. priority inheritance protocol의 기본 아이디어는 한 작업이 더 높은 우선순위의 작업에게 가로막혔을 때, 그 작업이 원래의 우선순위를 무시하고 상승한 우선순위 수준에서 1(임계 영역)을 수행하는 것이다. critical section(임계 영역)을 수행하고 lock을 release하고 나면, 포로세스는 원래의 우선순위 수준으로 돌아간다. ...

2023년 4월 22일 · 7 분 · 배준수