일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리눅스 마스터 1급
- Entity Set
- python
- OOP
- 리눅스
- 셀레니움
- systemd
- 자바
- Operator
- literal
- X윈도우
- Java
- descriptive statistics
- preprocessing
- spring
- Entity
- External Scheme
- selenium
- Binary Search
- Inheritance
- BFS
- Physical Scheme
- dbms
- Mac
- Unity
- Class
- Reference Type
- 백준
- X.org
- Polymolphism
- Today
- Total
목록전체 글 (205)
Byeol Lo
import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.BufferedReader;import java.io.BufferedWriter;import java.util.ArrayList;import java.util.StringTokenizer;import java.util.Arrays;import java.util.Queue;import java.util.LinkedList;import java.util.List;public class Main { static final BufferedReader BR = new BufferedReader(new InputStr..
실시간 운영 체제에서 CPU 스케줄링을 보자. 기본적으로 실시간 아키텍처는 soft real-time system과 hard real-time system으로 구분하며, 소프트는 실시간 프로세스가 언제 스케줄링 될지에 대한 보장을 제공하지 않지만, hard는 실시간 프로세스가 언제 스케줄링될 지에 대해 엄격하게 지킨다. 따라서 작업이 반드시 정해진 시간안에 서비스 되어야 하는 것이다. 5.6.1 Minimizing Latency 실시간 시스템에서 이벤트 기반의 특성을 고려해보면 시스템은 일반적으로 실시간 이벤트가 발생하기를 기다린다. 이벤트는 소프트웨어에서 발생할 수도 있고, 하드웨어에서도 발생할 수 있다. 원격 제어 차량이 장애물에 접근하고 있음을 감지하는 경우처럼 이벤트가 발생하면 시스템은 가능한 한..
지금까지는 단일 처리 코어만 봤다. 현재는 여러 처리 코어(다중 코어) 시스템이 대다수이기 때문에 여러 스레드가 병렬로 실행될 수 있다. 이는 스케줄링이 매우 복잡해지는 단점이 있지만 그만큼 빠르게 처리할 수 있기 때문에 선호된다.Multicore CPUsMultiheaded coresNUMA systemsHeterogeneous multiprocessing 위의 다양한 아키텍처에서 다중 프로세서의 스케줄링을 살펴보자. 5.5.1 Approaches to Multiple-Processor Scheduling 멀티 프로세서 시스템에서 CPU 스케줄링의 접근법은 다양하게 있지만, 그 중에 한가지는 모든 스케줄링의 결정, I/O 처리 및 기타 시스템 활동을 단일 프로세서인 master server가 처리하는 ..
이제 프로세스에 대한 스레드 경쟁을 알아보았으니 스레드를 연결시켜주어야 한다. 스레드에서는 user thread와 kernel thread로 나뉘는 것을 알 것이다. 대부분의 운영체제에서는 프로세스가 아닌 kernel thread가 운영체제에 의해 scheduling이 된다. user thread는 대부분 스레드 라이브러리에 의해 관리되며, 커널은 이를 인식하지 못한다. CPU에서 실행되기 위해서 user thread 는 궁극적으로 관련 kernel thread에 매핑이 되어야 하지만, 이 매핑은 간접적일 수 있고, 경량 프로세스(LWP)를 사용하여 관리할 수도 있을 것이다. 여기서는 thread가 어떻게 스케줄링 되는지에 자세히 초점을 맞춘다. 5.4.1 Contention Scope user thre..
프로세스를 스케줄링 하는 방법 살펴보자. 이전에 봤던 criteria 스케줄링이 다르며, 이 섹션에서는 단일 처리 코어만을 사용 가능한 상황일 때를 가정하고 설명한다. 밑에서 설명하는 대부분의 알고리즘은 다음 사이트에서 전부 시뮬레이션이 가능하다. Process Scheduling SolverDynamically generates gantt chart and calculates TAT (turnaround time) and WAT (waiting time) based on various CPU scheduling algorithms.process-scheduling-solver.boonsuen.com 5.3.1 First-Come, First-Served Scheduling 편의점에서도 선입선출이라는 ..
이제 다양한 scheduling 알고리즘을 살펴보기 전에 이 알고리즘이 어떤 평가 방식, 기준으로 performance를 측정하는지 알아야 할 것이다. 그래야 CPU의 활용을 어떻게 극대화를 하는지 알 수 있고, 특정 상황에서는 이 특성들에 따라 다른 알고리즘을 써서 더 좋은 효율을 낼 수도 있을 것이다. 그 기준들을 보자. CPU Utillization CPU를 가능한 한 가용하게 유지하고자 하는 평가 방식이다. 이론적으로 CPU 활용률은 0%에서 100%까지 이고 실제 시스템에서는 40%부터 90% 사이여야 한다.(Linux, macOS, UNIX에서 top 명령을 사용하여 CPU utillization을 확인할 수 있다.) Throughput 이는 CPU가 프로세스를 실행하는 동안 작업이 수행하여 ..
CPU 스케줄링은 다중 프로그램 운영 체제에서 기초이다. 프로세스 간에 CPU를 전환하기 때문에 운영 체제는 컴퓨터의 생산성을 높일 수 있다. 이전 장에서는 프로세스 모델에 스레드를 적용시켰는데, 현대 운영 체제에서는 실제로 운영체제가 커널 수준의 스레드를 스케줄링 한다. 하지만 프로세스 스케줄링 과 스레드 스케줄링이라는 용어는 종종 교차하여 사용된다. 여기서는 일반적인 스케줄링 개념을 논의할 때 프로세스 스케줄링을 사용하고, 스레드에 특화된 개념을 언급할 때는 스레드 스케줄링을 사용한다. 1장에서 core가 CPU의 기본 계산 단위임을 말했었는데, CPU에서 프로세스를 실행한다 라는 일반적인 용어를 더 많이 사용하며, 이것이 CPU 의코어에서 실행 중이라는 것을 의미한다. Basic Concept 단일..
유저 스레드와 커널 스레드 간의 연결을 위해 사이에서 관리를 해주어야 한다. 이전에 살펴본 스레드의 구성요소를 살펴보자.thread IDregister setprogram counterUser stack(사용자 모드에서 실행 중일 때 사용되는 사용자 스택)Kernel stack(커널 모드에서 실행 중일 때 사용되는 커널 스택)Private storage area(다양한 런타임 라이브러리, 동적 링크 라이브러리 에서 사용되는 영역) 4.7.1 Windows Threads Windows의 응용 프로그램은 별도의 프로세스로 실행된다. 각 프로세스는 하나 이상의 스레드를 포함하며, 스레드를 생성하는 Windows API는 one-to-one mapping을 사용한다. 이는 각 사용자 수준 스레드가 관련된 커널 ..
멀티 스레드 프로그램을 디자인할 때 고려해야 할 몇 가지 문제에 대해 논의해보자. 4.6.1 The fork(), exec() System Calls fork는 별도의 중복 프로세스를 생성하는 것으로 알고 있겠지만, 멀티스레드 프로그램에서는 fork(), exec() 의 의미가 변경된다. 프로그램의 한 스레드가 fork()를 호출하면 새로운 프로세스는 모든 스레드를 복제할지 fork() 시스템 콜을 호출한 스레드만을 복제할지 의문이 들 것이다. UNIX는 fork가 두가지 버전인데, 하나는 모든 스레드 복제, 다른 하나는 fork 시스템 콜을 호출한 스레드만을 복제한다. exec은 원래와 마찬가지로 호출하면, 모든 스레드와 전체 프로세스를 대체하여 지정된 프로그램이 실행되게 된다. 4.6.2 Signal..
import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.BufferedReader;import java.io.BufferedWriter;import java.util.List;import java.util.ArrayList;public class Main { static final BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)); static final BufferedWriter BW = new BufferedWriter(new OutputStreamWriter(System...