본문 바로가기

CS(ComputerScience)

(29)
Pintos, Virtual Memory Pintos, Virtual Memory Pintos 가상메모리는 cpu가 RAM(Main Memory)보다 더 많은 메모리를 사용할 수 있게 RAM과 Disk Swap Area을 왔다갔다 해야 한다. 궁극적으로 프로세스에 사용할 수 있는 메모리 양을 효과적으로 늘릴 수 있으며 시스템에 물리적으로 존재하는 것보다 더 많은 메모리가 필요한 프로그램을 실행할 수 있다. 하지만, swap in/out 작업은 디스크 I/O의 도움이 필요하고 비용이 많이 든다. 그러므로 이 과정을 효과적으로 처리하기 위해(최소한으로 swap in/out 하기 위해) 여러 bit 정보를 이용한다. 무한한 메모리를 실현하기 위한 방식은 크게 Virtual address space partitioning, page fault, Pag..
Pintos Project, VScode Debugging Setting Pintos Project, VScode Debugging Setting 📌 Extension 설치 Native Debug install 📌 .vscode/launch.json Debug C/C++ File 클릭 .vscode/launch.json 생성되면, 수정 { "configurations": [ { "type": "gdb", "request": "attach", "name": "Attach to gdbserver : threads", "executable": "${workspaceRoot}/vm/build/kernel.o", "target": "localhost:1234", "remote": true, "cwd": "${workspaceRoot}", "valuesFormatting": "parse..
Pintos, MM & Anon Page (feat. Page Fault Handling) Pintos, MM & Anon Page (feat. Page Fault Handling) Pintos Project3 Virtual Memory 궁극적인 목표는 프로세스가 물리적 용량 이상으로 메모리에 엑세스 할 수 있도록 하는 것! 즉, 부족한 RAM용량을 보완하는데 Virtual Memory가 쓰인다. 그러기 위해서는 보조적인 Page Table, Page Fault Handling 등을 구현해야 한다. 이번 주차는 Memory Management와 Anonymous Page 챕터에서 Page Fault Handling를 구현해봤다. Memory Management 프로세스(Pages) > 할당받은 메모리(RAM) RAM은 한정적인 용량을 가지고 있으므로 전체 프로그램을 메모리에 가져오는 대신 적당..
Pintos Project2. User Program Pintos Project2. User Program System Call Flow in Virtual Space 가상공간인 User mode와 Kernel mode를 왔다 갔다하면서 시스템 콜이 진행되는 전반적인 과정을 정리해 봤다. 운영 체제는 새 프로세스가 생성되거나 기존 프로세스가 메모리에 로드될 때 그림과 같이 가상 메모리 시스템이 설정됩니다. 사용자 모드에서 시스템 콜이 발생하면, 커널 모드로 전환해 프로그램이 요청한 특정 서비스(즉, 시스템 콜 함수)를 호출합니다. 커널은 요청된 서비스를 처리하고 호출 처리가 완료되면, 다시 사용자모드로 전환해 처리 결과를 반환합니다. User mode --- %rax(System call number) ---> Kernel mode User mode
Pintos, Priority Scheduling and Synchronization Pintos, Priority Scheduling and Synchronization CPU를 점유하는 과정을 추상화한 개념! The preemption CPU에서 현재 실행 중인 프로세스를 중단하고 실행할 다른 프로세스로 전환하는 운영체제 개념. 🔎 CPU 선점이 필요한 이유? 당연한 이야기지만, 이 모든 작업은 자원을 더욱 효율적으로 사용하기 위해서다. 프로세스를 선점하고 다른 프로세스가 실행되도록 허용하므로써 운영체제 리소스의 공정성과 효율성을 보장해준다. waiting list에 있냐, read list에 있냐 이동하는데도 비용&시간이 소요되므로 상황을 잘 고려해 context swith를 할지 말지 정해줘야 한다. 대기실 칸이 한칸이면 Mutex, 여러칸이면 semaphore Pintos 과제에..
Pintos Alam Clock Pintos Alam Clock 1초당 tick이 100번 돈다는 의미이다. 즉 1 tick은 100분의 1초(10ms). 시스템이 특정 시간에 작업이나 이벤트를 예약할 수 있도록 하는 기능! 활동을 관리하고 조정하여 적정한 시간에 적절한 순서로 발생하도록 전산자원을 관리하는데 사용. 시스템(백그라운드 작업, 바이러스 검사, 소프트웨어 fetch 업데이트 예약 중요한 이벤트나 기한에 대한 알림 또는 경고(작업을 놓치거나 간과할 가능성 ↓) 사용자에게 안정적이고 효과적인 일정 도구를 제공함. 🔎 컴퓨터에서 기계 명령을 어떻게 실행할까? 1. Fetch : 메모리에서 명령어를 가져와서 CPU의 명령어 레지스터(IR, instruction register)에 로드 2. Decode : 수행할 작업과 사용할 피..
tiny 웹서버 구현 tiny 웹서버 구현HTTP 프로토콜 지원정적 & 동적 콘텐츠 전달버퍼사용한 동기 I/O다양한 오류 처리간단한 web server 구현해보는 과제! AWS 포트 번호를 열어줘야 했다. [인스턴스] - [인바운드 규칙 편집]DB연결은 해줄 필요 없으니, 8080 포트랑 HTTP 포트만 열어주면 된다.🔎 HTTP1.1버전을 client가 보내지만, tiny는 HTTP1.0버전을 채택한 이유는?일부 오래도니 서버나 proxysms HTTP/1.1을 지원하지 않아 더 안정적으로 서비스를 지원하기 위해 1.0버전 채택! 낮은 버전을 채택함으로서 오버헤드를 줄일 수 있다. 🔎 HTTP/1.0과 HTTP/1.1 차이점HTTP/1.0 : 1996년부터 사용되고 있는 초기의 보다 간단한 버전이다. 1 GET / 1 Co..
Network, 통신 Model Network, 통신 Model 통신 절차 각 계층을 나눠 표현한 것 OSI 7 Layer : 표준 통신 모델(참조 모델) TCP/IP : 비표준 모델(실사용 모델) Client : 컴퓨터, 노트북, 핸드폰, 아이패드 등 Server : 공유기, DNS, IP할당기(DHCP), 시간관리기(NTP), 게이트 웨이Browser --- request ---> Server Browser HTTPS 등장 📌 HTTP Method클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단 GET, POST, PUT, PATCH, DELETE 📌 HTTP Status Code클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 정보 404 Not Found, ... 전반적인 통신 흐름7계층응용계층(Applic..
명시적 가용 리스트 Explicit Free List 명시적 가용 리스트 Explicit Free List 요소를 저장하기 위해 명시적으로 메모리 공간(Array, Linked List) 할당 장점 : 검색 속도가 빠르고 메모리 할당, 해제 쉬움 단점 : 내부 단편화 발생 free_list를 가리키는 2중 포인터 설정 // free block 들의 정보를 모아둔 리스트 정보 // SUCC가 PRED보다 많이 쓰이므로 데이터를 접근하기 쉽도록 HEADER와 더 가까이 배치 #define NEXT_FREE(bp) (*(void **)(bp)) /* Next free block의 시작주소 */ #define PREV_FREE(bp) (*(void **)(bp + WSIZE)) /* Prev free block의 시작주소 */ static char *free_li..
묵시적 가용 리스트 Implicit Free List 묵시적 가용 리스트 Implicit Free List명시적 메모리 할당없이 구조 내부 암시적 요소(Graph, Tree자료구조, header & footer) 이용해 가용블록 탐색 일반적으로 가용 블록 탐색에 선형 시간(linear time)이 필요. 각 블록의 헤더를 순서대로 탐색해야 하므로 목록의 크기에 비례해 선형시간이 걸리게 됨. 그렇기 때문에 메모리 크기가 크면 클수록 탐색 시간이 길어진다. Unused : padding 8/0 : Prologue Header 8/0 : Prologue Footer 0/1 : Epilogue Header heap_listp는 proloue header와 prologue footer 사이에 위치헤 payload를 가리키도록 설정해준다. 왜냐하면, 할당하고자 하는 ..