목록돠깨비 (41)
리루
Endian : Byte ordering Byte order의 차이는 CPU의 차이로 인해 발생한다. 엔디안이라는 단어는 "걸리버 여행기"에서 처음 나왔다. 소인국 사람들 중에 달걀을 깰때 뭉툭한 곳(Big-Endian)부터 깨는 사람들이 있는 반면, 뾰족한 곳(Little-Endian)부터 깨는 사람들이 있어서 서로 자신의 방법이 맞다고 주장하는 글에서 유래되었다. Little Endian은 그 크기만큼 무조건 거꾸로 읽는다 가 힌트입니다. -"Little Endian은 상위bit (MSB)를 상위 주소에 저장을 하고 있습니다 문자열 "wxyz"를 저장한다면 다음과 같이 표현이 가능하다. 주소Big Endian(MSB) Little Endian(LSB) 0x1003 z w 0x1002 y x 0x100..
일부 시스템이서 가상 메모리(virtual memory)를 제공하기 위해 연결 리스트를 사용한다. 가상 메모리는 프로세스가 실제 메모리에 있지 않은 상태에서도 수행될 수 있게 하는 주소 공간 매핑이다.가상 메모리의 장점 중 하나는 프로세스가 실제 메모리보다 큰 주소 공간을 사용할 수 있게 해준다는 점이다. 또 여러 프로세스들이 동시에 실행되면서 메모리를 공유할 수 있다는 점이다. 가상 메모리에서 실행되는 프로세스는 가상 주소(Virtual address)를 사용한다. 가상주소는 프로세스에게 실제 주소(physical address)처럼 보이지만 사용하기 전에 시스템이 변환해 주어야하는 것이다.주소변환은 페이지 테이블을 사용하는데 전용 하드웨어를 사용하므로 속도가 빠르다.각 프로세스는 가상 주소 공간의 페..
이전에 가상 메모리 시스템에서 프레임 할당을 관리하는데 단일 연결 리스트를 사용하는 방법을 살펴보았다.당시 논점 중 하나인 사용 가능한 프레임의 리스트가 비어 있을 때 어떻게 새로운 프레임을 할당하는가에 대한 얘기를 해보자. 이 상황을 처리하기 위해 실제 메모리의 페이지를 스왑 디스크라고 불리는 영역으로 옮겨서 한 프레임을 해제한다.어떤 순간에 어느 프레임을 해제할 것인지를 결정하는 데 페이지 교체(page-replacement) 알고리즘이 사용된다. 페이지 교체 알고리즘의 한 예가 재시도 알고리즘(second-change) 또는 클릭(click) 알고리즘이다. 이상적으로는 프로세스들의 모든 페이지가 실제 메모리에 존재하면 좋겠짐나 일반적으로 불가능하다.전형저으로 한 시스템의 많은 프로세스들이 실제 메모..
재귀는 자신의 보다 작은 인스턴스들로 무엇인가를 정의할 수 있게 하는 강력한 원리이다. 재귀함수는 자신을 호출하는 함수이다. -->팩토리얼int fact(int n){ if(n 팩토리얼F(n,a) = a (if n=0, n=1, a는 기본 1) = F(n-1,na) (if n>1) int facttail(int n, int a){ if(n
Code SegmentData SegmentStack Heap[메모리 구조] 입력 매개변수리턴값임시기억장소상태정보저장출력 매개변수[활성 레코드의 메모리 구조] - 코드 영역에는 프로그램이 실행될 때 수행되는 기계어가 들어간다.- 정적 자료 영역에는 전역변수와 static local variable 같이 프로그램이 실행되는 동안 항상 존재하는 자료가 들어간다.- 힙은 malloc 함수를 통해 할당되는 메모리처럼 동적으로 할당되는 메모리 공간이다.- 스택에는 함수 호출 관련 정보가 들어간다.- 관례상 합 영역은 프로그램 메모리의 한쪼 끝에서 위로 커져가고, 스택은 반대로 끝에서 아래로 커져간다. - C 프로그램에서 함수가 호출될 때 호출과 관련된 정보를 보존하기 위해 스택에서 메모리 블록을 할당 받는다.- ..
함수의 매개변수로서의 포인터 포인터는 C에서 함수 호출의 가장 중요한 부분이다. 가장 중요한 것은 참조 호출(Call-by-reference)이라는 매개변수 전달을 지원하기 위해 포인터가 사용된다는 점이다. 참조호출에서 함수가 전달된 매개변수를 변경했을 때 그 변경은 함수가 리턴한 후에도 지속된다. 매개변수 변경이 함수 내에서만 지속되는 값 호출(Call-By-Value)과 비교해 보라. 또 자료의 변경과 관계없이 많은 양의 자료를 함수에 전달하거나 함수에서 전달받을 때 포인터가 효율적인 수단이 된다. 전체 자료 대신에 포인터만 전달되므로 이 방법은 효율적이다. 참조 호출 매개변수 전달 형식적으로 C는 값 호출만 제공된다. 값 호출 매개변수 전달에서는 함수가 실행될 때 전달된 매개변수의 내부 복사본이 만..
1. LCD - LCD에는 컬러필터가 있습니다. 위의 그림고 ㅏ같이 LCD는 색을 표현하기 위해 컬러필터가 필요하다. - LCD에서 빛을 내는 부분은 백라이트인데, 이 빛은 항상 켜져있고, LCD 전체에 비춰진다. - 항상 들어오는 이 빛을 보내줄지 말지 결정하는 부분이 TFT와 액정이고, 마지막 통과된 빛의 색을 표현해 주는 것이 '컬러필터'이다. 2. OLED - OLED는 컬러필터가 없다. - OLED는 모든 색이 스스로 빛을 내는 자발광을 하고있다. - 백라이트(광원)가 픽셀의 숫자만큼 있다고 보면 된다. - 그렇기 때문에 픽셀 자체의 빛을 TFT에서 공급되는 전압, 전류만으로 개별적으로 제어할 수 있다. - 모든 서브 픽셀을 개별적으로 제어할 수 있어 세밀한 표현과 깊은 블랙을 그대로 구현할 수..
자료구조 1. 효율성 - 자료구조는 좀 더 효율적인 알고리즘이 될 수 있도록 자료를 구조화 시킨다. 자료를 탐색하기 위한 구조를 예로 들어보자. 단순하게 자료들을 배열에 넣고 원하는 자료를 찾을 떄까지 앞에서 차례대로 하나씩 비교하는 방법이 있따. 그러나 이 방법을 이용하면 모든 자료를 비교하는 일이 종종 발생하므로 비효율적이다. 이 경우에는 해시 테이블이나 이진 트리 같은 자료구조를 사용하면 훨씬 빠르게 탐색할 수 있다. 2. 추상화 - 자료 구조는 자료를 바다 쉽게 이해할 수 있는 방법을 제공한다. 즉 문제 해결을 위한 어느 정도의 추상화를 제공한다. 자료를 스택에 넣는 예를 보면, 스택에 자료를 넣고 빼는 연산의 자세한 구현 방법보다는 그 연산을 어떻게 이용할 것인지에 초점을 찾출 수 있다. 즉 자..
1. Array를 반환하는 함수를 오용한 서브루틴 Sub splitBadExample() Dim str As String Dim strTemp As String Dim i As Integer str = "이름 전화번호 이메일 주소" For i = 0 To 3 strTemp = Split(str)(i) Next i End Sub 2. Array를 반환하는 함수 호출을 최소화한 서브루틴 Sub splitGoodExample() Dim str As String Dim strTemp As String Dim strArr() As String Dim i As Integer str = "이름 전화번호 이메일 주소" strArr = Split(str) For i = 0 To 3 strTemp = strArr(i) N..
문자열을 Unicode로 변환한다. 아래에 구현된 코드는 2byte가 넘는 문자열의 경우에는 Little endian 형태가 적용되고(ex. 이 -> C7 74(big) -> 74 C7(little) ), 2byte가 넘지 않는 문자열의 경우에는 그대로 Big endian으로 사용된다(ex. a -> 61 -> 61 00) 왜 위에서 2byte가 넘지 않을 경우에 "00 61"이 아니라 "61 00"으로 되는지는 공부가 필요한 부분이다. '------------------------------------------------------------------------------------------------------------------------------------------------------..