컴퓨터상식/운영체제(OS)
-
App의 메모리 확보컴퓨터상식/운영체제(OS) 2024. 11. 12. 09:29
App의 메모리 확보에 관한 좋은 글.크래시 로그 분석하면 메모리 부족 이슈로 강제되는 경우가 굉장히 많다증권앱은 특히 기능이 매우 많다 보니 소스양 증가, assets 증가로 메모리 앱 크기도 클 뿐 아니라 메모리 사용량이 많음현재 운영중인 한화증권 앱은 90% 네이티브로 구성된 앱이라 그나마 타사에 비해 앱 크기가 작은편 (344MB)(아이티젠 사용하는 kb, 한투는 500Mb이상) 메모리 부족 이슈로 앱이 강제종료되는 현상 방지 방안을 고려해봐도 좋을듯https://gsretail.tistory.com/31 테크 블로그 TechBlogIT 기술 블로그들의 최신 포스트를 한곳에서 보세요.gsretail.tistory.com
-
동기/비동기컴퓨터상식/운영체제(OS) 2022. 3. 31. 10:29
1. Runloop & Timer https://babbab2.tistory.com/68 iOS) 런 루프(RunLoop) 이해하기 안녕하세요 :) 소들입니다 오늘은 RunLoop라는 것에대해 공부를 해볼 건데여 음... 내용이 좀 어려울 수도 있어여!! 저도 오랜만에 다뤄서 완전히 이해하고 쓰는 내용이 아니라... (한 1년 전에 공부 babbab2.tistory.com https://ios-development.tistory.com/515 [iOS - swift] Run Loops (런 루프, Thread 프로그래밍, global queue에서 Timer 동작 방법) 특정 이벤트가 왔을 때 쓰레드가 일해야 할 때는 일하고, 일이 없으면 쉬도록하기 위해 애플에서 만든 쓰레드관리 Loop 이벤트가 들어오..
-
모바일에서의 메인쓰레드, 프로세스컴퓨터상식/운영체제(OS) 2022. 3. 31. 09:03
프로세스 컴퓨터를 살때 CPU에 듀얼코어, 헥사코어라며 성능이 좋아요~ 따봉을 많이 받은 리뷰를 본적이 있을 것이다. 그 코어가 프로세스라고 생각하면 된다. 프로세스는 독립적으로 행동을 보장받는 "공간"이기때문에 보통은 앱들을 동시에 사용하는 멀티태스킹(스마트폰 초기에 아주 획기적인 기능이었다..)이 가능하게 되고, 멀티 태스킹이라는 말 자체가 멀티 프로세스로 여러개의 앱이 서로의 독립적인 구동을 보장받으면서 실행될 수 있게 해준다는 뜻이된다. 앱 하나 만드는데 다른 앱들 동시에 보장받는 것까지 신경써야 하나요? 프로세스단까지 신경을 쓸필요는 없지만, 이제 이야기할 쓰레드는 꼭 잘 읽어내려가야 한다. (사실 멀티프로세스 환경으로 서로에게 영향을 줄 영향이 있는 안드로이드는 조심할 필요가 있다... 하지만..
-
메모리관리(2/3) - strong, weak컴퓨터상식/운영체제(OS) 2022. 3. 4. 03:22
1. strong (강한 참조) ARC는 참조 횟수를 계산하여 0이 되는 시점에 힙에서 자동으로 해제하는 것 복습) class Human { var name: String? var age: Int? init(name: String?, age: Int?) { self.name = name self.age = age } } let sodeul = Human(name: "Sodeul", age: 26) 이렇게 sodeul 이라는 변수에 인스턴스를 생성하면 (포스팅을 위해 예제에선 sodeul이 전역 변수가 됐지만, 보통 우리가 개발할 때 그렇듯, 그냥 어디 클래스에서 생성된 지역 변수라고 생각) 이런 식으로 인스턴스는 힙 영역에 할당되고, sodeul이란 지역 변수가 Human 인스턴스의 주소값을 할당받기 때..
-
메모리관리(1/3) - ARC컴퓨터상식/운영체제(OS) 2022. 3. 4. 03:21
1. 참조(Reference) 타입과 Heap - ARC가 메모리 영역 중 힙 영역을 관리 - 인스턴스, 클로저 등등 참조 타입(Reference Type)은 자동으로 힙에 할당 실제 참조 타입을 선언할 경우 메모리가 어떤 식으로 힙에 할당되는지 예제롤 통해 파악 class Human { var name: String? var age: Int? init(name: String?, age: Int?) { self.name = name self.age = age } } let sodeul = Human(name: "Sodeul", age: 26) Human이란 클래스가 있고 sodeul이라는 인스턴스를 생성하고 값을 초기화 (예제에선 sodeul이 전역 변수가 됐지만, 어느 클래스에서 생성된 지역 변수라고 ..
-
메모리구조컴퓨터상식/운영체제(OS) 2022. 3. 4. 03:21
1. 메모리 구조 프로그램이 실행되면 운영체제(OS)는 메모리(RAM)에 이 프로그램을 위한 공간을 할당 - 공간은 다음과 같이 총 4가지(Code, Data, Heap, Stack)으로 나뉜다 1-1. 코드(Code) 영역 기계어는 컴퓨터가 읽을 수 있는 가장 밑단의 언어로 0과 1로만 이루어진 언어를 의미 1-2. 데이터(Data) 영역 Swift 예제 name과 age는 전역 변수로, country는 static 상수로, 데이터 영역에 할당됨 1-3. 힙(Heap) 영역 위 정의에서 malloc, calloc으로 힙에 메모리(전역변수, static변수)를 할당한다고 했는데, 스위프트에선 위 함수들을 통해 직접 할당할 일이 없지만 자동으로 힙에 할당하고 있었음 --> 클래스 인스턴스(Class Ins..
-
[쓰레드의 모든것] 프로세스, 쓰레드, 단일/멀티 쓰레드, 동기/비동기 프로그래밍, 코어 간략 정리컴퓨터상식/운영체제(OS) 2022. 1. 13. 07:57
프로세스 vs 쓰레드 안녕하세요. 지금까지 학습해온 프로세스와 쓰레드의 개념부터, 단일/멀티 쓰레드는 물론 동기/비동기 프로그래밍, 코어의 개념을 정리해보았습니다. 우선 프로세스와 쓰레드의 개념부터 알아보도록 합시다. 프로세스 프로세스는 간단하게 OS에서 하나의 실행중인 프로그램이라고 할 수 있습니다. 프로세스는 리소스와 쓰레드로 구성되며, 모든 프로세스는 하나 이상의 쓰레드를 가지고 있습니다. 쓰레드 쓰레드는 경량화된 프로세스라고 생각하시면 됩니다. 실제로 프로세스 내에서 실제 작업을 수행합니다. 쓰레드는 하나의 프로세스에서 여러 개가 존재할 수 있는데, 이들을 서로 Code, Data, Heap 영역을 공유합니다. 안드로이드에서의 쓰레드 단일 쓰레드 안드로이드에서도 앱을 실행하면 해당 앱의 프로세스가..