일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- BFS
- 크래프톤 정글
- c#
- anonymous page
- 백준
- 크래프톤정글4기
- 다익스트라
- 알고리즘
- TiL
- 파이썬
- project3
- User Stack
- Unity
- 전쟁-전투
- 추상클래스와인터페이스
- 이벤트 함수 실행 순서
- 크래프톤 정글 4기
- 오블완
- 4기
- 네트워크
- 티스토리챌린지
- C
- 핀토스
- KRAFTON JUNGLE
- 연결리스트
- kraftonjungle
- 크래프톤정글
- 유니티
- 알고리즘수업-너비우선탐색2
- pintos
- Today
- Total
목록전체 글 (173)
말감로그
📆2024.3.26 Virtual Memory - Memory Management Implement Supplemental Page Table 페이지 폴트와 자원 관리를 처리하기 위해서는 각 페이지에 대한 추가적인 정보를 담고 있을 보조 페이지 테이블(Supplemental Page Table) 을 구현해야 한다. 1. 페이지 폴트가 발생했을 때 그곳에 어떤 데이터가 있었어야 했는지를 알아내기 위해 커널은 보조 페이지 테이블에서 폴트가 발생한 가상 페이지를 탐색한다. 2. 커널이 프로세스가 종료될 때 어떤 자원을 해제할 지 고르기 위해서 보조 페이지 테이블을 조사한다. SPT의 정의 - pml4(페이지 테이블)에서 부족한 정보를 채워주기 위한 프로세스마다 존재하는 테이블 - 아래의 보조 데이터들을 담고 ..

Virtual Memory 가상 메모리는 컴퓨터 시스템에서 물리적 메모리(RAM)보다 큰 주소 공간을 프로세스에 제공하기 위한 기술이다. 프로그램이 실행되는 동안에는 전체 프로그램이 메모리에 로드되지 않고 필요한 부분만 메모리에 올라가게 된다. 이를 통해 물맂거 메모리 부족으로 인한 프로그램의 실행 문제를 완화하고, 다중 프로그램 실행을 지원한다. Page Table 페이지테이블은 가상 메모리 주소 공간을 물리적 메모리 주소 공간으로 매핑하는 데 사용되는 자료구조이다. 페이지 테이블은 가상 메모리 주소를 물리적 메모리 주소로 변환하는 역할을 한다. 프로세스가 메모리에 접근할 때, 페이지 테이블을 참조하여 해당 가상 주소에 해당하는 물리 주소를 찾아내어 접근할 수 있게 한다. TLB(Translation ..

Page Replacement Policy 페이지 교체가 필요한 이유는 RAM의 크기가 제한적이고 그에 반해 RAM에 올라갈 페이지들은 많기 때문이다. 지금의 환경은 멀티 프로세스 환경으로 한번에 여러 개의 프로세스가 메모리에 올라가야 한다. 그래서 램이 꽉 차거나 혹은 어느 일정 정해진 수준을 넘어서게 되면 보조 기억장치와의 swap이 필요하다. 이때 램의 어떤 페이지를 교체하겠냐를 정할 때 필요한 정책이 replacement policy이다. 캐시 미스, 캐시 히트, 평균 메모리 접근 시간으로 어떤 알고리즘이 더 효율적인가를 따질 수 있다. (캐시 미스의 횟수를 최소화하고 캐시 히트 횟수를 최대화한다.) 1. 캐시 미스(Cache miss) 찾으려고 하는 페이지가 물리메모리에 존재하지 않을 때 캐시 ..
Anonymous page란 ? 익명 페이지는 파일로부터 매핑되지 않은 , 커널로부터 프로세스에게 할당된 일반적인 메모리 페이지이다. 즉, 익명 페이지는 힙을 거치지 않고 할당받은 메모리 공간이다. 커널의 메모리 할당 방법 1. 페이지 할당 : 가상 메모리를 페이지단위로 메모리를 할당하여 프로세스에게 제공한다. 2. 페이지 프레임 할당 : 물리 메모리는 페이지 프레임이라고 불리는 물리적인 페이지들로 나뉘는데, 커널은 이러한 페이지 프레임을 관리하고, 필요할 때 페이지 프레임을 할당하여 프로세스에게 제공한다. 3. 메모리 풀 할당 : 고정된 크기의 메모리 블록을 미리 할당하여 사용 가능한 상태로 유지하는 방법이다. 커널은 메모리 풀을 사용하여 일정한 크기의 메모리 블록을 할당하고 관리한다. "프로세스에게 ..
Lazy loading 이란? Lazy loading은 사용자의 상호작용이 발생하기 전까지 특정 리소스들을 로딩하지 않는 방식이다. 따라서 사용자가 해당 리소스에 접근하기 전까지는 리소스를 로드하지 않고, 이를 통해 초기 페이지 로딩 속도를 향상시킬 수 있다. Lazy loading 의 목적 1) 최초 페이지 로딩 시간을 개선하고 당장 화면에 표시하지 않는 이미지, 영상 등의 리소스를 나중에 로딩하면서 2) 최초 데이터 전달 양을 감소시키는 것이다. 웹 페이지를 로딩하는 기존 방식은 모든 리소스들을 한번에 받는 것이다. 이렇게하면 최초 로딩 시간이 더 커지게 된다. 이러한 문제를 해결하기 위해 사용할 수 있는 기술이 레이지 로딩인 것이다. 레이지 로딩을 적용하면, 화면에 당장 보여지지 않거나 아직 유저의..

