함수의 프롤로그 & 에필로그
·
CS/Computer Architecture
.text:00401000 55 push ebp.text:00401001 8B EC mov ebp, esp.text:00401003 68 F8 20 40 00 push offset Buffer ; "Hello World :)".text:00401008 FF 15 B0 20 40 00 call ds:__imp__puts.text:0040100E 83 C4 04 add esp, 4.text:00401011 FF ..
Register
·
CS/Computer Architecture
General-Purpose register여러가지 목적이나 용도로 사용하는 레지스터프로그래머가 자유롭게 조작 할 수 있음일종의 변수라고 생각할 수 있음인텔의 공식 문서에 따르면 32비트의 시스템의 경우 8개가 존재인텔의 공식 문서에 따르면 64비트의 시스템의 경우 16개가 존재용도나 목적이 정해져있지 않음 (그렇지만 일반적으로 어떠할 때 사용한다는 것은 존재함)* RAX, RBX, RCX, RDX 2byte 중 상위 1byte에 접근할 수 있음더보기[ 범용 레지스터의 용도/목적 ] 실질적으로 정해져있는 것은 아니지만 주로 사용함EAX : 피연산자와 연산 결과의 저장소EBX : data segment 안의 데이터를 가리키는 포인터ECX : 문자열 처리나 루프를 위한 카운터EDX : I/O 포인터ESI :..
[Assembly] Intel vs AT&T
·
CS/Computer Architecture
어셈블리어 : 기계어와 일대일 대응되는 저급 언어IntelAT&Tmov eax, 1movl $1, %eaxlea ecx, [ebx+eax*2]leal (%ebx, %eax,2), %ecx같은 문법이 Intel과 AT&T인가에 따라 달라짐 더보기[ 어셈블리의 피연산자 ] 상수, 레지스터, 메모리 셋 중 하나이다 메모리에 접근하려면TYPE PTR [레지스터 or 상수] 형태이다 ex) QWORD PTR [rax+8]접미사mov eax, 1movl $1, %eax intel의 경우 단순 명령어만 적지만, AT&T의 경우 해당 명령어가 어떤 크기의 명령어인지 나타낸다예시를 보면, eax는 4바이트이므로 long이다. [b] byte : 1byte[w] word : 2byte[l] long(double word)..
CPU Scheduling
·
CS/OS
Scheduling MetricsTurnaround time\[T_{turnaround} = T_{completion} - T_{arrival}\]프로세스가 생성된 시간부터 종료된 시간까지 걸린 시간으로 기다린 시간까지 포함Response time\[T_{response} = T_{firstrun} - T_{arrival}\]처음 실행때까지 걸린 시간 / 즉 요청을 보낸 후 처음 프로세스가 실행된 시간  Workload Assumptions cpu의 운영 방식을 가정하면서 가장 효율적인 CPU scheduling 방식이 무엇인지 찾아보고자 한다.Each job runs for the same amount of time ( 모든 프로세스가 같은 시간이 소요됨 )All jobs arrive at the sa..
Hardware Architecture - Single Processor
·
CS/Computer Architecture
Von Neumann Architecture 폰 노이만 구조거의 모든 컴퓨터의 기본이 되는 구조Idea연산제어저장세 가지의 핵심 기능이 필요함 연산 & 제어 → CPU저장 → memory장치 간 데이터 및 신호 교환 → bus CPU 중앙 처리 장치ALU (산술 논리 장치) : 산술 및 논리 연산을 실행함Control Unit : CPU를 제어하는 제어장치Register (레지스터) : CPU에 필요한 데이터를 저장함 - Program counter 등이 포함되어 있음등으로 이루어짐 Memory 기억장치주기억장치 (Ram) : 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위해 사용보조기억장치 (HDD, SSD) : 운영 체제, 프로그램 등과 같은 데이터를 장기간 보관하고자 할 때 사용 Bus ..
Graph (Subgraphs, Unions, Isomorphism, Path)
·
CS/Data Structure
Subgraphs그래프의 일부 Defintion Let G = (V,E) and H = (W,F) be graphs. H is said to be a subgraph of G, if \(W\subseteq V\) and \(F\subseteq E\)G와 H가 모두 그래프이고, W가 V의 부분집합, F가 E의 부분 집합일 때 subgraph라고 한다 Q.How many \(Q_2\) subgraphs does \(Q_3\) have?A. 같다의 약한 개념에서는 6, 강한 개념에서는 1개이다노드에 번호를 부여하였을 때, 노드의 번호가 다르다면, 다른 그래프이기 때문에 \(Q_2\)에 1,2,3,4라는 노드 번호와 일치해야한다. Unions강하게 같다 라는 개념을 사용하여 Q.How many \(Q_2\) s..
Graph (Undirected, Digraphs, Graph Patterns)
·
CS/Data Structure
Graph basics and definitionsVertices / nodes : 노드, 점edges : 선adjacency / incidence : 인접 - 두개의 뜻이 어떻게 다를까?Degree, in-degree, out-degree : 차수Subgraphs, unions, isomorphismAdjacency matrics (인접 행렬)Graph의 종류TreesUndirected graphs - simple graphs, Multigraphs, PseudographsDigraphs, Directed multigraphBipartiteComplete graphs, cycles, wheels, cubes, complete bipartiteIntuitive Notion 정의 A graph is a b..
Union Find
·
CS/Data Structure
합집합 찾기Minimum Spanning TreeGiven a Graph, find Subset of Edges so that a Connected Graph results with Minimum sum of edge costsWeighted (비용이 있는)그래프연결된 그래프가 주어지고 edge의 일부를 골라서 그 edge로 갔을 때 connected이고 edge의 최소 비용이면 tree ▶ tree connected Acyclic Graph (연결되어 있고 사이클이 없는 그래프) 만약 사이클이 있다면 한 edge를 버려도 됨 - 연결되어있으며 비용을 줄일 수 있기 때문임 (사이클이면 minimum이 아님) Kruskal AlgorithmKeep adding EdgeFrom smaller weights ..
Tree Traversal & Parsing
·
CS/Data Structure
tree에는 단순한 1차원 데이터가 아닌 복잡한 구조를 넣을 수도 있음 ex)수식Traversal트리 전체를 돌아다니면서 전체 구조를 파악함Traversal means to visit all nodes in some ordervisit does not mean being at a node 방문한다는 것은 노드에 있다는 것이 아니라visit means doing something at a node 어떤 작업을 한다는 것Traverse(Node *D){ if(D == NULL) return; Visit(D); Traverse(D->Left); Visit(D); Traverse(D->Right); Visit(D);} 노드 D에는 세번 위치함 → 맨 처음 방문 / 왼쪽에 갔다 오는 경우 / 오른쪽에 갔다가 오는..
Priority Queue
·
CS/Data Structure
Queue but items in it have prioritiesSimplest of Priorityno change of priority 우선순위가 바뀌지 않음highest proirity comes out first 가장 높은 우선순위가 제일 먼저 나옴 (작은 값)Possible Array ImplementationsSorting → Delete는 빠르지만, insert의 경우 들어오면 하나씩 밀어줘야함Unsorting → insert는 빠르지만, delete할 때 우선순위를 찾아야함Binary Tree ImplementationFind Minimum in the Trees : go down left until you cannot 맨 왼쪽 아래가 첫번째 우선순위임* AVL, 2-3, 2-3-4 or..