반응형

sw 사관학교 정글/TIL & WIL 13

[2022.05.12 ]TIL - 추상화, OSI 7 layer , TCP/IP, HTTP, file descriptor, DNS

이번주의 시작은 주간 키워드 및 중요 개념을 깔끔하게 이해하고 빠르게 코드로 가는 것을 목표로 한다. 따라서 추가 키워드와 함께 TIL을 시작 하겠다 추상화(abstraction) 일반성에 기반한 간결화 일반성을 추출해 간결하게 표현하는 일 전체에서 핵심만을 뽑아내 전체를 표현 예) 지하철 노선도는 원래 숫자로 이루어 져있다, 하지만 우리가 의미를 부여하여 사용한다. OSI 7 layer & TCP/IP 4 layer (중요! 꼭 같이 비교하며 학습, 제일 중요하게 느꼈던 것은 사용자 모드, 커널모드, 하드웨어랑 함께 생각해야한다는 것이다!!) OSI 7 Layer 네트워크 통신을 체계적으로 다루고 있는 ISO 표준은 개방시스템 상호연결(OSI) 모델이다 개방시스템이란 기반구조와 관계없이 시스템간의 통신..

[2022.05.06 ]TIL - 시스템 콜, 데이터 세그먼트, 메모리 단편화, sbrk/mmap, 가상메모리(VM), 스와핑

시스템 콜 (시스템 호출, 시스콜) 운영체제의 커널이 제공하는 서비스에 대해 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스 *커널: 운영체제의 핵심이 되는 컴퓨터 프로그램, 시스템의 모든것을 완전히 통제 → 자원을 효율적으로 관리 (cpu 스케줄링, 메모리관리, 입출력 관리, 파일시스템 관리) *자원: cpu, 메모리, 가상메모리, 쓰래드, 패킷, 프로토콜, 테스크 보안 자원관리 추상화 운영체제는 커널모드와 사용자 모드로 나누어 구동(커널에서 중요한 자원들을 관리하기 때문에, 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눔) 커널모드: 모든자원에 접근, 명령을 할 수 있다. 사용자모드: 사용자가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못..

[2022.05.05 ]TIL - 동적메모리 할당, 메모리 구조

동적 메모리 할당 (= 메모리 동적 할당) 컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것이다. 사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재할당을 받을 수 있다. 데이터 영역과 스택 영역에 할당되는 메모리의 크기는 컴파일 타임에 미리 결정 힙 영역의 크기는 프로그램이 실행되는 도중인 런 타임에 사용자가 직접 결정 런 타임에 메모리 할당받는 것 → 동적 할당 메모리 구조 프로그램이 운영체제로 부터 할당받는 대표적인 메모리 공간 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 코드 영역 (코드 정적 세그먼트) 실행할 프로그램의 코드(명령어)가 저장되는 주기억장치 영역, cpu는 코드 영역에 저장된 명령어를 하나씩 가져가..

[2022.05.03 ]TIL - RB트리 개념

RB 트리란? 자가 균형 이진 탐색 트리(self-balancing binary search tree)로서, 대표적으로는 연관 배열 등을 구현하는 데 쓰이는 자료구조다. 레드-블랙 트리는 복잡한 자료구조지만, 실 사용에서 효율적이고, 최악의 경우에도 상당히 우수한 실행 시간을 보인다: 트리에 n개의 원소가 있을 때 O(log n)의 시간복잡도로 삽입, 삭제, 검색을 할 수 있다. 자료의 삽입과 삭제, 검색에서 최악의 경우에도 일정한 실행 시간을 보장한다(worst-case guarantees). (개념 중간에 삼촌, 부모, 조부모 등 다양한 가족들이 나오니 집중하자) RB 트리의 특성 노드는 'red' 혹은 'black' 중 하나이다. 루트 노드는 'black'이다. 모든 리프 노드(NIL)들은 'bla..

[2022.05.01 ]TIL - C언어(포인터, 구조체, 동적 할당), 고급알고리즘 개념(AVL, BST)

정신없이 개념 공부하느라 정리를 못했다(변명) 추가적으로 내용을 작성하겠다..^^;; 구조체 typedef struct 구조체이름 { 자료형 멤버이름; } 구조체별칭; #include #include // strcpy 함수가 선언된 헤더 파일 typedef struct _Person { // 구조체 이름은 _Person char name[20]; // 구조체 멤버 1 int age; // 구조체 멤버 2 char address[100]; // 구조체 멤버 3 } Person; // typedef를 사용하여 구조체 별칭을 Person으로 정의 int main() { Person p1; // 구조체 별칭 Person으로 변수 선언 // 점으로 구조체 멤버에 접근하여 값 할당 strcpy(p1.name, "홍..

[2022.04.30 ]TIL - C언어(상수, 고차원 배열, 포인터)

상수 처음 정의시 그 값이 영원히 바뀌지 않음 const (상수의 형) (상수 이름) = (상수의 값); 고차원 배열 배열 추가적인 내용 int arr2[5] = {1, 2, 3}; == int arr2[5] = {1, 2, 3, 0, 0} 특별히 초기화 하지 않은 원소들에는 0 이 들어가게 됨 int arr[][2] = {{1, 2}, {3, 4}, {5, 6}, {7}}; 위 2 차원 배열은 배열 정의시 arr[][2] 라고 하였기 때문에 무조건 원소가 2 인 1 차원 배열들이 생기게 된다. 7 이 속한 1 차원 배열에는 원소가 한 개인 것이 아니라 마치 arr[3] = {1} 고 해도 상관 없는 것 처럼 8 번째 원소가 들어갈 자리를 비워놓게 된다 int arr[2][] = {{4, 5, 6}, {..

반응형