일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- React
- 리액트네이티브
- 데이터베이스
- 안드로이드
- 앱 개발
- 코틀린
- 디자인패턴
- 안드로이드 디자인 패턴
- 개발
- Operating System
- Kotlin
- CS지식
- 운영체제
- 안드로이드 개발
- 앱개발
- db
- MVVM
- cs
- 스레드
- OS
- github
- 디자인 패턴
- 액티비티
- 메모리
- 앱
- Android
- 리액트
- 프로세스
- reactnative
- Database
- Today
- Total
목록Computer Science (25)
Tech Log
프로세스(process) 컴퓨터에서 실행되고 있는 프로그램. 실행을 위해 메모리에 올라온 동적인 상태이다. CPU 스케줄링의 대상인 작업(task)과 거의 같은 의미를 가진다. * 스레드(thread) : 프로세스 내 작업의 흐름 프로그램의 실행 과정 프로그램은 메모리에 올라가면서 실행된다. 프로그램이 메모리에 올라가면 프로세스가 된다. 이때 프로그램은 인스턴스화가 된다. 프로세스는 CPU 스케줄러에 따라 순서에 맞게 실행된다. 프로세스와 컴파일 과정 프로그램은 컴파일러가 컴파일 과정을 거친 후, 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것이다. 이 프로그램은 C 언어 기반의 프로그램이며, 인터프리터 언어로 된 프로그램과는 다르다. 1. 전처리 소스 코드의 주석을 제거하고,..
메모리가 한정되어 있으므로 스와핑이 많이 일어나며 이러한 스와핑은 많이 일어나지 않도록 설계되어야 한다. 스와핑은 페이지 교체 알고리즘을 기반으로 일어난다. 오프라인 알고리즘(offline algorithm) 먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘. 가장 좋은 방법이나 미래에 사용되는 프로세스를 우리는 알 수 없기 때문에 사용할 수 없는 알고리즘이다. 다른 알고리즘과의 성능 비교에 대한 기준으로 사용한다. FIFO(First In First Out) 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법 LRU(Least Recentle Used) 참조가 가장 오래된 페이지를 바꾼다. 이 오래된 것을 파악하기 위해 각 페이지마다 계수기(counter), 스택을 두어야 하는 ..
메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 한다. 할당 방식은 연속 할당과 불연속 할당으로 나뉜다. 연속 할당 메모리에 연속적으로 공간을 할당하는 것이다. 프로세스를 순차적으로 공간에 할당한다. 연속 할당은 고정 분할 방식과 가변 분할 방식으로 나뉜다. 고정 분할 방식(fixed partition allocation) 메모리를 미리 나누어 관리하는 방식. 큰 프로세스가 메모리에 올라오면 여러 조각으로 나누어서 배치한다. 장점 : 메모리를 일정한 크기로 나누어 관리하므로 메모리 관리가 수월하다(가변 분할 방식의 메모리 통합같은 부가적인 작업을 할 필요가 없다) 단점 : 메모리가 미리 나뉘어 있으므로 융통성이 없다. 또한 내부 단편화가 발생한다. *내부 단편화(inte..
가상 메모리(virtual memory) 메모리 관리 기법 중 하나로, 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 사용자들에게 매우 큰 메모리로 보이게 하는 것. 가상적으로 주어진 주소를 가상 주소(logical address) 실제 메모리 상에 있는 주소를 실제 주소(physical address) 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환 이를 통해 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다. 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있으며, 프로세스의 주소 정보가 들어 있는 페이지 테이블로 관리된다. 이때 속도 향상을 위해 TLB를 사용한다. *TLB : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시. 페이지 테이블에 있는 리스트..
캐시 데이터를 미리 복사해 놓는 임시 저장소이자, 빠른 장치와 느린 장치의 속도 차이에 따른 병목 현상을 줄이기 위한 메모리. 캐시를 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고, 무언가를 다시 계산하는 과정을 생략하여 시간 절약할 수 있다. 캐싱을 할 때는 자주 사용하는 데이터를 기반으로 캐시를 직접 설정한다. 이때 자주 사용하는 데이터의 기준은 지역성으로 정한다. 지역성은 시간 지역성(temporal locality)과 공간 지역성(spatial locality)으로 나뉜다. 시간 지역성 최근 사용한 데이터에 다시 접근하려는 특성. for(i in 0..10){ arr[i] = i } 위와 같은 코드에서 시간 지역성을 기준으로 자주 사용하는 데이터는 i가 된다. 공간 지역성 최근 접근한..
메모리 계층 휘발성 메모리 레지스터 : CPU 안에 있는 작은 메모리, 속도 가장 빠름, 기억 용량이 가장 적다 캐시 : L1, L2 캐시를 지칭하나 L3 캐시도 있다. 속도 빠름, 기억 용량이 적다 주기억장치 : RAM을 가리킨다. 속도 보통, 기억 용량이 보통. 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고 이를 필요할 때마다 CPU에 빠르게 전달하는 역할 레지스터 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 저장장치. CPU 내에 있으므로 가장 빠르다. 캐시 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소. 필요한 데이터를 모아 한꺼번에 처리하는 버퍼의 일종. CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다..
컴퓨터의 요소 컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다. CPU(Central Processing Unit) 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행 커널이 프로그램을 메모리에 올려 프로세스를 만들면 CPU가 이를 처리 제어장치(Control Unit, CU) 프로세스 조작을 지시하는 CPU의 한 부품 입출력장치 간 통신을 제어 명령어들을 읽고 해석 데이터 처리를 위한 순서를 결정 레지스터 CPU 안에 있는 매우 빠른 임시기억장치 CPU와 직접 연결되어 있어 연산 속도가 메모리보다 수십 배 빠르다 CPU가 자체적으로 데이터를 저장할 방법이 없어 레지스터를 거쳐 데이..
운영체제 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스. 한정된 메모리나 시스템 자원을 효율적으로 분배하는 역할. 예) PC 운영체제(Mac OS, Windows, 유닉스, 리눅스 등), 모바일 운영체제(iOS, 안드로이드 등) *운영체제와 유사하나 소프트웨어를 추가로 설치할 수 없는 것이 펌웨어(Firmware). 펌웨어는 특정 하드웨어에 포함된 소프트웨어를 말한다. 운영체제의 역할 CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환 관리 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당할지를 관리 디스크 파일 관리 : 디스크 파일의 보관 방법을 관리 I/O 디바이스 관리 : I/O 디바이스들(마우스, 키보드 등)과 컴..