IT 공부/운영체제 (13) 썸네일형 리스트형 3-1. 프로세스 개요 프로세스 개요 프로그램(program) 하드디스크 등의 저장 매체에 저장. 실행 파일의 형태 프로세스(process) 프로그램이 메모리에 적재되어 실행중인 상태 필요한 모든 자원 할당 받음 자원 : 코드 공간, 데이터 공간, 스택 공간, 힙 공간 프로세스의 특징 운영체제는 프로그램을 메모리에 적재하고 프로세스로 다룸 운영체제는 프로세스에게 실행에 필요한 메모리 할당, 이곳에 코드와 데이터 등 적재 프로세스들은 서로 독립적인 메모리 위치와 크기 정보를 관리한다. 프로세스들은 서로 독립적인 메모리 공간을 가짐. 다른 프로세스의 영역에 접근 불허 운영체제는 각 프로세스의 메모리 위치와 크기 정보를 관리한다. 운영체제는 프로세스마다 고유한 번호(프로세스 ID) 할당 프로세스의 관한 모든 정보는 커널에 의해 관리.. 5-6. 멀티 스레드에 관한 이슈 프로세스와 스레드 정리 프로세스는 스레드들의 공유 공간 - 모든 스레드의 주소 공간이 프로세스 주소 공간 내에 형성되고 공유 프로세스는 운영체제가 응용프로그램을 적재하는 단위이고, 스레드는 실행 단위 PCB에 저장된 정보는 환경 컨텍스트, TCB에 저장된 정보는 실행 컨텍스트 - PCB : 모든 스레드가 공유하는 프로세스의 정보 저장 - TCB : 현재 실행 중인 실행 단위 정보 저장 다른 프로세스에 속한 스레드로의 스위칭보다 동일한 프로세스에 속한 스레드 스위칭 속도가 빠름 프로세스에 속한 모든 스레드가 종료될 때 프로세스 종료 멀티스레딩으로 응용프로그램 작성할 때 장점 높은 실행 성능 - 병렬 실행 사용자에 대한 우수한 응답성 - 한 스레드가 블록되어도 다른 스레드를 통해 사용자 인터페이스 가능 서버.. 5-5. 멀티 스레드 구현 멀티스레드 구현 멀티구현이란? 응용프로그램에서 작성한 스레드가 시스템에서 실행되도록 구현하는 방법 사용자가 만든 스레드가 시스템에서 스케줄되고 실행되도록 구현하는 방법 스레드 라이브러리와 커널의 시스템 호출의 상호 협력 필요 3가지 방법 N:1 매핑(N개의 사용자 레벨 스레드를 1개의 커널 레벨 스레드로 매핑) N:1매핑(1개의 사용자 레벨 스레드를 1개의 커널 레벨 스레드로 매핑) N:M매핑(N개의 사용자 레벨 스레드를 M개의 커널 레벨 스레드로 매핑) N:1 매핑 N:1 매핑 개념 운영체제는 모든 프로세스를 단일 스레드 프로세스로 다룸 프로세스 당 1개의 커널 레벨 스레드(TCB) 생성 스케줄 가능한 엔터티(entity)라고 부름 프로세스의 모든 사용자 레벨 스레드가 1개의 커널 레벨 스레드에 매핑 .. 5-4. 커널 레벨 스레드와 사용자 레벨 스레드 4-1. 커널 레벨 스레드와 사용자 레벨 스레드 스레드 스케줄링 주체에 따라 2 종류의 스레드로 구분 - 커널 레벨 스레드(kernel-level thread) : 커널에 의해 스케줄링되는 스레드 - 사용자 레벨 스레드(user-level thread) : 스레드 라이브러리에 의해 스케줄링되는 스레드 커널 레벨 스레드 - 응용 프로그램이 시스템 호출을 통해 커널 레벨 스레드 생성 - 스레드에 대한 정보(TCB)는 커널 공간에 생성되며 커널에 의해 소유됨 - 커널에 의해 스케줄 - 스레드 주소 공간(스레드 코드와 데이터) : 사용자 공간에 존재 - main 스레드는 커널 스레드 응용 프로그램을 적재하고 프로세스를 생성할 때 커널은 자동으로 main 스레드 생성 사용자 레벨 스레드 - 응용프로그램이 라이브러.. 5-3. 스레드 주소 공간과 컨텍스트 3-1. 스레드 주소 공간 스레드 주소 공간 스레드가 실행 중에 사용하는 메모리 공간 스레드의 코드, 데이터, 힙, 스택 영역 프로세스의 주소 공간 내에 형성 스레드 주소 공간의 요소들 스레드 사적 공간 스레드 코드(Thread code) 스레드 로컬 스토리지(Thread local storage) 스레드 사이의 공유 공간 프로세스의 코드 프로세스의 데이터 공간(로컬 스토리지 제외) 프로세스의 힙 영역 3-2. 스레드 주소 공간에 대한 설명 스레드 코드 영역 스레드가 실행할 작업의 함수 프로세스의 코드 영역 사용 스레드는 프로세스의 코드 영역에 있는 다른 모든 함수 호출 가능 스레드 데이터 영역 스레드가 사용할 수 있는 데이터 공간 프로세스의 데이터 영역 사용 2개의 공간으로 구분 개별 스레드 전용 전역.. 5-2. 스레드의 개념 2-1. 스레드의 출현 목적 프로세스를 사용하는 문제점 해결을 위해 고안 프로세스보다 더 작은 실행 단위 필요 실행 단위 : 운영체제의 스케줄링 단위 스레드를 가벼운 프로세스(light-weight process, LWP)라고 부름 프로세스의 생성 및 소멸에 따른 오버헤드 저감 빠른 컨텍스트 스위칭 프로세스의 복잡한 통신 방법, 느린 실행 속도, 코딩의 어려움 해소 2-2. 스레드 개념 스레드는 실행 단위이며 스케줄링 단위 스레드는 응용프로그램 개발자에게는 작업을 만드는 단위 스레드는 운영체제에게는 실행 단위이고, CPU를 할당하는 스케줄링 단위 스레드는 코드, 데이터, 힙, 스택을 가진 실체 스레드마다 정보를 저장하는 구조체 TCB(Thread Control Block) 있음. 프로세스는 스레드들의 컨.. 5-1. 프로세스의 문제점 1-1. 멀티 태스킹(multitasking) 태스크(Task) : 컴퓨터에서 처리하고자 하는 일의 단위 멀티 태스킹 : 컴퓨터 시스템 내에 여러 태스크를 동시에 실행시키거나, 한 응용프로그램 내에서 여러 태스크를 동시에 실행시키는 기법 전통적으로 태스크는 프로세스 단위(~1980년대 초반) 응용프로그램 개발자는 fork()와 같은 시스템호출을 통해 프로세스를 만들고, 프로세스 스케줄링을 통해 일정한 타임 슬라이스(time slice)마다 태스크들을 번갈아 실행시킴으로써 CPU 활용률을 높임 1959년 제안된 시분할(time-sharing) 시스템(multi-user를 위한 시스템)과 유사한 개념 1-2. 프로세스의 문제점 1) 프로세스 생성의 큰 오버헤드 프로세스 생성 프로세스를 위한 메모리 할당 부모.. 6-4. 멀티 코어 CPU에서의 스케줄링 멀티 코어 시스템의 구조 멀티 코어 시스템에서의 멀티 스레딩 멀티코어 시스템에서의 CPU스케줄링 멀티코어 시스템에서 싱글 코어 CPU 스케줄링을 사용할 때 문제점 (문제1) 컨텍스트 스위칭 오버헤드 증가 문제 이전에 실행된 적이 없는 코어에 스레드가 배치될 때, 캐시에 새로운 스레드의 코드와 데이터로 채워지는 긴 경과 시간 컨텍스트 스위칭 오버헤드 증가 문제 해결 CPU 친화성(CPU affiniry) 적용 스레드를 동일한 코어에서만 실행하도록 스케줄링 코어 친화성(Core affinity), CPU 피닝(pinning), 캐시 친화성(cache affinity)라고도 부름 리눅스 : taskset 명령, sched-setaffinity() 시스템 호출 윈도우 : 작업관리자에서 프로세스를 특정 코어에서만.. 이전 1 2 다음