![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVkSue%2FbtsJgfG7ceE%2FXkhO8r9rGeS9ymoump66aK%2Fimg.png)
CPU Scheduling 알고리즘을 살펴보자FCFS (First-Come, First-Served) schedulingSJF (Short-Job-First) schedulingPriority schedulingRR (Round-Robin) schedulingMultiLevel Queue schedulingMultiLevel Feedback Queue scheduling* 이 글에서 쓰이는 Burst time은 프로세스의 실행시간을 뜻한다.FCFS (First-Come, First-Served)** Nonpreemptive 방식으로 동작 말그대로 먼저 들어온 프로세스가 먼저 처리 되는것을 뜻한다. ex)다음과 같이 3개의 프로세스와 Burst Time이 주어진다. P1은 0에 들어와 24만큼 수행하고 종..
ConceptCPU 스케줄링은 CPU의 효율을 최대화하기 위해 사용되는 개념이다.CPU를 끊임없이 사용해야 CPU의 효율이 오르기에 메모리에 여러개의 프로세스를 동시에 올려 필요할 때 마다 CPU에 할당을 하게 된다. 이때 어떤 프로세스 결정하는 것이 CPU 스케줄링이다. CPU SchedulerCPU scheduler는 CPU 스케줄링 중 어떤 프로세스를 골라서 CPU에 할당을 할 것인지를 정하는 요소이다.스케줄러는 다음와 같은 상황에서 동작을 한다.프로세스가 Running 상태에서 Waiting 상태로 바뀔 떄 (ex. I/O 요청)프로세스가 Running 상태에서 Ready 상태로 바뀔 떄 (ex. 인터럽트)프로세스가 Waiting 상태에서 Ready 상태로 바뀔 떄 (ex. I/O 완료)프로세스 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB6xzV%2FbtsIUVPrloP%2F3lQc2TPjYBeY6pBud03Eck%2Fimg.png)
Thread 정리CPU의 기본 사용 단위이다.쓰레드 ID, 프로그램 카운터, 레지스터 셋, 스택을 포함하고 있다.모든 프로세스에는 한 개 이상의 쓰레드를 갖고 있으며, 같은 프로세스 동안에는 서로 다른 쓰레드들이 자원을 공유한다. 사용되는 이유 - 현대의 프로그램은 멀티쓰레드 기반 - 프로세스 생성은 무거운 작업이지만 쓰레드 생성은 가벼운 작업 - 코드 작성이 간단해 효율성이 좋음 - 커널은 보통 멀티쓰레드를 사용 중 멀티 쓰레드의 장점반응성사용자 인터페이스에 중요한 프로세스의 일부가 차단된 경우 지속적인 실행을 허용할 수 있음자원 공유 스레드는 프로세스 리소스를 공유하며, 공유 메모리나 메시지 전달보다 쉬움경제성프로세스 생성보다 적은 가격이 들어가고, 쓰레드 스위칭 하는데 생기는 오버헤드가 컨텍스트..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSkhwj%2FbtsIcWPbTVd%2FkoWMDJZo6ZEUFx8g3fD0k1%2Fimg.png)
프로세스 간 통신 (Inter-Process Comunication - IPC)시스템의 프로세스는 독립적으로 동작하거나 협력적으로 동작한다.협력적으로 동작하는 것에 주목해보자, 혼자서 동작해도 문제가 없지만 왜 협력적으로 동작하는 걸까?다음과 같은 장점이 있어 협력적으로 동작하게 된다.정보 공유계산 속도의 향상편의성이러한 장점을 살리기 위해 프로세스는 협력적으로 동작하는데, 그러기 위해서는 데이터를 주고 받아야 한다. 어떻게 데이터를 주고 받아야 하나?--> IPC (Inter-Process Communication)을 통해 프로세스 사이에서 데이터를 주고 받는다. IPC에는 크게 2가지 모델이 있다.Shared Memory - 한 메모리를 공유해서 메모리를 통해 정보 공유Message Passing -..
안드로이드 프로젝트를 생성하면 앱 수준의 build.gradle에 dependencies 블럭에 프로젝트에 사용할 라이브러리를 선언한다. 프로젝트 단위에서 특별하게 라이브러리를 관리할 정책이 없다면 dependencies 한 블럭에 라이브러리를 모두 써내려나간다. 이는 관리되는 라이브러리의 수가 많아짐에 따라 중복되는 버전을 일일이 하드코딩할 수도 있고(휴먼에러), 이로인해 어느 한 쪽의 버전이 달라지게되면서 빌드 오류나 예기치못한 버그를 일으킬 수 있다. 이를 해결하는 방법으로 buildSrc나 gradle 분리등으로 해결할 수 있는데, 최신 안드로이드 스튜디오 버전(최신 Gradle)에서 프로젝트 생성시 자동으로 적용되는 toml 방식에 대해 알아보고자한다. TOMLTOML(Tom's Obvious..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw7wXH%2FbtsH66kagQV%2FWKmpUO5UXDadAMLgZTHVv1%2Fimg.png)
프로세스프로세스란?실행중인 프로그램을 뜻한다.다음과 같은 것들을 갖고 있다코드 영역 (Text Section)프로그램 카운터(PC)스택 영역힙 영역데이터 영역프로세스는 2가지의 종류로 나타내어진다I/O Bound Process - I/O 작업을 하는데 더 많은 시간을 쓰는 프로세스CPU Bound Process - 계산 작업을 하는데 더 많은 시간을 쓰는 프로세스프로세스 상태프로세스의 시작으로부터 끝날 때까지 고유의 상태가 존재한다. New: 프로세스가 생성됨Running: 프로그램내의 명령어들이 실행 중Waiting: 프로세스가 어떤 이벤트의 발생에 의해 대기 중임Ready: 프로세스가 CPU를 할당 받을 준비가 되어 대기 중임Terminated: 프로세스를 마쳐 종료함PCB (Process Cont..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrCJJe%2FbtsH3quxS9K%2FgqthnKXwuHMfd5dmZkjGn0%2Fimg.png)
운영체제 핵심 컴포넌트운영체제는 프로그램 실행환경을 제공하고 프로그램과 유저 사이를 잇는다.User와 Kernel을 연결하므로써 잇는다 -> system callSystem Call을 통해 kernel의 기능사용을 통제한다. 운영체제는 사용자의 시스템 사용을 위해 다양한 기능(함수)들을 제공한다.User Interface (GUI, CLI등)프로그램 실행(.exe)입출력 기능 (키보드, 마우스)파일 시스템 관리에러 관리등과 같은 기능들을 제공하고 이와 관련된 System Call 이 존재한다.시스템 콜(System Call)System Call운영체제에서 제공된 서비스를 호출하기 위한 프로그래밍 인터페이스 (like API)주로 c/c++로 작성되어 있음 특징각 System Call에는 고유 번호가 할당..
XML에서 사용하던 RecyclerView의 ItemTouchHelper를 Compose에서 구현한 것이다.RecyclerView의 각 아이템을 스크롤 할 수 있도록하는 Compose API이다. 기존의 사용 방식이다 내일배움캠프 7기 Android TIL 37일차 (2023.09.05)일일 회고 우선 내가 맡아서 할 기능들은 얼추 된 것 같다. 이제 합쳐보면서 잘돌아가는 지 확인해보고 데이터 전달을 진행하면 될 것 같다. 내일 병원예약이 있어 빠르게 진행을 해보았다. 내일aaapple.tistory.com Compose Api에서는 SwipeToDismiss라는 컴포저블을 통해 구현 할 수 있다.Compose에서 RecyclerView와 같은 동작을 하는 LazyColumn안에서 SwipeToDismi..
문제 설명처음에 0이 하나 포함되어있는 배열 A가 있다. 이때, 다음 쿼리를 수행해야 한다.1 x: A의 가장 뒤에 x를 추가한다.2 x: A에서 x를 제거한다. A에 x가 두 개 이상 있는 경우에는 가장 앞에 있는 하나만 제거한다. 항상 A에 x가 있는 쿼리만 주어진다.3: A에 포함된 모든 원소를 더한 값을 출력한다.4: A에 포함된 모든 원소를 XOR한 값을 출력한다.입출력 예입력첫째 줄에는 쿼리의 개수 M이 주어진다. 둘째 줄부터 다음 M 개의 줄에 쿼리가 주어진다. 출력 x번째 줄에는 x번째 글을 쓰고 난 후에 메모장에 남아 있는 키워드의 개수를 출력해 주세요. 제한1 ≤ M ≤ 500 0001 ≤ x ≤ 1 000 000 0003번 혹은 4번 쿼리가 적어도 하나 주어진다.예제 입력121 ..