일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Physical Scheme
- Operator
- Mac
- X.org
- Polymolphism
- 자바
- External Scheme
- Reference Type
- Inheritance
- 셀레니움
- Entity Set
- 리눅스
- Unity
- preprocessing
- 리눅스 마스터 1급
- spring
- descriptive statistics
- dbms
- systemd
- Binary Search
- python
- 백준
- OOP
- literal
- BFS
- selenium
- Entity
- X윈도우
- Java
- Class
- Today
- Total
목록OS/OS Design (40)
Byeol Lo
스레드와 프로세스가 어떻게 연결되고 유저 스레드가 LWP를 통해 커널 스레드를 어떻게 할당 받는지, 또 커널스레드 간에 프로세서의 경쟁이 붙어서 multithreading의 아키텍처에서 커널스레드가 I/O burst, CPU burst에 따라 priority, nice, vruntime 등으로 어떤 알고리즘으로 스케줄링 될 수 있는지 보았을 것이다. 이번에는 이 프로세스가 서로서로 협동하는(cooperating process) 관계일 때는 어떻게 되는지 보자. CPU 스케줄러가 프로세스 간에 빠르게 전환하여 동시 실행을 제공하는 방법을 설명했는데, 그게 multithreading이며, 이는 하나의 프로세스가 다른 프로세스가 스케줄될 때까지 실행이 완전히 끝나지 않을 수 있다는 것을 의미한다. 실제로 프로..
이제 특정 시스템에 맞는 스케줄링 알고리즘을 선정해야 할 것이다. 이 전에 다양한 알고리즘을 봤는데 우리가 운용하고 싶은 시스템에 적합한 알고리즘이 어떤 것이 있고 어떤 걸 사용해야 가장 최적인지를 봐야 한다. 우선 알고리즘 선택 기준은 다음과 같다.최대 응답 시간이 300ms라는 제약 조건 하에서 CPU 활용도 극대화처리 시간이 (평균) 총 실행 시간에 선형적으로 비례하도록 처리량 극대화 알고리즘이 선택됐다면 실제 그 알고리즘을 써보고 평가해야 할 것이다. 평가 방법을 보자.5.8.1 Deterministic Modeling Analytic Evaluation 은 주어진 알고리즘과 시스템 작업 부하를 사용하여 해당 작업 부하에 대한 알고리즘의 성능을 평가하기 위한 공식 또는 숫자를 생성한다. Deter..
Linux, Window, Solaris의 스케줄링을 살펴보자(보통 그냥 스케줄링이라고 하면 일반적인 의미에서 process scheduling 용어를 말함). 또한 솔라리스와 윈도우 시스템에서 kernel threads의 스케줄링 및 리눅스 스케줄러에서 task scheduling 도 볼 것이다. 5.7.1 Example: Linux Scheduling 리눅스는 UNIX 스케줄링 알고리즘을 변형하여 사용한다. 하지만 이 알고리즘은 SMP 아키텍처를 고려하여 설계된게 아니기 때문에 다중 프로세서 시스템을 충분히 지원하지 못했다. 리눅스 커널 버전 2.5 에서는 스케줄러가 개편되면서 task 수에 상고나없이 상수 시간에 작동하는 O(1) 스케줄링 알고리즘이 포함되었고, SMP 시스템을 위해 processo..
실시간 운영 체제에서 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을 사용한다. 이는 각 사용자 수준 스레드가 관련된 커널 ..