Linux/UNIX Programming APUE (Thread Programming)

Slides:



Advertisements
Similar presentations
POSIX thread SSLab. 신장열. CONTENTS Thread 의 생성 및 종료 Join and detach Cleanup handler Mutex Condition variable Thread signal Thread cancel.
Advertisements

모바일 프로그래밍 개론 UNIT 01 로봇 SW 컨텐츠 교육원 조용수. 학습 목표 모바일 프로그래밍이란 ? Embedded System 특성 Mobile OS Hybrid and Native SDK and NDK 2.
Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved. 제7강제7강.
C 언어 Sun Moon University 1 of 25 C 언어 : 강의소개 강의실 : 산 211 담당교수 : 고경철 ( 정보통신공학과 ) 사무실 : 산학협력관 105B 면담시간 : 수업후 1 시간
/11 CUDA 를 이용한 병렬 프로그래밍 DirectX 3D 를 이용한 3D 프로그래밍
강의 내용 : DirectX 개요 DirectX 9 을 이용한 시각화. 목 차 DirectX 출현 배경 DirectX 현재 버전 DirectX 장점 DirectX 구성요소 DirectX SDK 다운로드 및 설치 DirectX SDK 폴더 구성 및 역할 샘플 코드 브라우저.
미디어 프로그래밍 II 소개.
IF(Infinite Fork) 유닉스 시스템 / 정상훈 / 이재형
任員 在·不在 案內 시스템.
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
Chapter 1. 운영체제의 개요 이태호.
좋은 강의 국제관계학과 정연식.
Vision System Lab, Sang-Hun Han
6주차:『GPU(CUDA) Programming』
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
소프트웨어와 운영체제.
* 그룹 상시 연락망 : 각사 조직도 기준 연락망으로 대체함
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
Chapter 4. 쓰레드 (Threads) Questions of the day 스레드가 공유하는 것과 공유하지 않는 것은?
제 1 장. JAVA란 작성자 : NLIP.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
System Call Linux Kernel 수업 3번째.
임베디드 운영체제 (리눅스 중심) Lecture #2.
Multi-thread Programming
운영체제와 Windows XP 초등 ICT 교육 방법론 2013년 1학기.
가속도 감지센서를 이용한 안드로이드 게임 지도교수님 : 전진우 이동훈.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
GUI Programming - Part 2 ( GUI for Python - wxPython )
(PROJECT명: Web Server관리)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
데이터베이스 실험실 석사 2학기 김기훈 TCP/IP Socket Programming… 제 17장 멀티쓰레드 기반의 서버구현 데이터베이스 실험실 석사 2학기 김기훈
Multi-thread Programming
멀티쓰레드 기반의 서버구현 School of Electronics and Information.
Multi-thread Programming
운영체제 허상복 컴퓨터시스템 연구실
Multi-thread Programming
Chapter 5. CPU 스케줄링 (CPU Scheduling)
운영체제 (Operating Systems) (Multi-Thread Programming)
제3,4,5장 프로세스, 스레드 관리 CPU 스케줄링.
날짜: 팀명: TEAM-SIX 발표자: 이기영
객체 지향 프로그래밍.
2018 봄학기 Pusan National University School of CSE
Linux/UNIX Programming
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
김 정 석 Web Programming 김 정 석
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
Linux/UNIX Programming
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
제7강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
Linux/UNIX System Programming
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
Operating System Multiple Access Chatting Program using Multithread

제8장 쓰레드 프로그래밍.
Multi-thread Programming
(제8강) CSR 기업경영 접목 1. 중간시험에 대한 종합 정리 1-1. CSR 경영을 요구하는 시대적 흐름 1-2. CSR이란 무엇인지 학문적, 규범적, 제도적 논의 내용 1-3. CSR에 대한 전략적 접근법을 바탕으로 한 세월호 침몰관련 청해진해운의 실태 분석 1-4.
Linux/UNIX System Programming
기술 진화와 진보.
양궁게임 게임기획서 1차안 2011/01/17 최가운.
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
Linux/UNIX Programming
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
Windows System Programming
Linux/UNIX Programming
C.
Java Programming for Beginners
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
오늘은 기분이 좋아 예수님과 함께라서 내 안에 있는 예수님의 사랑을 너에게 뿌려 주겠어 오프닝 송.
Linux/UNIX System Programming
Presentation transcript:

Linux/UNIX Programming APUE (Thread Programming) 문양세 강원대학교 IT대학 컴퓨터과학전공

스레드(Threads)란? 프로세스 내의 제어 흐름(a flow of control within a process) APUE (Thread Programming) 프로세스 내의 제어 흐름(a flow of control within a process) 앞서 공부한 프로세스는 단일 스레드 프로세스로 볼 수 있다. 다중 스레드 프로세스에서는 하나의 프로세스 내에 여러 제어(control)가 존재한다. 스레드는 CPU 이용의 기본 단위로서 아래 정보들로 구성된다. 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 등 동일 프로세스의 여러 스레드는 코드 영역, 데이터 영역, 운영체제 자원 (예: 열린 파일, 시그널)을 공유한다. 프로세스가 다수의 제어 스레드를 가진다면, 프로세스는 동시에 하나 이 상의 작업을 실행할 수 있다.

