전체 글
-
[Data Communication] OSI 7계층, 패킷 송수신데이터 통신 2023. 3. 13. 23:21
OSI 7계층 L1 ~ L4 까지는 Operating System 이 담당합니다. L5 ~ L7 을 묶어서 응용계층이라고도 부릅니다. 다음은 응용계층으로 묶어 표현한 protocol suite 입니다. L1 Physical Layer (물리계층) : 물리 계층에서는 Bits 를 주고 받습니다. (5G, LTE, Bluetooth, LAN) L2 Data Link (데이터 링크 계층) : 데이터 링크 계층에서는 Ethernet 주소를 식별자로 하여 데이터 프레임(Ethernet Frame)을 주고 받습니다. L3 Network (네트워크 계층) : 네트워크 계층에서는 IP 주소를 식별자로 하여 IP 패킷 / 데이터그램을 주고 받습니다. L4 Transport (전송 계층) : 전송 계층에서는 Port 번호..
-
[System Programming] Vi Editor 명령어시스템 프로그래밍 2022. 12. 19. 01:53
vi editor 명령모드 :q (quit) :q! (강제종료) :w (저장, write) :wq (저장 후 종료) :wq! (강제 저장 후 종료) 명령모드 상태에서 i 를 누르면 입력 모드로 진입함. 입력모드 상태에서 esc 를 누르면 명령 모드로 진입함. 명령모드에서 입력모드로 진입 시, i를 누르면 커서 앞에, a를 누르면 커서 뒤로 입력을 시작할 수 있음. 명령모드에서 입력모드로 진입 시, I(대문자 I)를 누르면 문장의 시작부분으로, A를 누르면 문장의 끝 부분에서 입력모드를 시작할 수 있음. 명령모드에서 0을 누르면 문장의 앞으로 이동함. 명령모드에서 $을 누르면 문장의 끝으로 이동함. 명령모드에서 w를 누르면 단어 단위로 이동할 수 있음. 명령모드에서 b를 누르면 역방향으로 단어 단위로 이동..
-
[System Programming] Linux 명령어시스템 프로그래밍 2022. 12. 18. 12:53
cd (Change Directory) cd .. (이전 폴더로 이동) cd ~ (Home 디렉토리로 이동) cd / (Root 디렉토리로 이동) rm (remove) rm [파일이름 or 파일경로] rm -rf [폴더이름] ls (list) : 현재 디렉토리에 있는 파일을 보여줌 ps : 현재 실행되고 있는 프로세스를 보여줌. mkdir [폴더이름] : 현재 디렉토리 내에 폴더를 생성함. touch [파일이름 or 파일경로] : 현재 디렉토리 내에 파일을 생성함. mv (move) mv [변경 전 이름] [변경 후 이름] : 파일이름 변경 tar tar cvfz [압축 후 파일이름] [압축 전 디렉토리 or 파일경로] tar xvfz [압축해제 할 파일 이름] clear : 터미널 clear cat :..
-
[Malloc Lab] LIFO 방식의 Explicit List (명시적 리스트)시스템 프로그래밍 2022. 12. 4. 23:18
이번에는 Explicit List 방식으로 malloc / free 를 구현해보도록 하겠습니다. Introduction 에서 다뤘던 Explicit List 의 개념을 상기해보며 접근해봅시다. Explicit List 방식으로 다룰 때 가장 핵심은 Free Block 을 관리하는 Doubled Linked List 가 있다고 생각하는 것입니다. Free Block 중 가장 첫번째 가용 블럭은 prev로 NULL 을 가리키고 succ으로는 다음 free block 을 가리킵니다. 그리고 마지막 블럭의 succ 은 NULL을 가리킵니다. *prev = previous, succ = succeeding 그리고 LIFO 방식으로 가용블럭을 manage 할 것을 기억하며 가용블럭을 사용할 때는 가장 첫번째 fre..
-
[Malloc Lab] Implicit List시스템 프로그래밍 2022. 12. 4. 23:17
간접 리스트 방식으로 malloc, free 를 구현해보도록 하겠습니다. 간접 리스트 방식으로 구현하기에 앞서 Malloc / Free 를 구현할 때 유용한 매크로 변수, 매크로 함수, 메소드 들에 대한 설명을 첨부합니다. 먼저 mm_implicit.c 의 mm_init 메소드를 구현하겠습니다. mm_init 메소드는 동적 메모리 할당을 하기 위한 초기 힙 구조를 생성하는 메소드입니다. /* * Initialize: return -1 on error, 0 on success. */ int mm_init(void) { if ( (heap_listp = mem_sbrk(4*WSIZE)) == -1 ) // 초기 empty heap 설정 return -1; // heap_listp = 새로 생성되는 heap ..
-
[Malloc Lab] Naive List시스템 프로그래밍 2022. 12. 4. 23:12
Malloc Lab 의 가장 간단한 malloc package 구현 방식인 Naive List 방식에 대해 알아보겠습니다. Naive : heap 크기를 계속 증가시켜가며 할당하는 방법입니다. Naive 방식의 특징은 다음과 같습니다. 1. 높은 Throughput 을 갖는다. : malloc 시 heap 의 크기를 증가시킨 후 메모리 블럭을 반환하므로 상수시간에 동작합니다. 2. 낮은 utilization 을 갖는다. : free한 block을 다시 사용하지 않습니다. 따라서 한번 malloc 하고 free 시키면 그 메모리 블럭은 더 이상 이용할 수 없습니다. Naive List 방식은 mm-naive.c 에 이미 구현되어 있습니다. Malloc Lab Handout 파일에 정의된 Makefile 을..
-
[Malloc Lab] Introduction to Malloc Lab시스템 프로그래밍 2022. 12. 4. 23:11
이번 포스팅에서는 malloc lab의 기본 구성에 대해 알아보겠습니다. 먼저 malloc lab 의 가정은 다음과 같습니다. 1. 메모리는 워드 단위로 주소가 지정됩니다. (Malloc Lab 에서 1Word 는 4Bytes입니다.) 2. 응용 프로그램에서 무순의 할당과 반환 요청이 발생합니다. 반환 요청은 할당된 블록과 항상 pairing 이 되어야 합니다. 3. Allocator 는 이미 할당된 블록의 개수와 크기는 조정할 수 없습니다. 4. Allocator는 모든 할당 요청에 즉시 반응해야 합니다. 즉, 요청 순서를 변경하거나, 요청을 buffer 에 저장해 둘 수 없습니다. 5. Allocator 는 메모리 블록을 반드시 free Memory 에서 할당해야 합니다. 6. 블록들은 모든 주소 맞..
-
[Algorithm] Optimal Binary Tree (최적 이진 트리)알고리즘 2022. 12. 3. 19:55
이번 포스팅에서는 Optimal Binary Tree 에 대해서 알아보도록 하겠습니다. Optimal Binary Tree에 대한 설명에 들어가기 앞서, Binary Search Tree 에 대해 짚고 가겠습니다. Binary Search Tree (BST) : Binary search 를 가이드 해주는 binary tree Binary Search Tree 의 각 Node 에는 array 의 Element 가 대응되며, 이것을 특별히 Key라고 합니다. (Tree 안에서 key의 값은 서로 다르다 가정합시다. 즉, Element 는 모두 distinct 합니다.) Non-Leaf Node k (= key 값이 k인 non-leaf node)는 다음과 같은 property 를 갖습니다. k의 left s..