- [ Dev/spring-core ][Spring] 예외 처리와 오류 페이지(View, API)2024-02-27 23:47:04인프런 강의 인프런 김영한님의 Spring Boot 강의 시리즈를 듣고 Spring 프레임워크의 방대한 기술들을 복기하고자 공부한 내용을 가볍게 정리한 것입니다. 문제가 될 시 삭제하겠습니다. 해당 프로젝트에서 배우는 내용 섹션 8 | 예외 처리와 오류 페이지 섹션 9 | API 예외 처리 섹션 8 | 예외 처리와 오류 페이지 서블릿 예외 처리 - 시작 예외처리를 하려면 서블릿 컨테이너가 예외를 어떻게 처리해야하는지 알아야한다. 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다. Exception(예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 자바 직접 실행 자바의 메인 메서드가 실행 도중 예외를 잡지 못하고 처음 실행한 main() 메서드를 넘어..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 3 - Virtual Memory(1) - Introduction2023-01-04 23:56:04이제 Pintos의 내부 작동 방식에 익숙해져야 합니다. 운영 체제는 적절한 동기화로 여러 스레드의 실행을 제대로 처리할 수 있으며, 여러 사용자 프로그램을 한 번에 로드할 수 있습니다. 그러나 프로그램의 수와 크기는 컴퓨터의 메인 메모리 크기에 제한이 따릅니다. 이번 과제에서는 이러한 제한을 제거하기 위해 무한 메모리의 환상을 제공(구축)할 것입니다. 이번 과제는 지난 과제에 지속하여 진행할 것입니다. 프로젝트 2의 테스트 프로그램도 프로젝트 3과 함께 작동해야 합니다. 프로젝트 3을 시작하기 전에 프로젝트 2 제출 시 발생할 수 있는 버그를 수정해야 합니다. 이러한 버그가 프로젝트 3에서도 동일한 문제를 일으키기 때문입니다. 프로젝트 3에 대해, 여러분의 쉽게 진행할 수 있도록 자세한 지침을 제공합니..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 3 - Virtual Memory(2) - Memory Management2023-01-04 21:56:26가상 메모리 시스템을 지원하기 위해서는 가상 페이지와 물리적 프레임을 효과적으로 관리해야 합니다. 이것은 어떤 (가상 또는 물리적) 메모리 영역이 어떤 목적으로, 누가 사용하고 있는지 등을 추적해야 한다는 것을 의미합니다. 첫째로 추가 페이지 테이블을 처리하고, 그 다음 물리적 프레임을 처리합니다. 참고로, 이해를 위해 "페이지"라는 용어는 가상 페이지를, "프레임"이라는 용어는 물리적 페이지를 의미합니다. Page Structure and Operations (페이지 구조와 처리 작업) Struct Page include/vm/vm.h 에 정의된 page는 가상 메모리에서의 페이지를 나타내는 구조체입니다. 페이지에 관해 알아야 할 모든 필요한 데이터를 저장합니다. 현재 템플릿에서 이 구조체는 다음과 같..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 3 - Virtual Memory(0) - Memory Management 1 개념 (Feat. 반효경 교수님)2023-01-04 00:53:06PintOS 3 주차는 가상 메모리에 관한 과제이다. 과제를 수행하기 전 반효경 교수님 강의를 듣고 개념을 잡고 가려고 한다. 빠르게 가보자! Logical Address vs Physical Address Logical Address(Virtual Address) 프로세스마다 독립적으로 가지는 주소 공간이다. 각 프로세스마다 0번지부터 시작한다. CPU가 보는 주소는 Logical Address이다. Physical Address 메모리에 실제 올라가는 위치이다. 주소 바인딩(Address Binding): 주소를 결정하는 것 *참고: 여기서 설명하는 전제는 프로세스 전체를 메모리에 올리는 것으로 가정한다. 프로세스마다 독자적인 주소 공간이 있지만, 실제로 프로세스를 실행하기 위해서는 물리 메모리에 로..
- [ Computer science/OS ][CS] 명령어의 구조와 명령어 주소 지정 방식2022-12-27 23:41:05프로그램을 개발할 때 우리는 '소스코드' 를 작성하고, 컴파일러를 통해 컴파일 되어 컴퓨터가 이해할 수 있는 '저급 언어'로 변환되어 실행된다. 저급 언어는 명령어들로 이루어져 있는데, 그럼 명령어 하나하나는 어떻게 생겼을까? *참고: 저급언어는 기계어, 어셈블리어로 구성되어 있다. 둘 다 명령어의 집합임 명령어의 구조 사람이 누군가에게 명령을 한다면 아마 이런식으로 명령을 할 것이다. "학생들, 다음 주까지 과제를 제출하세요." 컴퓨터의 명령어 구조도 이와 마찬가지다. 컴퓨터는 '무엇을 대상으로, 무엇을 수행하라' 식의 명령어 구조를 가지고 있다. 컴퓨터는 아래의 사진과 같이 명령어 구조를 이루고 있다. 왼쪽에는 수행할 연산, 오른쪽은 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치를 담..
- [ 크래프톤정글/PintOS ]보호글 입니다.2022-12-26 16:54:39보호되어 있는 글입니다.
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(3) - System Calls(feat. User Memory) - 추가예정2022-12-25 03:21:48목표: system call - infrastructure(기반 인프라) 구현(feat. User Memory Access) User Memory Access syscalls 을 구현하려면, 사용자 가상 주소 공간(user virtual address space)에서 데이터를 읽고 쓰는 방법을 제공해야 한다. arguments를 얻을 때 이 기능은 필요하지 않다. 하지만 시스템 콜의 인자들로 제공된 포인터에서 데이터를 읽을 땐 이 기능을 통해 중계해야 한다. 하지만 이 기능을 구현하는 것은 조금 까다로울 수 있다. 만약 사용자가 유효하지 않은 포인터, 커널 메모리를 가리키는 포인터 또는 해당 영역 중 하나에 부분적으로 블록을 제공하면 어떻게 될까? user process를 종료(terminating)하여..
- [ 크래프톤정글/PintOS ][CS] PintOS Project 2 - User Program(2) - Argument Passing2022-12-24 21:55:16목표: User Program에서 argument(인자) 를 설정하도록 process_exec() 함수를 수정해라 x86-64 Calling Convention(함수 호출 규약) 이 섹션에서는 64bit x86-64 에서 일반적으로 함수를 호출할 때 convention의 중요한 포인트를 요약한다. For more detail, you can refer System V AMD64 ABI. 잠깐, KAIST gitbook을 공부하기 전에 함수 호출 규약(Calling Convention) 개념을 정리하고 가자. 함수 호출 규약을 이해하기 위해서는 stack 과 stack frame에 대한 정확한 이해가 있어야 한다. 각각의 thread 마다 stack이 생성되고, 각각의 함수마다 stack frame이 존재..