본문 바로가기

전체 글107

운영체제 운영체제 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 사용자 소프트웨어 운영체제 하드웨어 구성 운영체제를 구매할 때 함께 있는 모든 것 커널 - 컴퓨터를 시작할 때부터 끝까지 실행되고 있는 프로그램 목표 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대신하여 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공 프로세서, 메모리, 입출력 장치 등의 컴퓨터 시스템의 자원을 효율적으로 관리 분류 동시 작업 가능 여부 단일 작업 - 한 번에 하나의 작업만 처리 다중 작업 - 동시에 두 개 이상 작업 처리 사용자 수 단일 사용자 다중 사용자 처리 방식 일괄 처리 (batch processing) - 작업을 모아서 한번에 처리 시분할 (time shar.. 2023. 10. 26.
[Kotlin/coroutine] 6. Asynchronous Flow (2) Composing multiple flows multiple flow를 구성하는 여러 방법을 알아보자. Zip Kotlin 표준 라이브러리에 있는 Sequence의 zip처럼 flow도 두개의 flow를 합치기 위한 zip연산자가 있다. 코드 val nums = (1..3).asFlow() // numbers 1..3 val strs = flowOf("one", "two", "three") // strings nums.zip(strs) { a, b -> "$a -> $b" } // compose a single string .collect { println(it) } // collect and print 실행 결과 1 -> one 2 -> two 3 -> three Combine flow가 변수나 작업의.. 2023. 10. 26.
[Kotlin/coroutine] 5. Asynchronous Flow (1) 중단 함수는 비동기적으로 단일 값을 리턴한다. 하지만 우리는 비동기적으로 계산된 여러개의 값을 어떻게 리턴할 수 있을까? 그래서 Flow가 등장하게 되었다! Representing multiple values 여러개의 값들은 Kotlin에서 collections를 사용해서 나타낼 수 있다. 예를 들어, 3개의 숫자는 리스트로 리턴하고, forEach를 사용해서 출력할 수 있다. 코드 fun simple(): List = listOf(1, 2, 3) fun main() { simple().forEach { value -> println(value) } } 실행 결과 1 2 3 Sequences CPU를 사용해서 각 계산에 100ms정도가 소요되는 blocking code에서 계산하는 경우 Sequence를.. 2023. 10. 25.
[Kotlin/Coroutine] 4. Coroutine context and dispatchers 코루틴은 항상 Kotlin표준 라이브러리에 정의된 CoroutineContext 타입의 값으로 표시되는 컨텍스트에서 실행된다. 코루틴 컨텍스트는 다양한 요소의 집합이다. 주요 요소로 코루틴의 Job과 Dispatcher가 있다. Dispatchers and threads Coroutine Context의 구성 코루틴의 실행에 사용되는 Thread 스레드를 결정하는 Coroutine Dispatcher Coroutine Dispatcher의 동작 코루틴의 실행을 특정 스레드로 제한 코루틴을 Thread pool에 보냄 코루틴을 무제한으로 실행할 수 있도록 함 launch와 async같은 모든 코루틴 빌더는 새로운 코루틴과 다른 컨텍스트 요소에 특정 Dispatcher를 지정할 수 있는 CoroutineCo.. 2023. 10. 24.