단일 vs 다중 스레드 프로세스 APUE (Thread Programming)

다중 스레드 프로그램 (1/2) 현대 운영체제의 대다수 소프트웨어 패키지는 다중 스레드를 지원한다. APUE (Thread Programming) 현대 운영체제의 대다수 소프트웨어 패키지는 다중 스레드를 지원한다. 웹 브라우저의 스레드 이용 예 이미지와 텍스트를 표시(display)하는 스레드 1개 네트워크로부터 데이터를 읽어는 스레드 1개 워드 프로세서의 스레드 이용 예 그래프를 표시(display)하는 스레드 1개 사용자의 키 스트로크에 응답하는 스레드 1개 스펠링, 문법 검사를 수행하는 스레드 1개

다중 스레드 프로그램 (2/2) 웹 서버 많은 운영체제 커널들이 현재 다중 스레드 기반이다. APUE (Thread Programming) 웹 서버 단일 스레드 웹 서버: 한 클라이언트 요청에 대한 서비스를 완료할 때까지 다른 클라이 언트 요청에 대한 서비스를 기다려야 한다. 다중 프로세스 웹 서버: 스레드가 일반화되기 전에 사용되었으며, 새로운 프로세스를 생 성하여 추가적인 클라이언트 요청을 처리한다.  프로세스 생성 오버헤드 발생 다중 스레드 웹 서버: 프로세스에 비해 오버헤드가 작은 스레드를 생성하여 여러 클라이 언트에 대해 동시에 서비스한다. 많은 운영체제 커널들이 현재 다중 스레드 기반이다. 여러 스레드들이 커널 내에서 동작한다. 각 스레드는 장치를 관리하거나 인터럽트를 처리하는 등 특정 작업을 수행한다.

Mach C-threads, Solaris Threads Windows: Win32 Threads 주요 스레드 라이브러리 APUE (Thread Programming) Linux/Unix POSIX Pthreads Mach C-threads, Solaris Threads Windows: Win32 Threads JVM: Java Threads (Thread class, Runnable interface)

POSIX Pthreads 스레드 생성/동기화에 대한 POSIX 표준(IEEE 1003.1c) API를 제공한다. APUE (Thread Programming) 스레드 생성/동기화에 대한 POSIX 표준(IEEE 1003.1c) API를 제공한다. 스레드 동작에 대한 API 명세를 제공할 뿐이며, 이의 구현은 각 운영체제 에 따라 다르게 구현될 수 있다. 솔라리스, Mac OS X 등 여러 Linux/Unix 운영체제에서 공통 지원한다. Pthreads 라이브러리 컴파일 옵션: -lpthread Pthreads system calls

Simple Example 1 (1/4) 스레드 기능: 1에서 n까지의 합을 구함 𝒔𝒖𝒎= 𝒊=1 𝑵 𝒊 APUE (Thread Programming) 𝒔𝒖𝒎= 𝒊=1 𝑵 𝒊 스레드 기능: 1에서 n까지의 합을 구함

Simple Example 1 (2/4) APUE (Thread Programming)

Simple Example 1 (3/4) APUE (Thread Programming)

Simple Example 1 (4/4) APUE (Thread Programming) 𝒔𝒖𝒎= 𝒊=1 𝑵 𝒊

Simple Example 2 (1/4) 스레드 10개를 생성하고, 각각은 Hello world!를 출력함 APUE (Thread Programming) 스레드 10개를 생성하고, 각각은 Hello world!를 출력함

Simple Example 2 (2/4) APUE (Thread Programming)

Simple Example 2 (3/4) APUE (Thread Programming)

Simple Example 2 (4/4) APUE (Thread Programming)

Creating Threads – pthread_create() APUE (Thread Programming) #include <pthread.h> int pthread_create( pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); thread: 생성된 스레드의 식별자를 리턴할 변수 attr: 생성할 스레드의 속성 (default: NULL) start_routine: 스레드가 수행할 함수 arg: 스레드 함수에 주어질 argument

More Example 1 (1/3) 동일 함수인데 서로 다른 메시지를 출력하는 두 개의 스레드 APUE (Thread Programming) 동일 함수인데 서로 다른 메시지를 출력하는 두 개의 스레드

More Example 1 (2/3) APUE (Thread Programming)

More Example 1 (3/3) APUE (Thread Programming)

Pthreads 동작 절차 APUE (Thread Programming) 앞서 두 개의 스레드가 생성되는 경우의 예제

More Example 2 (1/3) 네 개의 스레드가 다소 복잡한 수학 계산을 수행하는 예제 APUE (Thread Programming) 네 개의 스레드가 다소 복잡한 수학 계산을 수행하는 예제

More Example 2 (2/3) APUE (Thread Programming)

More Example 2 (3/3) APUE (Thread Programming)

데이터 공유와 동기화 APUE (Thread Programming) 스레드간 데이터 공유는 전역 변수(global variable)나 공유 메모리 (shared memory)를 사용하여 가능하다. 동기화는? mutex, conditional variables, semaphore 등을 사용하여 해결한다. 관심 있는 학생은 Linux System Programming(Robert Love)을 참조하세요.

Homework#13 APUE (Thread Programming)