post-thumbnail

[System Programming] 6. Code optimization

이번에는 code optimization에 대해서 다뤄보겠습니다. 대부분의 compiler들은 CPU가 이해할 수 있는 machine code로 변환하기 위해 compile을 진행하는데, 이때 코드 그대로 단순히 변환하기 보다는 optimization을 통해

2022년 12월 27일
·
0개의 댓글
·
post-thumbnail

[System Programming] 5. Memory Hierarchy

이번 글에서는 컴퓨터의 기본적인 memory system, hierarchy에 대해서 살펴보고 그 중 cache 동작의 아주 간단한 원리를 살펴보고자 합니다. Memory Access 우리가 사용하는 컴퓨터는 기본적으로 폰 노이만 아키텍처를 따르고 있기 때문에

2022년 12월 25일
·
0개의 댓글
·
post-thumbnail

[System Programming] 4. Buffer overflow

Buffer overflow 컴퓨터에 대해서 공부를 하면서 한 번쯤은 buffer overflow라는 말에 대해서 들어본 적이 있을 것입니다. buffer overflow는 out-of-bound array element를 write하는 과정에서 stack에...

2022년 11월 10일
·
0개의 댓글
·
post-thumbnail

[Data Structure] 4. Tree

이번에는 data structure 중에서 tree에 대해 알아보겠습니다. tree는 기본적으로 linked list와 같이 여러 개의 node들을 연결한 형태를 가지고 있는 data structure입니다. 여기서 tree structure가 되기 위한 몇...

2022년 11월 1일
·
0개의 댓글
·
post-thumbnail

[Data Structure] 3. Stack & Queue

이번에는 abstract data type 중에서 stack에 대해 살펴보겠습니다. stack은 기본적으로 push, pop을 기본적인 operation으로 수행하는 data structure로, push는 stack에 object를 추가하는...

2022년 10월 30일
·
0개의 댓글
·
post-thumbnail

[System Programming] 3. Machine Procedure

Mechanisms in Procedure 이번에는 process에서 function call을 진행할 때의 mechanism을 설명드리고자 합니다. function call을 진행할 때 해당 function이 있는 address로 단순히 jump를 하게 되면...

2022년 10월 16일
·
1개의 댓글
·
post-thumbnail

[System Programming] 2. Machine Control

CPU의 register에는 앞선 게시물에서 작성했던 64-bit size의 register 외에도 single bit condition code가 존재합니다. x86-64 architecture에는 다음과 같은 4가지 condition code가 있습니다...

2022년 10월 15일
·
0개의 댓글
·
post-thumbnail

[System Programming] 1. Machine Basics

우리가 code를 작성할 때는 user level에서 이해하기 쉬운 programming language(ex. C, C++, python, java, etc)를 활용합니다. 하지만, CPU와 같은 machine level에서는 우리가 보는 language의 ...

2022년 10월 14일
·
0개의 댓글
·
post-thumbnail

[Data Structure] 2. Lists

What is list? 가장 먼저 살펴볼 data structure는 list입니다. abstract list(or list ADT $^\dag$ )는 programmer가 ordering을 define한 linearly ordered data로 정의됩니다...

2022년 10월 12일
·
0개의 댓글
·
post-thumbnail

[System Programming] 0. Intro

우리가 사용하는 컴퓨터가 어떤 방식으로 동작하는지 궁금했던 적이 있나요? 내가 컴퓨터를 켤 때, 프로그램을 실행시킬 때, hardware와 software가 어떻게 서로 상호작용하는지 등 컴퓨터의 동작에 대해 이해하고자 하는 과목이 ...

2022년 10월 9일
·
0개의 댓글
·
post-thumbnail

[Data Structure] 1. Algorithm Analysis

What to analyze? 두 알고리즘 A, B가 주어졌을 때, 둘 중 어느 알고리즘이 더 좋다고 판단할 수 있을까? 단순히 두 알고리즘을 모두 implement하여 실행하는 것으로 비교할 수도 있지만, 이는 얼마나 길게, 얼마나 많이 실행할 지, input ...

2022년 10월 6일
·
0개의 댓글
·
post-thumbnail

[Data Structure] 0. Intro

Data Structure(자료구조)는 컴퓨터에서 data를 효율적으로 관리하고 구조화시키는 방법입니다. data의 종류에 따라서 어떤 자료구조를 사용하는 지에 따라 problem solving에서 효율적인 algorithm을 구현하거나 memory space를 ...

2022년 10월 6일
·
0개의 댓글
·