정글

· 정글/TIL
📌 공부한 내용 Thread 개선 sleep/awake 방식 1️⃣ - struct thread 개선 스레드 구조체 안에 sleep할 시 깨워줘야 하는 시각을 집어넣는다. include/threads/thread.h/struct thread struct thread { /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ ... /* wakeup tick : 깨어나야 할 tick(시각) */ int64_t wakeup_ti..
· 정글/TIL
📌 공부한 내용 💻 - Thread.c 코드 분석 1. ASSERT // ASSERT(조건식) 함수는 assert에 지정한 조건식이 거짓이면 프로그램을 중단하며 참이면 프로그램을 계속 실행한다. ASSERT(intr_get_level () === INTR_OFF); // => intr_get_level() 함수는 현재 interrupt가 disabled인지, enabled(INTR_OFF)인지 확인후 disabled(INTR_ON)일 경우 계속 진행 이 함수로 해당 결과가 제대로 진행됐는지 테스트 할 수 있다. 동기화 문제를 해결하는 가장 안 좋고 무식한 방법은 interrupts를 무력화(disabled) 시키는 것이다. 2. GDT static uint64_t gdt[3] = { 0, 0x00af9a..
· 정글/TIL
📌 공부한 내용 Memory leak 불필요한 메모리가 해제되지 않으면서 계속 점유되고 있는 상태. 정상적으로 메모리를 할당 받았다면 꼭 해주어야한다. // 예시 void function_with_allocates(){ float* a = malloc(sizeof(float)); } int main(){ function_with_allocates(); return; } Deadlock 교착 상태. 두 프로세스가 서로 점유하고 있는 자원을 서로 필요로 할 때 두 프로세스 모두 진행할 수 없는 상태. Starvation 스레드들에게 우선 순위를 부여해 공유 자원에 접근할 때 우선순위가 낮은 스레드가 소외되어 아무것도 하지 못하는 상태 → 해결책으로 Aging이라는 기법을 사용한다. 📌 - Thread Tim..
· 정글/TIL
📌 공부한 내용 Implementing a sequential web proxy - 프록시 서버를 구성하여 들어오는 연결을 수락하고, 요청을 읽고 구문을 분석한다. - 웹 서버에 요청을 전달하고 서버의 응답을 읽고 해당 클라이언트에게 응답을 전달한다. 🌟 목적) HTTP 동작 및 소켓을 사용하여 네트워크 연결을 통신하는 프로그램을 작성하는 방법을 배우게 된다. Dealing with multiple concurrent requests - 다중 동시 연결을 처리할 수 있는 프록시로 업그레이드한다. 🌟 목적) 동시성 처리에 대한 이해를 높이게 되며, 시스템에서 중요한 개념 중 하나인 동시성을 다루는 방법을 배운다. Caching web objects - 최근 액세스한 웹 콘텐츠의 간단한 메인 메모리 캐시를 ..
· 정글/TIL
📌 - RB트리 삭제 int rbtree_erase(rbtree *t, node_t *z) { node_t *y = z; // 삭제하려는 노드 z를 우선 y에 저장. node_t *x; color_t y_original_color = y->color; // y의 컬러를 저장 if (z->left == t->nil){//유효한 값을 가진 자식이 오른쪽에만 하나 있는 경우 x = z->right; //오른쪽 자식을 x에 담아두고 transplant(t, z, z->right); //z의 오른쪽 자식을 z에 위치에 이식(transplant)하면서 z는 제거 }else if(z->right == t->nil){//유효한 값을 가진 자식이 왼쪽에만 하나 있는 경우 x = z->left; transplant(t, ..
· 정글/TIL
📌 - RB트리 Insert 🚀 - 트리 생성 rbtree *new_rbtree(void) { rbtree *p = (rbtree *)calloc(1, sizeof(rbtree)); // TODO: initialize struct if needed node_t *nil = (node_t*)calloc(1,sizeof(node_t)); nil -> color = RBTREE_BLACK; p->nil = p-> root = nil; return p; } 🚀 - 노드 삽입 node_t *rbtree_insert(rbtree *t, const key_t key) { // TODO: implement insert node_t *new_node = (node_t*)calloc(1,sizeof(node_t)); //..
Casteira
'정글' 카테고리의 글 목록 (2 Page)