컴퓨터공학 전공공부(24)
-
시스템 프로그래밍 chap 7. Linking
1. Linking 1-1. 링킹 기본 개념과 링커 linking에 들어가기 전에 linking의 발생 : 라이브러리의 특정 함수를 호출하게 되면 linking이 발생한다. compilation system의 분류 : compilation system은 크게 assembly phase와 linking phase로 구분된다. assembly phase에서는 C 코드를 object code로 만들고, linking phase에서는 앞에서 만든 object code와 필요한 다른 object file, 라이브러리를 결합해 단일 실행 가능한 프로그램으로 만든다. linker를 이해함으로써 얻는 것 : 큰 프로그램의 설계 가능 다른 중요한 시스템 컨셉 이해 공유 라이브러리 이용 가능 언어 범위 지정 규칙이 구현되..
2023.12.07 -
시스템 프로그래밍 chap 6. Machine-Level 프로그래밍 : 데이터
1. Arrays (배열) 1-1. 배열의 정의 배열 할당 T A[L]의 꼴로 할당한다. (예를 들면, int A[10];) 이 경우 T라는 데이터 타입의, 길이 L인 배열을 할당한 것이다. 결국, T A[L]은 메모리 내에서 L * sizeof(T) 바이트의 연속적으로 할당된 영역이다. 배열 접근 int val[5]; 에 접근한다고 가정하자. val은 다음과 같은 메모리 공간을 가질 것이다. 이를 바탕으로 val에 다양하게 접근할 수 있다. Reference Type Value val [4] //4번째 칸의 값에 접근 int 3 val //시작점 (포인터)에 접근 int * x val + i //자료형의 크기 * i만큼 주소 증가해 주소에 접근 int * x + 4i &val [2] //val[2]의 ..
2023.12.07 -
논리회로 chap 9. MSI Logic Circuits
9-0. MSI MSI란? medium-scale integration의 약어로, 중간 규모의 통합을 의미한다. 수백에서 수천 개의 전자 부품(트랜지스터, 저항기, 캐패시터 등)을 하나의 칩에 통합한 것을 의미한다. 이 범주는 소규모 통합(SSI)와 대규모 통합(LSI) 사이에 위치한다. 9-1. 디코더 디코더란? 디코더란 한 출력이 특정한 입력들의 조합에 의해서만 이루어질 때 사용한다. 카운터나 레지스터의 출력에 대해서 작동한다. 이진수를 나타내는 입력들을 받는다. 디코더는 특정한 입력의 조합에 대해 하나의 결과만이 active(HIGH)하며, 나머지는 LOW이다. 많은 디코더들은 active-LOW output을 만들게끔 설계되었다. 즉, 하나의 선택된 output만이 LOW, 나머지는 HIGH 상태..
2023.12.04 -
논리회로 chap 5. Flip-Flops and Related Devices
기말 시험 범위는 5-6부터!
2023.12.04 -
시스템 프로그래밍 chap 5. Machine-Level 프로그래밍 과정
0. 기존 내용 복습. Stack & 호출 관습 : 제어 전송 1. 호출 관습 : 데이터 전송 데이터 흐름의 절차 데이터 저장소는 레지스터와 스택으로 구성된다. 처음 6개의 인자는 레지스터로 구성되며, 7번째 인자부터는 스택으로 구성된다. 스택 공간은 필요할 때 할당된다. 레지스터 : %rdi, %rsi, %rdx, %rcx, %r8, %r9 + return value %rax 스택 : 데이터 흐름의 예시 //C code void multstore (long x, long y, long *dest) { long t = mult2(x,y); *dest = t; } long mult2 (long a, long b) { long s = a*b; return s; } //assembly 0000000000400..
2023.12.04 -
오픈소스sw개론 Part2, chap 6. NumPy Example, Random Walks
1. 순수 파이썬만을 이용한 구현 2. NumPy를 이용한 구현 NumPy를 이용한 구현 관련 통계 도출 여러 무작위 걸음을 한 번에 시뮬레이션 n번째 계단에 언제 도달? line 14 부연설명 np.abs(walks[hits30]) >= 30 walks[hits30] : walks 배열에서 hits30이 True값을 가지는 row를 선택한다. 즉, walks 중에서 |30|을 찍는 이벤트가 발생한 모든 row를 추출한다. np.abs(walks[hits30]) : 위에서 선택된 행들에 대해 절대값을 취한다. np.abs(walks[hits30]) >= 30 : 위에서 취한 절대값이 30 이상인지 여부를 판단해 이에 따른 boolean 배열을 반환한다. .argmax(1) .argmax(1) : 위에서 ..
2023.12.01