일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- http발전과정
- Android
- flutter
- 내부 단편화
- NestedScrollView
- 리사이클러뷰풀
- appcompatacitivity
- 상태관리
- 뷰홀더
- appcompatactivity
- http 역사
- 안드로이드
- viewModelScope
- Dispatchers
- 운영체제
- 데코레이터 패턴
- 리사이클러뷰
- AAC
- apk 빌드 과정
- 플로이드워셜
- 물리 메모리
- AsyncListDiffer
- 프로세스
- 디자인 패턴
- recyclerview
- 자이고트
- Kotlin
- GetX
- DiffUtil
- 절대 주소
- Today
- Total
목록Develop (25)
hong's android

개발자가 작성한 프로그램들은 어떻게 메모리에 적재되고, 실행될까? 운영체제 도서를 읽으며 관련 내용들을 정리해보았다. 실제 책 목차와 다른 부분들이 있을수 있다. 메모리의 용량을 늘리면 작업 속도가 빨라지지만 어느 수준 이상이 되면 그 차이가 적어진다. CPU의 작업 공간이 메모리이기 때문에 메모리 관리는 성능에 막대한 영향을 미친다. 1. 메모리 관리의 복잡성운영체제도 프로그램이므로 메모리에 올라와야 실행할 수 있다. 따라서 메모리에는 사용자 프로세스뿐 아니라 운영체제 프로세스도 공존한다. 컴퓨터 부팅이 이루어지는 과정에서, 하드디스크에 저장된 운영체제가 메모리에 올라간다. 부팅이 끝나면 여러 응용 프로그램이 메모리에서 작업을 할 수 있다. 2. 소스코드의 번역과 실행2.1 컴파일러와 인터프리터의 ..

프로세스 간 통신 (IPC)프로세스가 다른 프로세스와 데이터를 주고받는 프로세스 간 통신에는 같은 컴퓨터 내에 있는 프로세스뿐만 아니라 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신도 포함된다. 프로세스는 각각의 가상 메모리를 독립적으로 할당받고, 다른 프로세스의 가상 메모리에 접근할 수 없다. 프로세스 외부에서 메모리를 마음대로 변경할 수 없게 해야 하기 때문이다. 그래서 다른 프로세스와 통신을 하기 위한 방법은 아래의 방법들이 있다. 1) 프로세스 내부 데이터 통신 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우 2) 프로세스 간 데이터 통신같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우 책에는 나와있지 않았지만, 프로세스 간 통신을 위해 메모리에 접근하는 방식은 Shared..

“쉽게 배우는 운영체제”책을 읽고 정리한 글입니다. 부족한 내용들은 유튜브 또는 다른 책들을 참고하였습니다. 프로세스운영체제에서 프로세스는 하나의 작업 단위이다. 사용자가 마우스를 더블클릭하여 프로그램을 실행하면 그 프로그램은 프로세스가 된다. 프로그램이 프로세스로 전환될 때 운영체제는 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 프로세스 제어 블록을 만든다. 프로제스 제어 블록(pcb)프로세스 제어 블록은 프로세스와 관련된 정보를 저장한다. 프로세스들은 차례대로 돌아가며 한정된 시간만큼만 cpu를 이용한다. 자신의 차례가 되면 정해진 시간만큼 cpu를 이용하고, 인터럽트 또는 시스템콜이 발생하면 다음 차례가 올 때까지 기다린다. 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리..

HTTP란?HTTP(하이퍼텍스트 전송 프로토콜)은 웹 페이지, 텍스트, 이미지, 미디어, 바이너리 파일과 같은 다양한 콘텐츠 전송을 가능하게 하는 애플리케이션 계층 프로토콜입니다. HTTP/1.0Http/1.0은 전송 제어 프로토콜 (TCP) 기반으로 연결되며, 각 요청이 별도의 TCP 연결을 통해 생성됩니다. 각 요청마다 TCP 연결을 해야 하므로 비효율적이고, 레이턴시를 증가시킵니다. 또한, TCP는 slow-start 기반으로 작동하기 때문에 많은 TCP 연결이 추가될수록 오버헤드가 발생합니다. HTTP/1.1 - 단일 TCP 연결에서 다수의 요청과 응답 전송 Http/1.0의 문제를 해결하기 위해 HTTP/1.1은 연결 유지(Keep-Alive) 메커니즘을 도입했습니다. 이 메커니즘은 “Con..
적은 수정을 해야 되는 경우에도 새로운 클래스를 만들고 객체를 생성하는 것은 비 효율적이다. 클래스 선언과 객체 생성을 동시에 가능하다. 1. 객체 식 (Object expressions) window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { /*...*/ } override fun mouseEntered(e: MouseEvent) { /*...*/ } }) 추상 클래스나 인터페이스를 구현해서 클래스를 따로 정의하지 않고 사용할 수 있다. 즉, 익명 클래스를 만들 수 있다. class C { private fun getObject() = object { val x: String = "x" } ..

오브젝트풀링 이란? 객체들을 매번 새로 생성/제거하지 않고 풀 안에 기존 객체들을 재사용하는 디자인 패턴 언제 사용할까? 스레드를 생성하고 수거할때 스택 메모리를 이용(할당, 초기화) 해야 하기 때문에 매번 생성하는 것은 비교적 비용이 높다. 그래서 오브젝트 풀링 방식인 스레드풀을 사용해서 스레드를 재사용하면 오버헤드를 줄일 수 있다. 또한 개발자 입장에서 스레드 마다 생명주기를 신경 쓰지 않아도 된다. 하지만 풀에 너무 많은 스레드를 생성해 놓는다면 메모리 낭비로 이어진다. java.util.concorrent 패키지에 Executors 클래스를 사용해서 스레드 풀(Object polling 방식)을 사용할 수 있다. Executors클래스는 Executor Service 인터페이스의 구현 객체를 생성..