일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- X윈도우
- Reference Type
- Entity
- Operator
- descriptive statistics
- Physical Scheme
- 리눅스
- Binary Search
- X.org
- spring
- 리눅스 마스터 1급
- selenium
- BFS
- 백준
- systemd
- literal
- External Scheme
- python
- Unity
- OOP
- dbms
- preprocessing
- Entity Set
- Polymolphism
- Class
- Inheritance
- 자바
- Mac
- 셀레니움
- Today
- Total
목록2024/04/13 (6)
Byeol Lo
쓰레드 라이브러리는 프로그래머가 쓰레드를 생성하고 관리하기 위한 API를 제공한다. 쓰레드 라이브러리를 구현하는 두 가지 주요 방법이 있다. 첫 번째 방법은 커널 지원이 없는 사용자 공간에 완전한 라이브러리를 제공하는 것이다. 라이브러리의 모든 코드와 데이터 구조는 사용자 공간에 있고, 라이브러리의 함수를 호출하면 사용자 공간에서 지역 함수 호출이 되고 이는 시스템 호출이 아니다. 두 번째 방법은 운영 체제에서 직접 지원하는 커널 수준 라이브러리를 구현하는 것이다. 이 경우 라이브러리의 코드와 데이터 구조는 커널 공간에 있다. 라이브러리의 API에서 함수를 호출하면 일반적으로 커널로의 시스템 호출이 발생한다. 주로 사용되는 세 가지 주요 쓰레드 라이브러리는 POSIX의 Pthreads, Windows A..
지금까지 스레드를 일반적인 의미로 취급했지만, 스레드는 또한 두 가지 의미로 볼 수도 있다. 스레드 지원은 사용자 수준에서 제공될 수도 있으며(user threads), 또는 커널에서 제공될 수도 있다(kernel threads). User threads는 커널 위에서 지원되며 커널의 지원 없이 관리된다. 반면에 Kernel threads는 운영 체제에 의해 직접 지원 및 관리된다. 현대의 거의 모든 운영 체제(Windows, Linux, macOS) 는 커널 스레드를 지원한다. 최종적으로 사용자 스레드와 커널 스레드 사이에는 관계가 있어야 한다. 이 관계를 수립하는 세 가지 일반적인 모델을 살펴보자. 4.3.1 Many-to-One Model 다대일 모델은 여러 사용자 수준 스레드를 하나의 커널 스레드..
컴퓨터 설계의 초기에는 더 많은 컴퓨팅 성능이 필요하다는 요구에 따라 단일 CPU 시스템이 다중 CPU 시스템으로 진화했다. 이후에도 이러한 트렌드가 시스템 설계에서 발생했고, 여러 컴퓨팅 코어를 단일 처리 칩에 배치하여 각 코어가 운영 체제에서 별도의 CPU로 나타나게 하는 것이다. 이러한 시스템을 다중 코어(multicore) 시스템이라고 한다. 그리고 multi-threaded programming은 이러한 다중 컴퓨팅 코어를 더 효율적으로 활용하고, 개선된 concurrency를 제공하는 메커니즘을 제공한다. 다중 코어 시스템에서는 concurrency의 보장으로 시스템이 각 코어에 별도의 스레드를 할당할 수 있기 때문에 스레드가 병렬로 실행될 수 있다. 위 아래의 그림 차이를 통해 멀티 스레드가..
프로세스는 하나의 실행 프로그램과 하나의 제어 스레드를 가진 것으로 가정했다. 하지만 현재는 대부분 프로세스 하나에 여러 개의 제어 스레드를 포함할 수 있는 기능을 제공한다. 스레드를 사용하여 병렬성의 기회를 식별하는 것은 여러 CPU를제공하는 현대의 다중 코어 시스템에서 점점 더 중요해지고 있다. 여기서는 Pthreads, Windows 및 Java 스레드 라이브러리의 API에 대한 개념과 도전 과제를 비롯한 여러 가지 개념을 보고, 개발자가 병렬성의 기회를 식별하는 데 집중하고 언어 기능 및 API 프레임워크가 스레드 생성 및 관리의 세부 사항을 처리하도록 하는 스레드 생성 개념을 추상화하는 여러 가지 새로운 기능을 볼 수 있다. 스레드는 CPU 활용의 기본 단위이며, 스레드 ID, 프로그램 카운터 ..
이 섹션에서는 네 가지 다른 IPC 시스템을 탐색한다. 먼저 메모리를 위한 POSIX API를 보자. 3.7.1 POSIX Shared Memory POSIX 시스템에서는 공유 메모리와 메시지 전달을 포함하여 여러 IPC 메커니즘이 제공된다. 여기서는 공유 메모리에 대한 POSIX API를 탐색한다. POSIX 공유 메모리는 메모리 매핑된 파일을 사용하여 구성된다. 이는 공유 메모리 영역을 파일과 연관시킨다. 프로세스는 먼저 shm_open() 시스템 호출을 사용하여 공유 메모리 개체를 생성해야 한다. fd = shm_open(name, O_CREAT | O_RDWR, 0666); 첫 매개변수는 공유 메모리 개체의 이름, 공유 메모리에 액세스하려는 프로세스는 이 이름으로 개체를 참조해야 한다. 그 다음 ..
이 전의 방식들은 프로세스들이 메모리 영역을 공유하고, 공유 메모리에 액세스하고 조작하는 코드를 응용 프로그램 프로그래머가 명시적으로 작성해야 한다는 것을 요구한다 하지만 동일한 효과를 달성하기 위한 또 다른 방법이 있었다. 바로 Message-Passing 이다. 이는 프로세스들이 동일한 주소 공간을 공유하지 않고도 통신하고 작업을 동기화하는 메커니즘을 제공한다. 통신하는 프로세스들이 네트워크로 연결된 다른 컴퓨터에 거주할 수 있는 분산 환경에서 특히 유용하다(프로세스간의 통신이 가능하기 때문). 메시지 전달 기능은 최소 두 가지 작업이 필요한데, send(message), receive(message) 이다. 프로세스가 보낸 메시지는 고정된 크기이거나 가변적일 수 있다. 고정된 크기의 메시지만 전송할..