전체 글 108

Spring 과제 구현하기

유스케이스 구현해보기 api 명세서 작성해보기종류URLMETHOD기능api/api/loginPOST로그인 기능 /api/sign-upPOST회원가입 기능 /api/usersGET회원 정보 리스트 /api/users/{user-id}DELETE회원 삭제     /api/boardGET게시글 리스트 조회(게시판) /api/board/{board-id}GET단일 게시글 리스트 조회 /api/boardPOST게시글 작성 /api/board/{board-id}PUT,PATCH게시글 수정 /api/board/{board-id}DELETE게시글 삭제엔터티

[DP] 다이나믹 프로그래밍 피보나치 예제

탑 다운부터 생각하고 그 다음 바텀 업!!피보나치 DP 예제피보나치 수열 점화식F(n)=F(n−1)+F(n−2)탑 다운 : 메모이제이션 활용(Memoization)이미 계산된 값은 저장해 두어 중복 계산을 피한다.피보나치 수열에서는 dp={} 딕셔너리를 활용한다.탑다운 방식은 재귀를 통해 문제를 풀어내기 때문에 계산이 필요한 경우에만 수행됩니다. 하지만 재귀 호출의 오버헤드가 발생할 수 있으므로 호출이 많은 경우에는 비효율적일 수 있습니다.import sysn = sys.stdin.readline()dp={}def fibo(n): if n==0: return 0 if n==1: return 1 if n in dp: return dp[n] ..

카데인 알고리즘(kadne`s Algorithm) 연속된 부분 배열 중 최대 합 찾기

카데인 알고리즘배열 내 연속된 부분 배열(subarray) 중에서  가장 최대 합을 찾는 알고리즘이다. DP(Dynamci Programming)를 적용한 방식완탐시 O(N^2) 걸리는 거를 O(N)으로!핵심은 각각의 최대 부분합은 이전 최대 부분합이 반영된 결과값이다. MAX(자기 자신 , 바로 이전의 부분합)  파이썬 코드 및 예제def maxSubArray(nums): max_current = max_global = nums[0] for i in range(1, len(nums)): max_current = max(nums[i], max_current + nums[i]) max_global = max(max_global, max_current) ret..

[PintOS Project 4 - File System] File System 이론 공부

File 일반적으로 비휘발성의 보조기억장치에 저장운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해준다. Operation(연산)create, read, write, reposition (lseek), delete, open, close 등File attribute (혹은 파일의 metadata)파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들파일 이름, 유형, 저장된 위치, 파일 사이즈접근 권한 (읽기/쓰기/실행), 시간 (생성/변경/사용), 소유자 등File system운영체제에서 파일을 관리하는 부분파일 및 파일의 메타데이터, 디렉토리 정보 등을 관리파일의 저장 방법 결정파일 보호 등Directorydirectory도 일종의 파일이다. 파일의 메타데이터 중 ..

kaist-pintos 구현 중 aws중지 후 다시 켰는데 테스트 안 돌아갈 때

aws가 자주 튕겨서 접속이 안되서 자주 aws를 중지시키고 다시 키는 작업을 했었다.aws 중지 후 다시 켰는데 갑자기 테스트가 안 돌아간다. ubuntu@ip-172-31-11-117:~/Pintos-KAIST/vm$ pintos --helpCommand 'pintos' not found, did you mean: command 'pinto' from deb pinto (0.14000-1) command 'pintod' from deb pinto (0.14000-1)Try: sudo apt install  해결방법 activate로 다시 실행시켜주면 됨

[PintOS Project 3 - VIRTUAL MEMORY] pintos 가상 메모리 구조

pintos 실제 가상 메모리 구조가상 메모리는 페이지 단위로 나뉘고, 페이지 테이블을 통해 가상 주소를 물리 주소로 매핑한다. 가상 메모리는 물리 메모리 크기와 상관 없이 더 큰 주소 공간을 제공하고, 실제로 필요한 시점에만 물리 메모리를 할당하는 방식이다.  👇pintos에서 가상 메모리와 물리 메모리의 실체  `init.c`에서 Pintos main program을 시작하는 `int main(void)` 함수에서 `paging_init( mem_end )` 함수를 사용하여 페이징 초기화를 해준다.  `paging_init( mem_end )` 함수를 보면 pintos 실제 물리 주소 [ 0 ~ mem_end] 범위를 가상 주소에 매핑 해주는 반복문이 나온다. 실제 가상 메모리에서의 KERN_BAS..

카테고리 없음 2024.10.12

[PintOS Project 3 - VIRTUAL MEMORY] Memory management 구현 중.. 간단한 예시로 흐름 파악하기(사용자가 arr[1024]를 요구했다면!)

실제 우리 프로젝트에서 사용한 코드는 아니다. 전체적 흐름만 파악하기 위한 코드 (참고) 현재 vm_entry 버리고 page 구조체에 spt로 관리전체 흐름 요약1. 사용자 가상 주소 (UVA) 0x80400000에 배열이 선언됨.2. vm_entry가 생성되어 가상 메모리 페이지 정보를 관리.3. 배열에 처음 접근할 때 페이지 폴트 발생.4. vm_claim_page가 호출되어 해당 가상 주소를 물리 메모리로 매핑.5. 프레임을 할당받아 페이지 테이블을 통해 UVA와 KVA 및 물리 주소를 매핑.6. 배열이 물리 메모리에 할당되고, CPU는 페이지 테이블을 통해 물리 메모리에 접근. 1. 배열 선언 (arr[1024])과 가상 주소 할당배열을 선언하면, 컴파일러는 배열을 위한 메모리 공간을 가상 주소..

SW 사관학교 정글(Jungle)/운영체제-PintOS[PintOS Project 3 - VIRTUAL MEMORY] GPT가 알려주는 프로젝트3 들어가기 전에 알아야할 가상메모리 지식들

1. 가상 메모리의 기본 개념정의가상 메모리는 프로그램이 사용하는 메모리 주소 공간을 물리적 메모리(RAM)와 별도로 관리하는 메모리 관리 기법입니다. 가상 메모리는 프로그램이 실제로 사용하는 것보다 더 많은 메모리 공간을 제공하도록 합니다. 따라서 여러 프로그램이 동시에 실행될 때, 각 프로그램은 별도의 메모리 공간을 가지며, 물리 메모리에 대한 직접적인 접근 없이도 실행될 수 있습니다.필요성가상 메모리는 다음과 같은 이유로 필요합니다:메모리 보호: 서로 다른 프로세스가 자신의 메모리 공간을 보호할 수 있도록 하고, 하나의 프로세스가 다른 프로세스의 메모리에 접근하지 못하게 합니다.메모리 확장: 실제 물리적 메모리보다 큰 주소 공간을 사용하여, 더 많은 프로그램과 데이터가 동시에 메모리에 올라갈 수 있..