🚫 PintOS를 실행시키기 위한 준비 중 마주친 에러 pintOS 가상 머신에 파일을 넣기 위해서 먼저 파일 시스템 파티션이 있는 모의 디스크를 만들어야 한다. pintos-mkdisk filesys.dsk 10 pintos --fs-disk filesys.dsk -p tests/userprog/args-single:args-single -- -q -f run 'args-single onearg' 위의 코드는 파일 시스템 파티션으로 어떻게 디스크를 생성하고, 파일 시스템의 형식을 만들고, args-single이라는 이름의 프로그램을 어떻게 새 디스크에 만들고, onearg 라는 인자를 전달해서 실행하는지에 대한 요약 코드이다. 이 코드를 실행하게 되면 kernel panic을 마주하게 된다. Kerne..

📆2024.03.19 1. 퀴즈 2. PintOS - SystemCall close, write, read() 함수 구현 3. fork().. 오늘 퀴즈 보기 전까지 키워드 공부만 했는데 정작 퀴즈에는 키워드 부분이 나오지 않았다.. 하나 나왔나... 그리고 굿노트에다가 퀴즈 푸는데 잘못해서 굿노트를 삭제해버려서 그동안 정리했던 데이터들이 다 삭제되었다.. 그동안 열심히 필기하고 강의 들으면서 정리한 ppt.. 코어타임.. 등등 다 사라졌다는 거에 멘탈이 깨져서 퀴즈도 잘 보지 못했다. 새로운 마음으로 다시 시작하자..라는 마음으로 다시 부지런히 채워나가야지🥲🥲 다들 아이클라우드 업데이트하세요.... 그리고 어제 open 하나밖에 못했다는 거에 충격 먹어서 오늘 부지런히 해야겠다는 생각을 했고 그래서 c..

User mode vs Kernel mode 유저모드 : 유저 모드에서는 응용 프로그램이 실행된다. 응용 프로그램이 자신의 메모리 공간 내에서만 실행되며, 시스템 자원에 직접적으로 접근할 수 없다. 시스템 콜을 통해 커널 모드의 서비스를 요청하여 시스템 자원에 접근한다. 커널 모드 : 커널 모드는 운영 체제의 핵심 부분인 커널이 실행되는 모드이다. 커널 모드에서는 프로세스가 전체 시스템 자원에 대한 접근 및 제어 권한을 가지며, 특권 명령어를 실행할 수 있다. 유저모드와 커널 모드 간의 전환이 필요한데, 이러한 모드 간의 전환은 운영체제에 의해 관리된다. 이러한 모드 간의 요청은 시스템의 안전성과 보안을 유지하는데 중요한 역할이다. Register vs Memory 레지스터와 메모리는 컴퓨터 시스템에서 ..
📆2024.3.18 1. system call - open(), process_add_file() 구현 System Call 1. open() file 을 열기 위해서는 시스템 콜 open() 함수를 구현해야 한다. open을 구현하기 위해서는 1. file이 유효한 주소값인지를 검증해야 한다. 2. filesys_open를 호출해서 파일을 open한다. 3. process_add_file 함수를 호출해서 파일 디스크립터 테이블에 파일을 추가하고 fd를 반환한다. 4. 파일디스크립터 테이블에 추가할 수 없는 경우(fd == -1)인 경우엔 파일을 닫고 -1을 리턴한다. 5. 오픈한 파일의 fd를 반환한다. int open (const char *file) { check_address(file); stru..