본문 바로가기

분류 전체보기254

[OS] 운영 체제란 무엇인가? 운영 체제란 무엇인가?운영 체제(OS, Operating System): 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.즉, 운영 체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.(종류로는 Windows, Linux, UNIX, MS-DOS 등이 있으며, 시스템의 역할 구분에 따라 각각 용이점이 있다.) 운영체제의 역할1. 프로세스 관리운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다.어떤 의미에서는 프로세서(CPU) 관리하는 것이라고 볼 수도 있다. 현재 CPU를 점유해야 할 프로세스를 결정하고, 실제.. 2024. 5. 1.
[OS] Blocking IO vs Non-Blokcing IO Blocking IOBlocking IO 란 IO 프로세스가 시작한 작업이 진행되는 동안 다른 작업은 중단한 상태로 진행 중인 IO 작업이 끝날 때까지 대기하는 방식을 뜻한다,# Blocking IOBlocking IO 에 관한 자료를 찾다보니 가장 흔한 이미지가 위의 사진이였다.사진을 보면, Read() 함수가 호출이 되면 해당 함수가 완전히 끝날 때까지 다른 작업을 수행하지 못한다.   Non-Blocking IONon-Blocking IO 는 한 프로세스가 IO 작업을 호출했을 때 IO 작업이 완료될 때까지 작업을 중단하지 않고 IO 호출에 대해 즉시 리턴한 뒤, 해당 프로세스가 이어서 다른 IO 작업을 수행할 수 있도록 하는 방식을 뜻한다. Non-Blocking IO 는 한 프로세스가 작업을 진.. 2024. 4. 30.
[Java] Thread-Pool 이란? 스레드 풀 개념작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고, 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아 처리하는 기법병렬 작업 처리가 많아지면 스레드 개수가 중가되고, 그에 따른 스레드 생성과 스케줄링으로 인해 CPU가 바빠져 메모리 사용량이 늘어난다. 이는 애플리케이션의 성능 저하로 이어진다.병렬 작업의 폭증으로 인한 스레드의 폭증을 막으려면 스레드 풀을 사용해야 한다.스레드 풀은 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아 처리한다.작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리한다.따라서 작업 처리 요청이 폭증해도 작업 큐라는 곳에 작업이 대기하다가 여유가 있는 스레드가 그것을 처리하므로 스레드.. 2024. 4. 30.
[Java] 데몬스레드 데몬 스레드(Daemon Thread)란?리눅스, 유닉스 계열의 운영체제에서 백그라운드로 동작하는 프로그램을 데몬(Daemon)이라고 한다. 자바에서 이런 데몬과 유사하게 동작하는 쓰레드를 데몬 스레드(Daemon Thread)라고 한다.즉, 데몬 쓰레드란 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드이다. 데몬 스레드는 자바 프로그램을 만들 때 백그라운드에서 특별한 작업을 처리하게 하는 용도로 만든다. 주 스레드(main 등)가 모두 종료되면 강제적으로 종료되는 특징이 있다.데몬 스레드 만들기데몬 스레드를 만드는 방법은 스레드에 데몬 설정을 하는 것이다.thread.setDeamon(true); // Runnable을 구현하는 DaemonThread클래스를 작성 public cla.. 2024. 4. 30.
[OS] Context Switching - 프로세스와 쓰레드에서의 컨텍스트 스위칭 * 프로세스란? 실행파일을 클릭했을 때, 메모리(RAM)할당이 이루어지고, 이 메모리공간으로 코드가 올라간다. 이 순간부터 이 프로그램은 '프로세스'라 불리게 된다.  * 프로세스의 스케줄링? CPU는 하나인데, 동시에 여러 프로세스가 실행되어야한다. CPU는 여러개의 프로세스를 번갈아가면서 실행하는데  매우 고속이기 때문에 우리 눈에는 동시에 실행되는 것처럼 보인다. 이러한 멀티프로세스 운영체제에서 프로세스의 CPU 할당 순서 및 방법을 결정짓는 것을 '스케줄링'이라 한다.  * 프로세스의 상태변화? 프로세스는 Ready, Running, Blocked 상태를 지닌다. Running 상태인 프로세스는 더 우선순위가 높은 프로세스가 실행될 경우 Ready 상태가 되고, 우선순위가 높은 프로세스가 실행된다.. 2024. 3. 3.
[Android] 빌드 변형 구성 (ProductFlavors) 한 개의 프로젝트로 여러개의 앱 만들기 오늘은 AndroidProject에서 build.gradle파일에서 빌드변형구성(ProductFlavors)을 활용하여 하나의 프로젝트에서 여러개 packageName 및 appName을 가진 앱을 만드는 방법에 대해서 알아보겠습니다.이번에 소개하는 내용은 무조건적인 정답은 아니라고 생각합니다.하지만 제가 배우고 적용하면서 편리했던 내용을 정리한것이기 때문에 여러분들이 필요한 부분만 활용하여 사용하시는 것을 추천 드립니다. Android Developer 빌드 변형 구성https://developer.android.com/studio/build/build-variants?hl=ko  빌드 변형 구성  |  Android 개발자  |  Android Developers빌드 변형을 구성하여 단일 프로젝트에서.. 2024. 2. 18.