1. RBTREE란?
·
CS/Computer System
🔎 Red-Black Tree란?self-balancing binary search tree의 일종이다.각 노드 당 한 비트의 추가 기억 공간을 가지는데, 이 비트는 노드의 색상 정보를 빨간색 또는 검은색으로 저장한다.루트에서 리프까지의 경로에 나타나는 노드의 색깔을 제한함으로써 경로 중 어떠한 것도 다른 것보다 두 배 이상 길지 않음을 보장하게 되어 근사적으로 균형을 이룬 트리가 된다.트리를 self-balancing 하게 만들어주어 검색, 삽입, 삭제 연산을 모두 **O(log n)**의 시간 복잡도를 보장하며, 이진 탐색 트리와 달리 최악의 경우에도 균형이 깨지지 않도록 보장한다.unpredictable tree: 삽입 연산이 항상 일정한 속도로 실행되는 것을 보장하지 않는다.🚨 Red-Blac..
[CS:APP] 3-4 정보 접근하기
·
CS/Computer System
3.4 정보 접근하기x86-64 주처리장치 cpu는 64비트 값을 저장할 . 수있는 16개의 범용 레지스터를 보유하고 있다.레지스터는 '정수 데이터'와 '포인터'를 저장하는데 사용된다.레지스터 각각은 특정한 목적을 가졌으며, 따라서 이들은 이들이 사용되는 방법을 반영하는 이름이 붙여졌다.인스트럭션들은 16개의 레지스터 하위 바이트들에 저장된 다양한 크기의 데이터에 대해 연산 할 수있다.16비트 → 2바이트32비트 → 4바이트64비트 → 레지스터 전체에 접근인스트럭션들이 레지스터들을 목적지로 할 때, 8바이트보다 작은 바이트를 생성하는 인스트럭션들의 레지스터에서 남는 바이트들에 대해 어떻게 처리할 것인가는 2가지로 선택할 수 있다.1 또는 2바이트를 생성하는 경우는 나머지 바이트들은 변경 없이 그대로 유지..
[CS:APP] 1-7 운영체제는 하드웨어를 관리한다
·
CS/Computer System
이전의 쉘 프로그램이 hello 프로그램을 로드하고 실행했을 때나 hello 프로그램이 메시지를 출력할때,프로그램이 키보드나 디스플레이, 디스크나 메인 메모리를 직접 액세스 하지 않았다.😮 오히려 운영체제(Operation System)가 제공하는 서비스를 활용한다.0. 운영체제운영체제는 '하드웨어'와 '소프트웨어' 사이에 위치한 소프트웨어 계층이다.'응용프로그램'이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야한다.운영체제의 두 가지 주요 목적1. 제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막는다.2. 응용프로그램들이 복잡한 저수준 하드웨어 장치들을 단순하고 균일한 메커니즘을 사용하여 조작할 수 있도록 한다.👆 응용프로그램이 하드웨어를 직접 조작하려면 복잡하기 때문에, 운..
[CS:APP] 1-5~1-6) 캐시 메모리, 저장장치의 계층 구조
·
CS/Computer System
캐시가 중요하다이전에 살펴 봤듯이, 시스템이 정보를 한 곳에서 다른 곳으로 이동시키는 일에 많은 시간을 보낸다.이전 포스팅에서 'hello'프로그램이 실행될 때 하드웨어에서 어떤 과정을 거쳐 작동되는지 알아보았다.다시 한 번 간략하게 정리하자면, 데이터 복사과정1.기계어 인스트럭션 'hello'프로그램의 기계어 인스트럭션들이 하드 디스크에 저장되어 있다.프로그램이 로딩되면 디스크의 'hello'프로그램이 메인 메모리로 복사된다.프로세서가 프로그램을 실행하면 인스트럭션들이 메인 메모리에서 프로세서로 복사된다.연산과정이 끝난 정보는 프로세서에서 디스플레이 장치로 복사된다.2."hello, world\n" 데이터 스트링처음에는 디스크에 저장되어 있다.메인 메모리로 복사된다.디스플레이 장치로 복사된다.더 큰 저..
[CS:APP] 1-4 프로세서의 작동 원리
·
CS/Computer System
프로세서는 메모리에 저장된 인스트럭션을 읽고 해석한다실행가능한 목적파일로 번역되어 디스크에 저장된  'hello'실행파일을 유닉스 시스템에서 실행하는 과정을 알아보자! 쉘'hello'실행파일을 유닉스 시스템에서 실행하기 위해 쉘이라는 응용프로그램에 그 이름을 입력한다.linux> ./hellohello, worldlinux>쉘은 커맨드라인 인터프리터로 프롬프트를 출력하고 명령어 라인을 입력 받아 그 명령을 실행한다.명령어 라인이 내장 쉘 명령어가 아니면, 쉘은 실행파일의 이름으로 판단하고 그 파일을 로딩해서 실행해준다.→ 쉘은 'hello'프로그램을 로딩하고, 실행한 뒤에 종료를 기다린다.'hello'프로그램은 메시지를 화면에 출력하고 종료한다.쉘은 프롬프트를 출력해주고 다음 입력 명령어 라인을 기다린다..
[CS:APP] 1-2, 1-3 컴파일 시스템
·
CS/Computer System
프로그램은 다른 프로그램에 의해 다른 형태로 번역된다. 'hello.c' 프로그램이 시스템에서 어떻게 실행되는지 과정을 알는것이 중요하다.그 중에서 소스파일이 번역되는 과정을 알아보자#inclue int main(){ printf("hello, world\n"); return 0;}뭘 번역한다는 거지?인간이 이해할 수 있도록 고급 프로그램으로 사용한다. 그러나  'hello.c'를 시스템에서 실행시키려면 ,각 C 문장들은 다른 프로그램들에 의해 저급 기계어 인스트럭션들로 번역되어야 한다.이 인스트럭션들은 실행가능 목적 프로그램( = 실행가능 목적 파일)이라고 하는 형태로 합쳐져서 바이너리 디스크 파일로 저장된다.컴파일러 드라이버는 유닉스 시스템에서 아래와 같이 소스파일에서 오브젝트 파일로 번역한다...
[CS:APP] 1-1 비트와 컨텍스트
·
CS/Computer System
컴퓨터 시스템은 하드웨어와 시스템 소프트웨어로 구성되며, 이들이 함께 작동하여 응용 프로그램을 실행한다.정보는 비트와 컨텍스트로 이루어진다hello 프로그램이 실행되는 과정#inclue int main(){ printf("hello, world\n"); return 0;}  hello  프로그램은 프로그래머가 에디터로 작성한 소스 프로그램(=소스파일)으로 생명을 시작하며, hello.c라는 텍스트 파일로 저장된다.소스 프로그램 ( = 소스파일)소스 프로그램은 0 또는 1로 표시되는 비트들의 연속이며, 바이트라는 8비트 단위로 구성된다.각 바이트는 프로그램의 텍스트 문자를 나타낸다.대부분의 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII) 표준을 사용하여 표시한다. 아스키(ASCII) 표준아스키 표준..
내 꿈은 어느 날 문득 그렇게 이루어졌다.
'CS/Computer System' 카테고리의 글 목록 (2 Page)