일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- X윈도우
- literal
- Entity
- Entity Set
- selenium
- 리눅스
- preprocessing
- BFS
- Binary Search
- Physical Scheme
- python
- Unity
- Polymolphism
- systemd
- descriptive statistics
- Java
- Operator
- spring
- 리눅스 마스터 1급
- X.org
- Inheritance
- External Scheme
- 백준
- 자바
- dbms
- Reference Type
- OOP
- Class
- 셀레니움
- Mac
- Today
- Total
목록분류 전체보기 (199)
Byeol Lo
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...
이전에서 우리가 네트워크 다이어그램에서 위치해 있는 곳은 end system 이라는 네트워크 엔티티로 있는 것을 보았다. 엔드 시스템은 호스트와 같은데, 이 호스트는 서버, 클라이언트 두 종류로 나뉠 수 있다. 일반적으로 클라이언트는 데스크톱, 스마트폰 등등이 있다. 서버는 대부분 웹 사이트, 데이터베이스 서버 등등 서비스를 제공하는 더 성능이 높은 엔드시스템이다. 1.2.1 Access NetworksHome Access: DSL, Cable, FTTH, Dial-Up, and Satellite 네트워크의 가장자리에 위치한 이 엔드시스템이 네트워크에 접속하기 위해서 다른 엔드 시스템으로 향하는 방법을 알아야 한다. 보통 디지털 가입자 회선(DSL, Digital Subscriber Line)과 케이블이..
인터넷이 무엇인지 알려면 다음을 해내야 한다.인터넷을 구성하는 기본 하드웨어와 소프트웨어 구성 요소에 대한 설명분산 어플리케이션에 서비스를 제공하는 네트워킹 인프라 측면에서의 인터넷에 대한 설명 위의 그림을 보자. 파란색 영역은 하나의 네트워크를 나타내는 그림이다. 최종적으로 통신 자체는 communication links, packet switches가 서로 연결됨을 볼 수 있다. 여기서 communicaiton links는 연결된 선으로 보면 되고, 이 선이 transmission rate를 결정하게 된다. 보통 이 transmission rate의 단위로는 bps = bits / seconds 이며, 송신(sending) end system(host, 호스트, 컴퓨터) 들은 segments를 보내는..
import java.util.StringTokenizer;import java.io.IOException;import java.io.InputStreamReader;import java.io.BufferedReader;public class N11585 { static final BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)); static int n; static String paragraph, pattern; public static void main(String[] args) throws IOException { int count, g; getInput(); ..
import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;public class N1305 { private static final BufferedReader BR = new BufferedReader(new InputStreamReader(System.in)); static String paragraph; static int n; public static void main(String[] args) throws IOException{ n = Integer.parseInt(BR.readLine()); paragraph = BR.readLine(); ..
다중 코어 처리의 발전 덕분에 수백, 수천 개를 사용할 수도 있다. 하지만 이렇게 쓰레드가 많아지면 그만큼 자원 관리를 설계하는게 쉬운일이 아니다. 병행 및 병렬 응용 프로그램의 설계를 지원하고, 해결하는 방법은 스레딩의 생성과 관리를 개발자에서 컴파일러 및 런타임 라이브러리로 이전하는 것이다. 이를 implicit threading이라고 한다. 여기서는 암시적 스레딩을 통해 다중 코어 프로세서의 이점을 활용할 수 있는 응용 프로그램을 설계하기 위해 4가지 접근법을 볼 것이며, 이런 전략들은 일반적으로 다대다 모델(Many-to-Many) 을 사용하게 된다. 4.5.1 Thread Pools 전에 멀티 스레딩 웹 서버에 대해서 봤는데, 서버가 요청을 받을 때마다 요청을 처리하기 위한 별도의 스레드를 생성..
쓰레드 라이브러리는 프로그래머가 쓰레드를 생성하고 관리하기 위한 API를 제공한다. 쓰레드 라이브러리를 구현하는 두 가지 주요 방법이 있다. 첫 번째 방법은 커널 지원이 없는 사용자 공간에 완전한 라이브러리를 제공하는 것이다. 라이브러리의 모든 코드와 데이터 구조는 사용자 공간에 있고, 라이브러리의 함수를 호출하면 사용자 공간에서 지역 함수 호출이 되고 이는 시스템 호출이 아니다. 두 번째 방법은 운영 체제에서 직접 지원하는 커널 수준 라이브러리를 구현하는 것이다. 이 경우 라이브러리의 코드와 데이터 구조는 커널 공간에 있다. 라이브러리의 API에서 함수를 호출하면 일반적으로 커널로의 시스템 호출이 발생한다. 주로 사용되는 세 가지 주요 쓰레드 라이브러리는 POSIX의 Pthreads, Windows A..