분류 전체보기

· PintOS
Pintos에서 **단위(Unit)** Test를 진행하기 위해서 아래와 같은 커맨드를 한번은 터미널창에 입력해봤을 것이다.pintos --fs-disk=10 -p tests/userprog/args-single:args-single -- -q -f run 'args-single onearg'우리가 이 커맨드를 실행하면 과연 Pintos는 어떻게 이를 알아 듣고 실행을 하게되는 것일까?우리 10팀은 이러한 부분에 근본적인 의문을 가지게 되었다.그렇기에 크게 목차는 아래와 같이 나누어지게 된다.목차커맨드 입력Pintos 가상화PIntos의 시작점프로세스 초기 생성프로세스의 실행사용자 모드 변경System Call 호출 시점System CallSystem Call Handler1. 커맨드 입력 2. Pint..
· PintOS
목차모니터의 구조Semaphore vs Monitor모니터는 언제 사용되어야 하는가모니터의 구성요소TestCase 톺아보기LanguageJava에서의 MonitorQ & A모니터의 구조Semaphore vs Monitor모니터의 경우 직접적으로 signal과 wait 을 사용하지않고 요청이된다.모니터는 요청받은 작업을 모니터 큐(Entry_queue, Waiting_queue)에 저장한 후 순서대로 처리하고 그 결과만 해당 프로세스에 알려준다.모니터는 언제 사용되어야 하는가?한번에 하나의 스레드만 순차적으로 처리하여야할 때 (Mutex의 성질)➡️ Race Condition, DeadLock 방지임계구역(Critical Section)에서 여러 스레드와 협업이 필요할 때특정 조건 하에서 스레드의 동기화와..
· C
mmap과 malloc의 차이 malloc() segregation free list 방식을 이용하여 힙 영역 내에서 메모리를 할당해주는 함수 리눅스의 경우brk/sbrk 가 메모리 할당. 커널의brk 포인터에 incr(상수보장, 음수 X)만큼 크기를 더해서 힙을 늘이거나 줄인다. 성공하면 이전의 brk 포인터 값을 리턴한다. 실패하면 -1을 리턴하고 errno = ENOMEM 이라고 설정해준다. incr = 0이면 늘어나지 않았으니 현재의 brk 값을 리턴 sbrk는 페이지 단위로 할당(4KB), 사이즈가 큰 편이라 단편화하여 사용 heap management library. segregation free list에서 free node 리스트 별로 관리한다. ⇒ 상수 시간안에 요청완료 free node..
· 대외활동
입소 전 입소를 하기전엔 막연하게 그런생각을 했다. "개발자끼리의 대외활동을 처음해보는 것도 아니고, 숙박형태가 바뀌어서 늘 지향하던 함께 성장하기를 이루고자 하면 되겠구나" 그렇게 막연한 생각을 가지고 왔었다. 처음이라 그런지 공기가 차갑게 느껴졌던 부분이있었다. 아마 제일 먼저 9시반쯤에 문지캠퍼스에 도착해서 사람들이 하나 둘씩 도착하는 걸 보며, 기존에 하던 공부와 프로젝트들을 돌아보고 있었다. 참고로 지금은 생각이 다르지만 입소 전에는 시간내서 왓송이나 JVM, RealMySql, 가상면접사례로 배우는 대규모 시스템 설계 기초등 여러 책들을 가지고 와서 공부를 하고자했다. 여튼 사실 입소를 희망하게 된 계기도 그랬다. 나는 자율성이 강한걸 좋아하나 억압(?)해주는 환경을 좋아한다. 말이 좀 웃기지..
B-Tree 인덱스, 인덱스의 필요성 B-Tree 구조 일반적인 이진트리(자식 2개만을 가지) 형태 일반적으로 인덱스를 저장하는 방식(또는 알고리즘)에 따라 B-Tree 인덱스, Hash 인덱스, Fractal 인덱스 등으로 나눌 수 있으며, 일반적으로는 B-Tree 구조가 사용된다. 좌우 자식 간의 균형이 맞지 않을 경우에는 매우 비효율적이라, 항상 균형을 맞춘다는 의미에서 균형 트리(Balanced Tree)라고 불린다. 구조자체는 루트노드에서 부터 브랜치 노드 부터 리프노드까지 존재한다. 페이지 페이지란, 디스크와 메모리에 데이터를 쓰고 읽는 최소 작업 단위이다. 일반적인 인덱스를 포함하여 PK와 테이블등은 모두 페이지 단위로 관리된다. 따라서 만약 쿼리를 통해 1개의 레코드를 읽고 싶더라도 결국은..
· Java
equals와 == 의 차이 Java에서의 동등성의 개념을 아는가? 쉽게 말해 두 객체를 비교할 때 온전히 같다면 동일하고, 객체는 다르지만 내부 메시지(필드 값)가 같다면 동등하다고 볼 수 있다. == (등가 비교 연산자) 비교 연산자는 두 피연산자를 비교하는 데 사용되는 연산자로서, 피연산자의 값이 같은지 또는 다른지를 비교하는 연산자가 등가 비교 연산자로, Java는 !=와 ==를 제공하고 있다. 사실 ==은 기본형은 물론, 참조형에도 사용할 수 있다. 보통, 주소값을 비교하기 위해 사용된다. equals() Object 클래스에 포함된 메서드로, 매개변수로 객체의 참조변수를 받아 비교하여 그 결과를 boolean으로 알려주는 메서드이다. public boolean equals(Object obj)..
· Java
equals(), hashcode Object Class에 정의된 equals의 설명을 읽어보자 기본적으로 a.eqeuals(a)의 경우, a.equals(b)가 true일때 b.eqauls(a) 또한 true를 반환해야한다는 조건이 있다. 또한 동등한 비교에 사용되는 정보가 수정되지 않는 한, null이 아닌 참조 값 x 및 y에 대해 x.equals(y)의 여러 호출이 일관되게 true를 반환하거나 false를 일관되게 반환해야하는 일관성을 강조한다. 여기서 우리가 눈여겨 봐야할 부분은 아래부분이다. Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to ..
· Java
TODO 리스트를 제작하는 스터디를 진행하며 In-Memory 환경으로 DB를 구성해야 하기 위해 구조체에 대한 고민이 있었다. 맨 처음의 경우 HashTable을 사용하려고 했다. 얼핏 아는 지식으로 HashMap의 경우 멀티 스레드 환경에서는 사용할 경우 동시성이 보장되지 않기 때문에 고려 대상이 아니었기에 HashTable을 사용하고자 하였다. 하지만 이에 대해 공부를 하며 알게된 사실에 대해 정리하고자한다. 🤔우선 왜 HashMap은 안씀? HashMap의 경우 비동기화되어 synchronized를 보장받지 못해 멀티스레드 환경에서 안전성을 보장받지 못한다. 여러 스레드가 동시에 HashMap 객체를 수정하거나 삽입할 수 있어 무결성에 문제가 생김 물론 투두 리스트가 그만한 동시성이슈가 발생할까?..
LEE티씨
'분류 전체보기' 카테고리의 글 목록 (2 Page)