[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

분류 전체보기 495

MarketPlace에 'Android Drawable Importer'가 없을 때

ImageView에 대한 강의 수강 중 이미지의 크기를 다양하게 불러올 수 있는 'Android Drawable Importer'를 배웠다. plugins의 MarketPlace에 검색하면 나온다는데 왜인지 나는 없었다. 생각보다 간단하게 문제를 해결했다. https://plugins.jetbrains.com/plugin/7658-android-drawable-importer Android Drawable Importer - Plugins | JetBrains This plugin consists of three main features. You can access them by a right-click anywhere, but not on a file, inside an Android module un..

[운영체제] 상태천이 / PCB / 시스템 호출, 인터럽트, 문맥교환의 연계

상태 천이 (State Transition) 실제로 프로세스는 단순히 중단, 실행의 상태만 있는 것이 아니라 더 다양한 상태가 존재한다. (이는 운영체제의 종류에 따라 다양하지만 대표적인 5가지 상태인 생성,준비, 실행, 대기, 종료에 대해서만 알아보도록 하겠다.) 이러한 프로세스의 상태가 바뀌는 것을 '프로세스 상태 천이'라고 한다. 각각의 상태는 모두 연관되어 있다. 이러한 상태 천이는 상태천이도로서 설명된다. (참고 : https://sungjk.github.io/2016/05/20/Scheduling.html) 생성(new) , 종료(terminated) : 프로세스가 생성 중일 땐 생성(new) 상태가 되고, 프로세스 실행이 종료하면 종료(terminated) 상태가 된다. 준비(ready) :..

[자료구조] 합병정렬(Merge Sort)의 증명

합병정렬 int sort(int a[], int n) { int h; int b[n]; h = n / 2; // copy a[] to b[] sort(b, h); sort(b+h, n-h); // Merge two halves in b to a return 0; } 정렬된 두 가지 배열을 정렬되도록 합치는 것이 Merge(합병)이다. 배열을 가장 작게 쪼갠 뒤, 이들을 계속해서 Merge하면 최종적인 배열이 정렬될 것이다. 반복문으로도 구현할 수 있지만, 조금 복잡해져서 재귀를 활용했다. copy와 merge 코드 구현부는 제외하고 서술했다. 시간복잡도 O(N*logN) 합병정렬의 증명 입력 집합 a[0],a[1],...,a[n-1] 의 정수 집합에 대해 Sorting이 완료된 집합은 b[0],b[1],..

[자료구조] 선택정렬(Selection Sort)의 증명

선택 정렬 int sort(int a[], int n) { int i,j,m,t; for (i=0;i k - 1 라면 a[x] > a[k-1] 가 성립한다. 4. Prove Invariant by induction Base : 'k = 0 일 경우 invariant가 성립한다.' -> invariant(1) null condition으로 true / invariant(2) null condition으로 true Step : 'k번째 루프가 끝났을 때 invariant가 성립한다면 k+1번째 루프가 끝났을 때도 invariant가 성립한다' -> k번째 루프가 끝났을 때 'a[0] k - 1 라면 a[x] > a[k-1]'가 성립한다고 가정하자. 그 후..

[운영체제] 프로세스 / 문맥 / 문맥교환

프로세스 정의 프로세스 : 실행 중인 프로그램. 어떤 프로그램이 임의 시점에서 실행되고 있다면 그를 프로세스라고 한다. 프로그램은 저장장치(하드디스크)에 존재한다. 프로그램이 CPU가 이를 다룰 수 있도록 메인 메모리에 탑재되면 프로세스가 된다. 이들은 시스템 콜을 통해서 커널의 통제하에 시스템의 자원을 경쟁하는 주체들이다. 시분할 시스템에서는 임의의 시점에 여러 프로세스가 동시에 수행하는 경우도 있다. 이를 멀티태스킹(혹은 멀티 프로세싱, 태스킹과 프로세싱은 같은 용어라고 봐도 무방)이라고 한다. 프로세스는 그 주체에 따라 두가지로 나뉜다. 응용 프로그램이 실행되면 이는 사용자 프로세스라고 하고, 운영체제가 필요에 의해 생성하는 프로세스는 시스템 프로세스라고 한다. 문맥과 문맥교환 프로세스의 문맥(co..

Data Storage

컴퓨터의 기본 구성 비트(Bit, Binary Digit) : 0,1로 이루어진 2진수 신호. 비트패턴으로 다양한 정보를 표현할 수 있다. Boolean Operation : 비트 신호를 True / False의 관계로 보고 이를 활용 및 연산할 수 있다. Boolean Operation에는 AND, OR, XOR, NOT 등이 있다. Gate : 이러한 Boolean Operation을 계산하는 장치. 작은 전기 회로로 구성하고, 컴퓨터 생산시 단위가 활용된다. VLSI(Very Large Scale Integration), 즉 초집적회로이다. Flip-flop : Gate로 만든 한 비트를 저장하는 Digital Circuit이다. 한 라인은 1을 저장하고 한 라인은 0을 저장한다. 다양한 방식으로 ..

[운영체제] 보호 / 캐시 / 부트스트래핑 / 커널의 종류

이중모드와 모드비트 '보호'라는 것은 기본적으로 커널의 모든 데이터가 응용 프로그램 등의 영향에 의해 손상되지 않도록 하는 것을 의미한다. 하지만 커널의 구성요소는 다양하다. 이 모든 것에 대해 하나하나 보호 방법을 강구하는 것을 매우 소모적이다. 따라서 보다 근본적이고 연쇄적으로 작용할 수 있는 해결법을 찾는 것이 중요하다. 이중모드 : 커널 모드와 사용자 모드 모두를 분리하는 방식이다. 메인 메모리를 사용자 공간과 커널 공간으로 나누고 CPU가 사용자 공간 프로그램을 수행할 때는 사용자 모드로, 커널 공간 프로그램을 수행할 때는 커널 모드로 동작하도록 한다. 즉, 어떤 응용 프로그램에서 커널이나 다른 프로그램의 오동작을 야기 시킬 수 있는 함수(코드)를 사용해야 할 때 커널 모드로 전환하여 이를 수행..

[자료구조] 자료구조개론

- 본격적인 자료구조에 대해 배우기 전에 자료구조를 익히기 위한 사전 지식을 배워보자. - 여러 부분을 다뤄야해서 다소 광범위한 느낌이 있다. - 모든 코드는 C++이 기준이다. 변수 int a = 129; 변수는 기본적으로 위와 같이 선언한다. 변수는 a와 같은 이름과 위 코드에서는 보이지 않지만 해당 값이 저장된 메모리 상의 주소, int와 같은 자료의 타입으로 구성된다고 할 수 있다. 이 중 특히 타입은 해당 값의 '크기'와 '해석 방법'을 정의하기 때문에 중요하다. (int는 4바이트의 크기를 가지고 숫자로 해석되지만, char는 1바이트의 크기를 가지고 아스키 코드를 통해 문자로 해석된다.) 포인터 int a, x; int *p, *r; int **q; x = a + *p; // 가능 q = p..

[운영체제] 입출력시스템

입출력 시스템의 일반적 구성 입출력 장치는 '시스템 버스'와 연결되어야 하는데, 물리적인 입출력장치가 바로 시스템버스에 접속되어 있는 것은 아니고 '제어기'를 통해서 연결이 된다. 즉, 장치 제어기가 시스템 버스와 연결되어 있다. 응용 프로그램이 시스템 콜을 통해 커널의 파일 시스템 및 디바이스 드라이버에 연결되고, 커널의 다바이스 드라이버가 장치 제어기를 통해 입출력 장치 자체와 연결된다. 즉, 응용 프로그램이 시스템 콜을 호출하면 이 호출이 커널의 디바이스 드라이버에게 전달되고, 디바이스 드라이버는 하드웨어인 장치 제어기와 명령 및 정보를 주고받으며 작업을 수행하고, 이러한 작업을 통해 입출력 장치가 통제되게 되는 것이다. 디바이스 드라이버와 장치제어기의 상호작용 (하드웨..

[운영체제] 커널과 시스템호출

운영체제는 하드웨어와 매우 밀접하게 연관되어 있다. 특히 CPU내의 레지스터나 메모리 입출력장치 등과 같이 장치 자체가 운영체제의 기능과 접점을 이루는 경우, 해당 장치의 구조와 기능을 잘 알고 있어야 운영체제를 이해할 수 있다. 하지만 하드웨어 전체를 이해하기란 어려움이 있으므로, 컴퓨터 구조라는 개념으로 일반화(추상화)하여 공부해보고자 한다. 앞으로 커널과 시스템 호출부터 시작해서 커널이 외부세계와 접촉하는 입출력 시스템, 입출력시스템과 커널의 접점인 인터럽트의 구조와 기능, 캐시와 기억장치의 구조 등에 대해 공부하겠다. 커널 커널 : 이전에 배운 '상주모니터' 개념의 연장선 상에 있다. 운영체제의 핵심으로서 부팅 이후 메모리에 상주하는 부분이다. (사실 부팅 자체가 이러한 커널을 메모..

반응형